Kind: foundation companion; generated, never authored. Generated by: execution/scripts/render_skill_inventory.py, held equal to the measured system by --check. Measured: 2026-09-19.
Stage 0 for the skills, in the sense migration.md already gives the word: the inventory a migration starts from. Stage 11 migrates skills by class, and the class decides the target — so a skill that is never inventoried is never classified, never migrated, and never retired.
This file records a skill's LOCATION, CLASS and KIND, never an operator-specific VALUE. Both repos are public and skill bodies carry operator specifics in places. Screening is per skill, not per field — a skill whose body trips the screen has its description withheld even when the description itself is clean, because a subject can appear in a different field from the one naming it. A skill that trips it reads operator-specific, description withheld and only its classification is emitted.
It is perishable. Re-run it; never edit it to keep up. A figure here without an instrument is a defect in the generator.
| Measure | Value |
|---|---|
SKILL.md files in scope |
36,409 |
| Distinct skills (name + content hash) | 404 |
| Files per distinct skill | 90× |
| Distinct names | 182 |
Names on origin/main |
96 |
| Names on disk that never reached main | 86 |
| Names carrying more than one body | 85 |
| Skills whose body carries rule content | 297 |
| Skills withheld under the PII screen | 104 |
Neotoma skill entities (live) |
72 |
The ratio is the finding. 36,409 files resolve to 404 distinct skills — about 90 copies of each. The copies are git worktrees: a worktree is a checkout of the same commit, and its copy of a skill is not another skill. A headline figure that was the file count would be measuring the filesystem, not the corpus — which is the defect the rule inventory's first revision shipped, reporting 736× duplication from a vendored dependency tree. The unit here is name + content hash and never the path.
Scope: .claude/skills/*/SKILL.md under ~/repos and ~/agent-work, plus the user root ~/.claude/skills/, plus Neotoma skill entities (PROD, read-only).
Vendored trees are excluded structurally, not by a blocklist. Measured on this machine: 782 SKILL.md files sit under node_modules within the scope roots, and 570 more under OpenClaw's vendored Codex home — and none of the 1,352 sits under a .claude/skills/<name>/SKILL.md path. The scope shape therefore excludes every vendored tree by construction; a new vendor cannot slip past a list nobody updated.
VENDORED_MARKERS is applied anyway as a second gate. It removed 0 files on this run. That is zero, which confirms the structural claim above still holds. If it is ever non-zero, the claim has stopped holding and this line is where it shows.
14 of the user root's entries are symlinks, not files of their own. They resolve into a Neotoma product checkout, so those skills ship with the product rather than being operator-authored, and a migration that rewrites them is writing into someone else's repo.
This is also an instrument note worth keeping: Path.glob does not follow symlinked directories, so a glob-only sweep of the user root reports 23 skills where 37 exist. The first measurement taken for this document made exactly that error, and it was caught by counting the directories separately from the files.
| Name at the user root | Resolves to |
|---|---|
digest |
~/repos/neotoma-prod/skills/status — name differs: the harness loads it as digest, the file is status |
end |
~/repos/neotoma-prod/skills/end |
ensure-neotoma |
~/repos/neotoma-prod/skills/ensure-neotoma |
query-memory |
~/repos/neotoma-prod/skills/query-memory |
recover-sqlite-database |
~/repos/neotoma-prod/skills/recover-sqlite-database |
remember-calendar |
~/repos/neotoma-prod/skills/remember-calendar |
remember-codebase |
~/repos/neotoma-prod/skills/remember-codebase |
remember-contacts |
~/repos/neotoma-prod/skills/remember-contacts |
remember-conversations |
~/repos/neotoma-prod/skills/remember-conversations |
remember-email |
~/repos/neotoma-prod/skills/remember-email |
remember-finances |
~/repos/neotoma-prod/skills/remember-finances |
remember-meetings |
~/repos/neotoma-prod/skills/remember-meetings |
store-data |
~/repos/neotoma-prod/skills/store-data |
where |
~/repos/neotoma-prod/skills/where |
A harness loads a skill BY NAME. Two distinct bodies under one name means the reader gets whichever root resolved first, and which one that is depends on the harness, the checkout, and the order of the roots. This is the live hazard in the corpus, and it is the reason the unit of this inventory is name + content hash rather than name alone.
85 names carry more than one body, of which 2 are live ambiguities — the same name resolving to different content at two roots a harness searches at the same time.
The remaining 83 are historical: one body on origin/main and older revisions sitting in worktrees that were branched before the current one landed. Those are not a correctness hazard today, but they are why the file count is not the skill count, and they are why a migration that reads a worktree can pick up a superseded body.
The live ambiguities, which need a ruling rather than a merge:
email-triage—015c3cafc670at main;3f8081e8af8cat worktree;e227330cd841at user rootemail-triage-auto—5761bc9826e5at main;9d959f362ceaat user root
| Name | Bodies | Class(es) | Where each body lives |
|---|---|---|---|
accipiter |
6 | role | 12ac19ca04a7 (27 files: worktree); 32a16c0f34c5 (105 files: worktree); 3318145e1390 (17 files: worktree); 63750a095297 (2 files: worktree); 80a869cfd7ff (5 files: worktree); bfb1fefa0e14 (129 files: ateles-main, worktree) |
analyze |
4 | procedure | 1d7a7171ec70 (204 files: other-repo, worktree); 39cd7c650219 (5 files: worktree); 49ffe27fb2c0 (2 files: worktree); c14b20a02618 (283 files: ateles-main, worktree) |
analyze-meeting |
6 | procedure | 05e65396aa9d (2 files: worktree); 3e54bb5bb5cf (1 files: worktree); 471523638144 (238 files: ateles-main, worktree); 82047a2ba0f6 (1 files: worktree); e2901ac6e0c7 (28 files: worktree); f4c65fd4cc01 (15 files: worktree) |
anthus |
4 | role | 19082b0113ff (234 files: ateles-main, worktree); 261f0c721e84 (32 files: worktree); 5b2be5aceae4 (1 files: worktree); 61e77bee2452 (2 files: worktree) |
apis |
3 | role | 1c567321f162 (1 files: worktree); 290c047f1c40 (234 files: ateles-main, worktree); 6757e3c937d9 (34 files: worktree) |
apus |
3 | role | 45c65b5a0f81 (34 files: worktree); b6573942cbab (234 files: ateles-main, worktree); b9cb0440964a (1 files: worktree) |
aquila |
2 | role | 0c41edfc300e (33 files: worktree); 8b945ac39daf (234 files: ateles-main, worktree) |
ateles |
8 | role | 21e52885d605 (28 files: worktree); 2f18491bb88a (32 files: worktree); 728ca52a510c (2 files: worktree); 75466ed5f09b (1 files: worktree); 84929182aaba (2 files: worktree); 90d66cde621d (1 files: worktree); ba8830b40b1b (127 files: ateles-main, worktree); f1b7d1268080 (76 files: worktree) |
audit |
5 | procedure | 0125d0824561 (2 files: worktree); 20aa8cf57230 (1 files: worktree); 3018c1ad054e (5 files: worktree); 3efd7645c552 (5 files: worktree); f4d8d460b5df (196 files: other-repo, worktree) |
aythya |
5 | role | 2b741ebb1908 (1 files: worktree); 3cbe05a9ec12 (32 files: worktree); 41eebdd719ba (234 files: ateles-main, worktree); 4abf8e6e15bb (2 files: worktree); 4babe33e82b2 (16 files: worktree) |
buteo |
5 | role | 01c91926c1b7 (2 files: worktree); 6b25e0c30a7d (105 files: worktree); 97618c240cf5 (129 files: ateles-main, worktree); d21a64bd35e5 (17 files: worktree); faf4db289e95 (32 files: worktree) |
cicada |
6 | role | 2e1b28680d14 (234 files: ateles-main, worktree); 44af7bcc76ab (5 files: worktree); 85709c7ce812 (1 files: worktree); 8b5a3a788ee4 (13 files: worktree); ab19c030bf59 (2 files: worktree); fa5dbc2f2c81 (14 files: worktree) |
ciconia |
5 | role | 165b2504aeaa (32 files: worktree); 83ac4054fdeb (1 files: worktree); 9905401a59f9 (2 files: worktree); d2257ec49c00 (16 files: worktree); f513267f8712 (234 files: ateles-main, worktree) |
columba |
5 | role | 4bff74d2794f (1 files: worktree); 6e3ba3879a3a (234 files: ateles-main, worktree); 842c157ba8a1 (16 files: worktree); aae7762e87bb (32 files: worktree); fc0b2c6f52d4 (2 files: worktree) |
commit |
3 | plumbing | 18fcd6f4d4df (204 files: other-repo, worktree); 5f05d5285daa (5 files: worktree); 63a5d3c8a130 (285 files: ateles-main, worktree) |
corvus |
6 | role | 5932d45984e0 (1 files: worktree); 8320e549d3c5 (1 files: worktree); 8c2e3ec3a105 (248 files: ateles-main, worktree); 8ff63b3606dc (16 files: worktree); de6fe7046283 (18 files: worktree); dee074eccdaa (1 files: worktree) |
cotinga |
5 | role | 06686ee29396 (2 files: worktree); 29143e047124 (1 files: worktree); dd4298c2e37c (103 files: worktree); df78820bd23d (32 files: worktree); e29ee280306b (131 files: ateles-main, worktree) |
create-prototype |
2 | procedure | 73c98f59106a (204 files: other-repo, worktree); a0f65d180cc9 (285 files: ateles-main, worktree) |
create-release |
2 | procedure | 83340e03d494 (285 files: ateles-main, worktree); dd4ae4111c60 (204 files: other-repo, worktree) |
create-rule |
2 | plumbing | 137efdc7c003 (204 files: other-repo, worktree); 1d7195e8262d (285 files: ateles-main, worktree) |
create_plan |
2 | procedure | c57c8b981212 (5 files: worktree); fc6aeefba7c5 (204 files: other-repo, worktree) |
create_prototype |
2 | procedure | a0f65d180cc9 (5 files: worktree); ea91cfda1b74 (204 files: other-repo, worktree) |
create_release |
2 | procedure | 3e07248c1f93 (204 files: other-repo, worktree); 4a29061ff286 (5 files: worktree) |
create_rule |
2 | plumbing | bc07322b6e3e (5 files: worktree); dd8bf4646c34 (204 files: other-repo, worktree) |
debug |
3 | procedure | ba19a0bd28c3 (5 files: worktree); e2a0bffe8b06 (285 files: ateles-main, worktree); e6f343992b6f (204 files: other-repo, worktree) |
draft-rendered-page |
4 | procedure | 220773f8293a (5 files: worktree); 3a1e6b2a5a37 (1 files: worktree); db7210f235ce (1 files: worktree); e06d2d43ce7a (259 files: ateles-main, worktree) |
draft_illustration |
2 | procedure | 4c0468d2a2ec (5 files: worktree); e49d845e12f3 (204 files: other-repo, worktree) |
email-triage |
3 | procedure | 015c3cafc670 (266 files: ateles-main, worktree); 3f8081e8af8c (19 files: worktree); e227330cd841 (1 files: user-root) |
email-triage-auto |
2 | mixed | 5761bc9826e5 (266 files: ateles-main, worktree); 9d959f362cea (1 files: user-root) |
end |
2 | procedure | 127fd40e2d43 (1 files: user-root); 5e5b9db8eb3b (203 files: other-repo, worktree) |
final-review |
2 | procedure | 10805ed65067 (204 files: other-repo, worktree); 213ecaa3cab2 (285 files: ateles-main, worktree) |
final_review |
2 | procedure | 213ecaa3cab2 (5 files: worktree); d8b073ee5fea (204 files: other-repo, worktree) |
fix-feature-bug |
2 | procedure | 268de8446f22 (285 files: ateles-main, worktree); da950a61d482 (204 files: other-repo, worktree) |
fix_feature_bug |
2 | procedure | 0634457d94ac (5 files: worktree); 2c943b809eff (204 files: other-repo, worktree) |
formica |
5 | role | 0c3a7b8a34ab (1 files: worktree); 1366ba955f48 (234 files: ateles-main, worktree); 3691ced24ed5 (2 files: worktree); 66c33e14b2ed (32 files: worktree); 7164b9b716cf (16 files: worktree) |
fringilla |
4 | role | 2fba51c66959 (1 files: worktree); 5556083e4570 (234 files: ateles-main, worktree); 952ba331eab3 (2 files: worktree); d4d9349b6451 (32 files: worktree) |
gorilla |
4 | procedure, role | 40e5f33f125c (234 files: ateles-main, worktree); 4c135a7e4d34 (13 files: worktree); a8b71f086fc4 (32 files: worktree); d19524da89a2 (2 files: worktree) |
hirundo |
5 | role | 46296e2e7e73 (2 files: worktree); 6389455c2d7d (234 files: ateles-main, worktree); 663a93a6c907 (32 files: worktree); b4fc1ecca270 (16 files: worktree); e162d34ea784 (1 files: worktree) |
import-audio |
2 | procedure | 10b5df0f760f (2 files: worktree); 806e89d0cbe3 (283 files: ateles-main, worktree) |
intake |
2 | procedure | cda0ca5a7d2e (5 files: worktree); f8a8870a6791 (261 files: ateles-main, worktree) |
intake-relationship |
2 | procedure | 25f579b00e05 (261 files: ateles-main, worktree); 9756508d2885 (5 files: worktree) |
lanius |
5 | role | 13f5829eaa2b (17 files: worktree); 3abbcde33488 (1 files: worktree); 5cd9f2e5c2d5 (234 files: ateles-main, worktree); 9e5d4b45ba4e (1 files: worktree); b4b6660f5e9c (32 files: worktree) |
learn |
2 | procedure | 2512920b2696 (209 files: other-repo, worktree); b2d77277b452 (285 files: ateles-main, worktree) |
manage-error-debugging |
2 | procedure | 0fdef7f6bf48 (204 files: other-repo, worktree); 18e2e4641dc0 (285 files: ateles-main, worktree) |
manage_error_debugging |
2 | procedure | 18e2e4641dc0 (5 files: worktree); 3d205243d5b1 (204 files: other-repo, worktree) |
manucode |
4 | role | 3d8ad717ed45 (32 files: worktree); 6e19e4245634 (234 files: ateles-main, worktree); aca5f8cc3d07 (1 files: worktree); f60d44b2fa71 (2 files: worktree) |
menura |
5 | role | 0ea80ad6d6b8 (1 files: worktree); a99e6d81b2e0 (32 files: worktree); c209520fbcb4 (16 files: worktree); c48dda9acea8 (234 files: ateles-main, worktree); fbf0c1fe2f1b (2 files: worktree) |
monedula |
4 | role | 3c8cfc299652 (32 files: worktree); 7e743cc9596d (234 files: ateles-main, worktree); a83cdc6385a4 (2 files: worktree); d1d1a45d9cea (1 files: worktree) |
neotoma-agent |
4 | role | 100ab96f680b (32 files: worktree); 19f1cd2f9640 (2 files: worktree); 62270b6dc51f (1 files: worktree); 6827ddaa1c37 (234 files: ateles-main, worktree) |
pavo |
8 | role | 2bcb0a768143 (5 files: worktree); 3a030861d500 (105 files: worktree); 6a56f6da9324 (13 files: worktree); 7817374c1e45 (16 files: worktree); 96bc61fd97ba (14 files: worktree); be7046ca641a (2 files: worktree); ea1b522155b9 (1 files: worktree); fedd30b8132c (129 files: ateles-main, worktree) |
phoenicurus |
7 | role | 26fd701e243c (105 files: worktree); 594504540386 (5 files: worktree); 6032730739b4 (1 files: worktree); 83e747f97d6b (27 files: worktree); 9f2b5afcfa11 (16 files: worktree); ac809ef526e0 (2 files: worktree); bc5bd63b3f81 (129 files: ateles-main, worktree) |
picus |
4 | role | 076dc7edd1ea (1 files: worktree); 5a7b6cc121d9 (234 files: ateles-main, worktree); 6959d3a78cfb (2 files: worktree); aec31611c94a (32 files: worktree) |
process-meeting |
2 | procedure | 6ff685820fd7 (2 files: worktree); fd3af511d84d (1 files: worktree) |
process_prs |
4 | procedure | 5e726877aae7 (2 files: worktree); 801011adbc5f (3 files: worktree); 88575634125b (6 files: worktree); a16e6f368a7d (198 files: other-repo, worktree) |
publish |
3 | procedure | 2bf3215b01dd (5 files: worktree); 5b0034842359 (285 files: ateles-main, worktree); fa9d2953867f (204 files: other-repo, worktree) |
publish_plan |
2 | procedure | 02e1adb59985 (5 files: worktree); 48289fb01b2b (204 files: other-repo, worktree) |
pull |
2 | plumbing | 1fa4f0c66a64 (204 files: other-repo, worktree); 87a14a5fff19 (290 files: ateles-main, worktree) |
push |
2 | plumbing | 021db8199a87 (290 files: ateles-main, worktree); cc2c8fc2e03d (204 files: other-repo, worktree) |
record_meeting |
8 | mixed | 270fe421dd45 (4 files: worktree); 3f815b93a102 (2 files: worktree); 42b77226974d (15 files: worktree); 4ca1ffbc59c3 (1 files: worktree); 57ff945f5337 (1 files: worktree); 69ab17ff1e89 (83 files: ateles-main, worktree); 9cc233cbe59c (177 files: worktree); f2a5f60c22a8 (2 files: worktree) |
regulus |
6 | role | 0c5d54d919bc (18 files: worktree); 6068357a7920 (117 files: worktree); b1f82ea2bef2 (131 files: ateles-main, worktree); b462efc74df6 (2 files: worktree); d47f265fd54b (16 files: worktree); fc543b80e193 (1 files: worktree) |
release |
3 | procedure | 16de583f6371 (5 files: worktree); 5268bf5eea30 (1 files: worktree); cda10715d914 (203 files: other-repo, worktree) |
report |
3 | procedure | 126c4ace31b6 (5 files: worktree); 679bd2afaf59 (204 files: other-repo, worktree); cccf3a9839fd (285 files: ateles-main, worktree) |
report-error |
2 | procedure | 3bb46714ec00 (285 files: ateles-main, worktree); d2a855782c71 (204 files: other-repo, worktree) |
report_error |
2 | procedure | 16d5cf41a4e2 (204 files: other-repo, worktree); ef85f0f2d7ae (5 files: worktree) |
review |
2 | procedure | 2f04032cc375 (3 files: worktree); ff6d862840e5 (200 files: other-repo, worktree) |
robin |
4 | role | 62693d615285 (18 files: worktree); 96cce23db8ad (1 files: worktree); e72a33e56cd7 (248 files: ateles-main, worktree); f27514978c11 (2 files: worktree) |
run-feature-workflow |
2 | procedure | 2b9966925828 (285 files: ateles-main, worktree); 417889f5c0c0 (204 files: other-repo, worktree) |
run_feature_workflow |
2 | procedure | 2b9966925828 (5 files: worktree); fa4562dd3d31 (204 files: other-repo, worktree) |
setup-cursor-copies |
2 | plumbing | 26371362d2f1 (204 files: other-repo, worktree); 93da99d8613e (285 files: ateles-main, worktree) |
setup_commands |
2 | plumbing | 3bdb5e3786c8 (204 files: other-repo, worktree); 88a8307c508d (5 files: worktree) |
setup_cursor_copies |
2 | plumbing | 93da99d8613e (5 files: worktree); ad4ee261e363 (204 files: other-repo, worktree) |
store-neotoma |
3 | plumbing | 1fed760e1cd7 (24 files: worktree); 7d2930b96bcd (204 files: other-repo, worktree); ada7ffdfa43d (261 files: ateles-main, worktree) |
store_neotoma |
2 | plumbing | 2d382cb3da55 (204 files: other-repo, worktree); 8c32d357bb94 (5 files: worktree) |
stream-transcript |
6 | mixed | 5954b2b1480a (1 files: worktree); 69711ef4a35c (1 files: worktree); 78fce5650e96 (1 files: worktree); b113e74a6262 (1 files: worktree); d09fd2ae03a9 (192 files: ateles-main, worktree); d3e698817b4e (1 files: worktree) |
struthio |
5 | role | 0b01f22af008 (1 files: worktree); 17bb722ffdca (18 files: worktree); 6af4fa8993f8 (248 files: ateles-main, worktree); e9998f436d6e (2 files: worktree); f82f647b9317 (16 files: worktree) |
sturnus |
6 | role | 0559bab180f2 (130 files: ateles-main, worktree); 54e9f753d053 (27 files: worktree); 8c9995eba8ab (1 files: worktree); ca383f9b4656 (2 files: worktree); d96170c88696 (5 files: worktree); da879ed3ed5a (104 files: worktree) |
sylvia |
4 | role | 024c95a40c37 (234 files: ateles-main, worktree); 51c45cd786fa (32 files: worktree); 781fb5211abd (2 files: worktree); 88ed344767a6 (1 files: worktree) |
sync-env-from-1password |
3 | plumbing | 56baea071f3d (19 files: worktree); b85f654fa9fd (204 files: other-repo, worktree); dbb9717260cb (266 files: ateles-main, worktree) |
sync_env_from_1password |
2 | plumbing | 39c3d3c3b30f (204 files: other-repo, worktree); 6126d5bb25a3 (5 files: worktree) |
turdus |
4 | role | 0a461c58e56a (234 files: ateles-main, worktree); 3b90cf1cb133 (2 files: worktree); 6efab3f9fcf6 (1 files: worktree); e933792fdbe4 (32 files: worktree) |
tyto |
5 | role | 070ff99ca510 (34 files: worktree); 08809dfea201 (147 files: worktree); 228be4d3539a (1 files: worktree); 42d25414d1e9 (1 files: worktree); 9a006e1f3b2d (86 files: ateles-main, worktree) |
update-plan |
2 | procedure | 33c7536cda59 (266 files: ateles-main, worktree); 43338234cfd7 (19 files: worktree) |
update-tasks |
3 | procedure | 377d50841200 (1 files: worktree); 4eac6605cc04 (19 files: worktree); dd31e844df58 (265 files: ateles-main, worktree) |
vanellus |
11 | role | 192fa41a8aec (57 files: ateles-main, worktree); 21207d598dd4 (1 files: worktree); 228f978084ff (2 files: worktree); 4509dab6d47f (2 files: worktree); 4913b57f9914 (13 files: worktree); 515764338abf (16 files: worktree); 608a32c81556 (5 files: worktree); a195efbb7dda (1 files: worktree); a902e9167e7f (162 files: worktree); d90a044e6def (13 files: worktree); fd4a7ac2d44a (13 files: worktree) |
waxwing |
6 | role | 3388ffa0f0ac (119 files: worktree); 9a2613353373 (129 files: ateles-main, worktree); a0d8cdf0518b (5 files: worktree); a91cc101905d (13 files: worktree); ce7039b62593 (2 files: worktree); f30d2653d5c1 (1 files: worktree) |
Where the classes differ across bodies the split is not merely a stale copy: the same name resolves to skills the migration would send to different targets.
Per migration.md#five-classes-of-skill. Every skill takes exactly one class, and the class decides the target. The classification tests are stated there so they apply to a skill the document never saw; they are implemented in classify().
| Class | Names | Distinct bodies | Files | Target |
|---|---|---|---|---|
| role | 48 | 186 | 10,927 | agent.prompt_markdown; file becomes a render target |
| procedure | 102 | 157 | 18,394 | a workflow declaration, a step of one, or an adapter operation |
| mixed | 3 | 16 | 749 | each part takes its own class's target |
| plumbing | 25 | 40 | 6,334 | none, and that is correct — it stays a skill |
| test/probe | 5 | 5 | 5 | retire — closed terminal with a note |
Read the Names column for how much there is to migrate, and Distinct bodies for how much disagreement there is about what each one says. A name with six bodies is one skill to classify and six versions to reconcile; reporting only the body count would inflate the size of the job, and reporting only the name count would hide the reconciliation entirely. The gap between the two columns is almost all historical: worktrees hold older revisions of a skill whose current revision is on main.
The role discriminator is entity_type: agent_definition, not the presence of an entity_id. In the ateles repo 92 of 97 skills carry an entity_id and only 40 carry the agent type. A reader keying on the entity id would have classified nearly every procedure skill as a role — an error of more than double, invisible in the output, and exactly the class of instrument defect that produces a confident wrong number.
Harness plumbing has no target, and that is the correct answer, not a gap. A skill that only tells a harness how to reach the record is not a workflow, and declaring one would put the record's own API into a step list. Those skills stay skills.
A skill that exists only in a worktree is invisible to stage 11. origin/main is what a migration reads; a worktree is one session's checkout and may be deleted without notice.
| Reachability | Distinct skills |
|---|---|
On origin/main of this repo |
97 |
| At the user root only | 36 |
| In a worktree or sibling repo only | 271 |
A Neotoma skill entity with no file |
7 |
86 names. Each is a skill some harness can load and the migration cannot see.
| Name | Class | Bodies | Files | Rule lines |
|---|---|---|---|---|
__probe_delete_me |
test/probe | 1 | 1 | 0 |
__probe_wa_min |
test/probe | 1 | 1 | 0 |
advisory |
procedure | 1 | 201 | 3 |
apply-category |
procedure | 1 | 1 | 2 |
apus-98133670 |
role | 1 | 19 | 0 |
audit |
procedure | 5 | 209 | 11 |
bombycilla |
role | 1 | 18 | 4 |
calendar-scheduling |
procedure | 1 | 1 | 3 |
castor |
role | 1 | 19 | 0 |
continue-session |
procedure | 1 | 1 | 39 |
correspondence-voice |
procedure | 1 | 1 | 4 |
corvus-monedula |
role | 1 | 19 | 0 |
create-plan |
procedure | 1 | 204 | 0 |
create-project-overview |
procedure | 1 | 1 | 14 |
create_plan |
procedure | 2 | 209 | 0 |
create_pr |
procedure | 1 | 201 | 10 |
create_prototype |
procedure | 2 | 209 | 0 |
create_release |
procedure | 2 | 209 | 1 |
create_rule |
plumbing | 2 | 209 | 12 |
define-category |
procedure | 1 | 1 | 5 |
design_issues |
procedure | 1 | 5 | 2 |
digest |
procedure | 1 | 1 | 34 |
draft-illustration |
procedure | 1 | 204 | 1 |
draft_illustration |
procedure | 2 | 209 | 1 |
email-mechanics |
procedure | 1 | 1 | 7 |
end |
procedure | 2 | 204 | 24 |
end-sessions |
procedure | 1 | 1 | 9 |
ensure-neotoma |
plumbing | 1 | 1 | 1 |
evaluate-leads |
procedure | 1 | 1 | 2 |
evaluate-leads-probe-2026-07-16 |
test/probe | 1 | 1 | 0 |
evaluate-leads-probe2-2026-07-16 |
test/probe | 1 | 1 | 0 |
evaluate_positioning |
procedure | 1 | 209 | 5 |
final_review |
procedure | 2 | 209 | 0 |
fix_feature_bug |
procedure | 2 | 209 | 0 |
groom-leads-graph |
procedure | 1 | 1 | 1 |
gryllus |
role | 1 | 19 | 6 |
luscinia |
role | 1 | 19 | 0 |
manage_error_debugging |
procedure | 2 | 209 | 0 |
meetings-and-contacts |
procedure | 1 | 1 | 0 |
neversight_learn_skills.dev_obviously_awesome |
procedure | 1 | 209 | 4 |
onychomys |
role | 1 | 19 | 1 |
paradisaea |
role | 1 | 19 | 0 |
plan-status |
procedure | 1 | 1 | 4 |
prepare-taxes |
procedure | 1 | 21 | 3 |
probe-skill-mcp |
test/probe | 1 | 1 | 0 |
process-meeting |
procedure | 2 | 3 | 16 |
process_issues |
procedure | 1 | 209 | 5 |
process_prs |
procedure | 4 | 209 | 39 |
publish-plan |
procedure | 1 | 204 | 0 |
publish_plan |
procedure | 2 | 209 | 0 |
publishing-social |
procedure | 1 | 1 | 3 |
query-memory |
plumbing | 1 | 1 | 0 |
ready-tasks |
procedure | 1 | 1 | 15 |
reconcile-planning |
procedure | 1 | 1 | 3 |
reconcile-tasks |
procedure | 1 | 1 | 13 |
recover-sqlite-database |
plumbing | 1 | 1 | 0 |
recover_sqlite_database |
plumbing | 1 | 209 | 0 |
release |
procedure | 3 | 209 | 24 |
remember-codebase |
procedure | 1 | 1 | 0 |
remember-contacts |
procedure | 1 | 1 | 0 |
remember-conversations |
procedure | 1 | 1 | 0 |
remember-email |
procedure | 1 | 1 | 2 |
remember-finances |
procedure | 1 | 1 | 1 |
remember-meetings |
procedure | 1 | 1 | 2 |
rendered-pages |
procedure | 1 | 1 | 11 |
report-tasks |
procedure | 1 | 1 | 10 |
report_error |
procedure | 2 | 209 | 5 |
resolve-strategic-profile |
procedure | 1 | 1 | 2 |
review |
procedure | 2 | 203 | 17 |
review-sessions |
procedure | 1 | 1 | 8 |
run_feature_workflow |
procedure | 2 | 209 | 0 |
scan-feeds |
procedure | 1 | 1 | 3 |
scrape_chatgpt_workout |
procedure | 1 | 6 | 5 |
setup-commands |
plumbing | 1 | 204 | 0 |
setup_commands |
plumbing | 2 | 209 | 0 |
setup_cursor_copies |
plumbing | 2 | 209 | 0 |
shadcn |
plumbing | 1 | 5 | 2 |
shepherd-issue |
procedure | 1 | 1 | 0 |
store-data |
plumbing | 1 | 1 | 1 |
store_neotoma |
plumbing | 2 | 209 | 4 |
sync_env_from_1password |
plumbing | 2 | 209 | 1 |
transcription-audio |
procedure | 1 | 1 | 3 |
verify-work |
procedure | 1 | 1 | 4 |
whatsapp-capture |
procedure | 1 | 1 | 6 |
where |
plumbing | 1 | 1 | 36 |
writing-voice |
procedure | 1 | 1 | 1 |
7. The entity is the record; with no file, no harness loads it. Several are probe rows — data_model.md#record-conventions forbids a probe row in the production registry, and stage 5 closes those terminal with a note.
__probe_2409_final__probe_postfix_2409__probe_postfix_2409bprobe-e2e-writecheckstatusstore-warning-rule-probe-2409test-db-check
1 skill entit(ies) carry a canonical_name that is not a name — one holds an entire descriptive paragraph where a name belongs. They are reported here rather than truncated into a name, which would then match or miss falsely. Entity id(s): ent_5d7f84290f290383e53d1a42.
migration.md:277 requires standing rules inside skill bodies migrate to task_policy by kind, never by value. The rules migration therefore has to reach into skill bodies, and this is which bodies and how far.
297 of 404 distinct skills carry at least one rule-shaped line, 1,509 lines in total.
The rule inventory found 88 of 97 and 66 of 96 were both defensible for the same corpus, differing only by case sensitivity — and the defect was that the instrument went unstated. So this one is stated, and --matcher prints it.
- Counted per LINE, not per occurrence. A line carrying three markers is one rule-shaped statement, not three.
- Case-SENSITIVE on the all-caps forms (
NEVER,ALWAYS,MUST,DO NOT). In this corpus capitalisation deliberately marks a binding rule; lowercasing them sweeps in ordinary prose such as you must first read. - Case-INSENSITIVE on the multi-word imperative phrases (never send, always verify, do not commit, confirm before, only ever), which are unambiguous at any case.
- Front matter is excluded. A
description:routinely contains use this whenever…, which is trigger metadata, not a standing rule.
What the figure is. It counts rule-SHAPED lines. It is a lower bound on rules a human would recognise — a rule stated without an imperative marker is invisible to it — and it is not a claim that every line counted states a distinct rule. Deduplicating these by KIND is the rule inventory's job, not this one's; what this contributes is which skill bodies the rules migration must open.
The case decision above is not cosmetic, and its cost is stated rather than left for a later reader to rediscover. The same corpus, the same markers, the same run, varying only case sensitivity:
| Matcher variant | Skills carrying rule content |
|---|---|
| All markers case-SENSITIVE | 255 of 404 |
| As stated above (mixed) | 297 of 404 |
| All markers case-insensitive | 367 of 404 |
All three are defensible readings and they differ by 112 skills. That spread is the reason the matcher is stated. The rule inventory reported 88 of 97 and 66 of 96 for one corpus on this same distinction; the defect was never the number, it was that the instrument went unnamed and so the two could not be reconciled. A reader who prefers a different variant can now say which one they mean and what it costs.
| Skill | Class | Rule lines | On main? |
|---|---|---|---|
continue-session |
procedure | 39 | no |
process_prs |
procedure | 39 | no |
where |
plumbing | 36 | no |
digest |
procedure | 34 | no |
process_prs |
procedure | 31 | no |
process_prs |
procedure | 25 | no |
end |
procedure | 24 | no |
release |
procedure | 24 | no |
process_prs |
procedure | 23 | no |
email-triage |
procedure | 20 | no |
email-triage |
procedure | 18 | yes |
release |
procedure | 18 | no |
release |
procedure | 18 | no |
draft-rendered-page |
procedure | 17 | no |
review |
procedure | 17 | no |
commit |
plumbing | 16 | no |
commit |
plumbing | 16 | no |
process-meeting |
procedure | 16 | no |
review |
procedure | 16 | no |
ready-tasks |
procedure | 15 | no |
create-project-overview |
procedure | 14 | no |
draft-rendered-page |
procedure | 14 | no |
email-triage |
procedure | 14 | no |
draft-rendered-page |
procedure | 13 | yes |
reconcile-tasks |
procedure | 13 | no |
Marker frequency across all bodies (a line may fire several):
| Marker | Lines fired |
|---|---|
caps_must |
462 |
phrase_must |
363 |
phrase_do_not |
291 |
phrase_never_lower |
269 |
phrase_always_lower |
143 |
caps_never |
30 |
caps_always |
30 |
phrase_required |
30 |
phrase_only_ever |
12 |
caps_do_not |
9 |
phrase_confirm_before |
8 |
One row per name + content hash. A name with two bodies gets two rows, which is the point.
| Skill | Body | Class | Files | Reach | Rule lines | Description |
|---|---|---|---|---|---|---|
__probe_delete_me |
ba9c736f19e7 |
test/probe | 1 | worktree only | 0 | (no description) |
__probe_wa_min |
3baec061d25b |
test/probe | 1 | worktree only | 0 | (no description) |
accipiter |
12ac19ca04a7 |
role | 27 | worktree only | 3 | Invoke Accipiter, the UX and product design agent — user flows, information architecture, UI implementation… |
accipiter |
32a16c0f34c5 |
role | 105 | worktree only | 3 | Invoke Accipiter, the UX and product design agent — user flows, information architecture, UI implementation… |
accipiter |
3318145e1390 |
role | 17 | worktree only | 3 | Invoke Accipiter, the UX and product design agent — user flows, information architecture, UI implementation… |
accipiter |
63750a095297 |
role | 2 | worktree only | 3 | Invoke Accipiter, the UX and product design agent — user flows, information architecture, UI implementation… |
accipiter |
80a869cfd7ff |
role | 5 | worktree only | 3 | Invoke Accipiter, the UX and product design agent — user flows, information architecture, UI implementation… |
accipiter |
bfb1fefa0e14 |
role | 129 | main | 3 | Invoke Accipiter, the UX and product design agent — user flows, information architecture, UI implementation… |
advisory |
7ea2f24dd150 |
procedure | 201 | worktree only | 3 | operator-specific, description withheld |
analyze |
1d7a7171ec70 |
procedure | 204 | worktree only | 1 | Analyze Project |
analyze |
39cd7c650219 |
procedure | 5 | worktree only | 1 | Analyze codebase or context per foundation analyze command. |
analyze |
49ffe27fb2c0 |
procedure | 2 | worktree only | 2 | Analyze codebase or context per foundation analyze command. Produces a comparative analysis… |
analyze |
c14b20a02618 |
procedure | 283 | main | 2 | Analyze codebase or context per foundation analyze command. Produces a comparative analysis… |
analyze-meeting |
05e65396aa9d |
procedure | 2 | worktree only | 0 | Deprecated alias for process-meeting. Meeting work now runs through the fuller processing pipeline:… |
analyze-meeting |
3e54bb5bb5cf |
procedure | 1 | worktree only | 8 | General-purpose meeting analysis. Reads a transcript (file path, transcription entity, or pasted text),… |
analyze-meeting |
471523638144 |
procedure | 238 | main | 8 | General-purpose meeting analysis. Reads a transcript (file path, transcription entity, or pasted text),… |
analyze-meeting |
82047a2ba0f6 |
procedure | 1 | worktree only | 8 | operator-specific, description withheld |
analyze-meeting |
e2901ac6e0c7 |
procedure | 28 | worktree only | 8 | General-purpose meeting analysis. Reads a transcript (file path, transcription entity, or pasted text),… |
analyze-meeting |
f4c65fd4cc01 |
procedure | 15 | worktree only | 8 | General-purpose meeting analysis. Reads a transcript (file path, transcription entity, or pasted text),… |
analyze-neotoma-feedback |
b4c509c7a294 |
procedure | 285 | main | 9 | Deep customer-development analysis of Neotoma-related feedback across need, positioning, efficacy, ICP fit,… |
anthus |
19082b0113ff |
role | 234 | main | 0 | Silence-detection watchdog and swarm coordinator (Tier 3 daemon). Maintains a cadence registry for every… |
anthus |
261f0c721e84 |
role | 32 | worktree only | 1 | Swarm coordinator daemon (Phase 2 skeleton). Subscribes to escalation, daemonreport, agentgrant, and task… |
anthus |
5b2be5aceae4 |
role | 1 | worktree only | 1 | Swarm coordinator daemon (Phase 2 skeleton). Subscribes to escalation, daemonreport, agentgrant, and task… |
anthus |
61e77bee2452 |
role | 2 | worktree only | 1 | Swarm coordinator daemon (Phase 2 skeleton). Subscribes to escalation, daemonreport, agentgrant, and task… |
apis |
1c567321f162 |
role | 1 | worktree only | 0 | operator-specific, description withheld |
apis |
290c047f1c40 |
role | 234 | main | 0 | operator-specific, description withheld |
apis |
6757e3c937d9 |
role | 34 | worktree only | 0 | operator-specific, description withheld |
apply-category |
e009d87777d1 |
procedure | 1 | user root | 2 | Take a category definition from /define-category and audit every public surface a product has — READMEs,… |
apus |
45c65b5a0f81 |
role | 34 | worktree only | 0 | Neotoma → git mirror webhook daemon. Receives Neotoma mirror profile webhooks and commits mirrored content… |
apus |
b6573942cbab |
role | 234 | main | 0 | Neotoma → git mirror webhook daemon. Receives Neotoma mirror profile webhooks and commits mirrored content… |
apus |
b9cb0440964a |
role | 1 | worktree only | 0 | Neotoma → git mirror webhook daemon. Receives Neotoma mirror profile webhooks and commits mirrored content… |
apus-98133670 |
b9cb0440964a |
role | 19 | worktree only | 0 | Neotoma → git mirror webhook daemon. Receives Neotoma mirror profile webhooks and commits mirrored content… |
aquila |
0c41edfc300e |
role | 33 | worktree only | 1 | Cofounder & strategic adversary of the Ateles swarm. Dual-mode: a scheduled monthly cofounder report (T3… |
aquila |
8b945ac39daf |
role | 234 | main | 1 | Cofounder & strategic adversary of the Ateles swarm. Dual-mode: a scheduled monthly cofounder report (T3… |
ateles |
21e52885d605 |
role | 28 | worktree only | 5 | operator-specific, description withheld |
ateles |
2f18491bb88a |
role | 32 | worktree only | 3 | operator-specific, description withheld |
ateles |
728ca52a510c |
role | 2 | worktree only | 3 | operator-specific, description withheld |
ateles |
75466ed5f09b |
role | 1 | worktree only | 5 | operator-specific, description withheld |
ateles |
84929182aaba |
role | 2 | worktree only | 5 | operator-specific, description withheld |
ateles |
90d66cde621d |
role | 1 | worktree only | 3 | operator-specific, description withheld |
ateles |
ba8830b40b1b |
role | 127 | main | 5 | operator-specific, description withheld |
ateles |
f1b7d1268080 |
role | 76 | worktree only | 3 | operator-specific, description withheld |
audit |
0125d0824561 |
procedure | 2 | worktree only | 11 | operator-specific, description withheld |
audit |
20aa8cf57230 |
procedure | 1 | worktree only | 8 | operator-specific, description withheld |
audit |
3018c1ad054e |
procedure | 5 | worktree only | 10 | operator-specific, description withheld |
audit |
3efd7645c552 |
procedure | 5 | worktree only | 8 | operator-specific, description withheld |
audit |
f4d8d460b5df |
procedure | 196 | worktree only | 10 | operator-specific, description withheld |
aythya |
2b741ebb1908 |
role | 1 | worktree only | 3 | Visual and brand designer. Owns brand identity, design system, aesthetic language, colour, type, and visual… |
aythya |
3cbe05a9ec12 |
role | 32 | worktree only | 3 | Visual and brand designer. Owns brand identity, design system, aesthetic language, colour, type, and visual… |
aythya |
41eebdd719ba |
role | 234 | main | 3 | Visual and brand designer. Owns brand identity, design system, aesthetic language, colour, type, and visual… |
aythya |
4abf8e6e15bb |
role | 2 | worktree only | 3 | Visual and brand designer. Owns brand identity, design system, aesthetic language, colour, type, and visual… |
aythya |
4babe33e82b2 |
role | 16 | worktree only | 3 | (no description) |
bombycilla |
a0ead0a6ccaf |
role | 18 | worktree only | 4 | Invoke Bombycilla, the technical architect agent — architecture reviews, schema design, interface contracts,… |
build-landing-page |
9d2addc3cd33 |
procedure | 19 | main | 12 | Build a landing page through explicit staged steps, each writing one durable Neotoma entity that later… |
buteo |
01c91926c1b7 |
role | 2 | worktree only | 1 | operator-specific, description withheld |
buteo |
6b25e0c30a7d |
role | 105 | worktree only | 2 | Invoke Buteo, the legal agent — contract review, marketing copy legal risk, privacy/GDPR compliance, IP and… |
buteo |
97618c240cf5 |
role | 129 | main | 2 | Invoke Buteo, the legal agent — contract review, marketing copy legal risk, privacy/GDPR compliance, IP and… |
buteo |
d21a64bd35e5 |
role | 17 | worktree only | 1 | operator-specific, description withheld |
buteo |
faf4db289e95 |
role | 32 | worktree only | 2 | Invoke Buteo, the legal agent — contract review, marketing copy legal risk, privacy/GDPR compliance, IP and… |
calendar-scheduling |
986c66fa48dc |
procedure | 1 | user root | 3 | How to read and write the operator's Google Calendar — the gws CLI invocation and its parsing traps, the… |
castor |
3c2d842e50d8 |
role | 19 | worktree only | 0 | Neotoma-repo automation daemon. Subscribes to Neotoma issue/PR entity events and processes them against the… |
cicada |
2e1b28680d14 |
role | 234 | main | 4 | Invoke Cicada (formerly Gryllus; renamed 2026-06-12 for voice/ASR robustness), the issue worker agent —… |
cicada |
44af7bcc76ab |
role | 5 | worktree only | 2 | Invoke Cicada (formerly Gryllus; renamed 2026-06-12 for voice/ASR robustness), the issue worker agent —… |
cicada |
85709c7ce812 |
role | 1 | worktree only | 2 | Invoke Cicada (formerly Gryllus; renamed 2026-06-12 for voice/ASR robustness), the issue worker agent —… |
cicada |
8b5a3a788ee4 |
role | 13 | worktree only | 2 | Invoke Cicada (formerly Gryllus; renamed 2026-06-12 for voice/ASR robustness), the issue worker agent —… |
cicada |
ab19c030bf59 |
role | 2 | worktree only | 2 | Invoke Cicada (formerly Gryllus; renamed 2026-06-12 for voice/ASR robustness), the issue worker agent —… |
cicada |
fa5dbc2f2c81 |
role | 14 | worktree only | 4 | Invoke Cicada (formerly Gryllus; renamed 2026-06-12 for voice/ASR robustness), the issue worker agent —… |
ciconia |
165b2504aeaa |
role | 32 | worktree only | 2 | Marketing and GTM strategist. Owns launch sequencing, channel selection, content strategy, developer… |
ciconia |
83ac4054fdeb |
role | 1 | worktree only | 2 | Marketing and GTM strategist. Owns launch sequencing, channel selection, content strategy, developer… |
ciconia |
9905401a59f9 |
role | 2 | worktree only | 2 | Marketing and GTM strategist. Owns launch sequencing, channel selection, content strategy, developer… |
ciconia |
d2257ec49c00 |
role | 16 | worktree only | 2 | (no description) |
ciconia |
f513267f8712 |
role | 234 | main | 3 | Marketing and GTM strategist. Owns launch sequencing, channel selection, content strategy, developer… |
columba |
4bff74d2794f |
role | 1 | worktree only | 4 | operator-specific, description withheld |
columba |
6e3ba3879a3a |
role | 234 | main | 1 | Constitution keeper and cross-cutting policy authority. Holds canonical record of business goals, founding… |
columba |
842c157ba8a1 |
role | 16 | worktree only | 3 | operator-specific, description withheld |
columba |
aae7762e87bb |
role | 32 | worktree only | 1 | Constitution keeper and cross-cutting policy authority. Holds canonical record of business goals, founding… |
columba |
fc0b2c6f52d4 |
role | 2 | worktree only | 4 | operator-specific, description withheld |
commit |
18fcd6f4d4df |
plumbing | 204 | worktree only | 16 | operator-specific, description withheld |
commit |
5f05d5285daa |
plumbing | 5 | worktree only | 16 | operator-specific, description withheld |
commit |
63a5d3c8a130 |
plumbing | 285 | main | 11 | Commit submodules and/or main repo with structured messages; supports /commit repo, /commit . |
concierge |
d94f4d228656 |
role | 234 | main | 2 | Personal scheduling + language agent (DRAFT, planned). Owns personal calendar slotting/sync and EN/ES/CA… |
continue-session |
48d139253d64 |
procedure | 1 | user root | 39 | Pick up any workstream mid-flight, in any harness, when the session that was carrying it stops — usage… |
correspondence-voice |
c8d3dd013f50 |
procedure | 1 | user root | 4 | How the operator's outbound correspondence reads — openers, sign-offs, register per relationship (family,… |
corvus |
5932d45984e0 |
role | 1 | worktree only | 9 | Content writer and social voice. Owns long-form technical posts, build-in-public threads, changelog… |
corvus |
8320e549d3c5 |
role | 1 | worktree only | 9 | Content writer and social voice. Owns long-form technical posts, build-in-public threads, changelog… |
corvus |
8c2e3ec3a105 |
role | 248 | main | 11 | Content writer and social voice. Owns long-form technical posts, build-in-public threads, changelog… |
corvus |
8ff63b3606dc |
role | 16 | worktree only | 1 | Content writer and social voice. Owns long-form technical posts, build-in-public threads, changelog… |
corvus |
de6fe7046283 |
role | 18 | worktree only | 11 | Content writer and social voice. Owns long-form technical posts, build-in-public threads, changelog… |
corvus |
dee074eccdaa |
role | 1 | worktree only | 9 | Content writer and social voice. Owns long-form technical posts, build-in-public threads, changelog… |
corvus-monedula |
002b8cdca997 |
role | 19 | worktree only | 0 | operator-specific, description withheld |
cotinga |
06686ee29396 |
role | 2 | worktree only | 4 | Daily event-prep briefing daemon. Runs at 05:30 Madrid time: Phase 1 (fast ~30s) fetches today's calendar… |
cotinga |
29143e047124 |
role | 1 | worktree only | 4 | Daily event-prep briefing daemon. Runs at 05:30 Madrid time: Phase 1 (fast ~30s) fetches today's calendar… |
cotinga |
dd4298c2e37c |
role | 103 | worktree only | 4 | Daily event-prep briefing daemon. Runs at 05:30 Madrid time: Phase 1 (fast ~30s) fetches today's calendar… |
cotinga |
df78820bd23d |
role | 32 | worktree only | 4 | Daily event-prep briefing daemon. Runs at 05:30 Madrid time: Phase 1 (fast ~30s) fetches today's calendar… |
cotinga |
e29ee280306b |
role | 131 | main | 4 | Daily event-prep briefing daemon. Runs at 05:30 Madrid time: Phase 1 (fast ~30s) fetches today's calendar… |
create-execution-plan |
97e1d2d0ecab |
procedure | 285 | main | 1 | Create a task execution plan with correct schema and task linkage. Use when user says "create execution… |
create-feature-unit |
d1b6533ba294 |
procedure | 285 | main | 7 | Create a new feature unit with spec, manifest, and test structure. Use when user mentions creating features,… |
create-plan |
41074b0540d1 |
procedure | 204 | worktree only | 0 | Create New Plan |
create-project-overview |
8fc7715afc42 |
procedure | 1 | user root | 14 | operator-specific, description withheld |
create-prototype |
73c98f59106a |
procedure | 204 | worktree only | 0 | Create Prototype |
create-prototype |
a0f65d180cc9 |
procedure | 285 | main | 0 | Create prototype per foundation command. |
create-release |
83340e03d494 |
procedure | 285 | main | 6 | Create a new software release with planning, manifest, and execution schedule. Use when the user mentions… |
create-release |
dd4ae4111c60 |
procedure | 204 | worktree only | 1 | Create New Release |
create-rule |
137efdc7c003 |
plumbing | 204 | worktree only | 12 | Create Rule |
create-rule |
1d7195e8262d |
plumbing | 285 | main | 2 | Create Cursor rule for persistent AI guidance. |
create-website |
d6fad512c666 |
procedure | 285 | main | 0 | Create a new website as a git submodule in execution/website. Use when user says "create new website" or… |
create_plan |
c57c8b981212 |
procedure | 5 | worktree only | 0 | Create a new plan as a Neotoma entity, optionally linked to objectives, releases, or other plans. |
create_plan |
fc6aeefba7c5 |
procedure | 204 | worktree only | 0 | Create New Plan |
create_pr |
701dff6178af |
procedure | 201 | worktree only | 10 | operator-specific, description withheld |
create_prototype |
a0f65d180cc9 |
procedure | 5 | worktree only | 0 | Create prototype per foundation command. |
create_prototype |
ea91cfda1b74 |
procedure | 204 | worktree only | 0 | Create Prototype |
create_release |
3e07248c1f93 |
procedure | 204 | worktree only | 1 | Create New Release |
create_release |
4a29061ff286 |
procedure | 5 | worktree only | 1 | Create a new software release with planning, manifest, and execution schedule. |
create_rule |
bc07322b6e3e |
plumbing | 5 | worktree only | 12 | Create Cursor rule for persistent AI guidance. |
create_rule |
dd8bf4646c34 |
plumbing | 204 | worktree only | 12 | Create Rule |
debug |
ba19a0bd28c3 |
procedure | 5 | worktree only | 1 | Debug workflow per foundation command. |
debug |
e2a0bffe8b06 |
procedure | 285 | main | 1 | Debug workflow per foundation command. |
debug |
e6f343992b6f |
procedure | 204 | worktree only | 1 | Debug Command |
define-category |
cb8d54c3fc8a |
procedure | 1 | user root | 5 | Define the category a product should own, by auditing everything the product already says about itself… |
deploy-website |
5d96cafced5e |
procedure | 285 | main | 3 | Deploy the markmhendrickson website: sync markdown edits to Neotoma, export website data, regenerate cache,… |
design_issues |
33e21ca332db |
procedure | 5 | worktree only | 2 | Work through needs-design issues depth-first until the design question is resolved and the issue is ready to… |
digest |
b066bc47a9b1 |
procedure | 1 | user root | 34 | operator-specific, description withheld |
disk-cleanup |
88d610b12530 |
plumbing | 285 | main | 1 | Analyze disk space and surface highest-leverage, safest cleanup candidates in ordered tiers. Asks for user… |
draft-comparative-neotoma-post |
5bcfc635ae0f |
procedure | 285 | main | 1 | Draft a comparative Neotoma post (memory & truth-layer series) that compares a product or API's memory to a… |
draft-illustration |
2a1acd3552dc |
procedure | 204 | worktree only | 1 | Blog Post Visual Style (Cross-Repo) |
draft-rendered-page |
220773f8293a |
procedure | 5 | worktree only | 12 | Draft a visual HTML outreach/proposal page stored as a Neotoma renderedpage entity, served at a stable guest… |
draft-rendered-page |
3a1e6b2a5a37 |
procedure | 1 | worktree only | 14 | operator-specific, description withheld |
draft-rendered-page |
db7210f235ce |
procedure | 1 | worktree only | 17 | operator-specific, description withheld |
draft-rendered-page |
e06d2d43ce7a |
procedure | 259 | main | 13 | operator-specific, description withheld |
draft_illustration |
4c0468d2a2ec |
procedure | 5 | worktree only | 1 | Apply consistent visual style for blog post hero and social images across repos. Use when creating or… |
draft_illustration |
e49d845e12f3 |
procedure | 204 | worktree only | 1 | Blog Post Visual Style (Cross-Repo) |
email-mechanics |
4c3bf784166d |
procedure | 1 | user root | 7 | operator-specific, description withheld |
email-triage |
015c3cafc670 |
procedure | 266 | main | 18 | operator-specific, description withheld |
email-triage |
3f8081e8af8c |
procedure | 19 | worktree only | 14 | Step-by-step email inbox triage workflow with draft generation, data persistence, and archiving. Use when… |
email-triage |
e227330cd841 |
procedure | 1 | user root | 20 | operator-specific, description withheld |
email-triage-auto |
5761bc9826e5 |
mixed | 266 | main | 8 | Autonomous, no-HITL hourly email sweep run by the Turdus daemon. Stores EVERY email from the last 24 hours… |
email-triage-auto |
9d959f362cea |
mixed | 1 | user root | 5 | operator-specific, description withheld |
end |
127fd40e2d43 |
procedure | 1 | user root | 24 | operator-specific, description withheld |
end |
5e5b9db8eb3b |
procedure | 203 | worktree only | 7 | Session-end audit. Surfaces remaining work to complete or track, verifies all data intended for Neotoma… |
end-sessions |
681c6558a535 |
procedure | 1 | user root | 9 | Stage 7 — the LAST stage — of the session-task pipeline. Gated batch cleanup of sessions that have been… |
ensure-neotoma |
c4e85fbda4bb |
plumbing | 1 | user root | 1 | Install Neotoma, configure MCP for your harness, and verify connectivity. Prerequisite for all memory skills. |
evaluate-leads |
c427d5df387a |
procedure | 1 | worktree only | 2 | Hirundo-owned skill that evaluates leads against a partner-commercialization contract via a standing… |
evaluate-leads-probe-2026-07-16 |
ba9c736f19e7 |
test/probe | 1 | worktree only | 0 | (no description) |
evaluate-leads-probe2-2026-07-16 |
3300d1e98f62 |
test/probe | 1 | worktree only | 0 | (no description) |
evaluate_positioning |
1e47df09d952 |
procedure | 209 | worktree only | 5 | operator-specific, description withheld |
extract-amazon-order |
88e1e1c578e4 |
procedure | 285 | main | 1 | operator-specific, description withheld |
falco |
5de9542f3a25 |
role | 223 | main | 1 | Adversarial security reviewer — security lens of the Apis review panel. |
final-review |
10805ed65067 |
procedure | 204 | worktree only | 0 | Final Review |
final-review |
213ecaa3cab2 |
procedure | 285 | main | 0 | Final review workflow per foundation command. |
final_review |
213ecaa3cab2 |
procedure | 5 | worktree only | 0 | Final review workflow per foundation command. |
final_review |
d8b073ee5fea |
procedure | 204 | worktree only | 0 | Final Review |
find-technician-slot |
131dee654ed2 |
procedure | 285 | main | 0 | operator-specific, description withheld |
fix-feature-bug |
268de8446f22 |
procedure | 285 | main | 8 | Fix bugs using structured workflow with error classification and regression tests. Use when user reports… |
fix-feature-bug |
da950a61d482 |
procedure | 204 | worktree only | 0 | Fix Feature Bug |
fix_feature_bug |
0634457d94ac |
procedure | 5 | worktree only | 0 | Fix bugs using structured workflow with error classification and regression tests. |
fix_feature_bug |
2c943b809eff |
procedure | 204 | worktree only | 0 | Fix Feature Bug |
formica |
0c3a7b8a34ab |
role | 1 | worktree only | 0 | GitHub issue/PR automation daemon for the ateles repo. SSE subscriber to ateles GitHub events; dispatches… |
formica |
1366ba955f48 |
role | 234 | main | 0 | GitHub issue/PR automation daemon for the ateles repo. SSE subscriber to ateles GitHub events; dispatches… |
formica |
3691ced24ed5 |
role | 2 | worktree only | 0 | GitHub issue/PR automation daemon for the ateles repo. SSE subscriber to ateles GitHub events; dispatches… |
formica |
66c33e14b2ed |
role | 32 | worktree only | 0 | GitHub issue/PR automation daemon for the ateles repo. SSE subscriber to ateles GitHub events; dispatches… |
formica |
7164b9b716cf |
role | 16 | worktree only | 0 | GitHub issue/PR automation daemon. Drives processissues and processprs skills. Currently JS (Phase 5 Python… |
frame-product-argument |
368f98596895 |
procedure | 19 | main | 4 | Establish the argument a product's public surfaces make, as three durable Neotoma entities later work… |
fringilla |
2fba51c66959 |
role | 1 | worktree only | 0 | Invoke Fringilla, the financial analysis agent — quarterly financial reviews, portfolio performance… |
fringilla |
5556083e4570 |
role | 234 | main | 0 | Invoke Fringilla, the financial analysis agent — quarterly financial reviews, portfolio performance… |
fringilla |
952ba331eab3 |
role | 2 | worktree only | 0 | Invoke Fringilla, the financial analysis agent — quarterly financial reviews, portfolio performance… |
fringilla |
d4d9349b6451 |
role | 32 | worktree only | 0 | Invoke Fringilla, the financial analysis agent — quarterly financial reviews, portfolio performance… |
gorilla |
40e5f33f125c |
role | 234 | main | 4 | operator-specific, description withheld |
gorilla |
4c135a7e4d34 |
procedure | 13 | worktree only | 4 | operator-specific, description withheld |
gorilla |
a8b71f086fc4 |
role | 32 | worktree only | 4 | operator-specific, description withheld |
gorilla |
d19524da89a2 |
role | 2 | worktree only | 4 | operator-specific, description withheld |
groom-leads-graph |
2844a70a434a |
procedure | 1 | user root | 1 | >- |
gryllus |
d9064f6172c8 |
role | 19 | worktree only | 6 | Invoke Gryllus, the issue worker agent — implements GitHub issues after all pre-impl gates are signed off,… |
hirundo |
46296e2e7e73 |
role | 2 | worktree only | 1 | operator-specific, description withheld |
hirundo |
6389455c2d7d |
role | 234 | main | 3 | operator-specific, description withheld |
hirundo |
663a93a6c907 |
role | 32 | worktree only | 2 | operator-specific, description withheld |
hirundo |
b4fc1ecca270 |
role | 16 | worktree only | 2 | Invoke Hirundo, the customer intelligence agent — ICP synthesis, contact-level market signal aggregation,… |
hirundo |
e162d34ea784 |
role | 1 | worktree only | 1 | operator-specific, description withheld |
import-audio |
10b5df0f760f |
procedure | 2 | worktree only | 1 | Import and transcribe audio files from Desktop and Voice Memos. Use when user says "import audio",… |
import-audio |
806e89d0cbe3 |
procedure | 283 | main | 1 | Import and transcribe audio files from Desktop and Voice Memos. Use when user says "import audio",… |
intake |
cda0ca5a7d2e |
procedure | 5 | worktree only | 2 | Fast session intake for the swarm leader: settle the plan/task with one clarification batch, cross-check and… |
intake |
f8a8870a6791 |
procedure | 261 | main | 2 | Fast session intake for the swarm leader: settle the plan/task with one clarification batch, cross-check and… |
intake-relationship |
25f579b00e05 |
procedure | 261 | main | 2 | operator-specific, description withheld |
intake-relationship |
9756508d2885 |
procedure | 5 | worktree only | 1 | operator-specific, description withheld |
interview-admin |
b64d57a4e309 |
procedure | 285 | main | 0 | Administer interviews agentically with Neotoma as canonical CRM, including provisioning, invite delivery,… |
language |
81825e910560 |
plumbing | 285 | main | 1 | Process language prompts for fluency verification and translation across English, Spanish, and Catalan with… |
lanius |
13f5829eaa2b |
role | 17 | worktree only | 0 | Invoke Lanius, the GitHub workflow coordinator — routes issues through the gate pipeline, enforces PR gate… |
lanius |
3abbcde33488 |
role | 1 | worktree only | 0 | Invoke Lanius, the GitHub workflow coordinator — routes issues through the gate pipeline, enforces PR gate… |
lanius |
5cd9f2e5c2d5 |
role | 234 | main | 4 | Invoke Lanius, the GitHub workflow coordinator — routes issues through the gate pipeline, enforces PR gate… |
lanius |
9e5d4b45ba4e |
role | 1 | worktree only | 1 | Invoke Lanius, the GitHub workflow coordinator — routes issues through the gate pipeline, enforces PR gate… |
lanius |
b4b6660f5e9c |
role | 32 | worktree only | 1 | Invoke Lanius, the GitHub workflow coordinator — routes issues through the gate pipeline, enforces PR gate… |
learn |
2512920b2696 |
procedure | 209 | worktree only | 1 | Learn |
learn |
b2d77277b452 |
procedure | 285 | main | 3 | Convert issues raised in chat into durable automation by creating or updating rules, skills, and hooks in… |
loop-start |
43fc4f7f3833 |
plumbing | 286 | main | 4 | operator-specific, description withheld |
loop-status |
f371d6678d93 |
plumbing | 286 | main | 0 | operator-specific, description withheld |
loop-stop |
9de32836afe8 |
plumbing | 286 | main | 0 | operator-specific, description withheld |
luscinia |
9d2021fbe401 |
role | 19 | worktree only | 0 | Session compliance supervisor. Monitors agent sessions for SKILL.md and agentdefinition compliance, checks… |
manage-error-debugging |
0fdef7f6bf48 |
procedure | 204 | worktree only | 0 | Manage Error Debugging Automation |
manage-error-debugging |
18e2e4641dc0 |
procedure | 285 | main | 0 | Manage error debugging per foundation command. |
manage_error_debugging |
18e2e4641dc0 |
procedure | 5 | worktree only | 0 | Manage error debugging per foundation command. |
manage_error_debugging |
3d205243d5b1 |
procedure | 204 | worktree only | 0 | Manage Error Debugging Automation |
manucode |
3d8ad717ed45 |
role | 32 | worktree only | 0 | Copy and positioning agent (formerly Paradisaea; renamed 2026-06-12 for voice/ASR robustness). Owns UI copy,… |
manucode |
6e19e4245634 |
role | 234 | main | 0 | Copy and positioning agent (formerly Paradisaea; renamed 2026-06-12 for voice/ASR robustness). Owns UI copy,… |
manucode |
aca5f8cc3d07 |
role | 1 | worktree only | 0 | Copy and positioning agent (formerly Paradisaea; renamed 2026-06-12 for voice/ASR robustness). Owns UI copy,… |
manucode |
f60d44b2fa71 |
role | 2 | worktree only | 0 | Copy and positioning agent (formerly Paradisaea; renamed 2026-06-12 for voice/ASR robustness). Owns UI copy,… |
meetings-and-contacts |
1756e45b5952 |
procedure | 1 | user root | 0 | How to prepare for, run, and follow up on meetings, and how to establish what is actually true about a… |
menura |
0ea80ad6d6b8 |
role | 1 | worktree only | 1 | Public-facing personal representative at markmhendrickson.com/agent/. Read-only, publicread AAuth scope —… |
menura |
a99e6d81b2e0 |
role | 32 | worktree only | 1 | Public-facing personal representative at the operator's public agent endpoint. Read-only, publicread AAuth… |
menura |
c209520fbcb4 |
role | 16 | worktree only | 0 | Public-facing personal representative at markmhendrickson.com/agent/. Read-only, publicread AAuth scope —… |
menura |
c48dda9acea8 |
role | 234 | main | 1 | Public-facing personal representative at the operator's public agent endpoint. Read-only, publicread AAuth… |
menura |
fbf0c1fe2f1b |
role | 2 | worktree only | 1 | Public-facing personal representative at markmhendrickson.com/agent/. Read-only, publicread AAuth scope —… |
monedula |
3c8cfc299652 |
role | 32 | worktree only | 3 | operator-specific, description withheld |
monedula |
7e743cc9596d |
role | 234 | main | 3 | operator-specific, description withheld |
monedula |
a83cdc6385a4 |
role | 2 | worktree only | 2 | operator-specific, description withheld |
monedula |
d1d1a45d9cea |
role | 1 | worktree only | 2 | operator-specific, description withheld |
neotoma-agent |
100ab96f680b |
role | 32 | worktree only | 0 | Neotoma-repo automation daemon. Subscribes to Neotoma issue/PR entity events and processes them against the… |
neotoma-agent |
19f1cd2f9640 |
role | 2 | worktree only | 0 | Neotoma-repo automation daemon. Subscribes to Neotoma issue/PR entity events and processes them against the… |
neotoma-agent |
62270b6dc51f |
role | 1 | worktree only | 0 | Neotoma-repo automation daemon. Subscribes to Neotoma issue/PR entity events and processes them against the… |
neotoma-agent |
6827ddaa1c37 |
role | 234 | main | 0 | Neotoma-repo automation daemon. Subscribes to Neotoma issue/PR entity events and processes them against the… |
neotoma-learn |
c6a8852a2853 |
procedure | 285 | main | 10 | Update Neotoma MCP instructions from observed failures or scenarios; apply instruction changes directly in… |
neversight_learn_skills.dev_obviously_awesome |
ec1779618a61 |
procedure | 209 | worktree only | 4 | operator-specific, description withheld |
nucifraga |
1cf971113fef |
role | 234 | main | 2 | operator-specific, description withheld |
onychomys |
d36054578466 |
role | 19 | worktree only | 1 | Primary operator interface. Runs in OpenClaw (Claude Code). OnychomysBot on Telegram. Full operator scope —… |
ops |
6b531fe81841 |
role | 234 | main | 2 | Website + host operations agent (DRAFT, planned). Owns website deploy/verify pipelines and host-machine… |
paradisaea |
93d990280d62 |
role | 19 | worktree only | 0 | Copy and positioning agent. Owns UI copy, marketing copy, product language, and messaging hierarchy.… |
pavo |
2bcb0a768143 |
role | 5 | worktree only | 2 | Invoke Pavo, the product manager agent — prioritisation synthesis, tradeoff analysis, and sequencing… |
pavo |
3a030861d500 |
role | 105 | worktree only | 3 | Invoke Pavo, the product manager agent — prioritisation synthesis, tradeoff analysis, and sequencing… |
pavo |
6a56f6da9324 |
role | 13 | worktree only | 3 | Invoke Pavo, the product manager agent — prioritisation synthesis, tradeoff analysis, and sequencing… |
pavo |
7817374c1e45 |
role | 16 | worktree only | 1 | Invoke Pavo, the product manager agent — prioritisation synthesis, tradeoff analysis, and sequencing… |
pavo |
96bc61fd97ba |
role | 14 | worktree only | 3 | Invoke Pavo, the product manager agent — prioritisation synthesis, tradeoff analysis, and sequencing… |
pavo |
be7046ca641a |
role | 2 | worktree only | 1 | Invoke Pavo, the product manager agent — prioritisation synthesis, tradeoff analysis, and sequencing… |
pavo |
ea1b522155b9 |
role | 1 | worktree only | 1 | Invoke Pavo, the product manager agent — prioritisation synthesis, tradeoff analysis, and sequencing… |
pavo |
fedd30b8132c |
role | 129 | main | 3 | Invoke Pavo, the product manager agent — prioritisation synthesis, tradeoff analysis, and sequencing… |
phoenicurus |
26fd701e243c |
role | 105 | worktree only | 6 | operator-specific, description withheld |
phoenicurus |
594504540386 |
role | 5 | worktree only | 6 | operator-specific, description withheld |
phoenicurus |
6032730739b4 |
role | 1 | worktree only | 2 | operator-specific, description withheld |
phoenicurus |
83e747f97d6b |
role | 27 | worktree only | 6 | operator-specific, description withheld |
phoenicurus |
9f2b5afcfa11 |
role | 16 | worktree only | 3 | operator-specific, description withheld |
phoenicurus |
ac809ef526e0 |
role | 2 | worktree only | 2 | operator-specific, description withheld |
phoenicurus |
bc5bd63b3f81 |
role | 129 | main | 6 | operator-specific, description withheld |
picus |
076dc7edd1ea |
role | 1 | worktree only | 4 | operator-specific, description withheld |
picus |
5a7b6cc121d9 |
role | 234 | main | 5 | operator-specific, description withheld |
picus |
6959d3a78cfb |
role | 2 | worktree only | 4 | operator-specific, description withheld |
picus |
aec31611c94a |
role | 32 | worktree only | 5 | operator-specific, description withheld |
plan-status |
9151c836a185 |
procedure | 1 | user root | 4 | Phase-by-phase progress report on a Neotoma plan, measured against systems of record rather than read from… |
ploceus |
955eed798e82 |
role | 234 | main | 5 | Anchor-delivery agent. Owns the anchordelivery role strategy (enta2c633fc300015e8f65d0e92): deploys and… |
prepare-taxes |
c0995766e9ed |
procedure | 21 | main | 3 | Run the operator's annual two-jurisdiction (Spain + US) tax-materials preparation end to end — gather,… |
probe-skill-mcp |
2d711642b726 |
test/probe | 1 | worktree only | 0 | transport probe, delete me |
process-feedback |
4f4bc18df5d3 |
procedure | 285 | main | 0 | Parse product feedback by bucket and assess it against release stage constraints, with Neotoma… |
process-meeting |
6ff685820fd7 |
procedure | 2 | worktree only | 16 | operator-specific, description withheld |
process-meeting |
fd3af511d84d |
procedure | 1 | worktree only | 12 | operator-specific, description withheld |
process_issues |
dcd63615fc15 |
procedure | 209 | worktree only | 5 | Process Issues |
process_prs |
5e726877aae7 |
procedure | 2 | worktree only | 31 | operator-specific, description withheld |
process_prs |
801011adbc5f |
procedure | 3 | worktree only | 25 | operator-specific, description withheld |
process_prs |
88575634125b |
procedure | 6 | worktree only | 23 | operator-specific, description withheld |
process_prs |
a16e6f368a7d |
procedure | 198 | worktree only | 39 | operator-specific, description withheld |
publish |
2bf3215b01dd |
procedure | 5 | worktree only | 2 | operator-specific, description withheld |
publish |
5b0034842359 |
procedure | 285 | main | 0 | Publish workflow per foundation publish command. |
publish |
fa9d2953867f |
procedure | 204 | worktree only | 2 | operator-specific, description withheld |
publish-plan |
2c1a75492614 |
procedure | 204 | worktree only | 0 | publish-plan |
publish_plan |
02e1adb59985 |
procedure | 5 | worktree only | 0 | Convert a plan file into a GitHub Discussion post for public input. |
publish_plan |
48289fb01b2b |
procedure | 204 | worktree only | 0 | publish-plan |
publishing-social |
c6b31cb87945 |
procedure | 1 | user root | 3 | operator-specific, description withheld |
pull |
1fa4f0c66a64 |
plumbing | 204 | worktree only | 3 | pull |
pull |
87a14a5fff19 |
plumbing | 290 | main | 3 | Pull from origin; supports /pull . |
push |
021db8199a87 |
plumbing | 290 | main | 1 | Push current branch to origin; supports /push . |
push |
cc2c8fc2e03d |
plumbing | 204 | worktree only | 1 | push |
quarterly-portfolio-review |
1ea18279d831 |
procedure | 285 | main | 0 | Generate a quarterly portfolio review report from the template and process. Use when user says \"quarterly… |
query-memory |
0c1a1766a9ef |
plumbing | 1 | user root | 0 | Search and retrieve entities, relationships, and timeline events from Neotoma memory. |
ready-tasks |
22574f3adb98 |
procedure | 1 | user root | 15 | Stage 5 (final) of the session-task pipeline. Grades every reconciled task for autonomous-execution… |
reconcile-planning |
0b5c45c1fb13 |
procedure | 1 | user root | 3 | Reconcile planning records with reality, end to end — sweeps the sessions in scope, verifies their claims… |
reconcile-tasks |
262802c6fd61 |
procedure | 1 | user root | 13 | operator-specific, description withheld |
record_meeting |
270fe421dd45 |
mixed | 4 | worktree only | 2 | Start/stop meeting recording in background and transcribe+store on stop. |
record_meeting |
3f815b93a102 |
mixed | 2 | worktree only | 2 | Start/stop meeting recording in background and transcribe+store on stop. |
record_meeting |
42b77226974d |
mixed | 15 | worktree only | 1 | Start/stop meeting recording in background and transcribe+store on stop. |
record_meeting |
4ca1ffbc59c3 |
mixed | 1 | worktree only | 2 | Start/stop meeting recording (Audio Hijack) and transcribe+store via Tyto. |
record_meeting |
57ff945f5337 |
mixed | 1 | worktree only | 2 | Start/stop meeting recording in background and transcribe+store on stop. |
record_meeting |
69ab17ff1e89 |
mixed | 83 | main | 2 | Start/stop meeting recording in background and transcribe+store on stop. |
record_meeting |
9cc233cbe59c |
mixed | 177 | worktree only | 2 | Start/stop meeting recording in background and transcribe+store on stop. |
record_meeting |
f2a5f60c22a8 |
mixed | 2 | worktree only | 2 | Start/stop meeting recording in background and transcribe+store on stop. |
recover-sqlite-database |
55b5d9efc205 |
plumbing | 1 | user root | 0 | Check Neotoma SQLite integrity and run .recover when the DB is corrupt (malformed disk image, btree errors).… |
recover_sqlite_database |
82998476a3ba |
plumbing | 209 | worktree only | 0 | Recover Neotoma SQLite Database |
regulus |
0c5d54d919bc |
role | 18 | worktree only | 2 | Developer relations agent. Audits docs, README quality, onboarding paths, API ergonomics, and credibility… |
regulus |
6068357a7920 |
role | 117 | worktree only | 2 | Developer relations agent. Audits docs, README quality, onboarding paths, API ergonomics, and credibility… |
regulus |
b1f82ea2bef2 |
role | 131 | main | 2 | Developer relations agent. Audits docs, README quality, onboarding paths, API ergonomics, and credibility… |
regulus |
b462efc74df6 |
role | 2 | worktree only | 2 | Developer relations agent. Audits docs, README quality, onboarding paths, API ergonomics, and credibility… |
regulus |
d47f265fd54b |
role | 16 | worktree only | 2 | Developer relations agent. Audits docs, README quality, onboarding paths, API ergonomics, and credibility… |
regulus |
fc543b80e193 |
role | 1 | worktree only | 2 | Developer relations agent. Audits docs, README quality, onboarding paths, API ergonomics, and credibility… |
release |
16de583f6371 |
procedure | 5 | worktree only | 18 | operator-specific, description withheld |
release |
5268bf5eea30 |
procedure | 1 | worktree only | 18 | operator-specific, description withheld |
release |
cda10715d914 |
procedure | 203 | worktree only | 24 | operator-specific, description withheld |
remember-calendar |
c4d64f4d53d0 |
procedure | 262 | main | 2 | Proactively sync Neotoma event entities to Google Calendar, routing each event to the correct calendar per… |
remember-codebase |
e0f848304244 |
procedure | 1 | user root | 0 | Create a persistent inventory of your codebase — repos, architecture decisions, dependencies, and team… |
remember-contacts |
c8122ba5fc48 |
procedure | 1 | user root | 0 | Consolidate contacts from email, calendar, chat history, vCards, and LinkedIn exports into persistent memory. |
remember-conversations |
823bc3e8e803 |
procedure | 1 | user root | 0 | Import chat history from ChatGPT exports, Claude history, Slack archives, or shared conversation URLs into… |
remember-email |
3fee812326e9 |
procedure | 1 | user root | 2 | Import emails into persistent memory. Configure an email MCP, discover and preview emails, extract contacts,… |
remember-finances |
5df3e9773190 |
procedure | 1 | user root | 1 | Import bank statements, receipts, and invoices into persistent memory. Extract transactions with amounts,… |
remember-meetings |
fdb24e0aeef0 |
procedure | 1 | user root | 2 | Import meeting transcripts and extract decisions, action items, attendees, and commitments into persistent… |
rendered-pages |
01a46097d1fb |
procedure | 1 | user root | 11 | How to build, style, edit, share, and verify a Neotoma renderedpage — the house visual standard, the… |
report |
126c4ace31b6 |
procedure | 5 | worktree only | 5 | operator-specific, description withheld |
report |
679bd2afaf59 |
procedure | 204 | worktree only | 5 | operator-specific, description withheld |
report |
cccf3a9839fd |
procedure | 285 | main | 5 | operator-specific, description withheld |
report-error |
3bb46714ec00 |
procedure | 285 | main | 5 | operator-specific, description withheld |
report-error |
d2a855782c71 |
procedure | 204 | worktree only | 5 | operator-specific, description withheld |
report-tasks |
74a00cf5bfa0 |
procedure | 1 | user root | 10 | Stage 6 of the session-task pipeline (after /ready-tasks). Maintains ONE rendered-page task board per… |
report_error |
16d5cf41a4e2 |
procedure | 204 | worktree only | 5 | operator-specific, description withheld |
report_error |
ef85f0f2d7ae |
procedure | 5 | worktree only | 5 | operator-specific, description withheld |
resolve-strategic-profile |
aadefe081e3e |
procedure | 1 | worktree only | 2 | Compile the operator's scattered strategy corpus (mission, business/domain strategies, product profiles,… |
review |
2f04032cc375 |
procedure | 3 | worktree only | 16 | operator-specific, description withheld |
review |
ff6d862840e5 |
procedure | 200 | worktree only | 17 | operator-specific, description withheld |
review-sessions |
ee52e96bac84 |
procedure | 1 | user root | 8 | operator-specific, description withheld |
robin |
62693d615285 |
role | 18 | worktree only | 0 | Session compliance supervisor (formerly Luscinia; renamed 2026-06-12 for voice/ASR robustness). Monitors… |
robin |
96cce23db8ad |
role | 1 | worktree only | 0 | Session compliance supervisor (formerly Luscinia; renamed 2026-06-12 for voice/ASR robustness). Monitors… |
robin |
e72a33e56cd7 |
role | 248 | main | 0 | Session compliance supervisor (formerly Luscinia; renamed 2026-06-12 for voice/ASR robustness). Monitors… |
robin |
f27514978c11 |
role | 2 | worktree only | 0 | Session compliance supervisor (formerly Luscinia; renamed 2026-06-12 for voice/ASR robustness). Monitors… |
run-feature-workflow |
2b9966925828 |
procedure | 285 | main | 0 | Run feature workflow per foundation command. |
run-feature-workflow |
417889f5c0c0 |
procedure | 204 | worktree only | 0 | Run Feature Workflow |
run-scorecard |
ed81e5440704 |
procedure | 285 | main | 1 | Execute BTC or altcoin liquidity regime scorecard and save the report. Use when user says "run BTC… |
run_feature_workflow |
2b9966925828 |
procedure | 5 | worktree only | 0 | Run feature workflow per foundation command. |
run_feature_workflow |
fa4562dd3d31 |
procedure | 204 | worktree only | 0 | Run Feature Workflow |
scan-feeds |
730057f13b1c |
procedure | 1 | worktree only | 3 | Scan the operator's configured content sources (X timelines, news aggregators like Techmeme and Digg, and… |
scrape-chatgpt-workout |
1e3d060dc24e |
procedure | 286 | main | 3 | operator-specific, description withheld |
scrape_chatgpt_workout |
56074ce30f16 |
procedure | 6 | worktree only | 5 | operator-specific, description withheld |
setup-commands |
5cfa57a19bb6 |
plumbing | 204 | worktree only | 0 | Setup Commands (Legacy) |
setup-cursor-copies |
26371362d2f1 |
plumbing | 204 | worktree only | 0 | Setup Foundation Cursor Copies |
setup-cursor-copies |
93da99d8613e |
plumbing | 285 | main | 0 | Setup foundation cursor rules and commands in .cursor/ (run setup script). |
setup_commands |
3bdb5e3786c8 |
plumbing | 204 | worktree only | 0 | Setup Commands (Legacy) |
setup_commands |
88a8307c508d |
plumbing | 5 | worktree only | 0 | Legacy setup for .cursor/commands; foundation uses skills instead. Prefer setup-cursor-copies. |
setup_cursor_copies |
93da99d8613e |
plumbing | 5 | worktree only | 0 | Setup foundation cursor rules and commands in .cursor/ (run setup script). |
setup_cursor_copies |
ad4ee261e363 |
plumbing | 204 | worktree only | 0 | Setup Foundation Cursor Copies |
shadcn |
ce42e8830e28 |
plumbing | 5 | worktree only | 2 | Add or update shadcn/ui components, tokens, and registry components in the Neotoma frontend. |
shepherd-issue |
0b7ee713ca3a |
procedure | 1 | worktree only | 0 | Drive a filed GitHub issue through the Ateles swarm pipeline to a DEPLOYED change, so a session blocked on… |
sitta |
fab6ee72cfd1 |
role | 234 | main | 3 | Neotoma librarian daemon. Background curation agent that monitors entity storage activity and proactively… |
social |
7e3060a0ae31 |
procedure | 285 | main | 9 | operator-specific, description withheld |
store-data |
1bc64718b1d8 |
plumbing | 1 | user root | 1 | Store structured entities or files in Neotoma memory with proper provenance and relationship linking. |
store-neotoma |
1fed760e1cd7 |
plumbing | 24 | worktree only | 5 | Review chat, preview exact Neotoma payloads, then store conversation, dual agentmessage rows per turn (user… |
store-neotoma |
7d2930b96bcd |
plumbing | 204 | worktree only | 4 | store-neotoma |
store-neotoma |
ada7ffdfa43d |
plumbing | 261 | main | 4 | Review chat, preview exact Neotoma payloads, then store conversation, dual agentmessage rows per turn (user… |
store_neotoma |
2d382cb3da55 |
plumbing | 204 | worktree only | 4 | store-neotoma |
store_neotoma |
8c32d357bb94 |
plumbing | 5 | worktree only | 4 | Review chat, preview exact Neotoma payloads, then store conversation, dual agentmessage rows per turn (user… |
stream-transcript |
5954b2b1480a |
mixed | 1 | worktree only | 2 | operator-specific, description withheld |
stream-transcript |
69711ef4a35c |
mixed | 1 | worktree only | 2 | Start or stop a live transcript stream for an in-progress recording. On start, asks what the agent should… |
stream-transcript |
78fce5650e96 |
mixed | 1 | worktree only | 0 | Start or stop a live transcript stream for an in-progress recording. On start, asks what the agent should… |
stream-transcript |
b113e74a6262 |
mixed | 1 | worktree only | 2 | Start or stop a live transcript stream for an in-progress recording. On start, asks what the agent should… |
stream-transcript |
d09fd2ae03a9 |
mixed | 192 | main | 2 | Start or stop a live transcript stream for an in-progress recording. On start, asks what the agent should… |
stream-transcript |
d3e698817b4e |
mixed | 1 | worktree only | 2 | Start or stop a live transcript stream for an in-progress recording. On start, asks what the agent should… |
struthio |
0b01f22af008 |
role | 1 | worktree only | 4 | Autonomous release agent. Executes releases when every condition in the releasecriteria entity evaluates… |
struthio |
17bb722ffdca |
role | 18 | worktree only | 4 | Autonomous release agent. Executes releases when every condition in the releasecriteria entity evaluates… |
struthio |
6af4fa8993f8 |
role | 248 | main | 4 | Autonomous release agent. Executes releases when every condition in the releasecriteria entity evaluates… |
struthio |
e9998f436d6e |
role | 2 | worktree only | 4 | Autonomous release agent. Executes releases when every condition in the releasecriteria entity evaluates… |
struthio |
f82f647b9317 |
role | 16 | worktree only | 4 | Autonomous release agent. Executes releases when every condition in the releasecriteria entity evaluates… |
sturnus |
0559bab180f2 |
role | 130 | main | 1 | Relationship management agent (CRM). Owns the full lifecycle of the operator's contacts across all… |
sturnus |
54e9f753d053 |
role | 27 | worktree only | 1 | Relationship management agent (CRM). Owns the full lifecycle of the operator's contacts across all… |
sturnus |
8c9995eba8ab |
role | 1 | worktree only | 0 | Relationship management agent (CRM). Owns the full lifecycle of Mark's contacts across all relationship… |
sturnus |
ca383f9b4656 |
role | 2 | worktree only | 0 | Relationship management agent (CRM). Owns the full lifecycle of Mark's contacts across all relationship… |
sturnus |
d96170c88696 |
role | 5 | worktree only | 0 | Relationship management agent (CRM). Owns the full lifecycle of the operator's contacts across all… |
sturnus |
da879ed3ed5a |
role | 104 | worktree only | 1 | Relationship management agent (CRM). Owns the full lifecycle of the operator's contacts across all… |
sylvia |
024c95a40c37 |
role | 234 | main | 2 | operator-specific, description withheld |
sylvia |
51c45cd786fa |
role | 32 | worktree only | 2 | operator-specific, description withheld |
sylvia |
781fb5211abd |
role | 2 | worktree only | 2 | operator-specific, description withheld |
sylvia |
88ed344767a6 |
role | 1 | worktree only | 2 | operator-specific, description withheld |
sync-env-from-1password |
56baea071f3d |
plumbing | 19 | worktree only | 1 | Sync .env from 1Password using envvarmappings. |
sync-env-from-1password |
b85f654fa9fd |
plumbing | 204 | worktree only | 1 | Sync Environment Variables from 1Password |
sync-env-from-1password |
dbb9717260cb |
plumbing | 266 | main | 3 | Sync .env from 1Password using envvarmappings. |
sync_env_from_1password |
39c3d3c3b30f |
plumbing | 204 | worktree only | 1 | Sync Environment Variables from 1Password |
sync_env_from_1password |
6126d5bb25a3 |
plumbing | 5 | worktree only | 1 | Sync .env from 1Password using envvarmappings. |
transcription-audio |
aa88cdae65b6 |
procedure | 1 | user root | 3 | How to transcribe and diarize the operator's audio — local whisper-cli models and invocation, why long runs… |
turdus |
0a461c58e56a |
role | 234 | main | 0 | Email triage daemon. Polls Gmail every 5 minutes via gws CLI, classifies messages… |
turdus |
3b90cf1cb133 |
role | 2 | worktree only | 0 | Email triage daemon. Polls Gmail every 5 minutes via gws CLI, classifies messages… |
turdus |
6efab3f9fcf6 |
role | 1 | worktree only | 0 | Email triage daemon. Polls Gmail every 5 minutes via gws CLI, classifies messages… |
turdus |
e933792fdbe4 |
role | 32 | worktree only | 0 | Email triage daemon. Polls Gmail every 5 minutes via gws CLI, classifies messages… |
tyto |
070ff99ca510 |
role | 34 | worktree only | 0 | Screenshot watcher + meeting recording transcription + analysis daemon. (1) Polls TYTOSCREENSHOTSDIR for new… |
tyto |
08809dfea201 |
role | 147 | worktree only | 0 | Screenshot watcher + meeting recording transcription + analysis daemon. (1) Polls TYTOSCREENSHOTSDIR for new… |
tyto |
228be4d3539a |
role | 1 | worktree only | 0 | Screenshot watcher + meeting recording transcription + analysis daemon. (1) Polls TYTOSCREENSHOTSDIR for new… |
tyto |
42d25414d1e9 |
role | 1 | worktree only | 0 | Screenshot watcher + meeting recording transcription + analysis daemon. (1) Polls TYTOSCREENSHOTSDIR for new… |
tyto |
9a006e1f3b2d |
role | 86 | main | 0 | Screenshot watcher + recording transcription + analysis daemon. (1) Polls TYTOSCREENSHOTSDIR for new image… |
update-plan |
33c7536cda59 |
procedure | 266 | main | 2 | Update a Neotoma plan entity to reflect current session work — todos, decisions, nextsteps, body. |
update-plan |
43338234cfd7 |
procedure | 19 | worktree only | 2 | Update a Neotoma plan entity to reflect current session work — todos, decisions, nextsteps, body. |
update-tasks |
377d50841200 |
procedure | 1 | worktree only | 0 | Create or update Neotoma task entities linked PARTOF a plan, reflecting current pending work. |
update-tasks |
4eac6605cc04 |
procedure | 19 | worktree only | 0 | Create or update Neotoma task entities linked PARTOF a plan, reflecting current pending work. |
update-tasks |
dd31e844df58 |
procedure | 265 | main | 0 | Create or update Neotoma task entities linked PARTOF a plan, reflecting current pending work. |
vanellus |
192fa41a8aec |
role | 57 | main | 3 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Cicada, merges… |
vanellus |
21207d598dd4 |
role | 1 | worktree only | 3 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Gryllus, merges… |
vanellus |
228f978084ff |
role | 2 | worktree only | 3 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Cicada, merges… |
vanellus |
4509dab6d47f |
role | 2 | worktree only | 3 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Gryllus, merges… |
vanellus |
4913b57f9914 |
role | 13 | worktree only | 3 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Gryllus, merges… |
vanellus |
515764338abf |
role | 16 | worktree only | 3 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Gryllus, merges… |
vanellus |
608a32c81556 |
role | 5 | worktree only | 3 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Gryllus, merges… |
vanellus |
a195efbb7dda |
role | 1 | worktree only | 3 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Gryllus, merges… |
vanellus |
a902e9167e7f |
role | 162 | worktree only | 3 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Cicada, merges… |
vanellus |
d90a044e6def |
role | 13 | worktree only | 3 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Cicada, merges… |
vanellus |
fd4a7ac2d44a |
role | 13 | worktree only | 4 | Invoke Vanellus, the PR steward agent — enforces PR gate inheritance, reviews PRs opened by Gryllus, merges… |
verify-deployment |
ad5cf9bb42ab |
procedure | 285 | main | 1 | Check GitHub Actions after a website deploy and fix or re-run until the build succeeds. Use after a deploy… |
verify-work |
1d4b762a82fd |
procedure | 1 | user root | 4 | Verify claims against systems of record — check whether work claimed in sessions actually happened, upgrade… |
waxwing |
3388ffa0f0ac |
role | 119 | worktree only | 7 | operator-specific, description withheld |
waxwing |
9a2613353373 |
role | 129 | main | 7 | operator-specific, description withheld |
waxwing |
a0d8cdf0518b |
role | 5 | worktree only | 7 | Invoke Waxwing (formerly Bombycilla; renamed 2026-06-12 for voice/ASR robustness), the technical architect… |
waxwing |
a91cc101905d |
role | 13 | worktree only | 7 | Invoke Waxwing (formerly Bombycilla; renamed 2026-06-12 for voice/ASR robustness), the technical architect… |
waxwing |
ce7039b62593 |
role | 2 | worktree only | 7 | Invoke Waxwing (formerly Bombycilla; renamed 2026-06-12 for voice/ASR robustness), the technical architect… |
waxwing |
f30d2653d5c1 |
role | 1 | worktree only | 7 | Invoke Waxwing (formerly Bombycilla; renamed 2026-06-12 for voice/ASR robustness), the technical architect… |
whatsapp-capture |
ed9675730ab7 |
procedure | 1 | worktree only | 6 | Capture a WhatsApp conversation into Neotoma. Opens WhatsApp Web in Chrome, extracts the full rendered… |
where |
6ba4890a091f |
plumbing | 1 | user root | 36 | operator-specific, description withheld |
write |
92204ca5bf0a |
procedure | 285 | main | 0 | Produce publication-ready content in any format from any seed input. |
write-blog-post |
d1cbb1515c9a |
procedure | 285 | main | 2 | Write blog posts for the markmhendrickson website per repo style guides and post workflow. Use when user… |
writing-voice |
37111d69dbad |
procedure | 1 | user root | 1 | Line-level prose standards for anything written in the operator's voice on any channel — the banned words… |
104 skill(s) carry operator specifics somewhere in the body or description. Location and classification are recorded; the description is not. This is the posture the rule inventory established and the failure it exists to prevent is concrete — a PII-shaped literal in a committed inventory is what ateles#1099 had to rewrite git history to undo.
| Skill | Class | Screen tripped on |
|---|---|---|
advisory |
procedure | operator_personal_domain |
analyze-meeting |
procedure | phone |
apis |
role | operator_personal_domain |
apis |
role | operator_personal_domain |
apis |
role | operator_personal_domain |
ateles |
role | operator_personal_domain |
ateles |
role | operator_personal_domain |
ateles |
role | operator_personal_domain |
ateles |
role | operator_personal_domain |
ateles |
role | operator_personal_domain |
ateles |
role | operator_personal_domain |
ateles |
role | operator_personal_domain |
ateles |
role | operator_personal_domain |
audit |
procedure | operator_personal_domain, usd_amount |
audit |
procedure | operator_personal_domain, usd_amount |
audit |
procedure | operator_personal_domain, usd_amount |
audit |
procedure | operator_personal_domain, usd_amount |
audit |
procedure | operator_personal_domain, usd_amount |
buteo |
role | eur_amount, operator_personal_domain |
buteo |
role | eur_amount, operator_personal_domain |
columba |
role | operator_personal_domain |
columba |
role | operator_personal_domain |
columba |
role | operator_personal_domain |
commit |
plumbing | usd_amount |
commit |
plumbing | usd_amount |
corvus-monedula |
role | operator_personal_domain |
create-project-overview |
procedure | operator_personal_domain |
create_pr |
procedure | operator_personal_domain |
digest |
procedure | operator_personal_domain |
draft-rendered-page |
procedure | operator_personal_domain |
draft-rendered-page |
procedure | operator_personal_domain |
draft-rendered-page |
procedure | operator_personal_domain |
email-mechanics |
procedure | |
email-triage |
procedure | operator_personal_domain |
email-triage |
procedure | email, operator_personal_domain |
email-triage-auto |
mixed | eur_amount |
end |
procedure | operator_personal_domain |
evaluate_positioning |
procedure | phone |
extract-amazon-order |
procedure | |
find-technician-slot |
procedure | operator_personal_domain |
gorilla |
role | operator_personal_domain |
gorilla |
procedure | operator_personal_domain |
gorilla |
role | operator_personal_domain |
gorilla |
role | operator_personal_domain |
hirundo |
role | usd_amount |
hirundo |
role | usd_amount |
hirundo |
role | usd_amount |
hirundo |
role | usd_amount |
intake-relationship |
procedure | operator_personal_domain |
intake-relationship |
procedure | operator_personal_domain |
loop-start |
plumbing | btc_address, email, operator_personal_domain, stx_address |
loop-status |
plumbing | operator_personal_domain |
loop-stop |
plumbing | operator_personal_domain |
monedula |
role | operator_personal_domain |
monedula |
role | operator_personal_domain |
monedula |
role | operator_personal_domain |
monedula |
role | operator_personal_domain |
neversight_learn_skills.dev_obviously_awesome |
procedure | phone |
nucifraga |
role | operator_personal_domain |
phoenicurus |
role | operator_personal_domain |
phoenicurus |
role | operator_personal_domain |
phoenicurus |
role | operator_personal_domain |
phoenicurus |
role | operator_personal_domain |
phoenicurus |
role | operator_personal_domain |
phoenicurus |
role | operator_personal_domain |
phoenicurus |
role | operator_personal_domain |
picus |
role | operator_personal_domain, usd_amount |
picus |
role | operator_personal_domain |
picus |
role | operator_personal_domain, usd_amount |
picus |
role | operator_personal_domain |
process-meeting |
procedure | operator_personal_domain |
process-meeting |
procedure | operator_personal_domain |
process_prs |
procedure | operator_personal_domain |
process_prs |
procedure | operator_personal_domain |
process_prs |
procedure | operator_personal_domain |
process_prs |
procedure | operator_personal_domain |
publish |
procedure | usd_amount |
publish |
procedure | usd_amount |
publishing-social |
procedure | usd_amount |
reconcile-tasks |
procedure | operator_personal_domain |
release |
procedure | operator_personal_domain |
release |
procedure | operator_personal_domain |
release |
procedure | operator_personal_domain |
report |
procedure | email, usd_amount |
report |
procedure | email, usd_amount |
report |
procedure | email, usd_amount |
report-error |
procedure | email, usd_amount |
report-error |
procedure | email, usd_amount |
report_error |
procedure | email, usd_amount |
report_error |
procedure | email, usd_amount |
review |
procedure | operator_personal_domain |
review |
procedure | operator_personal_domain |
review-sessions |
procedure | operator_personal_domain, phone |
scrape-chatgpt-workout |
procedure | operator_personal_domain |
scrape_chatgpt_workout |
procedure | operator_personal_domain |
social |
procedure | operator_personal_domain |
stream-transcript |
mixed | phone |
sylvia |
role | operator_personal_domain |
sylvia |
role | operator_personal_domain |
sylvia |
role | operator_personal_domain |
sylvia |
role | operator_personal_domain |
waxwing |
role | operator_personal_domain |
waxwing |
role | operator_personal_domain |
where |
plumbing | eur_amount |
The screen is deliberately over-broad: a false positive costs one withheld description, a false negative costs a history rewrite. Some rows below will be false positives — a skill that merely mentions payments trips operator_personal_domain without carrying an operator value — and that trade is chosen, not accidental.
Listed rather than guessed.
- The Neotoma entity read is a committed snapshot, not a live call. It is read-only and dated, so
--checkruns without a credential; a skill entity created after the snapshot date is invisible until it is refreshed. The date is in the snapshot file. - A
skillentity query reports a total that matches neither the rows it returns nor the rows that exist. Measured 2026-09-19 against Neotoma PROD: the default query returned 72 rows while its owntotalfield said 79; the same query with merged rows included returned 93 rows and said 93. So 72 live plus 21 merged is 93, and 79 describes no set at all. Anything paging on that field, or asserting completeness against it, is trusting a number that does not describe its own result. Recorded here because it is exactly the validate-the-instrument failure, and filed separately against Neotoma. - Class assignment for
plumbingandmixedis a named list, not a pattern.migration.md's tests for those two are semantic — no step owner would claim it, one daemon's whole duty — and no regex over names carries that. Each name inPLUMBING_NAMESandMIXED_NAMESwas read against the class test. A skill absent from both lists and not a role or a probe falls toprocedure, so a new plumbing skill will be mis-reported as a procedure until it is added. That is a known, stated limit and not a silent one. rolevsmixedis under-reported.migration.mdnotes the role files carry three procedures near-verbatim, which by its own definition makes them mixed. They are counted as roles here because the duplicated sections are identical across the role files and belong to the collapse stage 11 performs, not to a per-skill judgement this instrument can make.
| Earlier claim | Measured here | Reading |
|---|---|---|
status.md rev. 32 counted skills at the two canonical roots |
404 distinct across all roots | The canonical roots are not the corpus. Most SKILL.md files on this machine are in neither. |
| The brief's hand-count: 146 unique names, 96 on main, 50 never on main | 182 names, 96 on main, 86 never on main | Re-measured. The differences come from the user root: 14 of its 37 entries are symlinked directories, which a find/glob sweep does not follow. |
| The brief's hand-count: 28,408 files | 36,409 files in scope | Different scope shape. Stated here so the two are comparable rather than silently divergent. |
Neotoma holds 76 skill entities |
72 live, 21 merged, 93 total | Neither 76 nor the API's own total of 79 matches the live row count. |
- The unit is name + content hash, never the path. Counting files measures the filesystem; counting distinct content measures the corpus.
- Vendored trees are excluded by the scope's path shape, verified against 1,352 vendored
SKILL.mdfiles, with a marker list as a second gate whose removal count is reported. - Classes come from
migration.md#five-classes-of-skilland from nowhere else; the role discriminator is the agent entity type, not the bare entity id. - The rule-content matcher is stated, counted per line, and its recall limit is declared rather than implied.
- The PII screen runs per skill, not per field, and
--checkre-runs it so a value that lands later fails the gate. - Symlinked roots are followed deliberately, because a glob that does not follow them under-reports the user root by 14.
- Read-only against Neotoma prod, via a committed snapshot. Nothing is written to the record.