Sync skills across all IDEs (Pi, Codex, Claude Code, Antigravity) using the canonical agent-skills repo. Use "sync skills", "broadcast skills", or "pull skills".
STOP. READ THIS ENTIRE SKILL.MD BEFORE CALLING ANY ENDPOINT.
Share skills across all IDEs and projects using symlinks to a single canonical directory.
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā CANONICAL (Source of Truth) ā
ā <project>/.pi/skills/ ā
ā (the one real copy ā edit here) ā
āāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāā
ā
symlinks (ln -sfn)
ā
āāāāāāāāāāāāā¬āāāāāāāā¼āāāāāāāā¬āāāāāāāāāāāā
ā¼ ā¼ ā¼ ā¼ ā¼
~/.codex/ ~/.claude/ ~/.pi/ ~/.kilocode/ project/
skills skills agent/ skills .agent/
skills skills
Every target is a symlink. No copies, no rsync, no sync lag.
The old rsync approach:
rsync --delete propagated a wiped dir)push to propagateSymlinks:
# See current state
./run.sh status
# Create symlinks at all targets (safe ā backs up old dirs)
./run.sh link --dry-run # preview first
./run.sh link # do it
# Legacy commands still work
./run.sh push # same as link
./run.sh pull # same as link
| Command | Description |
|---|---|
./run.sh link |
Create symlinks at all targets |
./run.sh status |
Show all targets and their link state |
./run.sh git-sync |
Commit and push skills to agent-skills GitHub repo |
./run.sh cleanup |
Delete .pre-symlink-* backups to reclaim disk |
./run.sh register PATH |
Add a project to target registry |
./run.sh unregister PATH |
Remove a project from registry |
./run.sh targets |
List registered projects |
./run.sh push |
Legacy alias for link |
./run.sh pull |
Legacy alias for link |
=== Skills Broadcast Status ===
Canonical: /home/user/workspace/pi-mono/.pi/skills (146 skills)
Project: /home/user
OK .pi/agent/skills -> canonical
OK .codex/skills -> canonical
OK .claude/skills -> canonical
Project: /home/user/workspace/experiments/memory
OK .pi/skills -> canonical
.pre-symlink-<timestamp>) before replacement--dry-run previews all changes without modifying anythingrm -rf path.pre-symlink-*# Register a project for symlink targets
./run.sh register /path/to/project
# The registry is at ~/.agent_skills_targets
cat ~/.agent_skills_targets
| IDE | Skill Location | Pattern |
|---|---|---|
| Pi | ~/.pi/agent/skills |
.pi/skills |
| Codex | ~/.codex/skills |
.codex/skills |
| Claude Code | ~/.claude/skills |
.claude/skills |
| KiloCode | ~/.kilocode/skills |
.kilocode/skills |
| Generic | .agent/skills |
.agent/skills |
The git-sync command pushes canonical skills to the grahama1970/agent-skills repo on GitHub.
This is a manual operation ā run it when you want to checkpoint your current skill state.
./run.sh git-sync --dry-run # preview inferred single-skill commit
./run.sh git-sync --skill ask # commit and push one skill
./run.sh git-sync --skill ask --skill subagent-runner
./run.sh git-sync --all # intentionally commit all changed skills
How it works:
--skill NAME / --all.This command is intentionally conservative for parallel-agent worktrees. Do not
use broad staging (git add -A) when multiple agents may have uncommitted work.
It also supports normal Git worktrees where .git is a file rather than a
directory.
Heavy artifacts (models, weights, checkpoints, datasets) must live on /mnt/storage12tb/ and be symlinked into skill dirs. The sanity check enforces this with a 100 MB threshold per subdirectory.