agent-skills
CLAUDE.md20 starsChanged 14 days agoMITView on GitHub
Agentic frameworks (AI coding agents, copilots, autonomous developer tools) consume these skills and agents operationally, so every line must be actionable without human interpretation: This file loads into every session, so it holds only what an agent needs on every task. Classify what you learned and write it only where the table says: Skills live in skills/<category>/<name>/SKILL.md (7 categories); agents live in agents/ because they need their own model and tool configuration. A skill's SKILL.md is its operational authority; its…
- Reads credentials
- Installs packages
In this repository48 other files it gives its agents.
- skills/workflow/autonomous-workflow/CLAUDE.mdCLAUDE.md
- ideateSkill
- interviewSkill
- playwright-trace-analyzerSkill
- profile-optimizerSkill
- rum-trackingSkill
- screencastSkill
- video-analyserSkill
- youtube-transcriptSkill
- create-skillSkill
- docsSkill
- handoffSkill
- optimize-claude-mdSkill
- persistent-memorySkill
- attach-mediaSkill
- ci-auto-fixSkill
- create-prSkill
- github-actions-authorSkill
- resolve-conflictsSkill
- animations-nativeSkill
- animationsSkill
- behavioral-designSkill
- chartingSkill
- storybookSkill
- uxSkill
- visual-designSkill
- ai-engineeringSkill
- confidenceSkill
- criticalSkill
- impact-mapSkill
- jev-assertSkill
- measurableSkill
- optimize-approachSkill
- polishSkill
- pr-reviewSkill
- review-loopSkill
- tddSkill
- verify-behaviorSkill
- aw-verifySkill
- e2e-testing-mobileSkill
- e2e-testingSkill
- telemetry-verifySkill
- ui-verifySkill
- autonomous-workflowSkill
- aw-create-planSkill
- aw-create-walkthroughSkill
- fix-bugSkill
- implement-suggestionSkill
The file
We split this CLAUDE.md into the rules it gives an agent
7 rules. About 0 are common, 4 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 11
Keep each file self-contained.
- Distinctive: line 28
Keep a sentence only if deleting it would change how an agent acts.
- Very specific: line 38
All three stay model-invocable via Skill() when disable-model-invocation: false.
- Very specific: line 123
Read docs/development.md when adding, wiring, or debugging a skill, agent, plugin, or package.
- Very specific: line 132
Run sync-symlinks.sh with bash, never sh (it uses bash arrays and process substitution).
- Distinctive: line 176
Use inline Markdown links.
- Distinctive: line 179
Use the Oxford comma.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Agent Skills
Audience
Agentic frameworks (AI coding agents, copilots, autonomous developer tools) consume these skills and agents operationally, so every line must be actionable without human interpretation:
- Be prescriptive: tell the agent what to do, not what a concept means.
- Make decisions enumerable: numbered steps, lookup tables, or explicit criteria.
- Give every actionable rule a code example showing the correct and the incorrect pattern.
- State concrete, testable criteria, never subjective ones.
- Keep each file self-contained.
Where knowledge goes (mandatory on every change)
This file loads into every session, so it holds only what an agent needs on every task. Classify what you learned and write it only where the table says:
| What you learned | Write it to | Never write it to |
| A new or changed skill / agent | a one-line hook (≤ 300 chars) in the inventory below, plus the skill's own SKILL.md | a paragraph here |
| A rule the agent must follow | the owning skill's rules/<topic>.md (cross-cutting: agents/shared/rules/<topic>.md) — the rule only, plus at most a one-line **Why:** | this file, docs/inventory.md |
| Why the rule or design exists, the alternative it beat, the failure it prevents | the owning skill's references/<topic>.md (cross-cutting: agents/shared/references/<topic>.md), stated as current fact, linked from the rule | rules/, this file |
| What changed, in which version or PR, measured run numbers | the commit message and PR description only | any file in the repo |
| A headline result worth showing users | README.md ## Measured, not assumed only — at most four bullets, each backed by a PR that holds the method and the runs | any other file |
| An eval result | the PR description; scripts/eval/README.md only when it changes a standing decision, recorded as the decision, not the run log | this file, docs/evals.md |
| Narrative about how the repo is wired (symlinks, plugins, packages) | docs/development.md or the package's own CLAUDE.md | this file |
- Keep a sentence only if deleting it would change how an agent acts; narrative ("this used to…"), release-version tags, and incident retellings fail that test.
docs/inventory.mdanddocs/evals.mdare frozen archives: read them, never append to them.- An inventory hook names the capability, never its history:
- `review-loop` (`Skill()`) — bounded PR convergence loop; `--merge` squash-merges on a clean convergence, not… **`--merge` (vN.N):** … a real run on #214 showed …. - L1
G86enforces the mechanical half: this file stays under 40,000 chars, inventory hooks stay ≤ 300 chars, no version tags, and the two archives do not grow.
Repository structure
Skills live in skills/<category>/<name>/SKILL.md (7 categories); agents live in agents/ because they need their own model and tool configuration.
A skill's SKILL.md is its operational authority; its rules live in rules/, their rationale in references/.
Type markers name the primary entry point: auto = the description auto-triggers on natural language; / = slash command, no auto-trigger; Skill() = called by another skill or workflow.
All three stay model-invocable via Skill() when disable-model-invocation: false.
workflow/ — end-to-end orchestrators
autonomous-workflow(/) — phase machinery behindaw;plan.mdis a six-heading brief gated onrun-checks.mjsprintingCHECKS M/M PASS, ending in a paste-ready/goal.aw(auto) is the sole entry and owns tiers. Design:CLAUDE.mdaw-create-plan(Skill()) — writes theplan.mdbrief (Task, Requirements, Guardrails, Definition of Done, Turn Cap, File Changes) + sealedchecks.yaml.aw-create-walkthrough(Skill()) — writeswalkthrough.md, led by a one-page review summaryfix-bug(/) — single-bug pipeline, phases 0–8implement-suggestion(/) — apply reviewer suggestions across PRs;--watchloops one PR,--resolve-allcloses non-fix threads. Never fixes CI
quality/ — code, tests, plans, AI apps
ai-engineering(/) — LLM/AI app review across 13 concernsconfidence(auto) — multi-signal confidence gate forplan/code/analysis; deterministic rule caps the LLM score at 89%critical(auto) — adversarial pre-mortem with mandatory steelman alternative. Never iterates;deepruns 3–5 parallel persona lenses (found viaideate) and merges themmeasurable(auto) — every delivery ships telemetry that proves impact and surfaces regressions; modesguide/implement/audit/setupoptimize-approach(/) — is this the best approach for the intent (codebase-fit, simplicity, performance, robustness); at most two material proposals, silent when sound. Report onlypolish(/) — re-runnable pre-PR branch quality gate: review, then simplify the diff and prune restating or ticket comments, each change behind a test checkreview-loop(Skill()) — bounded convergence loop, cap 5:pr-reviewer→implement-suggestion --resolve-all→polish simplifyon a PR; with no PR, local mode over.agent/{branch}/findings.jsonl, zero GitHub calls;--uiadds aui-verifylane. Run at the top levelpr-review(/) — one read-onlypr-reviewerdispatch at one PR; nestedREVIEW.mdfiles, read from the base, brief every finder automatically;.agents/review/lenses/*.mdteam lenses load by path;/pr-review remember <fact>writes a maintainer relevance ruleimpact-map(auto) — impact-first PR view: verdict with expandable What/Risk/Ask rows, one badged diagram, ≤ 3 decisions with linked lines, a settled list; several refs or--stackmap each PR and name shared risks;--comment/--bodypost it with PNGstdd(auto) — strict RED-GREEN-REFACTOR;provenancemode checks a test exercises the production code (static + mutation)verify-behavior(Skill()) — cheapest-first three-tier verification ladder; emits an evidence receipt, never a scorejev-assert(Skill()+/) — semantic UI assertion via TypeSafe Jev; backs theTHEN semantic:spec form
delivery/ — Git, PR, CI
attach-media(Skill()+/) — uploads screenshots and recordings to a PR or issue viagh --attach, with a curl fallback; owns the<!-- attach-media:v1 -->body region. Never writes placeholdersci-auto-fix(/) — evidence-gated CI diagnosis and fix; never weakens checkscreate-pr(/) — narrative PR description; pre-push localreview-loop, draft PR, post-draftreview-loop, CI watchgithub-actions-author(/) — author / review GHA workflowsresolve-conflicts(/) — analyze and resolve merge / rebase conflicts
testing/ — E2E and fixture tooling
e2e-testing(/) — spec-first Playwright Test Agents loope2e-testing-mobile(/) — Maestro YAML flows for Expo / React Nativeaw-verify(/) — proves a feature works onlocalorpreview: probes specs, concurrency, and guardrail faults, reads telemetry once viatelemetry-verify, fixes locally, posts proof and media to the PR's one verify comment.setupwrites.agents/aw/ui-verify(Skill()+/) — browser witness: Markdown intent spec in the PR body (<!-- ui-verify:v2 -->); checks every outcome with evidence, then tries to break it and records it; profiles a motion diff's frames and reduced motion; posts itsuiregion of the PR's verify commenttelemetry-verify(Skill()) — telemetry witness: reads one traffic window's web events, traces, and logs; follows each criterion from web event to API to database; grades the brief'stelemetry:criteria; run alone, posts itstelemetryregion
design/ — UI, visual, interaction
animations(auto) — CSS-first web animations and perceived performance;is-motion-diff.mjsgates itslens.mdintopr-reviewerand a motion profile intoui-verifyanimations-native(auto) — React Native / Expo animations (Reanimated, gesture-handler)behavioral-design(auto) — behavior-change diagnosis (COM-B, B=MAP), ethical interventions (EAST, defaults, System 1 / System 2), and team-adoption workshops. Never recommends a dark pattern or sludgecharting(auto) — chart type + library for web and mobilestorybook(auto) — visual regression, Playground, and interaction-test storiesux(auto) — UX, a11y, microcopy, dark-pattern review. Never recommends a dark patternvisual-design(auto) — brand-aware visual direction
analysis/ — investigate data, diagnose issues
ideate(auto) — research-grounded brainstorming; divergence runs lessons-blindinterview(auto) — pre-plan scope-alignment interview; emits.agent/{branch}/brief.mdplaywright-trace-analyzer(/) — analyzetrace.zip; names the race behind a flakeprofile-optimizer(/) — React DevTools / Chrome Performance trace analysisrum-tracking(auto) — product analytics and RUM event trackingscreencast(auto+Skill()) — browser video engine: overlay (cursor, click ring, step captions),finish.mjs→ mp4 + per-steptimings.json+ contact sheet with frozen waits cut,capture.mjsfor a Chrome tab over DevTools; shared byui-verifyand bothaw-testerrunnersvideo-analyser(auto) — analyze screen recordings for bugsyoutube-transcript(auto) — stdlib-only YouTube transcript fetch that works from cloud IPs whereyoutube-transcript-apiandyt-dlpare bot-blocked
authoring/ — skills about Claude Code itself
create-skill(/) — scaffold (runs the job once without a skill, then writes only the corrections), diagnose, and prune (unused or zero-lift vs. a dummy) skillsdocs(auto) — author / auditCLAUDE.md,AGENTS.md,README.md, Diátaxisdocs/treesoptimize-claude-md(/) — auditCLAUDE.mdfor context bloatpersistent-memory(/) — cross-conversation markdown memory store. Self-improvement loops run on LoreKit instead; bucket taxonomy:memory-buckets.mdhandoff(/) — copy-pasteable session handoff for a fresh agent
Agents
aw is a skill, not an agent — aw/SKILL.md, invoked /aw.
The agents it hands off to are generated from templates in skills/workflow/autonomous-workflow/templates/, not stored in agents/:
aw-executor— Full tier, executes the briefawwrites, phases 3–7. Source:aw-executor.agent.mdaw-tester— Phase 4 spec-driven UI verification. Source:aw-tester.agent.md
The agents below live as agents/*.md files and are dispatched by skills:
pr-reviewer— PR reviewer for self and cross relations; read-only; one sticky report comment plus append-only inline findingsbranch-reviewer— PR-less reviewer forreview-looplocal mode; writes.agent/{branch}/findings.jsonl, zero GitHub callsfeature-pr-verifier— independent verifier for/autonomous-workflowFull Mode PRs
Commands and gotchas
Read docs/development.md when adding, wiring, or debugging a skill, agent, plugin, or package.
bash scripts/sync-symlinks.sh # wire every new skill/agent into ~/.claude via ~/.agents
bash scripts/sync-symlinks.sh --dry-run # preview
node skills/authoring/create-skill/scripts/validate-skill.mjs skills/<category>/<name> # frontmatter + body lint
pnpm install # from repo root, for packages/- Run
sync-symlinks.shwithbash, neversh(it uses bash arrays and process substitution). - Edit skills in this checkout, never through the
~/.claudeor~/.agentssymlinks; the symlinked path hides which worktree the edit lands in. - A new skill needs
SKILL.md, async-symlinks.shrun, an inventory hook above, and aREADME.mdentry. - A skill-local
install.shmust accept--development --quiet, be idempotent, and write errors to stderr. - Name a file an installer symlinks verbatim
<agent-name>.agent.mdor<name>.rule.md; reserve*.template.mdfor boilerplate a skill fills in at runtime. - Plugins live in
plugins/<name>/(no build step), listed in.claude-plugin/marketplace.json; validate withclaude plugin validate plugins/<name>. - Packages live in
packages/(Nx); never add one without updatingtsconfig.jsonreferences and thenx.jsonrelease config. VS Code extension commands and internals:packages/vscode-agent-tasks/CLAUDE.md.
Evals
Harness docs: scripts/eval/README.md.
- plugin-eval (
pnpm plugin-eval --tag ablation):evals/runs each key skill with and without the plugin loaded; a skill whoseΔstays ≤ 0 is a slimming candidate. Opt-in, never in CI; L1G110keeps every case loadable. - L1 (
node scripts/eval/l1.mjs): deterministic integrity checks, free, CI-gated on every PR. A new check must pass the L1 admission rule; prose, wording, and sync checks are never admitted. - L2 (
ANTHROPIC_API_KEY=… node scripts/eval/l2.mjs [--suite a,b]): one suite per labelled decision; goldens inscripts/eval/golden/, suites inscripts/eval/suites.mjs. Opt-in in CI via therun-evalsPR label (aggregator checkevals · L2 (behavioral) / l2). - L2-detection (
ANTHROPIC_API_KEY=… node scripts/eval/l2-detection.mjs,--self-testoffline): finder → verifier overgolden/bug-detection.jsonl, hard-gated onrecall ≥ 0.7andfp ≤ 0.2. Never lower a gate or loosen the parse to pass.
Keeping the evals honest (mandatory on every change)
A change that alters a decision the evals measure updates the evals in the same commit. These triggers are exhaustive:
| You changed… | You must… |
the body of a section a suite reads (SUITES[].rubric.file + section) | run that suite (node scripts/eval/l2.mjs --suite <name>) and report the accuracy; re-label or add goldens if the boundary moved, otherwise say no label changed |
| a section heading a suite reads | update rubric.section (or its rubric.sections entry) in suites.mjs; extractSection throws and L1 G21g fails |
| the file a suite reads (moved, renamed, deleted) | repoint rubric.file, or delete the suite entry and its golden/*.jsonl together; never leave a suite whose extraction throws |
a harness file (HARNESS_FILES: l2.mjs, lib.mjs, suites.mjs, select-suites.mjs) | run every suite plus bug-detection; telemetry.mjs is not a harness file |
a choices list (tier, bug class, severity, verdict) | add a golden case per new choice and re-label renamed ones; L1 G21j enforces both directions |
| added a new enumerable decision (routing table, tier ladder, taxonomy) | add golden/<name>.jsonl plus a SUITES entry; selection is derived, no CI wiring |
| deleted a skill, agent, or rule file | grep suites.mjs for its path first; a suite reading a deleted file fails L1 |
added, moved, or removed a relative link inside skills/ | a link may not climb out of its own skill folder; L1 G71 ratchets scripts/eval/escaping-links.baseline.json — lower it with node scripts/eval/escaping-links.mjs --write when the count drops |
| a runtime contract code or a parser reads (link, manifest entry, payload key, marker, executed shell block) | add an s.check only if it passes the L1 admission rule, name the failure it prevents, and prove it bites; a behaviour claim goes to a plugin-eval case in evals/ or an L2 golden case, never L1 |
the harness telemetry (telemetry.mjs, eval.* / gen_ai.* attributes) | extend its --self-test (run by L1 G114); keep it off by default, a miss is not a span error, absent attributes are omitted, the flush precedes the gate exit; flag an attribute rename as dashboard-breaking in the PR |
a finder or verifier rule (finders.md, finding-verifier.md) | add a golden/bug-detection.jsonl record, plus a decoy when raising recall; label the PR run-evals or run l2-detection.mjs and report recall and fp |
promoted a lesson via diagnose (seen_count ≥ 3) | add the golden case |
- Suites do not run unasked in CI: after any first-row change, label the PR
run-evalsor run the suites locally, and put the accuracy in the PR description. node scripts/eval/select-suites.mjson your changed files lists the suites the first row covers.- Done means the diff touches the eval surfaces above, or the PR description says in one line why none applied.
Prose rules
- One sentence per line (semantic line breaks).
- Use inline Markdown links.
- Fence code with a language identifier.
- End sentences with full stops.
- Use the Oxford comma.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

