Commit 3c4812e
committed
Verify the skills-symlink premise with a canary, not a self-report
The standing item to make `.claude/skills/` available outside this repo rested
on a claim nobody had tested here: that Claude also reads `~/.claude/skills/`.
Untested because that directory has never existed on this machine, so the plan's
foundation was an assumption.
Asking a model whether it can see a file is the weakest available evidence, so:
a canary skill at /tmp/canary-skill/SKILL.md carrying two different random
tokens -- one in the frontmatter `description`, one in the body -- installed the
way the plan proposes, as a symlink
`~/.claude/skills/canary-probe -> /tmp/canary-skill`. `claude -p` run from /tmp,
a directory with no `.claude/skills` of its own, returned both. Two tokens
because they answer different questions: the description token proves the skill
was registered, the body token proves the file was read.
So it holds, and symlinks are followed -- the second half, and the half that
could have failed silently.
The negative control is what makes it evidence. The symlink was removed while
the file was left on disk inside the working directory, and the same prompt
returned NO-CANARY-SKILL. That excludes the confound a positive result alone
leaves open: the file simply sitting near the session's cwd.
Corroborating, and ranked as such rather than as proof: the client binary
carries 14 references to `~/.claude/skills/`, including a `synced` subdirectory
named in help text about a skills-sync setting. String evidence shows the path
is known; only the canary shows it is loaded.
Both artefacts were removed and `~/.claude/skills/` left absent, so todo.md
still describes the machine as it stands.
The symlink itself is still not done and still needs a decision: it writes
outside the repo, and the tradeoff is unchanged -- a symlink points at a path,
so if this repo moves the skills stop working silently, while a copy trades
that for two versions that drift.
Generalised into `evidence-discipline` as "verify a mechanism with a canary,
not with a self-report".
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent e0935d5 commit 3c4812e
3 files changed
Lines changed: 58 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
106 | 135 | | |
107 | 136 | | |
108 | 137 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
351 | 351 | | |
352 | 352 | | |
353 | 353 | | |
| 354 | + | |
354 | 355 | | |
355 | 356 | | |
356 | 357 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
100 | 123 | | |
101 | 124 | | |
102 | 125 | | |
| |||
0 commit comments