§04 · Connect & work

Skill Sync

Pull the skill catalogue onto your laptop with exo skill sync. A skill authored in Exo lands in the on-disk layout your local coding agent expects — no copy-paste, hand-authored files left untouched.

Skills live in the platform catalogue, but your local coding agent reads them from disk. exo skill sync bridges the two: it pulls the catalogue and writes each skill into the layout your runtime expects, so a skill authored or AI-generated in Exo is instantly usable in a local session.

Sync to a runtime

Point --runtime at the local agent you use. By default sync writes into the user-scoped location in your home directory, so the skills are available across every project; pass --local to write into the current project instead:

terminal· bash
exo skill sync --runtime=claude
exo skill sync --runtime=claude --local
exo skill sync --runtime=codex
exo skill sync --runtime=opencode
exo skill sync --runtime=claude --prune
exo skill sync --runtime=claude --dry-run

Example · OpenCode

OpenCode reads two skill conventions, so syncing with --runtime=opencode writes each skill twice: the nested skills/<name>/SKILL.md that OpenCode's skill tool auto-discovers, and a flat commands/<name>.md you can invoke by hand as a slash command.

terminal· bash
exo skill sync --runtime=opencode

Now open OpenCode in that project and type /: every skill you authored in Exo shows up in the command list, ready to run. The same skills are also visible to OpenCode's skill tool, so the agent can reach for them on its own.

Running exo skill sync --runtime=opencode in a terminal: each tenant skill is written as an OpenCode skill and slash command
exo skill sync --runtime=opencode: every skill in the tenant catalogue lands as an OpenCode skill and slash command.

Staying in sync

The catalogue updates on its own; laptops re-pull on demand. Re-run exo skill sync whenever you want the latest — because each file carries a content hash, sync rewrites only the skills that actually changed and leaves the rest untouched. (Agents don't need this: they resolve spec.bootstrap.skills against the catalogue at the start of every session.)