ものづくり — turn a backlog into small, reviewable pull requests with coding agents, project skills, memory, and cost controls.
Monozukuri (ものづくり) is a Japanese concept meaning "the art and science of making things" — continuous improvement, craftsmanship, and the relentless pursuit of quality in creation. The same principles that should govern autonomous software delivery.
Monozukuri is an open-source orchestrator for autonomous software delivery. It reads a backlog, ranks or selects features, creates isolated worktrees, runs a coding agent through a delivery pipeline, validates the result, opens pull requests, and preserves memory for the next run.
It does not replace Claude Code, Codex, or Gemini. It coordinates them.
Use a coding agent directly for a one-off change. Use Monozukuri when you want a repeatable queue of work with memory, validation, resumability, and cost control.
- Turn backlog into PRs: select one or more features and let the loop execute them as separate work.
- Keep context between runs: Memory v2 records learnings, provenance, agent scope, and usage history.
- Use project skills: inject compatible skills from
.agents/skills/*/SKILL.mdand.claude/skills/*/SKILL.md. - Control spend: set hard caps for cost, time, and tokens per task.
- Recover cleanly: resume from checkpoints after interruption, timeout, or machine failure.
- Ship reviewable changes: work happens in isolated worktrees and ends as pull requests.
Monozukuri is not the fastest path for every change. Skip it when you only need a small, isolated edit and already know exactly what to ask an agent.
It works best when your project has a backlog, clear acceptance criteria, a test or validation path, and at least one authenticated agent CLI.
Use the alpha channel if you want pick, loop, Memory v2, and the new orchestration work.
npm install -g @viniciuscarvalho/monozukuri@nextor:
brew tap viniciuscarvalho/tap
brew install monozukuri-nextThen verify the install:
monozukuri doctor
# or, from Homebrew alpha:
monozukuri-next doctor- Node.js 18+
jqghauthenticated for pull request creation- One agent CLI authenticated locally:
claude,codex, orgemini
See docs/installation.md for NPX, source installs, and platform notes.
Inside a git project:
monozukuri init
monozukuri doctor
monozukuri backlog list
monozukuri pick --top 2 | monozukuri loopIf you installed the Homebrew alpha formula, use monozukuri-next in place of monozukuri.
backlog -> pick -> loop -> worktree -> agent phases -> tests -> PR -> memory
For every selected feature, Monozukuri runs a six-phase delivery pipeline:
| Phase | Output |
|---|---|
| PRD | Feature intent and acceptance criteria |
| TechSpec | Implementation plan and touched files |
| Tasks | Ordered implementation steps |
| Code | Changes in an isolated worktree |
| Tests | Validation and test summary |
| PR | Pull request with summary and evidence |
The loop keeps each feature independent. A failure in one task does not have to destroy the rest of the queue.
pick selects ranked backlog IDs. loop executes them.
monozukuri backlog list --label cli,docs --agent codex
monozukuri pick --top 3
monozukuri pick --top 3 --json | jq -r '.[].id' | monozukuri loop
monozukuri loop status --follow
monozukuri loop --resumeUseful loop controls:
monozukuri loop feat-001 feat-002 --max-cost 5 --max-time 120
monozukuri loop --resume
monozukuri loop --list-runs
monozukuri loop status --followSee docs/execution.md and docs/schemas/loop-state.md for the full behavior.
Monozukuri supports different autonomy levels depending on how closely you want to supervise the run.
| Mode | Use when | Behavior |
|---|---|---|
supervised |
You are watching the run | Shows interactive progress and pauses for decisions |
checkpoint |
You want safe automation | Runs until review or recovery checkpoints |
full_auto |
You want unattended execution | Continues without prompts, guarded by caps and circuit breakers |
Example:
MONOZUKURI_AUTONOMY=full_auto monozukuri pick --top 3 | monozukuri loopMonozukuri runs outside the coding agent and invokes the agent through its CLI.
Supported agent targets include:
- Claude Code
- OpenAI Codex
- Gemini
- Kiro and Aider adapters where configured
Project skills can live in:
.agents/skills/<skill-name>/SKILL.md
.claude/skills/<skill-name>/SKILL.md
monozukuri doctor reports whether the agent CLI is installed, auth is valid, skills were discovered, and which skills are injectable for the active agent.
Memory v2 keeps agent work from starting cold every time. Each learning records:
- the insight and rationale
- the source feature, phase, run, and artifact
- how often it has been applied
- when it was last applied
- whether it applies to Claude Code, Codex, Gemini, or all agents
The sufficiency router injects compact summaries first. If an agent needs more detail, it can request a raw learning with:
<request-memory id="lrn-xxx"/>Useful commands:
monozukuri memory migrate --dry-run
monozukuri memory migrate
monozukuri memory why <lrn-id>
monozukuri memory trace <run-id>
monozukuri memory compact --dry-runRead docs/schemas/memory-v2.md, docs/adr/027-sufficiency-router.md, and docs/experiments/sufficiency-router/README.md for the schema, decision, and experiment data.
The v2 alpha was validated with a live Codex canary against Viniciuscarvalho/monozukuri-soak-test. The loop created two pull requests and both passed the sandbox CI.
Release details live in docs/release/v2-alpha.md.
| Topic | Where |
|---|---|
| Install guide | docs/installation.md |
| Execution and loop behavior | docs/execution.md |
| Configuration reference | docs/configuration.md |
| Backlog adapters | docs/adapters.md |
| v1 to v2 migration | docs/v2-migration.md |
| Troubleshooting | docs/troubleshooting.md |
| Release process | docs/release-process.md |
| v2 alpha readiness | docs/release/v2-alpha.md |
| Architecture decisions | docs/adr/ |
| ADR | Decision |
|---|---|
| ADR-024 | Backlog priority scoring |
| ADR-025 | Memory v2 provenance schema |
| ADR-026 | MEM-05 sufficiency-router spike |
| ADR-027 | Production sufficiency-router convention |
MIT © Vinicius Carvalho
Created and maintained by Vinicius Carvalho.

