By tcashel
Shape work on the anvil: a non-invasive, operator-scoped pipeline that turns an idea into a near-mergeable PR without watching the session. Plan and lock a spec, run a two-critic panel, adjudicate the cruxes, then dispatch → review → auto-fix over a beads ready-frontier. Nothing is committed into your repo or its CLAUDE.md.
Adversarial, read-only critique of an anvil task spec. Verifies every cited file path, walks each acceptance criterion for vagueness, and surfaces undefined behavior, contradictions, deferred decisions, scope creep, and missing context before the implementing agent ever runs. Emits one structured anvil-spec-critique block with BLOCKER/HIGH/MEDIUM/LOW findings.
Reviews a dispatched pull request against its linked anvil spec. Reads the actual diff (not the PR description), walks the spec's acceptance criteria, scans for the common failure modes, severity-classifies every finding, and emits exactly one anvil-review fenced block with a verdict. Read-only — identifies problems, never fixes them. Use when reviewing whether an anvil-dispatched PR is mergeable.
Walks the operator through every unresolved CRUX in an anvil-spec-recommendations document one at a time — conflicting critic findings and open questions — captures the resolution, writes it back into the spec body at ~/.anvil/specs/<id>.md, and gates: the spec cannot leave adjudication with any crux unresolved. When clean, flips the bd issue to ready.
Runs the two-critic panel over a spec. Invoke when the user wants a spec reviewed, critiqued, or hardened before execution. Dispatches two independent critics, synthesizes their findings into a prioritized recommendations document, and surfaces conflicts plus open questions for the user to adjudicate. Entry point for the plan -> critique -> adjudicate flow.
Pull the beads ready-frontier (bd ready, honoring $BEADS_DIR) and run the headless execute -> quality gate -> draft PR -> review -> one auto-fix round loop over the chosen issue(s). Glue around the execute-review-fix workflow. Use after /anvil:adjudicate has locked specs into bd issues and you want them built. Stops at draft PRs for human adjudication; never merges.
Activates when the operator wants to turn an idea — or a plan-mode plan they just produced — into a locked anvil spec. Collaborate in plan mode to draft a self-contained spec in the anvil schema, write the body to ~/.anvil/specs/<id>.md, create a matching beads issue so it joins the ready-frontier, and enforce the open-questions lock gate before it can be marked ready. Use when the operator says they want to run something through anvil, when they've just produced a plan to ship to a coding agent, or when they invoke /anvil:plan.
One-time setup for anvil: install and configure beads (bd or br) operator-scoped, verify the table-stakes tooling (git, gh + auth, claude), stand up the out-of-repo state under ~/.anvil, and PROVE the install imposed nothing on any target repo. Use when the operator first installs the anvil plugin, when bd/br is missing, or when /anvil:plan or /anvil:dispatch complains that beads isn't set up.
Uses power tools
Uses Bash, Write, or Edit tools
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A personal Claude Code plugin marketplace. The workshop that holds the tools.
Today it ships one plugin:
anvil — shape work without watching itanvil is a non-invasive, operator-scoped agent pipeline:
Plan. Run. Review. Ship. Don't watch.
It turns an idea into a near-mergeable draft PR by walking a spec through plan → critique → adjudicate → dispatch → review → fix, with a beads issue graph as the work-item store and Claude Code Workflows doing the cognitive fan-out.
The defining constraint: zero repo imposition. All of anvil's state lives
out-of-repo and operator-scoped ($BEADS_DIR, ~/.anvil/specs/). anvil never
commits a .beads file into your target repo, never edits its CLAUDE.md, and
never makes a change your teammates have to see. You can plan, critique, and run
work against any repo — including worktree-heavy ones — without touching it.
/plugin marketplace add ~/repositories/smithy # or: <github-owner>/smithy
/plugin install anvil@smithy
Then run /anvil:setup — it installs beads (if missing), stands up the
operator-scoped store, persists BEADS_DIR with your consent, and proves the
install touched no repo. (Manual equivalent:
plugins/anvil/bootstrap/install-beads.sh + export BEADS_DIR="$HOME/.anvil/beads".)
Prerequisites: bd (beads) or br
(beads_rust) on PATH, plus
gh and claude. See plugins/anvil/README.md for
the full walkthrough and plugins/anvil/LEARNINGS.md
for the portable engineering lessons this plugin encodes.
anvil is five slash commands. Run setup once, then walk an idea through the loop:
/anvil:setup # one-time: install beads operator-scoped, prove zero repo imposition
/anvil:plan # turn an idea (or a plan-mode plan) into a locked spec + beads issue
/anvil:critique # two independent critics + a synthesizer harden the spec
/anvil:adjudicate # you resolve the cruxes; decisions fold back into the spec, then it locks
/anvil:dispatch # headless build → quality gate → DRAFT PR → review → one auto-fix → stop
The loop stops at a draft PR — you adjudicate the merge; anvil never auto-merges.
All state stays out-of-repo ($BEADS_DIR, ~/.anvil/specs/); your target repo is
never touched. Each command works standalone, so you can also jump straight to
/anvil:dispatch against an existing bd ready frontier.
anvil is the bare-parts arm of a deliberate experiment. The sibling project Forge is a TypeScript app that implements this same loop as a bespoke CLI. Forge's ADR-0030 asks an uncomfortable question: now that Claude Code ships Workflows, Routines, and subagents — and beads ships the dependency graph — does Forge's value reassemble from bare parts, or does building the app still earn its keep?
anvil is how we find out. It reassembles Forge's loop using only skills,
Workflows, subagents, beads, gh, and headless claude — and never shells
out to the forge binary (doing so would invalidate the test). Two surfaces are
expected to be where the answer lives:
$BEADS_DIR, contributor mode) actually deliver repo-untouched, multi-repo,
worktree-safe planning? Or does assembling it reinvent Forge?/anvil:adjudicate).If the bare stack reassembles into Forge, Forge is the product. If a plugin like this gets you ~90% there, the plugin is the product. Either answer is a win; the point is to find it honestly.
Apache 2.0 © 2026 Tripp Cashel — see LICENSE and NOTICE.
npx claudepluginhub tcashel/smithy --plugin anvilUltra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.