Claude Code · spec-driven development
From a rough idea to an open, evidence-backed PR.
A small set of Claude Code plugins that give a change a paper trail: you frame the idea, split it into buildable specs, and hand each one to an agent that implements it, tests it, proves it runs, and stops at a pull request for you to review.
Install
One command to add it, one to install
The repo is a plugin marketplace. Installing spec-workflow pulls in live-verify automatically (it depends on it).
# 1 · register the marketplace (once) /plugin marketplace add moacyrricardo/skills # 2 · install — spec-workflow pulls live-verify with it /plugin install spec-workflow@moacyr-skills # 3 · activate in the current session /reload-plugins
Once installed, the commands are namespaced by their plugin — /spec-workflow:new, /spec-workflow:ship, and so on. They're written in full below.
The model
Two kinds of document, one lifecycle
Every decision lives in a specs/ directory — the catalog. A file is named NNN-status-slug.md, and its status is its filename. The whole plugin set shares this model (the spec-conventions skill), so the commands never disagree about what a spec is.
Umbrella
Concern
Exploratory. Frames a problem, lays out hypotheses and trade-offs, keeps options open. Not a decision yet. One concern usually spawns several specs.
Buildable
Spec
A decision made — technically detailed and prescriptive, ready to hand to a builder. Each spec is one bounded, shippable slice of the concern.
The flow
One idea fans out; each spec ships on its own
The shape of the work: a single concern becomes a handful of specs, and each spec becomes its own pull request. Nothing merges automatically — you stay the reviewer.
the concern is retired with a pointer to the specs that resolved it — it stays in the catalog as history
Step by step
Idea → PR, in four moves
Frame the idea as a concern
Start wide. Run new and choose concern. Capture the problem, the options you're weighing, and the open questions. You're not committing to an approach yet — you're giving the idea a home in the catalog.
Split it into a few specs
As the decisions firm up, break the concern into bounded, buildable slices — one spec each, via new. Then mark the concern resolved with a note pointing at the specs that settled it. You now have a small stack of todo specs.
Ship each spec
Hand a spec to ship. An agent builds it in the background: it flips todo → doing as the first commit (so the PR opens on that flip), implements the change, and leaves an open PR — stacked when specs depend on each other. It never merges. Run it once per spec.
Review, then merge
Each PR arrives with its evidence attached (below). You review and merge on GitHub. When specs were stacked, utils' stacked-merge squash-merges the chain in order and handles the rebase bookkeeping between them.
What ship leaves behind
Every PR shows its work
The point of shipping through the agent isn't speed — it's that each pull request carries proof, so review is fast and grounded.
live-verify plugin.What's in the box
Three plugins, one marketplace
The catalog lifecycle: new, start, build, eval, finish, ship, plan, the autopilot agent, and the spec-conventions skill.
Prove a feature works against a running app: start the dev server, then drive it — a real browser or curl — to capture a screenshot / GIF / text verdict. No spec or tracker coupling.
General-purpose helpers. Currently stacked-merge — squash-merge a PR or a chain of stacked PRs into main, rebasing between each.
CLAUDE.md. Don't use an issue tracker? The Linear steps simply drop out.