Publish skills through the agent-neutral skill home

This commit is contained in:
Gabriel Brown
2026-08-27 16:39:16 -04:00
parent cb305f6662
commit c71d6c8799
9 changed files with 104 additions and 73 deletions
+11 -11
View File
@@ -13,7 +13,7 @@ and one file says where each piece goes.
| Path | Goes to | Why |
| --- | --- | --- |
| `agents/AGENTS.md` | `~/.claude/CLAUDE.md`, `~/.codex/AGENTS.md` | Two tools, two names, one file. These were byte-identical copies before this, waiting to disagree. |
| `agents/skills/` | `~/.agents/skills`, `~/.claude/skills` | A skill installed on any machine lands in the checkout. The Claude path is `linkdir` — see below. |
| `agents/skills/` | `~/.agents/skills`, `~/.claude/skills` | Personal skills live once in the checkout. Both destinations use `linkdir` so Panama's shipped skills can live beside them. |
| `agents/rules/` | `~/.claude/rules` | |
| `ssh/config` | `~/.ssh/config` | Host aliases only. Keys are per-machine and are never tracked. |
| `espanso/identity.yml` | `~/.config/espanso/match/identity.yml` | Copied, not linked, because a machine may add its own triggers. |
@@ -27,22 +27,22 @@ destination is empty. `linkdir` is the third, and it exists because one
destination is no longer only ours.
Panama ships its own agent skills now (`skills/`, linked by
`setup/scripts/link-skills`), and they go to `~/.claude/skills` — the same
directory the personal ones went to as a single symlink. A directory cannot be
a symlink to two places, so that entry became `linkdir`: the destination is a
real directory, and each child of `user/agents/skills/` is linked into it
individually. `~/.agents/skills` is still a whole-directory `link`, because
nothing else claims it.
`setup/scripts/link-skills`), and they go to both skill homes. A directory
cannot be a symlink to two places, so both personal entries use `linkdir`: each
destination is a real directory, and each child of `user/agents/skills/` is
linked into it individually.
Two consequences, recorded rather than fixed:
- **A personal skill named like a shipped one shadows it.** `link-user` runs
after `link-skills` and displaces what it finds, so the personal one wins.
That is the intent, and it is the precedence Claude Code uses anyway.
after `link-skills` and displaces what it finds, so the personal one wins in
both skill homes.
- **A new personal skill needs a re-link to appear.** The whole-directory link
showed a newly created skill instantly; per-child links do not know about a
child that did not exist when they were made. Run `panama update` or
`setup/scripts/link-user` after adding one.
child that did not exist when they were made. Put new shared skills in
`user/agents/skills/`, then run `panama update` or `setup/scripts/link-user`.
A tool that installs directly into a home skill directory creates a
machine-local skill until it is moved into the checkout.
## It is off unless you say yes