Agents

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 above

86 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/skills

Some 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-apigo-api, then golang-code-style, golang-error-handling, golang-testing
Touching concurrency, performance or security in Gogolang-concurrency, golang-performance, golang-security
Writing anything in apps/statshub-exporeact-native-best-practices (mandatory), then ★ native-performance
Adding a screen or component to the Expo apppitsi-ui-component, expo-design-system
Preparing an iOS submissionapp-store-review
Writing Next.js in apps/statshub-web, apps/statshub-admin or apps/statshub-docsnext-best-practices, next-cache-components, nextjs-app-router-patterns
Building a React component APIvercel-composition-patterns
Adding or editing a docfumadocs, 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 datareact-query
Adding state on webRead where state lives — it belongs in the URL via nuqs, not a store
Adding client state on mobilezustand
Touching Postgres — schema, RLS, indexes, migrations, a slow querysupabase-postgres-best-practices (before you write the SQL)
Doing anything with Supabase auth, storage, edge functionssupabase
Generating or maintaining an OpenAPI documentopenapi-spec-generation
Designing an endpoint or a module boundaryapi-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 phonepreview
Editing turbo.json, a pipeline, or debugging the cacheturborepo, monorepo-management
Adding a Dockerfile or debugging a Coolify builddocker-deploy
Comparing the Expo app against the web referenceaudit-statshub-parity
Rolling out localisation page by pagei18n-rollout
Resolving a merge or rebase conflictresolving-merge-conflicts
Setting up pre-commit hooks or git guardrailssetup-pre-commit, git-guardrails-claude-code

Working out what to do

If you are…Load
Unsure which skill appliesask-matt — a router over the rest
Diagnosing a bug or a performance regressiondiagnosing-bugs
Building test-firsttdd
Designing a module's interfacecodebase-design, improve-codebase-architecture
Sharpening a plan before committing to itgrilling, grill-me, grill-with-docs
Turning a conversation into a spec or ticketsto-spec, to-tickets, to-questionnaire
Planning work bigger than one sessionwayfinder
Handing off to another agenthandoff, claude-handoff
Answering a question from primary sourcesresearch
Checking a design idea cheaplyprototype

Writing

If you are…Load
Writing a doc of any kinddocs-style first, then tutorial-docs, howto-docs, reference-docs or explanation-docs
Restructuring a doc setdiataxis, improve-doc, ensure-docs
Drafting docs from codedraft-docs
Writing or editing a skill, AGENTS.md or CLAUDE.mdwriting-for-agents
Checking text for AI tellsreview-ai-writing, then rewrite-slop
Drawing a diagrammermaid-diagrams
Writing prose that is not documentationwriting-fragmentswriting-shapewriting-beats

The complete list

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-skills configures 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-modules wires dependency-cruiser into a TypeScript package so each one is a deep module.

Neither has been run here yet.

On this page