skillmirror
Guides

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

Other agent folders

Link .claude/skills to .agents/skills so Claude Code sees the same skills, and what happens when a real folder is in the way.

skillmirror keeps every skill in one place per project: .agents/skills. Some agents look somewhere else. Claude Code reads .claude/skills. A bridge is a relative link from that folder to .agents/skills, so both agents see the same files and nothing is copied twice.

my-project/
  .agents/skills/coding/SKILL.md
  .claude/skills  ->  ../.agents/skills

Switch it on

Bridges are off until the vault config names them. Add the key to config.yaml:

~/skills/config.yaml
targets: [claude]

claude is the one name that is known today, and it stands for .claude/skills. Any other name is refused, and so is a name that is listed twice:

error: invalid vault config ~/skills/config.yaml: targets entry "cursor" is not a known agent folder (known: claude)

Without the key, skillmirror bridge only says so and changes nothing:

No targets in the vault config. Add a line such as `targets: [claude]` to <vault>/config.yaml.

See what is missing

With the key set, status marks every project whose link is not made, and doctor warns about it:

skillmirror status
● ~/projects/atlas-api
  ~ coding                         outdated (1 file added)
  + claude                         bridge to .agents/skills not made (`skillmirror bridge`)

● ~/projects/docs-site
  ~ coding                         outdated (1 file added)
  + claude                         bridge to .agents/skills not made (`skillmirror bridge`)

● ~/projects/infra
  + claude                         bridge to .agents/skills not made (`skillmirror bridge`)

● ~/projects/lumen-app
  ~ coding                         outdated (1 file added)
  + claude                         bridge to .agents/skills not made (`skillmirror bridge`)

4 projects: 0 in sync, 4 differ (3 skill folders outdated, 0 mandatory missing, 4 bridges missing)

AGENTS.md blocks: 1 edited by hand. `skillmirror agents status` has the list, `skillmirror agents sync` brings them up to date.
skillmirror bridge --dry-run
● ~/projects/atlas-api
  + claude                         would link .claude/skills

● ~/projects/docs-site
  + claude                         would link .claude/skills

● ~/projects/infra
  + claude                         would link .claude/skills

● ~/projects/lumen-app
  + claude                         would link .claude/skills

4 bridges to link, 0 already in place (dry run)

The dry run exits 1 because links are missing, so a script can ask the question. Without --dry-run, bridge shows the plan, asks, and makes the links. --yes answers for you:

skillmirror bridge --yes
● ~/projects/atlas-api
  ✓ claude                         linked .claude/skills

● ~/projects/docs-site
  ✓ claude                         linked .claude/skills

● ~/projects/infra
  ✓ claude                         linked .claude/skills

● ~/projects/lumen-app
  ✓ claude                         linked .claude/skills

4 bridges linked, 0 already in place
readlink ~/projects/infra/.claude/skills
../.agents/skills

The link is relative, so it survives moving or cloning the project. --all also lists the links that are in place. A link is not a replaced folder, so bridge keeps no backup run: to take one away, remove it with rm .claude/skills.

add and init make the link for the project they install into, in the same run, and print the same ✓ claude linked .claude/skills line.

A real folder is in the way

A link is made only where nothing is. If .claude/skills is a real folder or a file, skillmirror does not touch it. A link that leads somewhere else and a linked .claude folder are left alone too. bridge names the project and exits 4:

skillmirror bridge --yes
● ~/projects/atlas-api
  ✗ claude                         .claude/skills is a real folder or file, so no bridge is made there
      hint: move what it holds into .agents/skills, then remove it

0 bridges linked, 3 already in place, 1 need attention

doctor reports the same thing as a warning, with the same hint:

! bridges ~/projects/atlas-api/.claude/skills: .claude/skills is a real folder or file, so no bridge is made there
    hint: move what it holds into .agents/skills, then remove it

Move the skills the folder holds into .agents/skills (skillmirror adopt takes them into the vault if they are yours), remove the folder, and run bridge again.

On this page