Repository navigation
docs: cut agent skills from 39 to 8 and fold duplicated docs into playbooks - #1880
Merged
joshunrau merged 3 commits intoNov 9, 2026
Merged
Conversation
…ybooks Most repo skills were third-party generics that conflict with repo rules or duplicate each other, and every odc-* domain skill restated its playbook. Playbooks and workspace AGENTS.md files are now the single home for each fact; the per-package docs collapse into packages/index.md. Stale paths, counts and claims found along the way are fixed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ills # Conflicts: # .agents/docs/architecture/testing-strategy.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The repo carried 39 agent skills (12,754 lines). Most were third-party generics that duplicate each other or contradict repo rules. Every
odc-*domain skill restated its playbook, often sentence for sentence. This PR cuts the skills to 8 (654 lines), cuts.agents/docsfrom 2,955 to 1,449 lines, and fixes the stale facts that turned up along the way. No code, config or tests change.Where facts live now: the root
AGENTS.mdroutes. A playbook holds a task's steps and traps. A workspaceAGENTS.mdholds that workspace's conventions. An architecture doc holds a mechanism that spans workspaces. A skill survives only if it has no natural home in one of those and benefits from auto-triggering. Every unique fact from a deleted skill was moved to its home, not dropped.Skills deleted: third-party (21 of 24)
Pinned in
skills-lock.json, so the only choices were keep or delete. Edits would be clobbered on update. Anyone who wants one can install it user-level.grilling,grill-me,grill-with-docs,batch-grill-me,loop-me,to-questionnaireinterviewstays because it is a superset ofgrilling: the same text plus a calibration step and a "question stays open until decided" rule.grill-meis a one-line alias.batch-grill-me,loop-meandto-questionnaireare marked in-progress upstream.grill-with-docswritesCONTEXT.mdanddocs/adr/, which this repo does not use: there is no ADR flow, anddocs/is the user manual.loop-meandto-questionnairewrite personal workflow files into the repo root.handoffimplementrequest-refactor-planopening-issuesrequires.researchsystematic-debugging(1,300 lines)diagnosing-bugs, the one debugging method kept. About 360 lines are the author's own skill-test fixtures. It referencessuperpowers:*skills that are not installed, and its "validate at every layer" contradicts "validate at the boundary, trust inside".tddMockFactoryand asserting on their calls. Its "test only at agreed seams" conflicts with unit + e2e at 100% coverage.code-review/setup-matt-pocock-skillsanddocs/agents/issue-tracker.md, neither of which exists. It triggers on "review a PR", competing withreview-pr.codebase-design,design-an-interface,improve-codebase-architecture,domain-modelingCONTEXT.md/docs/adr/, which don't exist.design-an-interfaceis deprecated upstream.writing-great-skillsodc-agent-docsis the house format.find-skillsfrontend-designapps/web/AGENTS.md's libui semantic tokens.vercel-react-best-practices(7,900 lines)better-all, which breaks the no-new-deps rule. It flagsindex.tsbarrels, which apps/web requires. ItsAGENTS.mdrepeats itsrules/word for word.Kept:
interview,diagnosing-bugsandagent-browser.diagnosing-bugsends by handing off to/improve-codebase-architecture, which is now gone. Since the skill is third-party it is left unedited, and the agent just reports the finding.Skills deleted: first-party (10)
odc-commitCo-Authored-By: <model>with no email, conflicts with the trailer the agent harness appends. Its Conventional Commits and scope rules already sit in rootAGENTS.mdhard rules andCONTRIBUTING.md.odc-open-prodc-commit's trailers. "Branch first" is inCONTRIBUTING.md. Its one fact that holds for every contributor, that PRs and issues targetDouglasNeuroInformatics/OpenDataCapturemain, is now a root hard-rule bullet.odc-orientationdisable-model-invocation). Its reading order restated root, and each of its "three landmines" is stated by its owning doc. Its hand-kept index of skills duplicated the harness's own list and had gone stale. Root now has a one-line "New here?" pointer.odc-api,odc-release,odc-run-locally,odc-web-route,odc-frontend,odc-testing,odc-instruments•
currentUser: RequestUserforwarding →apps/api/AGENTS.md• release recovery →
cut-a-release.md§Recover• the exact
runtime/v1/distENOENT →run-locally.md•
route-tree.tsrewritten by every Vite run →add-web-route.md•
jsx-no-literalsignorePropsblind spot →apps/web/AGENTS.md•
vitest list --filesOnlyproof →testing-strategy.md• new-field-kind 422 trap →
runtime-core/AGENTS.md• vendor literal-version exception →
vendor/AGENTS.mdSeveral of these skills were also wrong:
• "no playground image ships" (it does)
• gateway and instrument-library "have no vitest project" (both do)
• gateway "does not localize zod messages" (it does)
•
odc-web-route's "one key, two callers" example no longer existsSkills kept
odc-debuggingodc-doneodc-agent-docsAGENTS.md.review-prrefs/pull/*fromorigin, which is a fork and has none. It no longer hard-codes a GitHub username.opening-issuesgh label list.interview,diagnosing-bugs,agent-browserOther docs
.rulesdeleted. Zed reads only the first match among.rules…AGENTS.md,CLAUDE.md, so this 7-bullet file was hiding rootAGENTS.mdfrom Zed users. Five bullets were root hard rules. The other two ("never generate scripts to make changes" and "minimal text outside code blocks") are personal preferences..agents/docs/packages/: 11 per-package files merged intoindex.md, one row each (717 → 34 lines). Each file's unique content was one "reach for this when…" line. The rest were hand-copied API listings that had drifted:libnest.mdlistedValidationSchemaas used, though nothing imports it, andlibui-form-types.mdhad the wrong version pins.workspace-map.md(150 → 74 lines). Kept: the dependency graph (recomputed from everypackage.json), built vs source-only, published, and the vitest glob trap. Cut: what each workspaceAGENTS.mdalready says. Fixed: a stale release version, and a missingplayground-urlconsumer.auth-and-permissions(244 → 137): the route table claimed to be a "full inventory" but was missing routes. It now lists only the unusual declarations, plus a grep. TheAuditLoggerusage claim was stale.instrument-pipeline(229 → 134): named the wrongvalidate: truecaller.runtime-and-vendor(200 → 58): its per-workspace sections restated eachAGENTS.md, and it gave two different tsconfig counts.testing-strategy(197 → 131).add-e2e-test: a wrongpageModelskey.add-env-var: a gatewayconfig.tsstep, which had never been documented.add-vitest-project: four stale claims.AGENTS.md:main" bullet.odc-orientationpointer.For the maintainer, not changed here
apps/webroute-tree generator" sits awkwardly beside "Before you are done":pnpm test:e2e(andpnpm dev/pnpm build) rewriteroute-tree.tsas a side effect.add-web-route.mddocuments how to work around it (revert the diff). Whether the rule's wording should say so is your call.auth-and-permissions.md:apps/api/src/subjects/subjects.service.ts:123spreads...accessibleQuery(ability, 'create', 'Subject')into the arguments ofcreateMany. Worth a separate look.Verification
.agents/docs/…and.agents/skills/…path and#anchorreferenced anywhere in the repo. All resolve. Two anchors into deleted sections were repointed:runtime-internalandruntime-metaAGENTS.md.AGENTS.mdfiles were spot-checked against the code:ignoreProps: true,catalog:react19,Success!,currentUser: RequestUser,.exhaustive().skills-lock.jsonand the.claude/skillssymlinks match the 8 remaining skills.pnpm lint,pnpm test:coverageandpnpm test:e2ewere not run: the change touches only Markdown,skills-lock.jsonand symlinks, none of which a lint, test or e2e run reads.🤖 Generated with Claude Code