/skills
The skills.
The plugin half of Speccle: three Claude Code skills that hold the judgement and drive the loop. Everything deterministic is shelled out to speccle-oracle — a skill that can't find the oracle stops rather than guessing: a spec that hasn't been linted hasn't been linted.
implement-feature
[skill]any input → linted spec → you ratify → tagged tests + green code
Takes a spec in any form — prose, a ticket, a file — and drafts the conventioned SPEC.md + CONTEXT.mdin the feature folder. Lints them clean, then pauses for you to ratify the criteria before writing a single test or line of code. It then builds one criterion at a time, taking a tracer criterion end-to-end first so the slice's plumbing is proven before the rest is filled in.
Done means: the spec lints clean, every criterion has at least one tagged test, and all tests are green.
strengthen
[skill]mutation + coverage → per-criterion heatmap → every survivor routed
Runs mutation testing and coverage, renders the oracle-strength heatmap, then routes every surviving mutant on the survivor — never on the score:
| The survivor breaks… | Route | What happens |
|---|---|---|
| a behaviour a criterion promises | machine path | write the killing test, re-run |
| something no criterion promises | human path | draft a sharper criterion — you ratify it |
| nothing any test could detect | equivalent (rare) | annotate it in the source |
Never a test fitted to a mutant: killing a survivor no criterion promises defends nothing.
carve-feature
[skill]existing code → derived spec → you ratify → tests tagged, behaviour unchanged
Brings an existing, ungoverned region of code under the convention — without changing it. It derives SPEC.md + CONTEXT.mdfrom what the code observably does and pauses for you to ratify the derived criteria — anything that looks like a bug is a finding for you to rule on, never a silent fix. Then it tags the tests that already defend each criterion and writes tests for what nothing claims. The code's behaviour is unchanged throughout.
Install
Speccle is used from a clone, not a registry — the skills shell out to the speccle-oracle binary, so it needs to be on your PATH first. Requires Node ≥ 24; targets TypeScript projects using vitest and StrykerJS.
shell
git clone https://github.com/matthewalton/speccle.git cd speccle pnpm install pnpm --filter speccle-oracle build cd packages/oracle && npm link # puts speccle-oracle on your PATH # then, in Claude Code: /plugin marketplace add /path/to/speccle /plugin install speccle@speccle-marketplace