Skills
Where the 86 skills are defined, how a harness finds them, which one to load for which task, and how to add or update one.
A skill is a folder holding a SKILL.md — frontmatter naming it and saying when
to use it, then instructions. An agent loads one before doing the work it
covers, not after getting stuck.
Where they are defined
.agents/skills/<name>/SKILL.md the skill itself
.claude/skills/<name> a symlink to the folder above86 skills, one directory each. .agents/ is the store; .claude/skills/
contains only symlinks, so a harness that scans .claude/skills and one
that scans .agents/skills read the same file. Nothing is duplicated, and
editing either path edits the same skill.
To see what is installed right now — this page is a curated view, the filesystem is the truth:
ls .agents/skillsSome skills carry a references/ folder beside SKILL.md with the long-form
material the skill points at. Read those only when the skill tells you to; they
are deliberately kept out of the main file so loading a skill stays cheap.
Which skill for which task
Load these before writing code, not after. The ones marked ★ were written for this repository and describe what it actually does; the rest are vendored and describe their subject in general.
Working in an app
| If you are… | Load |
|---|---|
Writing or reviewing Go in apps/statshub-api | ★ go-api, then golang-code-style, golang-error-handling, golang-testing |
| Touching concurrency, performance or security in Go | golang-concurrency, golang-performance, golang-security |
Writing anything in apps/statshub-expo | react-native-best-practices (mandatory), then ★ native-performance |
| Adding a screen or component to the Expo app | ★ pitsi-ui-component, expo-design-system |
| Preparing an iOS submission | app-store-review |
Writing Next.js in apps/statshub-web, apps/statshub-admin or apps/statshub-docs | next-best-practices, next-cache-components, nextjs-app-router-patterns |
| Building a React component API | vercel-composition-patterns |
| Adding or editing a doc | ★ fumadocs, then docs-style and the Diátaxis skill for the shape you are writing |
Data and state
| If you are… | Load |
|---|---|
| Calling an API or caching server data | ★ react-query |
| Adding state on web | Read where state lives — it belongs in the URL via nuqs, not a store |
| Adding client state on mobile | ★ zustand |
| Touching Postgres — schema, RLS, indexes, migrations, a slow query | supabase-postgres-best-practices (before you write the SQL) |
| Doing anything with Supabase auth, storage, edge functions | supabase |
| Generating or maintaining an OpenAPI document | openapi-spec-generation |
| Designing an endpoint or a module boundary | api-and-interface-design, api-design-principles |
The monorepo itself
| If you are… | Load |
|---|---|
| Confirming a UI change in a browser, or getting a route onto a phone | ★ preview |
Editing turbo.json, a pipeline, or debugging the cache | ★ turborepo, monorepo-management |
| Adding a Dockerfile or debugging a Coolify build | ★ docker-deploy |
| Comparing the Expo app against the web reference | ★ audit-statshub-parity |
| Rolling out localisation page by page | ★ i18n-rollout |
| Resolving a merge or rebase conflict | resolving-merge-conflicts |
| Setting up pre-commit hooks or git guardrails | setup-pre-commit, git-guardrails-claude-code |
Working out what to do
| If you are… | Load |
|---|---|
| Unsure which skill applies | ask-matt — a router over the rest |
| Diagnosing a bug or a performance regression | diagnosing-bugs |
| Building test-first | tdd |
| Designing a module's interface | codebase-design, improve-codebase-architecture |
| Sharpening a plan before committing to it | grilling, grill-me, grill-with-docs |
| Turning a conversation into a spec or tickets | to-spec, to-tickets, to-questionnaire |
| Planning work bigger than one session | wayfinder |
| Handing off to another agent | handoff, claude-handoff |
| Answering a question from primary sources | research |
| Checking a design idea cheaply | prototype |
Writing
| If you are… | Load |
|---|---|
| Writing a doc of any kind | docs-style first, then tutorial-docs, howto-docs, reference-docs or explanation-docs |
| Restructuring a doc set | diataxis, improve-doc, ensure-docs |
| Drafting docs from code | draft-docs |
Writing or editing a skill, AGENTS.md or CLAUDE.md | writing-for-agents |
| Checking text for AI tells | review-ai-writing, then rewrite-slop |
| Drawing a diagram | mermaid-diagrams |
| Writing prose that is not documentation | writing-fragments → writing-shape → writing-beats |
The complete list
ai-sdk, api-and-interface-design, api-design-principles,
app-store-review, ask-matt, ★audit-statshub-parity,
better-auth-best-practices, claude-handoff, code-review,
codebase-design, diagnosing-bugs, diataxis, ★docker-deploy,
docs-style, domain-modeling, draft-docs, ensure-docs,
explanation-docs, expo-design-system, ★fumadocs,
git-guardrails-claude-code, ★go-api, golang-code-style,
golang-concurrency, golang-error-handling, golang-performance,
golang-security, golang-testing, grill-me, grill-with-docs, grilling,
handoff, howto-docs, ★i18n-rollout, implement, implement-spec,
improve-codebase-architecture, improve-doc, integrate-revenuecat,
loop-me, mermaid-diagrams, migrate-to-shoehorn, monorepo-management,
★native-performance, next-best-practices, next-cache-components,
nextjs-app-router-patterns, openapi-spec-generation,
★pitsi-ui-component, ★preview, prototype, react-native-best-practices,
★react-query, reference-docs, research, resolving-merge-conflicts,
revenuecat-paywall, revenuecat-purchase-flow, revenuecat-troubleshoot,
review-ai-writing, rewrite-slop, scaffold-exercises, seo-audit,
setup-matt-pocock-skills, setup-pre-commit, setup-ts-deep-modules,
supabase, supabase-postgres-best-practices, tdd, teach,
to-questionnaire, to-spec, to-tickets, triage, ★turborepo,
tutorial-docs, vercel-ai-sdk, vercel-composition-patterns, wait-what,
wayfinder, wizard, writing-beats, writing-for-agents,
writing-fragments, writing-shape, zustand
This list is a snapshot; ls .agents/skills is not
It was accurate on 2026-08-24. A page cannot track a directory, so when the two disagree the directory is right.
Adding a skill
From a registry, with the skills CLI:
npx skills find "<what you are looking for>"
npx skills add <owner>/<repo> -a claude-code -y -s <skill-name>-a claude-code matters — -a claude is rejected. The CLI copies the skill
into .claude/skills/<name> as a real directory, which is not this
repository's layout. Move it and symlink:
mv .claude/skills/<name> .agents/skills/<name>
ln -s ../../.agents/skills/<name> .claude/skills/<name>Writing one by hand is the same shape: a folder under .agents/skills, a
SKILL.md with name and description frontmatter, and the symlink. Load
writing-for-agents first — the description is the only part a harness reads
when deciding whether to open the skill, so it has to say when to use this,
not what it is about.
Skills that configure the repo
Two are run once rather than consulted:
setup-matt-pocock-skillsconfigures the issue tracker, triage labels and domain-doc layout that the engineering skills (triage,to-tickets,wayfinder,implement) assume. Those do not work properly until it has run.setup-ts-deep-moduleswires dependency-cruiser into a TypeScript package so each one is a deep module.
Neither has been run here yet.

