بِسْمِ ٱللَّهِ ٱلرَّحْمَـٰنِ ٱلرَّحِيمِ
One vault.Every project in step.
skillmirror keeps your agent skills identical in every project: one vault, copied and never linked, with backups and undo.
skillmirror status lists three projects whose copy of the coding skill is outdated. skillmirror sync updates all three, and a second status reports that the three projects are in sync.
The vault
Every project
Change it once.Every copy follows.
Your vault is one git folder where you write and keep your skills.
Every project keeps its own copy. sync swaps each skill folder the vault also has, as a whole, so no file of an older version survives.
- coding/
- doc-start/
- search/
- web-media/
coding/SKILL.md
- ---
- name: coding
- description: "Coding conventions"
- ---
- # coding
- - One file, one purpose.
- - Keep files under 300250 lines of code.
- - No fallbacks: fail with a clear error.
- - Comment the why, never the what.
- - Name things for the reader.
.agents/skills/coding/SKILL.md
- - One file, one purpose.
- - Keep files under 300 lines of code.
- - No fallbacks: fail with a clear error.
.agents/skills/coding/SKILL.md
- - One file, one purpose.
- - Keep files under 250 lines of code.
- - No fallbacks: fail with a clear error.
.agents/skills/coding/SKILL.md
- - One file, one purpose.
- - Keep files under 300 lines of code.
- - No fallbacks: fail with a clear error.
.agents/skills/coding/SKILL.md
- - One file, one purpose.
- - Keep files under 250 lines of code.
- - No fallbacks: fail with a clear error.
.agents/skills/coding/SKILL.md
- - One file, one purpose.
- - Keep files under 300 lines of code.
- - No fallbacks: fail with a clear error.
.agents/skills/coding/SKILL.md
- - One file, one purpose.
- - Keep files under 250 lines of code.
- - No fallbacks: fail with a clear error.
The story in commands: status reports three projects in sync, the vault changes, status reports them outdated, sync updates all three, undo restores the old folders, and a second undo brings the sync back.
Four promises
How a sync stays safe
Careful withyour files.
01
Copied, never linked.
A project holds real files, not a link back to your vault. They stay in the project's own git history, and they work the same over SSH.
vault
coding/
- SKILL.md
- rules.md
copylink×atlas-api
.agents/
skills/ coding/ - SKILL.md
- rules.md
02
Only what a project already has.
syncupdates the skills a project holds and never adds one. A project chooses its skills by what sits in its.agents/skillsfolder; putting a new one there is a separate act:add,initorpush.atlas-api docs-site infra coding doc-start astro holds the folder: sync keeps it in step does not: sync leaves it alone
03
Swapped whole.
The new copy is built beside the old one, checked, and swapped in at once. A project has the old folder or the new one, never a mixture, and no file of an older version is left behind.
1 · built beside
the project
coding/
- SKILL.md
- old-notes.md
next to it
new copy
- SKILL.md
2 · checked
the project
coding/
- SKILL.md
- old-notes.md
next to it
new copy✓
- SKILL.md
3 · swapped at once
the project
coding/
- SKILL.md
the backup
old copy
- SKILL.md
- old-notes.md
04
Undone in one command.
Before a run replaces or removes a folder, the old copy is kept.
undobrings it back, and undoing is a run too, so a secondundoredoes it. The newest 30 runs are kept.in stepbehindsyncold copies keptundoold text backundosync again
Look first
Old against new
Look before you sync.Left against right.
skillmirrorA full-screen interface: every skill, every project, and a side-by-side diff of what a sync would change.
skillmirror webThe same views live in your browser, on 127.0.0.1 only and behind a link that works once. With
--allow-writeits pages can also run sync, push and undo, each after showing the plan.skillmirror reportOne self-contained HTML page: skills against projects, the vault tree, the diffs, a filter and dark mode.
Every command
One line each
Plain commands.Exact exit codes.
Plan first.
A command that writes shows its plan and asks before it does anything. --dry-run stops after the plan, --yes skips the question.
Made for scripts.
Commands that print results take --json. status, diff and sync --check write nothing and exit 1 when something differs, so a CI job can fail on drift.
Exit codes.
- 0
- done, or nothing differs
- 1
- drift found
- 2
- the command line cannot be carried out
- 3
- a hard error
- 4
- it ran, but some targets failed
Keep in step
- sync
- Update what each project already has. It never adds a skill.
- status
- How every project stands against the vault. Writes nothing.
- diff
- The lines a sync would bring in and take away.
- undo
- Bring back what a run replaced. A second undo redoes it.
- history
- The runs that can be undone, newest first.
Put skills in
- init
- A new project with the mandatory skills and a selection.
- add
- Skills, groups or profiles into an existing project.
- push
- The mandatory skills into every project with a skills folder.
- delete
- One skill out of the projects.
Write skills
- new
- A skill in the vault from a template, staged in git.
- adopt
- A skill a project already has, copied into the vault.
- changes
- What differs in a project: edited there, behind, or not in the vault.
- promote
- A project's edit becomes the vault's copy, the old one kept.
Look
- skillmirror
- The full-screen interface, with a side-by-side diff.
- report
- One HTML page: skills against projects, with the diffs.
- web
- The same views live, on this computer only.
- list · skills · info
- What is installed, the vault as a tree, one skill from every side.
Stay in order
- doctor
- Checks the machine, the vault and every skill header.
- agents
- Keeps one block of every AGENTS.md current.
- bridge
- Links .claude/skills to .agents/skills.
- vault · config
- Make a vault; show and set the configuration.
- mandatory
- The skills that push installs everywhere.
Start here
Four steps
Start withone vault.
- 01
Build it.
Needs Rust 1.89 or newer, and git. Linux only. The program lands in ~/.cargo/bin.
- 02
Make a vault.
A git folder for your skills, and the folder that holds your projects.
- 03
Take a skill in.
Adopt one a project already has, or write a new one with skillmirror new.
- 04
Sync.
Every project that has the skill follows, once you have seen the plan.
git clone https://github.com/jav-ed/skill_Manag.gitcd skill_Managcargo install --path Crates/Cli --lockedskillmirror vault init ~/skills --root ~/projectsskillmirror adopt coding --from ~/projects/atlas-apiskillmirror sync