Skip to main content

Contributing a skill

A skill is one focused markdown checklist, loaded by name when its label is present on a pull request. Adding a new specialty, for a language, a framework, or a domain your team reviews often, takes three steps and no code changes to the review loop itself.

1. Write the skill file

Add skills/<name>.md. Every existing specialty follows the same small shape: a # <Name> Review heading, then a short, focused checklist as prose or bullets. None of the eleven built-in specialties carry frontmatter; they are plain markdown, composed as-is into the reviewer's instructions.

# GraphQL Review

Check schema changes for backward compatibility, N+1 resolver patterns, proper
use of pagination connections, and consistent error shapes across resolvers.
Flag breaking changes to existing queries or mutations explicitly.
tip

While you iterate, point skillsDir in your config at a working copy of this file instead of the installed package's bundled skills/ directory, so you can edit and re-test without reinstalling.

2. Register the name

Add <name> to SKILL_NAMES in core/labels.ts. This one array is the single source of truth for which bare labels count as skills; it drives label parsing (parseSkills), label composition on a new request (composeRequestLabels), the default label profile (buildProfile), and, since Skills is generated from this same file, the published skills catalog.

3. Bootstrap the new label

Re-run bootstrap so the <name> label actually exists on every repository that should offer it:

agent-review labels bootstrap --repo input-output-hk/some-repo

That's it

No changes to the review loop are needed. review.claim composes whatever skills match a pull request's labels at claim time, so a new specialty is available the moment its label exists, on any host, with no per-host installation step. Unknown labels are still ignored, so agents that predate your new skill keep working exactly as before.

note

The Skills catalog and the Schemas reference are both generated by docs/scripts/embed-sources.mjs from skills/*.md, schemas/*.json, and core/labels.ts directly. Once step 2 is done, the next docs build picks up your new skill automatically; there is no separate documentation file to hand-edit.