Skills
A skill (opens in a new tab) is a folder of instructions that Claude loads when the task matches it. Each skill has a SKILL.md, and some have extra files in references/ that Claude reads only when it needs them. Until a task needs it, only a skill’s short description sits in Claude’s context, so GAIA can ship detailed guidance for many tasks without filling every session (how skills load (opens in a new tab)). GAIA ships skills in two places: the React app’s skills in frontend/.claude/skills/, which load in sessions working on the app, and project skills in .claude/skills/ at the project root, which apply anywhere in the repository.
Frontend skills
Section titled “Frontend skills”| Skill | What it covers |
|---|---|
react-code | React components, hooks, forms, data loading, React 19 idioms |
typescript | TypeScript (opens in a new tab) and Zod (opens in a new tab) patterns |
tailwind | Theme color tokens, the cn class helper, variants |
skeleton-loaders | Loading states |
tdd-react | The frontend testing reference: stories, hook tests, MSW (opens in a new tab), Playwright (opens in a new tab) |
playwright-cli | Browser automation |
eslint-fixes | Lint failures and autofix conflicts |
a11y-fixes | Accessibility errors reported by axe-core (opens in a new tab) |
gaia-react-perf | Finding why a component re-renders, also /gaia-react-perf |
new-component, new-hook, new-route, new-service | Generate new files from templates |
Project skills
Section titled “Project skills”| Skill | What it covers |
|---|---|
tdd | The red-green-refactor loop |
naming-conventions | Descriptive names in any language |
file-tech-debt | Files an out-of-scope finding as a tech-debt issue |
gaia-wiki | Wiki maintenance, also /gaia-wiki |
update-deps | Dependency and security updates, also /update-deps |
update-gaia | GAIA release updates, also /update-gaia |
React Doctor (opens in a new tab) is installed on each machine separately, at frontend/.claude/skills/react-doctor, and is gitignored.
GAIA’s workflow commands (/gaia-spec, /gaia-plan, and the rest) are slash commands, not skills. There is no /gaia skill to call.
How triggering works
Section titled “How triggering works”Each SKILL.md has a description: field listing the phrasings and situations that load it. Claude sees the description of every skill it can start, and loads one when its description fits the task at hand, not on every prompt. The task does not have to come from you: a skill also loads when the work Claude or a sub-agent is doing matches it, or when another skill or rule points to it. Saying “scaffold a card called price-card” loads new-component; saying “this useEffect fires twice” loads react-code.
/gaia-wiki, /update-deps, and /update-gaia are skills, so asking in plain language triggers them too. They also appear in the statusline (🧠, 📦, 🚀) when they have work to do.
Some commands are user-only: /gaia-init, /setup-gaia, /gaia-fitness, /gaia-forensics, /gaia-codify, and /gaia-residue. Each one is marked so that Claude never starts it, on its own or because you asked in plain language, and it does not appear in Claude’s list of skills. Type them yourself as slash commands.
Questions are menus
Section titled “Questions are menus”When a GAIA skill or command needs you to choose, it shows a menu (AskUserQuestion) with the recommended option first. The shipped user-questions rule holds the skills you write to the same standard. A separate rule, fenced-copy-paste-blocks, puts any prompt or command meant for you to paste in its own fenced code block, so Claude Code shows it with a copy button.
Adding your own
Section titled “Adding your own”Ask Claude to write the skill for you:
Create a skill that <what it should help with>. It applies to <the whole repository | only the frontend app>. Write a description that names the phrasings that should trigger it.A skill for the whole repository goes in .claude/skills/<name>/, and one only the app needs goes in frontend/.claude/skills/<name>/. To always run the skill on a particular model, say which one in the same request. Claude picks up the new skill in the next session, and /gaia-fitness checks it.