
WillieStop copying skills between AI CLIs. Set up a single source of truth and sync everywhere with one command.
You use Claude Code at work, Openclaw for side projects, and Codex for quick scripts.
You have 20+ skills. They need to exist in all three tools.
Here's how to set that up in under 2 minutes — and never manually copy a skill again.
Every AI CLI stores skills in a different directory:
~/.claude/skills/ # Claude Code
~/.codex/skills/ # Codex CLI
~/.opencode/skills/ # OpenCode
When you install a skill, you pick which tools get it. When you edit a skill in one tool, the others don't know. When you remove a skill from one tool, you might break the others.
The root cause: there's no single source of truth. Skills are scattered.
skillshare keeps all your skills in one directory and creates symlinks to each AI CLI.
~/.config/skillshare/skills/ ← single source
├── code-review/
├── react-guidelines/
└── _team-repo/
├── frontend/
└── testing/
~/.claude/skills/code-review → symlink to source
~/.codex/skills/code-review → symlink to source
Edit the source, every tool sees the change instantly.
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/runkids/skillshare/main/install.sh | sh
# Homebrew
brew install runkids/tap/skillshare
# Windows PowerShell
irm https://raw.githubusercontent.com/runkids/skillshare/main/install.ps1 | iex
skillshare init
This does three things:
~/.config/skillshare/skills/ (your source directory)config.yaml with your targetsOutput looks like:
✓ Created source directory
✓ Detected targets:
claude → ~/.claude
codex → ~/.codex/skills
✓ Config saved to ~/.config/skillshare/config.yaml
Already have skills scattered across your AI CLIs? Collect them:
skillshare collect --all
This copies every skill from every detected target into the source directory. Duplicates are flagged so you can choose which to keep.
skillshare sync
Done. Every target now has symlinks pointing to your source directory.
Synced 3 targets:
claude → 15 linked, 0 skipped, 0 removed
codex → 15 linked, 0 skipped, 0 removed
From now on, this is the only command you need. Made changes to your skills? skillshare sync.
skillshare install anthropics/skills/skills/pdf
skillshare sync
The skill is downloaded to your source directory, then synced to all targets.
skillshare install github.com/your-org/team-skills --track
skillshare sync
The --track flag preserves .git, so you can update later:
skillshare update _team-skills # git pull
skillshare sync # push changes to all targets
skillshare new my-custom-skill
Creates a SKILL.md template in your source directory. Edit it, sync, and every AI CLI has it.
Before syncing third-party skills to your AI agents, scan them:
skillshare audit
This checks every installed skill for prompt injection, data exfiltration, destructive commands, and other threats. Critical findings block installation by default — no malicious skill reaches your AI agent without you explicitly approving it.
Skills are also scanned automatically during skillshare install.
You tweaked a skill in codex's UI. Pull the change back to source:
skillshare collect codex
skillshare sync # propagate to other targets
skillshare status
Shows which targets are in sync, which have drifted, and which skills are unlinked.
skillshare diff
Shows exactly what sync will do — which symlinks will be created, updated, or removed.
If your source directory is a git repo:
# Machine A
skillshare push
# Machine B
skillshare pull
skillshare sync
Or just version-control ~/.config/skillshare/ as part of your dotfiles.
For skills that should live inside a specific repo:
cd your-project
skillshare init -p # Creates .skillshare/
skillshare install org/skills/skills/react -p # Install to project
skillshare sync # Sync to targets
Commit .skillshare/ to git. Teammates clone the repo and run skillshare sync — everyone gets the same skills, in every AI tool.
skillshare ui
Opens a web dashboard at http://localhost:19420 for visual skill management — browsing, installing, syncing, and searching skills without the terminal.
Everything is controlled by ~/.config/skillshare/config.yaml:
source: /Users/you/.config/skillshare/skills
sync_mode: merge # merge (per-skill symlinks) or symlink (whole directory)
targets:
claude:
path: /Users/you/.claude
codex:
path: /Users/you/.codex/skills
Want to add a new AI CLI? Add a target. Want to remove one? Delete the entry. Then sync.
| Command | What it does |
|---|---|
skillshare init |
Create config + detect targets |
skillshare sync |
Sync source → all targets |
skillshare install <source> |
Install skill from GitHub/local path |
skillshare collect [target] |
Import skills from target(s) to source |
skillshare list |
List skills in source |
skillshare status |
Show sync status |
skillshare diff |
Preview what sync will change |
skillshare search <query> |
Search skills on GitHub |
skillshare audit [name] |
Scan skills for security threats |
skillshare new <name> |
Create a new skill template |
skillshare update --all |
Update all tracked repos |
skillshare push / pull
|
Cross-machine git sync |
skillshare ui |
Open web dashboard |
If you're already using npx skills or manual management:
skillshare init # detect your AI CLIs
skillshare collect --all # import everything
skillshare sync # symlink to all targets
Full migration guide: skillshare.runkids.cc/docs/guides/migration
Architectural comparison: skillshare.runkids.cc/docs/guides/comparison
skillshare is open source (MIT), written in Go, and supports 40+ AI CLI targets.
GitHub: github.com/runkids/skillshare
Docs: skillshare.runkids.cc
If you found this useful, a ⭐ on GitHub would help others find it too.