Jotura

Guides / AI agents / 2026-08-30

How to sync Claude skills across computers

Claude Code skills are folders of markdown on disk. Four reliable ways to sync Claude skills across computers, with the exact commands for each.

A Claude Code skill is a folder holding a SKILL.md file and whatever supporting files it needs. Personal skills live in ~/.claude/skills/ on macOS and Linux, and in %USERPROFILE%\.claude\skills on Windows. Claude Code stores none of that in the cloud, so syncing skills is a file distribution problem rather than a Claude problem. Get the folder to the same path on every machine and Claude loads the skills on its next start.

Four approaches work in practice. You can keep the folder in a git repository and clone it on each machine. You can package the skills as a Claude Code plugin and install them from a marketplace. You can put the folder in Dropbox or iCloud Drive, then point Claude’s path at it with a symbolic link, usually called a symlink.

Or you can keep every agent’s configuration in a notes vault and run one command per machine to install it where each tool expects it.

The shortest path: a git repository

If you want the fastest route that works, put the folder under version control.

cd ~/.claude/skills
git init -b main
git add .
git commit -m "my Claude skills"
git remote add origin git@github.com:you/claude-skills.git
git push -u origin main

The -b main matters. A bare git init uses whatever init.defaultBranch says, which is still master on plenty of installs, and the push then fails with src refspec main does not match any. Read git status before that first commit, because an API key pasted into a skill’s supporting script goes to the remote with everything else.

On the second machine, clone into the same path. Git refuses to clone into a directory that already has files in it, so move any existing skills aside first.

mv ~/.claude/skills ~/.claude/skills.bak
git clone git@github.com:you/claude-skills.git ~/.claude/skills

The same two steps in PowerShell:

Move-Item "$env:USERPROFILE\.claude\skills" "$env:USERPROFILE\.claude\skills.bak"
git clone git@github.com:you/claude-skills.git "$env:USERPROFILE\.claude\skills"

After that, git pull on each machine is the whole workflow. It is free, it gives you history and diffs on your own instructions, and git handles merge conflicts because that is what it was built for. If you already manage dotfiles with GNU Stow or chezmoi, put the skills folder in that repository rather than giving it one of its own.

The cost is where the files end up. A private repository is still a copy of your working process on a hosting provider’s servers, readable by anyone who can read that account. Skills often encode internal review checklists, client names, and how your team operates. The other cost is discipline: git syncs only when you remember to commit and pull.

The official route: a Claude Code plugin

Claude Code has a first-party answer to this. A plugin bundles skills, slash commands, subagents, and MCP servers into one installable unit, and a marketplace is a repository that lists plugins. Add the marketplace once on each machine, install the plugin, and every skill inside it arrives with it.

Both commands run inside Claude Code, not in your shell:

/plugin marketplace add you/claude-plugins
/plugin install my-skills@claude-plugins

Skills that arrive this way are namespaced as plugin-name:skill-name, so they never collide with the personal skills already on the machine.

The cost is setup and scope. You have to author a plugin manifest and host a marketplace repository first, which is more work than running git init in a folder you already have. It is also Claude Code only, so running Codex, Gemini, or Copilot as well means running this plus something else.

If you already pay for Dropbox, iCloud Drive, or OneDrive, let it carry the folder. On the first machine, move the folder in and link the old path to it.

mv ~/.claude/skills ~/Dropbox/claude-skills
ln -s ~/Dropbox/claude-skills ~/.claude/skills

Every other machine needs its own version of that, because ~/.claude/skills already exists there as a real folder.

mv ~/.claude/skills ~/.claude/skills.bak
ln -s ~/Dropbox/claude-skills ~/.claude/skills

Do not skip the first line. ln -s will not stop you if the folder is still there. It quietly creates the link inside it, Claude keeps reading the old local copies, and you conclude the sync works when nothing is shared. Check with ls -l ~/.claude/ afterwards.

On Windows the same pair needs Developer Mode turned on or an elevated PowerShell, the same requirement as mklink /D.

Move-Item "$env:USERPROFILE\.claude\skills" "$env:USERPROFILE\Dropbox\claude-skills"
New-Item -ItemType SymbolicLink -Path "$env:USERPROFILE\.claude\skills" -Target "$env:USERPROFILE\Dropbox\claude-skills"

On iCloud Drive the folder you want is ~/Library/Mobile Documents/com~apple~CloudDocs/. Once the links are in place, edits propagate with no commands at all, which is the least ongoing friction of the four.

Three things go wrong here. The first is simultaneous edits. Consumer sync services keep both versions and rename one, so you get a second file with “conflicted copy” and a date in its name, which Claude does not read.

