بِسْمِ ٱللَّهِ ٱلرَّحْمَـٰنِ ٱلرَّحِيمِ

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.

~/projects

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.

vault~/skills
  • coding/
  • doc-start/
  • search/
  • web-media/

coding/SKILL.md

  1. ---
  2. name: coding
  3. description: "Coding conventions"
  4. ---
  5. # coding
  6. - One file, one purpose.
  7. - Keep files under 300250 lines of code.
  8. - No fallbacks: fail with a clear error.
  9. - Comment the why, never the what.
  10. - Name things for the reader.
● projects/atlas-apiin syncoutdated

.agents/skills/coding/SKILL.md

  1. - One file, one purpose.
  2. - Keep files under 300 lines of code.
  3. - No fallbacks: fail with a clear error.
● projects/atlas-apiin sync

.agents/skills/coding/SKILL.md

  1. - One file, one purpose.
  2. - Keep files under 250 lines of code.
  3. - No fallbacks: fail with a clear error.
● projects/docs-sitein syncoutdated

.agents/skills/coding/SKILL.md

  1. - One file, one purpose.
  2. - Keep files under 300 lines of code.
  3. - No fallbacks: fail with a clear error.
● projects/docs-sitein sync

.agents/skills/coding/SKILL.md

  1. - One file, one purpose.
  2. - Keep files under 250 lines of code.
  3. - No fallbacks: fail with a clear error.
● projects/infrain syncoutdated

.agents/skills/coding/SKILL.md

  1. - One file, one purpose.
  2. - Keep files under 300 lines of code.
  3. - No fallbacks: fail with a clear error.
● projects/infrain sync

.agents/skills/coding/SKILL.md

  1. - One file, one purpose.
  2. - Keep files under 250 lines of code.
  3. - No fallbacks: fail with a clear error.
~/projects

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.

  1. 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.

  2. 02

    Only what a project already has.

    sync updates the skills a project holds and never adds one. A project chooses its skills by what sits in its .agents/skills folder; putting a new one there is a separate act: add, init or push.

  3. 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.

  4. 04

    Undone in one command.

    Before a run replaces or removes a folder, the old copy is kept. undo brings it back, and undoing is a run too, so a second undo redoes it. The newest 30 runs are kept.

Look first

Old against new

Look before you sync.Left against right.

  • skillmirror

    A full-screen interface: every skill, every project, and a side-by-side diff of what a sync would change.

  • skillmirror web

    The same views live in your browser, on 127.0.0.1 only and behind a link that works once. With --allow-write its pages can also run sync, push and undo, each after showing the plan.

  • skillmirror report

    One 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.

  1. 01

    Build it.

    Needs Rust 1.89 or newer, and git. Linux only. The program lands in ~/.cargo/bin.

  2. 02

    Make a vault.

    A git folder for your skills, and the folder that holds your projects.

  3. 03

    Take a skill in.

    Adopt one a project already has, or write a new one with skillmirror new.

  4. 04

    Sync.

    Every project that has the skill follows, once you have seen the plan.

First run
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