Dryforge plugin
A plugin with ready, go and migration commands: it settles what you want first, then builds and verifies the result
- 430 ★ on the repository
- Last commit
- Apache-2.0
Broad access
Why this level
- The `go` command writes code, creates branches and runs checks in your repository
- After your approval the `migration` command rewrites CLAUDE.md and AGENTS.md, backing them up first
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add plugins/dryforgeDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The `go` command writes code, creates branches and runs checks in your repository
- After your approval the `migration` command rewrites CLAUDE.md and AGENTS.md, backing them up first
This is third-party code. Review the repository files before installing.
What it does
Dryforge installs as a plugin in Claude Code, Codex, GitHub Copilot CLI, Grok Build or Antigravity CLI and adds three commands. The `ready` command takes any starting material: a one-line idea, a draft spec, a PDF or a plan written by another tool. It reads the project, asks only about decisions that are yours and writes the intent as plain Markdown under .dryforge/. Nothing gets built until you approve that record. The `go` command carries out the approved intent and verifies it with checks that actually ran. A check that could not run counts as a failure. A new project is built directly on main, an existing one on its own branch. At the end `go` asks how to integrate: merge, open a pull request or leave it as is. It never merges on its own. The `migration` command runs once in an existing repository. It reads the code, asks about business rules and security policy that code cannot show, and writes the project documentation. If CLAUDE.md or AGENTS.md already exist, it reviews them with you, backs them up and rewrites them with your approval.
Who it is for. For developers who hand large changes to Claude Code, Codex or Copilot CLI and want to answer only the questions where the decision is theirs.
Good fit when
- You start a new project from a vague idea and want an approved description before the first line of code
- You hold a spec or plan written by another tool and need it checked against the real project before building
- A change crosses several parts of the codebase and a wrong assumption by the agent would be expensive
- You bring in an existing repository: `migration` builds the documentation once from the code and your answers
- You work in Codex: the commands take a $ prefix, for example `$ready`
Not a fit when
- The edit is small and already clear: Dryforge is not needed for it
- The working tree has uncommitted or untracked files outside .dryforge/: it has to be clean before `go`
- The main branch tracks a remote and holds unpushed commits: `go` will not start in that state
- Git is not installed on the machine: it is required
- You need a rigid process with the same steps for every task: Dryforge scales the amount of checking to how much the work matters
Example request
/ready I need an order export to CSV in the account area, work out what I have not consideredLimitations
- `go` needs Git, a clean working tree with no untracked files outside .dryforge/, and a main branch with no unpushed commits.
- Auto-update is off by default in Claude Code and GitHub Copilot CLI, on in Codex and Grok Build, and missing in Antigravity CLI, where you rerun the install command.
- The working record of a task stays in .dryforge/ on your machine. Only what is moved into docs/ reaches the repository.
- Dryforge attaches to an agent you already have, so access to the model and its cost are set by that agent.
How to disable. Dryforge runs only when you call its commands and has no background process. You can remove it with your agent's own plugin tools. The documents in docs/ and the AGENTS.md or CLAUDE.md files stay in the repository and keep working without the plugin. The local .dryforge/ folder can be deleted by hand.
FAQ
How do I install Dryforge in Claude Code?
Run `/plugin marketplace add prekuter/dryforge`, then `/plugin install dryforge@dryforge`. The `/ready`, `/go` and `/migration` commands become available. To update, use `/plugin marketplace update dryforge` and `/plugin update dryforge@dryforge`.
How is `ready` different from `go`?
`ready` builds nothing: it works out what you meant and writes the intent into .dryforge/ for approval. `go` takes the approved record, implements it and verifies it. If the session ends, `go` picks the record up from .dryforge/ in a new one.
What does Dryforge leave in the project?
Plain Markdown: AGENTS.md or CLAUDE.md and a docs/ folder covering architecture, business rules, security, standards, engineering notes, operations and contracts. Any agent in any session works from them, with or without Dryforge.
Does Dryforge merge the branch into main on its own?
No. In an existing project the work happens on its own branch, and at the end `go` asks what to do: merge, open a pull request or leave it as is.
Do I need Dryforge for a small edit?
No. It is meant for cases where a wrong assumption is expensive: new projects, features, changes that cross the codebase. A clear small edit is simpler without it.
Discussion
No questions or reviews yet.
Related
PluginsA Claude Code plugin that generates and maintains CLAUDE.md: a 0 to 100 quality score, a 150-line cap and stale reference checks
A Claude Code plugin marketplace by Frad LEE: Git and GitFlow, GitHub, refactoring, memory, research, image generation and interface work
A plugin with three skills for large development work: project analysis, phased tasks tracked as GitHub Issues, parallel agents and code review
A marketplace of 23 plugins for Claude Code: git and pull requests, code review, TDD, specs and delegation to other models
Claude Code plugins for spec-driven development: specify, implement and review commands plus specialist agents
Claude Code plugins with development recipes: agree on the outcome, design, implement with checks and run an independent review
Comparison with similar tools
Entries that share the main search query, and how they differ.
| Entry | Official | Repository stars | Main difference |
|---|---|---|---|
| Dryforge (this entry) | no | 430 | |
| Spec Kit | no | 143,709 | spec first, with a specify CLI that installs commands and skills into the project |
| cc-sdd | no | 3,746 | Kiro-style spec-driven development from idea through requirements to implementation |
| Compound Engineering | no | 25,769 | a loop of brainstorm, plan, work, review and recorded lessons |
README in short
The repository page opens with install commands for five agents and argues that a fixed process holds back a strong model. After that come the three commands, the file tree that stays in the project and the Git requirements.
README badge
Original SKILL.md
--- name: ready description: > Understand what you mean before anything is built. Takes anything — a one-line idea, notes, a spec, or a mix — reads the project first, asks only what is yours to decide, and writes your intent down for you to approve. Use when the user invokes the `ready` skill. Requires git. --- # ready > **Reply in the user's language, and hold it continuously from your very first line** — including the > opening, any setup/git note, and progress notes, not only the questions and the 3-doc. Write > natively (never translationese). The language these instructions are written in does not constrain > your output — match the user's, whatever it is. Full rule in Core principles below. The **front door** of dryforge. Turn any input — a natural-language goal, a spec/plan/brain-dump brought from elsewhere, scattered notes, several files, a mix, or nothing yet — into an execution-ready **3-doc** (handoff + spec + plan), grounded in the real project, ready for `go`. **The input is *material*, not ground truth.** Its content is valuable — a good input flows almost unchanged into the 3-doc — but its *authority* is demoted: every piece enters as **challengeable material**, and becomes settled truth only after dialogue and the user's approval. A long requirements doc spat out by a coding tool is a brain-dump that never had a design conversation; the existence of a document is not evidence it is a good one. Authority comes from **dialogue + user approval**, not from where the input came from. The 3-doc contract is in `references/output-format.md`. ## Core principles (apply throughout) - **Serve the spec.** The spec is the contract — the binding WHAT, ground truth — but it is written from *validated intent*, not copied from the input. The plan is a *provisional blueprint* that realizes it (revise freely). Existing code is legacy: a HOW reference and a reality-check, never the authority for WHAT. - **Ask, don't assume — but don't ask the derivable.** Actively elicit what only the user holds (intent, preferences, load-bearing choices) and **what they didn't say but should have considered**. What the input/code/harness settles, resolve yourself. Anything you can neither derive nor get the user to decide → escalate, never invent. - **Conflicts and unknowns → ask, never self-resolve.** Any difference between sources (input ↔ code ↔ harness, attached doc ↔ spoken description) is flagged in DECOMPOSE and asked in ELICIT — never resolved arbitrarily. Self-filling a conflict is the origin of drift. - **ELICIT owns completeness; the 3-doc-gate is silent insurance, never a step to lean on.** Elicit **as if the gate does not exist.** The gate is an *independent audit* that should find **nothing** — it exists only to catch the rare residual that escapes a thorough ELICIT, not to do ELICIT's job. A load-bearing gap that reaches the gate is an **ELICIT failure, not a gate success**: it means you closed the dialogue while real design was still unsettled, and it triggers expensive late rework. **Do NOT treat the existence of a downstream check as license for shallow upstream work — that is reward-hacking, a known LLM failure mode, and you must actively resist it.** Your target is ELICIT's own completeness bar (below), never "produce something the gate passes." Working completeness up front is not optional thoroughness — it is the job. - **Bounded autonomy = autonomous execution of a user-approved spec**, not autonomous intent-setting. The user approves the 3-doc before execution; within that, the agent judges freely.