The second bites weeks later. iCloud Drive with Optimize Mac Storage, and OneDrive with Files On-Demand, clear out folders you have not touched recently and leave placeholders behind. SKILL.md is then unreadable the moment Claude starts, and the skill vanishes with no error. Mark the folder Keep Downloaded, or Always keep on this device, when you set it up.

The third is the one git has too. The provider holds your files in a form it can read.

Keeping skills with the rest of your agent configuration

Skills are rarely the only thing you want on every machine. Your CLAUDE.md, your subagent definitions, and the equivalent files for other tools have the same problem, and copying four things by four different methods is how machines drift apart. To share agent skills between machines along with everything else that configures them, one canonical copy beats four scattered ones.

Jotura is a local-first markdown notes app with a command-line tool that ships alongside it. A vault is an ordinary folder of .md files on disk, and agent configuration lives in an Agents/ subfolder of it. The installer puts the app, the CLI, and the agent skills in place in one step.

curl -fsSL jotura.io/install.sh | bash
irm jotura.io/install.ps1 | iex

To wire up one agent, pass its name to jotura skill install. Passing all does every agent at once.

jotura skill install all

After that you edit the copy in the vault, then apply it.

jotura agents status
jotura agents sync

jotura agents status reports what differs between the vault and the installed locations, and changes nothing. jotura agents sync writes the vault copy out to each tool’s expected path: Claude Code’s CLAUDE.md and skills, Codex’s AGENTS.md, Gemini’s GEMINI.md, and Copilot’s instructions file.

When a file has changed on both sides, the command refuses to guess. It skips that file, exits with code 16, and leaves both copies intact until you rerun it and name a winner.

jotura agents sync --prefer vault

That fixes the installation problem: one canonical copy, applied correctly on each machine. It does not move the vault between machines. For that, either sync the vault folder some other way or subscribe to Jotura Sync.

Jotura Sync costs £4 per month or £40 per year, with no free trial. It is end-to-end encrypted: the server never sees your file contents, your filenames, or your keys. The vault is where your notes live too, so this only makes sense if you were going to keep notes there anyway.

Jotura is also closed source. You can read the encryption design but not the implementation, which is a real difference from the git option. The desktop app and CLI run on macOS, Windows, and Linux. There is an Android app and none on iOS.

Comparing the four

ApproachCostWho can read your filesThe main catch
Git repositoryFreeYou and the hosting providerSyncs only when you remember to commit and pull
Claude Code pluginFreeAnyone who can read the marketplace repositoryClaude Code only, and you author the plugin
Dropbox or iCloud symlinkYour existing planYou and the sync providerSilent conflicted copies and evicted files
Vault Agents/ folder plus Jotura Sync£4/mo or £40/yrOnly your devices. Encrypted blobs sit on the server, which cannot read themA subscription, an installed app, and a closed-source binary

Anything you can put in a vault you can also put in a git repository, CLAUDE.md and subagents included. The difference is not coverage but destinations: jotura agents sync already knows where each tool expects its files, so you never write your own install script.

Git wins on most of what developers weigh here: history, diffs, review on changes to your own instructions, no vendor, no subscription, and nothing new to install. Pick git if you want free and familiar, or a sync folder if you want no commands at all. Pick a plugin if you live in Claude Code, or the vault if your agent configuration has grown past skills.

Setting up a new machine

Whichever method you choose, write the restore steps somewhere you will find them, because you do this every year or two and will not remember by then.

Git needs a clone into ~/.claude/skills. Wait for a sync folder to finish downloading, then make one symlink. For a vault, install Jotura, open the vault, and run jotura agents sync. Our guide on agent config on a new laptop walks through the whole first hour.

Common questions

Do project skills need syncing? No. Skills in a repository’s .claude/skills/ folder travel with the repository, and that is usually the better home for anything specific to one codebase.

What about my CLAUDE.md? Same problem, same set of answers. See syncing CLAUDE.md between machines for the details specific to that file.

Does this work for Codex, Gemini, or Copilot? Git repositories and sync folders work for all of them, because each tool reads plain files from a known path. Claude Code plugins do not. jotura agents sync knows all four destinations, which is the main reason to prefer it once you run more than one agent, though it costs you an installed application and a notes vault. The Jotura CLI page covers the rest.

What happens if I edit the same skill on two machines? Git shows you a merge conflict. Consumer sync services keep both copies under different names and say nothing. jotura agents sync skips the file and exits with code 16 so you decide. The failure mode you want is the one that tells you.

Download Jotura

Free. Plain markdown files, yours forever.