@zigrivers/scaffold 3.1.0 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/README.md +366 -40
  2. package/content/knowledge/core/test-skeleton-generation.md +313 -0
  3. package/{knowledge → content/knowledge}/execution/enhancement-workflow.md +1 -1
  4. package/content/knowledge/product/vision-innovation.md +273 -0
  5. package/{knowledge → content/knowledge}/tools/post-implementation-review-methodology.md +1 -1
  6. package/{pipeline → content/pipeline}/consolidation/workflow-audit.md +1 -1
  7. package/{pipeline → content/pipeline}/decisions/review-adrs.md +1 -1
  8. package/{pipeline → content/pipeline}/environment/design-system.md +1 -1
  9. package/{pipeline → content/pipeline}/finalization/implementation-playbook.md +2 -2
  10. package/{pipeline → content/pipeline}/foundation/tech-stack.md +1 -1
  11. package/{pipeline → content/pipeline}/modeling/review-domain-modeling.md +1 -1
  12. package/{pipeline → content/pipeline}/planning/implementation-plan-review.md +2 -1
  13. package/{pipeline → content/pipeline}/quality/review-testing.md +1 -1
  14. package/{pipeline → content/pipeline}/quality/story-tests.md +2 -2
  15. package/{pipeline → content/pipeline}/vision/innovate-vision.md +1 -1
  16. package/content/skills/mmr/SKILL.md +65 -0
  17. package/content/skills/multi-model-dispatch/SKILL.md +327 -0
  18. package/{agent-skills → content/skills}/scaffold-pipeline/SKILL.md +14 -8
  19. package/{agent-skills → content/skills}/scaffold-runner/SKILL.md +64 -19
  20. package/{tools → content/tools}/post-implementation-review.md +2 -2
  21. package/{tools → content/tools}/prompt-pipeline.md +7 -0
  22. package/dist/cli/commands/build.d.ts.map +1 -1
  23. package/dist/cli/commands/build.js +17 -1
  24. package/dist/cli/commands/build.js.map +1 -1
  25. package/dist/cli/commands/build.test.js +6 -5
  26. package/dist/cli/commands/build.test.js.map +1 -1
  27. package/dist/cli/commands/info.test.js +2 -2
  28. package/dist/cli/commands/info.test.js.map +1 -1
  29. package/dist/cli/commands/init.d.ts.map +1 -1
  30. package/dist/cli/commands/init.js +9 -0
  31. package/dist/cli/commands/init.js.map +1 -1
  32. package/dist/cli/commands/init.test.js +6 -0
  33. package/dist/cli/commands/init.test.js.map +1 -1
  34. package/dist/cli/commands/list.test.js +8 -8
  35. package/dist/cli/commands/list.test.js.map +1 -1
  36. package/dist/cli/commands/run.test.js +4 -4
  37. package/dist/cli/commands/run.test.js.map +1 -1
  38. package/dist/cli/commands/skill.d.ts.map +1 -1
  39. package/dist/cli/commands/skill.js +16 -86
  40. package/dist/cli/commands/skill.js.map +1 -1
  41. package/dist/cli/commands/skill.test.js +27 -46
  42. package/dist/cli/commands/skill.test.js.map +1 -1
  43. package/dist/cli/middleware/project-root.d.ts.map +1 -1
  44. package/dist/cli/middleware/project-root.js +16 -0
  45. package/dist/cli/middleware/project-root.js.map +1 -1
  46. package/dist/cli/middleware/project-root.test.js +20 -0
  47. package/dist/cli/middleware/project-root.test.js.map +1 -1
  48. package/dist/core/adapters/gemini.js +2 -2
  49. package/dist/core/adapters/gemini.js.map +1 -1
  50. package/dist/core/adapters/gemini.test.js +1 -1
  51. package/dist/core/adapters/gemini.test.js.map +1 -1
  52. package/dist/core/skills/sync.d.ts +36 -0
  53. package/dist/core/skills/sync.d.ts.map +1 -0
  54. package/dist/core/skills/sync.js +119 -0
  55. package/dist/core/skills/sync.js.map +1 -0
  56. package/dist/core/skills/sync.test.d.ts +2 -0
  57. package/dist/core/skills/sync.test.d.ts.map +1 -0
  58. package/dist/core/skills/sync.test.js +166 -0
  59. package/dist/core/skills/sync.test.js.map +1 -0
  60. package/dist/e2e/commands.test.js +10 -10
  61. package/dist/e2e/commands.test.js.map +1 -1
  62. package/dist/e2e/knowledge.test.js +5 -4
  63. package/dist/e2e/knowledge.test.js.map +1 -1
  64. package/dist/index.js +0 -0
  65. package/dist/project/adopt.test.js +8 -8
  66. package/dist/project/adopt.test.js.map +1 -1
  67. package/dist/utils/fs.d.ts +5 -5
  68. package/dist/utils/fs.d.ts.map +1 -1
  69. package/dist/utils/fs.js +15 -15
  70. package/dist/utils/fs.js.map +1 -1
  71. package/dist/utils/fs.test.js +9 -9
  72. package/dist/utils/fs.test.js.map +1 -1
  73. package/dist/validation/index.test.js +2 -2
  74. package/dist/validation/index.test.js.map +1 -1
  75. package/package.json +3 -6
  76. package/skills/mmr/SKILL.md +65 -0
  77. package/skills/scaffold-pipeline/SKILL.md +3 -3
  78. /package/{knowledge → content/knowledge}/core/adr-craft.md +0 -0
  79. /package/{knowledge → content/knowledge}/core/ai-memory-management.md +0 -0
  80. /package/{knowledge → content/knowledge}/core/api-design.md +0 -0
  81. /package/{knowledge → content/knowledge}/core/automated-review-tooling.md +0 -0
  82. /package/{knowledge → content/knowledge}/core/claude-md-patterns.md +0 -0
  83. /package/{knowledge → content/knowledge}/core/coding-conventions.md +0 -0
  84. /package/{knowledge → content/knowledge}/core/database-design.md +0 -0
  85. /package/{knowledge → content/knowledge}/core/design-system-tokens.md +0 -0
  86. /package/{knowledge → content/knowledge}/core/dev-environment.md +0 -0
  87. /package/{knowledge → content/knowledge}/core/domain-modeling.md +0 -0
  88. /package/{knowledge → content/knowledge}/core/eval-craft.md +0 -0
  89. /package/{knowledge → content/knowledge}/core/git-workflow-patterns.md +0 -0
  90. /package/{knowledge → content/knowledge}/core/multi-model-review-dispatch.md +0 -0
  91. /package/{knowledge → content/knowledge}/core/operations-runbook.md +0 -0
  92. /package/{knowledge → content/knowledge}/core/project-structure-patterns.md +0 -0
  93. /package/{knowledge → content/knowledge}/core/review-step-template.md +0 -0
  94. /package/{knowledge → content/knowledge}/core/security-best-practices.md +0 -0
  95. /package/{knowledge → content/knowledge}/core/system-architecture.md +0 -0
  96. /package/{knowledge → content/knowledge}/core/task-decomposition.md +0 -0
  97. /package/{knowledge → content/knowledge}/core/task-tracking.md +0 -0
  98. /package/{knowledge → content/knowledge}/core/tech-stack-selection.md +0 -0
  99. /package/{knowledge → content/knowledge}/core/testing-strategy.md +0 -0
  100. /package/{knowledge → content/knowledge}/core/user-stories.md +0 -0
  101. /package/{knowledge → content/knowledge}/core/user-story-innovation.md +0 -0
  102. /package/{knowledge → content/knowledge}/core/ux-specification.md +0 -0
  103. /package/{knowledge → content/knowledge}/execution/task-claiming-strategy.md +0 -0
  104. /package/{knowledge → content/knowledge}/execution/tdd-execution-loop.md +0 -0
  105. /package/{knowledge → content/knowledge}/execution/worktree-management.md +0 -0
  106. /package/{knowledge → content/knowledge}/finalization/apply-fixes-and-freeze.md +0 -0
  107. /package/{knowledge → content/knowledge}/finalization/developer-onboarding.md +0 -0
  108. /package/{knowledge → content/knowledge}/finalization/implementation-playbook.md +0 -0
  109. /package/{knowledge → content/knowledge}/product/gap-analysis.md +0 -0
  110. /package/{knowledge → content/knowledge}/product/prd-craft.md +0 -0
  111. /package/{knowledge → content/knowledge}/product/prd-innovation.md +0 -0
  112. /package/{knowledge → content/knowledge}/product/vision-craft.md +0 -0
  113. /package/{knowledge → content/knowledge}/review/review-adr.md +0 -0
  114. /package/{knowledge → content/knowledge}/review/review-api-design.md +0 -0
  115. /package/{knowledge → content/knowledge}/review/review-database-design.md +0 -0
  116. /package/{knowledge → content/knowledge}/review/review-domain-modeling.md +0 -0
  117. /package/{knowledge → content/knowledge}/review/review-implementation-tasks.md +0 -0
  118. /package/{knowledge → content/knowledge}/review/review-methodology.md +0 -0
  119. /package/{knowledge → content/knowledge}/review/review-operations.md +0 -0
  120. /package/{knowledge → content/knowledge}/review/review-prd.md +0 -0
  121. /package/{knowledge → content/knowledge}/review/review-security.md +0 -0
  122. /package/{knowledge → content/knowledge}/review/review-system-architecture.md +0 -0
  123. /package/{knowledge → content/knowledge}/review/review-testing-strategy.md +0 -0
  124. /package/{knowledge → content/knowledge}/review/review-user-stories.md +0 -0
  125. /package/{knowledge → content/knowledge}/review/review-ux-specification.md +0 -0
  126. /package/{knowledge → content/knowledge}/review/review-vision.md +0 -0
  127. /package/{knowledge → content/knowledge}/tools/release-management.md +0 -0
  128. /package/{knowledge → content/knowledge}/tools/session-analysis.md +0 -0
  129. /package/{knowledge → content/knowledge}/tools/version-strategy.md +0 -0
  130. /package/{knowledge → content/knowledge}/validation/critical-path-analysis.md +0 -0
  131. /package/{knowledge → content/knowledge}/validation/cross-phase-consistency.md +0 -0
  132. /package/{knowledge → content/knowledge}/validation/decision-completeness.md +0 -0
  133. /package/{knowledge → content/knowledge}/validation/dependency-validation.md +0 -0
  134. /package/{knowledge → content/knowledge}/validation/implementability-review.md +0 -0
  135. /package/{knowledge → content/knowledge}/validation/scope-management.md +0 -0
  136. /package/{knowledge → content/knowledge}/validation/traceability.md +0 -0
  137. /package/{methodology → content/methodology}/README.md +0 -0
  138. /package/{methodology → content/methodology}/custom-defaults.yml +0 -0
  139. /package/{methodology → content/methodology}/deep.yml +0 -0
  140. /package/{methodology → content/methodology}/mvp.yml +0 -0
  141. /package/{pipeline → content/pipeline}/architecture/review-architecture.md +0 -0
  142. /package/{pipeline → content/pipeline}/architecture/system-architecture.md +0 -0
  143. /package/{pipeline → content/pipeline}/build/multi-agent-resume.md +0 -0
  144. /package/{pipeline → content/pipeline}/build/multi-agent-start.md +0 -0
  145. /package/{pipeline → content/pipeline}/build/new-enhancement.md +0 -0
  146. /package/{pipeline → content/pipeline}/build/quick-task.md +0 -0
  147. /package/{pipeline → content/pipeline}/build/single-agent-resume.md +0 -0
  148. /package/{pipeline → content/pipeline}/build/single-agent-start.md +0 -0
  149. /package/{pipeline → content/pipeline}/consolidation/claude-md-optimization.md +0 -0
  150. /package/{pipeline → content/pipeline}/decisions/adrs.md +0 -0
  151. /package/{pipeline → content/pipeline}/environment/ai-memory-setup.md +0 -0
  152. /package/{pipeline → content/pipeline}/environment/automated-pr-review.md +0 -0
  153. /package/{pipeline → content/pipeline}/environment/dev-env-setup.md +0 -0
  154. /package/{pipeline → content/pipeline}/environment/git-workflow.md +0 -0
  155. /package/{pipeline → content/pipeline}/finalization/apply-fixes-and-freeze.md +0 -0
  156. /package/{pipeline → content/pipeline}/finalization/developer-onboarding-guide.md +0 -0
  157. /package/{pipeline → content/pipeline}/foundation/beads.md +0 -0
  158. /package/{pipeline → content/pipeline}/foundation/coding-standards.md +0 -0
  159. /package/{pipeline → content/pipeline}/foundation/project-structure.md +0 -0
  160. /package/{pipeline → content/pipeline}/foundation/tdd.md +0 -0
  161. /package/{pipeline → content/pipeline}/integration/add-e2e-testing.md +0 -0
  162. /package/{pipeline → content/pipeline}/modeling/domain-modeling.md +0 -0
  163. /package/{pipeline → content/pipeline}/parity/platform-parity-review.md +0 -0
  164. /package/{pipeline → content/pipeline}/planning/implementation-plan.md +0 -0
  165. /package/{pipeline → content/pipeline}/pre/create-prd.md +0 -0
  166. /package/{pipeline → content/pipeline}/pre/innovate-prd.md +0 -0
  167. /package/{pipeline → content/pipeline}/pre/innovate-user-stories.md +0 -0
  168. /package/{pipeline → content/pipeline}/pre/review-prd.md +0 -0
  169. /package/{pipeline → content/pipeline}/pre/review-user-stories.md +0 -0
  170. /package/{pipeline → content/pipeline}/pre/user-stories.md +0 -0
  171. /package/{pipeline → content/pipeline}/quality/create-evals.md +0 -0
  172. /package/{pipeline → content/pipeline}/quality/operations.md +0 -0
  173. /package/{pipeline → content/pipeline}/quality/review-operations.md +0 -0
  174. /package/{pipeline → content/pipeline}/quality/review-security.md +0 -0
  175. /package/{pipeline → content/pipeline}/quality/security.md +0 -0
  176. /package/{pipeline → content/pipeline}/specification/api-contracts.md +0 -0
  177. /package/{pipeline → content/pipeline}/specification/database-schema.md +0 -0
  178. /package/{pipeline → content/pipeline}/specification/review-api.md +0 -0
  179. /package/{pipeline → content/pipeline}/specification/review-database.md +0 -0
  180. /package/{pipeline → content/pipeline}/specification/review-ux.md +0 -0
  181. /package/{pipeline → content/pipeline}/specification/ux-spec.md +0 -0
  182. /package/{pipeline → content/pipeline}/validation/critical-path-walkthrough.md +0 -0
  183. /package/{pipeline → content/pipeline}/validation/cross-phase-consistency.md +0 -0
  184. /package/{pipeline → content/pipeline}/validation/decision-completeness.md +0 -0
  185. /package/{pipeline → content/pipeline}/validation/dependency-graph-validation.md +0 -0
  186. /package/{pipeline → content/pipeline}/validation/implementability-dry-run.md +0 -0
  187. /package/{pipeline → content/pipeline}/validation/scope-creep-check.md +0 -0
  188. /package/{pipeline → content/pipeline}/validation/traceability-matrix.md +0 -0
  189. /package/{pipeline → content/pipeline}/vision/create-vision.md +0 -0
  190. /package/{pipeline → content/pipeline}/vision/review-vision.md +0 -0
  191. /package/{tools → content/tools}/dashboard.md +0 -0
  192. /package/{tools → content/tools}/release.md +0 -0
  193. /package/{tools → content/tools}/review-code.md +0 -0
  194. /package/{tools → content/tools}/review-pr.md +0 -0
  195. /package/{tools → content/tools}/session-analyzer.md +0 -0
  196. /package/{tools → content/tools}/update.md +0 -0
  197. /package/{tools → content/tools}/version-bump.md +0 -0
  198. /package/{tools → content/tools}/version.md +0 -0
package/README.md CHANGED
@@ -12,24 +12,24 @@ Here's how it works:
12
12
 
13
13
  1. **Initialize** — run `scaffold init` in your project directory. The init wizard detects whether you're starting fresh (greenfield) or working with an existing codebase (brownfield), and lets you pick a methodology preset (deep, mvp, or custom).
14
14
 
15
- 2. **Run steps** — each step is a composable meta-prompt (a short intent declaration in `pipeline/`) that gets assembled at runtime into a full 7-section prompt. The assembly engine injects relevant knowledge base entries, project context from prior steps, methodology settings, and depth-appropriate instructions.
15
+ 2. **Run steps** — each step is a composable meta-prompt (a short intent declaration in `content/pipeline/`) that gets assembled at runtime into a full 7-section prompt. The assembly engine injects relevant knowledge base entries, project context from prior steps, methodology settings, and depth-appropriate instructions.
16
16
 
17
17
  3. **Follow the dependency graph** — Scaffold tracks which steps are complete, which are eligible, and which are blocked. Run `scaffold next` to see what's unblocked, or `scaffold status` for the full picture. Each step produces a specific artifact — a planning document, architecture decision, specification, or actual code.
18
18
 
19
19
  You can run steps two ways:
20
20
 
21
21
  - **CLI**: `scaffold run create-prd` — the assembly engine builds a full prompt from the meta-prompt, knowledge base entries, and project context. Best for the structured pipeline with dependency tracking.
22
- - **Slash commands**: `/scaffold:create-prd` in Claude Code or Gemini uses pre-rendered, self-contained prompts. Best for quick access to individual commands without the full pipeline ceremony.
22
+ - **Runner skill**: In Claude Code or Gemini, the scaffold-runner skill provides an interactive wrapper that surfaces decision points (depth level, strictness, optional sections) before execution instead of letting the AI pick defaults silently.
23
23
 
24
- Either way, Scaffold constructs the prompt and the target AI tool does the work. The CLI tracks pipeline state and dependencies; slash commands are fire-and-forget.
24
+ Either way, Scaffold constructs the prompt and the target AI tool does the work. The CLI tracks pipeline state and dependencies; the runner skill adds interactive decision surfacing on top.
25
25
 
26
26
  ## Key Concepts
27
27
 
28
- **Meta-prompts** — Each pipeline step is defined as a short `.md` file in `pipeline/` with YAML frontmatter (dependencies, outputs, knowledge entries) and a markdown body describing the step's intent. These are *not* the prompts Claude sees — they're assembled into full prompts at runtime.
28
+ **Meta-prompts** — Each pipeline step is defined as a short `.md` file in `content/pipeline/` with YAML frontmatter (dependencies, outputs, knowledge entries) and a markdown body describing the step's intent. These are *not* the prompts Claude sees — they're assembled into full prompts at runtime.
29
29
 
30
30
  **Assembly engine** — At execution time, Scaffold builds a 7-section prompt from: system metadata, the meta-prompt, knowledge base entries, project context (artifacts from prior steps), methodology settings, layered instructions, and depth-specific execution guidance.
31
31
 
32
- **Knowledge base** — 60 domain expertise entries in `knowledge/` organized in seven categories (core, product, review, validation, finalization, execution, tools) covering testing strategy, domain modeling, API design, security best practices, eval craft, TDD execution, task claiming, worktree management, release management, and more. These get injected into prompts based on each step's `knowledge-base` frontmatter field. Knowledge files with a `## Deep Guidance` section are optimized for CLI assembly — only the deep guidance content is loaded, avoiding redundancy with the prompt text. Teams can add project-local overrides in `.scaffold/knowledge/` that layer on top of the global entries.
32
+ **Knowledge base** — 60 domain expertise entries in `content/knowledge/` organized in seven categories (core, product, review, validation, finalization, execution, tools) covering testing strategy, domain modeling, API design, security best practices, eval craft, TDD execution, task claiming, worktree management, release management, and more. These get injected into prompts based on each step's `knowledge-base` frontmatter field. Knowledge files with a `## Deep Guidance` section are optimized for CLI assembly — only the deep guidance content is loaded, avoiding redundancy with the prompt text. Teams can add project-local overrides in `.scaffold/knowledge/` that layer on top of the global entries.
33
33
 
34
34
  **Methodology presets** — Three built-in presets control which steps run and how deep the analysis goes:
35
35
  - **deep** (depth 5) — all steps enabled, exhaustive analysis
@@ -76,6 +76,13 @@ Independent review from Google's model. Can run alongside or instead of Codex.
76
76
  - Requires: Google account (free tier available)
77
77
  - Verify: `gemini --version`
78
78
 
79
+ **mmr** (multi-model review CLI)
80
+ Automates dispatching, monitoring, and reconciling code reviews across multiple AI model CLIs. Works standalone or with Scaffold.
81
+ - Install: `npm install -g @zigrivers/mmr`
82
+ - Verify: `mmr --help`
83
+ - Setup: `mmr config init` (auto-detects installed CLIs)
84
+ - See: [mmr — Multi-Model Review CLI](#mmr--multi-model-review-cli)
85
+
79
86
  **Playwright MCP** (web apps only)
80
87
  Lets Claude control a real browser for visual testing and screenshots.
81
88
  - Install: `claude mcp add playwright npx @playwright/mcp@latest`
@@ -85,7 +92,7 @@ Lets Claude control a real browser for visual testing and screenshots.
85
92
  Scaffold has two parts that install separately:
86
93
 
87
94
  - **CLI** (`scaffold`) — the core tool. Install via npm or Homebrew. Use it from your terminal or from Claude Code with `! scaffold run <step>`.
88
- - **Plugin** (`/scaffold:`) — optional slash commands for Claude Code. Lets you type `/scaffold:create-prd` instead of `! scaffold run create-prd`.
95
+ - **Plugin** — optional Claude Code plugin that auto-activates the scaffold runner and pipeline reference skills for interactive guidance.
89
96
 
90
97
  ### Step 1: Install the CLI
91
98
 
@@ -108,7 +115,7 @@ Verify: `scaffold version`
108
115
 
109
116
  ### Step 2: Add the plugin (recommended)
110
117
 
111
- Install the Scaffold plugin inside Claude Code for slash commands AND the interactive runner skill:
118
+ Install the Scaffold plugin inside Claude Code for auto-activated skills:
112
119
 
113
120
  ```
114
121
  /plugin marketplace add zigrivers/scaffold
@@ -116,7 +123,6 @@ Install the Scaffold plugin inside Claude Code for slash commands AND the intera
116
123
  ```
117
124
 
118
125
  This gives you:
119
- - **Slash commands** (`/scaffold:create-prd`, `/scaffold:tdd`, etc.) — quick access to any pipeline step
120
126
  - **Scaffold Runner skill** — intelligent interactive wrapper that surfaces decision points (depth level, strictness, optional sections) before execution instead of letting Claude pick defaults silently
121
127
  - **Pipeline reference skill** — shows pipeline ordering, dependencies, and phase structure
122
128
  - **Multi-model dispatch skill** — correct invocation patterns for Codex and Gemini CLIs
@@ -134,13 +140,9 @@ This gives you:
134
140
 
135
141
  The plugin is optional — everything it does can also be done with `scaffold run <step>` from the CLI. But you lose the interactive decision surfacing without the Scaffold Runner skill.
136
142
 
137
- > **CLI-only users**: If you prefer not to install the plugin, add skills with one command:
138
- > ```bash
139
- > scaffold skill install
140
- > ```
141
- > This copies the Scaffold Runner and Pipeline Reference skills to both `.claude/skills/` and `.agents/skills/` in your project.
143
+ > **CLI-only users**: If you prefer not to install the plugin, skills are installed automatically — `scaffold init` sets them up, and any subsequent CLI command keeps them current after upgrades. No manual `scaffold skill install` needed.
142
144
 
143
- > **Gemini users**: `scaffold build` keeps a root `GEMINI.md` in sync with the shared runner instructions and generates `.gemini/commands/scaffold/*.toml` slash commands. Plain prompts like `scaffold status` work because Gemini loads `GEMINI.md`.
145
+ > **Gemini users**: `scaffold build` keeps a root `GEMINI.md` in sync with the shared runner instructions and generates `.gemini/commands/scaffold/*.toml` wrappers. Plain prompts like `scaffold status` work because Gemini loads `GEMINI.md`.
144
146
 
145
147
  ## Updating
146
148
 
@@ -156,14 +158,18 @@ npm update -g @zigrivers/scaffold
156
158
  brew upgrade scaffold
157
159
  ```
158
160
 
161
+ ### mmr
162
+
163
+ ```bash
164
+ npm update -g @zigrivers/mmr
165
+ ```
166
+
159
167
  ### Plugin
160
168
 
161
169
  ```
162
- /scaffold:update
170
+ /plugin marketplace update zigrivers-scaffold
163
171
  ```
164
172
 
165
- Or: `/plugin marketplace update zigrivers-scaffold`
166
-
167
173
  ### Existing projects
168
174
 
169
175
  After upgrading the CLI, existing projects still get automatic state migrations. Run `scaffold status` in your project directory — the state manager detects and renames old step keys, removes retired steps, normalizes artifact paths, and persists the changes atomically. No manual editing of `.scaffold/state.json` is needed.
@@ -189,7 +195,7 @@ The canonical execution entrypoints are still `scaffold run <step>` and the inst
189
195
  This release is a clean breaking change for generated adapter output. To migrate an existing project:
190
196
 
191
197
  1. Upgrade Scaffold.
192
- 2. Remove old root-level generated Scaffold output if present: `commands/`, `prompts/`, `codex-prompts/`, and root `AGENTS.md` only if it was Scaffold-generated.
198
+ 2. Remove old root-level generated Scaffold output if present: `prompts/`, `codex-prompts/`, `commands/`, and root `AGENTS.md` only if it was Scaffold-generated. Run `scaffold status` — it warns about any legacy output.
193
199
  3. Run `scaffold build`.
194
200
  4. Review the Scaffold-managed block in `.gitignore`.
195
201
  5. Commit `.gitignore` plus the intended committed `.scaffold/` state files (`config.yml`, `state.json`, `decisions.jsonl`, `instructions/`).
@@ -551,11 +557,299 @@ npm install -g @google/gemini-cli
551
557
 
552
558
  You don't need both — Scaffold works with whichever CLIs are available. Having both gives the strongest review (three independent perspectives). See [Prerequisites](#prerequisites) for auth setup and verification commands.
553
559
 
560
+ ### mmr — Multi-Model Review CLI
561
+
562
+ `mmr` is a standalone CLI that automates multi-model code review. It solves the problems teams hit when manually orchestrating reviews across Claude, Codex, and Gemini: timeouts, auth failures, inconsistent prompts, fragile output parsing, and manual reconciliation.
563
+
564
+ **The core problem it solves:** Without `mmr`, an AI agent dispatching multi-model reviews has to manually construct CLI commands for each model, handle per-tool auth quirks, improvise timeout handling, parse different output formats, and reconcile findings across channels. In practice, this takes 4-6+ minutes per review and frequently fails. `mmr` reduces this to three commands.
565
+
566
+ #### How mmr Works
567
+
568
+ ```
569
+ mmr review --pr 47 ──→ Dispatches to all channels in background
570
+ Returns job ID immediately
571
+ Agent continues working
572
+
573
+ mmr status mmr-a1b2c3 ──→ Poll progress (which channels done?)
574
+ Exit code: 0=done, 1=running, 2=failed
575
+
576
+ mmr results mmr-a1b2c3 ──→ Reconcile findings across channels
577
+ Apply severity gate
578
+ Output unified findings
579
+ Exit code: 0=passed, 1=gate failed
580
+ ```
581
+
582
+ **Key features:**
583
+
584
+ - **Async job model** — reviews run in background processes. The agent fires `mmr review` and continues working. No blocking for 4-6 minutes.
585
+ - **Per-channel auth verification** — checks authentication before every dispatch. Auth failures are never silent — `mmr` tells you exactly what expired and the command to fix it.
586
+ - **Immutable core prompt** — every channel gets the same severity definitions (P0-P3), output format spec (JSON), and review criteria. No prompt drift between channels.
587
+ - **Automated reconciliation** — when two channels flag the same location, that's consensus (high confidence). When only one channel flags something, it's unique (medium confidence). P0 from any single source is always high confidence.
588
+ - **Configurable severity gate** — project default in `.mmr.yaml`, override per-review with `--fix-threshold`. Default: P2 (fix P0/P1/P2, skip P3).
589
+ - **Multiple output formats** — JSON (default, for machines), text (terminals), markdown (PR comments).
590
+
591
+ #### Installing mmr
592
+
593
+ **npm** (available now):
594
+ ```bash
595
+ npm install -g @zigrivers/mmr
596
+ ```
597
+
598
+ **Homebrew** (available after next scaffold release):
599
+ ```bash
600
+ brew tap zigrivers/scaffold
601
+ brew install mmr
602
+ ```
603
+
604
+ Verify: `mmr --help`
605
+
606
+ #### Enabling mmr in an Existing Project
607
+
608
+ **Step 1: Install the model CLIs you want to use**
609
+
610
+ You need at least one. More models = more diverse review perspectives.
611
+
612
+ ```bash
613
+ # Claude Code (you probably already have this)
614
+ npm install -g @anthropic-ai/claude-code
615
+
616
+ # Codex CLI (requires ChatGPT Plus/Pro/Team subscription)
617
+ npm install -g @openai/codex
618
+
619
+ # Gemini CLI (free tier available with Google account)
620
+ npm install -g @google/gemini-cli
621
+ ```
622
+
623
+ **Step 2: Authenticate each CLI**
624
+
625
+ Each CLI needs a one-time interactive authentication:
626
+
627
+ ```bash
628
+ # Claude — if not already logged in
629
+ claude login
630
+
631
+ # Codex — opens browser for OAuth
632
+ codex login
633
+
634
+ # Gemini — opens browser for OAuth
635
+ gemini -p "hello"
636
+ ```
637
+
638
+ **Step 3: Initialize mmr in your project**
639
+
640
+ ```bash
641
+ cd your-project
642
+ mmr config init
643
+ ```
644
+
645
+ This auto-detects which CLIs are installed and generates `.mmr.yaml` in your project root:
646
+
647
+ ```
648
+ Detected CLIs:
649
+ ✓ claude (claude -p)
650
+ ✓ gemini (gemini -p)
651
+ ✗ codex (not found)
652
+
653
+ Generated .mmr.yaml with 2 enabled channels.
654
+ Run `mmr config test` to verify authentication.
655
+ ```
656
+
657
+ **Step 4: Verify authentication**
658
+
659
+ ```bash
660
+ mmr config test
661
+ ```
662
+
663
+ ```
664
+ claude ✓ installed ✓ authenticated
665
+ gemini ✓ installed ✓ authenticated
666
+ codex ✗ not installed (skipped)
667
+
668
+ 2/3 channels ready.
669
+ ```
670
+
671
+ If any channel shows an auth failure, `mmr` tells you the exact command to fix it.
672
+
673
+ **Step 5: Commit the config**
674
+
675
+ ```bash
676
+ git add .mmr.yaml
677
+ git commit -m "chore: add mmr multi-model review config"
678
+ ```
679
+
680
+ This ensures your team shares the same channel configuration.
681
+
682
+ **Step 6 (optional): Customize review criteria**
683
+
684
+ Edit `.mmr.yaml` to add project-specific review criteria that get injected into every review prompt:
685
+
686
+ ```yaml
687
+ review_criteria:
688
+ - "Verify all database queries use parameterized statements"
689
+ - "Check that error messages do not leak internal state"
690
+ - "Ensure all API endpoints validate authentication"
691
+ ```
692
+
693
+ You can also adjust per-channel timeouts, the default severity threshold, and named review templates for different review types (PR reviews, implementation plan reviews, etc.).
694
+
695
+ #### Using mmr Day-to-Day
696
+
697
+ **After creating a PR:**
698
+
699
+ ```bash
700
+ mmr review --pr 47 --focus "auth flow, session handling"
701
+ # → Job mmr-a1b2c3 started. 2/2 channels dispatched.
702
+ ```
703
+
704
+ **Continue working, then check back:**
705
+
706
+ ```bash
707
+ mmr status mmr-a1b2c3
708
+ # → claude: completed (47s) | gemini: running (2m12s)
709
+
710
+ # Later:
711
+ mmr status mmr-a1b2c3
712
+ # → All channels complete.
713
+ ```
714
+
715
+ **Collect reconciled results:**
716
+
717
+ ```bash
718
+ mmr results mmr-a1b2c3
719
+ # → JSON output with gate_passed, reconciled_findings, per_channel details
720
+
721
+ mmr results mmr-a1b2c3 --format text
722
+ # → Human-readable terminal output
723
+
724
+ mmr results mmr-a1b2c3 --format markdown
725
+ # → Markdown table for PR comments
726
+ ```
727
+
728
+ **Review staged changes before committing:**
729
+
730
+ ```bash
731
+ mmr review --staged --focus "regression risk"
732
+ ```
733
+
734
+ **Review a diff between branches:**
735
+
736
+ ```bash
737
+ mmr review --base main --head feature/auth
738
+ ```
739
+
740
+ **Override severity gate for a critical path:**
741
+
742
+ ```bash
743
+ mmr review --pr 47 --fix-threshold P1 # Only fix P0 and P1
744
+ mmr review --pr 47 --fix-threshold P0 # Only fix critical/security issues
745
+ ```
746
+
747
+ #### mmr Commands Reference
748
+
749
+ | Command | Purpose |
750
+ |---------|---------|
751
+ | `mmr review` | Dispatch a review job to all configured channels |
752
+ | `mmr status <job-id>` | Check progress of a running job |
753
+ | `mmr results <job-id>` | Collect, reconcile, and output findings |
754
+ | `mmr config init` | Auto-detect CLIs and generate `.mmr.yaml` |
755
+ | `mmr config test` | Verify all channels (installation + auth) |
756
+ | `mmr config channels` | List configured channels |
757
+ | `mmr jobs list` | Show recent review jobs |
758
+ | `mmr jobs prune` | Remove old jobs (default: older than 7 days) |
759
+
760
+ #### mmr Configuration (.mmr.yaml)
761
+
762
+ The config file controls channel definitions, defaults, and project-specific review criteria:
763
+
764
+ ```yaml
765
+ version: 1
766
+
767
+ defaults:
768
+ fix_threshold: P2 # P0/P1/P2 block the gate, P3 is informational
769
+ timeout: 300 # Per-channel timeout in seconds
770
+ format: json # Default output format
771
+ job_retention_days: 7 # Auto-prune old jobs
772
+
773
+ # Project-specific criteria appended to every review prompt
774
+ review_criteria:
775
+ - "Check for SQL injection in all query builders"
776
+ - "Verify RBAC rules match API contract"
777
+
778
+ # Channel definitions (auto-generated by mmr config init)
779
+ channels:
780
+ claude:
781
+ enabled: true
782
+ command: claude -p
783
+ auth:
784
+ check: "claude -p 'respond with ok' 2>/dev/null"
785
+ timeout: 5
786
+ failure_exit_codes: [1]
787
+ recovery: "Run: claude login"
788
+
789
+ gemini:
790
+ enabled: true
791
+ command: gemini -p
792
+ flags:
793
+ - "--approval-mode yolo"
794
+ - "--output-format json"
795
+ env:
796
+ NO_BROWSER: "true"
797
+ auth:
798
+ check: "NO_BROWSER=true gemini -p 'respond with ok' -o json 2>&1"
799
+ timeout: 5
800
+ failure_exit_codes: [41]
801
+ recovery: "Run: gemini -p 'hello' (interactive, opens browser)"
802
+ timeout: 360 # Gemini tends to be slower
803
+
804
+ codex:
805
+ enabled: true
806
+ command: codex exec
807
+ flags:
808
+ - "--skip-git-repo-check"
809
+ - "-s read-only"
810
+ - "--ephemeral"
811
+ auth:
812
+ check: "codex login status 2>/dev/null"
813
+ timeout: 5
814
+ failure_exit_codes: [1]
815
+ recovery: "Run: codex login"
816
+ ```
817
+
818
+ **User-level defaults** can be set in `~/.mmr/config.yaml` for settings that apply across all projects (e.g., which channels are installed on your machine). Project config overrides user config. CLI flags override everything.
819
+
820
+ **Adding a new model CLI** requires only a YAML config change — no code modifications to `mmr`. When a new model CLI ships, add its channel definition to `.mmr.yaml` and you're ready.
821
+
822
+ #### Severity Levels
823
+
824
+ mmr uses a standardized P0-P3 severity classification across all channels:
825
+
826
+ | Level | Name | Definition | Gate Default |
827
+ |-------|------|------------|-------------|
828
+ | **P0** | Critical | Will cause failure, data loss, security vulnerability, or fundamental architectural flaw | Blocks |
829
+ | **P1** | High | Will cause bugs in normal usage, inconsistency, or blocks downstream work | Blocks |
830
+ | **P2** | Medium | Improvement opportunity — style, naming, documentation, minor optimization | Blocks |
831
+ | **P3** | Trivial | Personal preference, trivial nits | Informational |
832
+
833
+ With the default `fix_threshold: P2`, any P0, P1, or P2 finding fails the gate. Only P3-only reviews pass.
834
+
835
+ #### Reconciliation Rules
836
+
837
+ When multiple channels return findings, mmr applies consensus rules:
838
+
839
+ | Scenario | Confidence | Action |
840
+ |----------|-----------|--------|
841
+ | 2+ channels flag same location, same severity | **High** | Report at agreed severity |
842
+ | 2+ channels flag same location, different severity | **Medium** | Report at higher severity |
843
+ | All channels approve (no findings) | **High** | Gate passed |
844
+ | One channel flags P0, others approve | **High** | Report P0 (critical from any source) |
845
+ | One channel flags P1/P2, others approve | **Medium** | Report with attribution |
846
+ | Channels contradict each other | **Low** | Present both for user adjudication |
847
+
554
848
  ### How It Works
555
849
 
556
850
  1. **Claude reviews first** — completes its own structured multi-pass review using different review lenses (coverage, consistency, quality, downstream readiness)
557
851
  2. **Independent external review** — the document being reviewed is sent to each available CLI. They don't see Claude's findings or each other's output — every review is independent.
558
- 3. **Findings are reconciled** — Scaffold merges all findings by confidence level:
852
+ 3. **Findings are reconciled** — Scaffold (or `mmr`) merges all findings by confidence level:
559
853
 
560
854
  | Scenario | Confidence | Action |
561
855
  |----------|-----------|--------|
@@ -616,7 +910,7 @@ You can change methodology mid-pipeline with `scaffold init --methodology <prese
616
910
  | `scaffold dashboard` | Open a visual progress dashboard in your browser |
617
911
  | `scaffold decisions` | Show all logged decisions |
618
912
  | `scaffold knowledge` | Manage project-local knowledge base overrides |
619
- | `scaffold skill install` | Install scaffold skills into the current project |
913
+ | `scaffold skill install` | Install scaffold skills into the current project (automatic — rarely needed manually) |
620
914
  | `scaffold skill list` | Show available skills and installation status |
621
915
  | `scaffold skill remove` | Remove scaffold skills from the current project |
622
916
 
@@ -705,7 +999,7 @@ These are stateless pipeline steps — they appear in `scaffold next` once Phase
705
999
 
706
1000
  ### Utility Tools
707
1001
 
708
- These are orthogonal to the pipeline — usable at any time, not tied to pipeline state. Defined in `tools/` with `category: tool` frontmatter. Run `scaffold list --section tools` for a complete listing (or `--verbose` for argument hints, `--format json` for machine-readable output):
1002
+ These are orthogonal to the pipeline — usable at any time, not tied to pipeline state. Defined in `content/tools/` with `category: tool` frontmatter. Run `scaffold list --section tools` for a complete listing (or `--verbose` for argument hints, `--format json` for machine-readable output):
709
1003
 
710
1004
  | Command | When to Use |
711
1005
  |---------|-------------|
@@ -722,14 +1016,14 @@ These are orthogonal to the pipeline — usable at any time, not tied to pipelin
722
1016
 
723
1017
  Use `scaffold run review-code` before commit or push when you want a local gate on the current delivery candidate. Use `scaffold run review-pr` after a GitHub PR exists.
724
1018
 
725
- All of these are also available as slash commands (`/scaffold:release`, `/scaffold:quick-task`, etc.) when the plugin is installed.
1019
+ Run any of these via the CLI or ask the scaffold runner skill in Claude Code or Gemini.
726
1020
 
727
1021
  ## Releasing Your Project
728
1022
 
729
1023
  ### Version bumps (development milestones)
730
1024
 
731
1025
  ```
732
- /scaffold:version-bump
1026
+ scaffold run version-bump
733
1027
  ```
734
1028
 
735
1029
  Bumps the version number and updates the changelog, but doesn't create tags, push, or run the formal release ceremony. Think of it as a checkpoint.
@@ -737,10 +1031,10 @@ Bumps the version number and updates the changelog, but doesn't create tags, pus
737
1031
  ### Creating a release
738
1032
 
739
1033
  ```
740
- /scaffold:release
1034
+ scaffold run release
741
1035
  ```
742
1036
 
743
- Claude analyzes your commits since the last release, suggests whether this is a major, minor, or patch version bump, and walks you through:
1037
+ The AI analyzes your commits since the last release, suggests whether this is a major, minor, or patch version bump, and walks you through:
744
1038
  1. Running your project's tests
745
1039
  2. Updating the version number in your project files
746
1040
  3. Generating a changelog entry
@@ -748,7 +1042,7 @@ Claude analyzes your commits since the last release, suggests whether this is a
748
1042
 
749
1043
  Depending on the target project, that may include a Git tag, hosted release,
750
1044
  package publish, deployment, registry update, or another project-specific
751
- release step. `/scaffold:release` is intentionally generic; it should follow
1045
+ release step. `scaffold run release` is intentionally generic; it follows
752
1046
  the target project's own documented workflow rather than assuming npm or GitHub
753
1047
  for every project.
754
1048
 
@@ -764,17 +1058,18 @@ Options: `--dry-run` to preview, `minor`/`major`/`patch` to specify the bump, `c
764
1058
  | **Frontmatter** | The YAML metadata block at the top of meta-prompt files, declaring dependencies, outputs, knowledge entries, and other configuration. |
765
1059
  | **Knowledge base** | 60 domain expertise entries that get injected into prompts. Can be extended with project-local overrides. |
766
1060
  | **MCP** | Model Context Protocol. A way for Claude to use external tools like a headless browser. |
767
- | **Meta-prompt** | A short intent declaration in `pipeline/` that gets assembled into a full prompt at runtime. |
1061
+ | **Meta-prompt** | A short intent declaration in `content/pipeline/` that gets assembled into a full prompt at runtime. |
1062
+ | **mmr** | Multi-Model Review CLI (`@zigrivers/mmr`). Standalone tool for async multi-model code review dispatch, reconciliation, and severity gating. |
768
1063
  | **Methodology** | A preset (deep, mvp, custom) controlling which steps run and at what depth. |
769
1064
  | **Multi-model review** | Independent validation from Codex/Gemini CLIs at depth 4-5, catching blind spots a single model misses. |
770
1065
  | **PRD** | Product Requirements Document. The foundation for everything Scaffold builds. |
771
- | **Slash commands** | Commands in Claude Code starting with `/`. For example, `/scaffold:create-prd`. |
1066
+ | **Runner skill** | Auto-activated Claude Code/Gemini skill that surfaces decision points before executing pipeline steps. |
772
1067
  | **Worktrees** | A git feature for multiple working copies. Scaffold uses these for parallel agent execution. |
773
1068
 
774
1069
  ## Troubleshooting / FAQ
775
1070
 
776
1071
  **I ran a command and nothing happened.**
777
- Make sure Scaffold is installed — run `scaffold version` or `/scaffold:prompt-pipeline` in Claude Code.
1072
+ Make sure Scaffold is installed — run `scaffold version` in your terminal.
778
1073
 
779
1074
  **Which steps can I skip?**
780
1075
  Use `scaffold skip <step> --reason "..."` to skip any step. You can skip multiple steps at once: `scaffold skip design-system add-e2e-testing --reason "backend-only"`. The mvp preset only enables 7 critical steps by default. With the custom preset, you choose exactly which steps to run.
@@ -820,6 +1115,15 @@ NO_BROWSER=true gemini -p "Review this artifact..." --output-format json --appro
820
1115
  ```
821
1116
  These are documented in detail in the `multi-model-dispatch` skill.
822
1117
 
1118
+ **mmr review dispatches but no channels return results**
1119
+ Check auth: `mmr config test`. If channels show auth failures, re-authenticate with the recovery command shown. If channels are installed but the review hangs, check the per-channel timeout in `.mmr.yaml` — some models take 3-5 minutes for large diffs. Increase `timeout` to 360-600 seconds for large PRs.
1120
+
1121
+ **mmr results says "gate failed" but I disagree with the findings**
1122
+ Use `mmr results <job-id> --format text` to see the full reconciled findings with source attribution and confidence scores. Single-source findings with "unique" agreement are less certain than "consensus" findings. Override the threshold for a specific review: `mmr review --pr 47 --fix-threshold P1` (only gate on P0 and P1).
1123
+
1124
+ **How do I add a new AI model CLI to mmr?**
1125
+ Add a channel definition to `.mmr.yaml` with the command, auth check, and output parser. No code changes needed. See the [mmr Configuration](#mmr-configuration-mmryaml) section for the full schema.
1126
+
823
1127
  **I upgraded and my pipeline shows old step names**
824
1128
  Run `scaffold status` — the state manager automatically migrates old step names (e.g., `add-playwright` → `add-e2e-testing`, `multi-model-review` → `automated-pr-review`) and removes retired steps.
825
1129
 
@@ -859,14 +1163,36 @@ src/
859
1163
 
860
1164
  ### Content layout
861
1165
 
1166
+ All build inputs live under `content/`:
1167
+
1168
+ ```
1169
+ content/
1170
+ ├── pipeline/ # 60 meta-prompts organized by 16 phases (phases 0-15, including build)
1171
+ ├── tools/ # 10 tool meta-prompts (stateless, category: tool)
1172
+ ├── knowledge/ # 61 domain expertise entries (core, product, review, validation, finalization, execution, tools)
1173
+ ├── methodology/ # 3 YAML presets (deep, mvp, custom)
1174
+ └── skills/ # Skill templates with {{markers}} for multi-platform resolution (includes mmr)
1175
+ ```
1176
+
1177
+ ### mmr package layout
1178
+
1179
+ `@zigrivers/mmr` lives in `packages/mmr/` as an independent workspace package:
1180
+
1181
+ ```
1182
+ packages/mmr/
1183
+ ├── src/
1184
+ │ ├── commands/ # review, status, results, config, jobs (yargs)
1185
+ │ ├── config/ # Zod schema, 4-layer config loader, builtin channel presets
1186
+ │ ├── core/ # job-store, auth, prompt assembly, parser, reconciler, dispatcher
1187
+ │ └── formatters/ # json, text, markdown output formatters
1188
+ ├── templates/ # Immutable core review prompt (severity defs, output format)
1189
+ └── tests/ # 60 tests across 11 files
1190
+ ```
1191
+
1192
+ Generated output (gitignored):
862
1193
  ```
863
- pipeline/ # 60 meta-prompts organized by 16 phases (phases 0-15, including build)
864
- tools/ # 9 tool meta-prompts (stateless, category: tool)
865
- knowledge/ # 61 domain expertise entries (core, product, review, validation, finalization, execution, tools)
866
- methodology/ # 3 YAML presets (deep, mvp, custom)
867
- commands/ # 72 Claude Code slash commands (60 pipeline + 9 tools + 3 supplemental)
868
- skills/ # 3 Claude Code skills (pipeline reference, runner, multi-model dispatch)
869
- agent-skills/ # 2 shared agent skills packaged for Claude Code and Gemini installs
1194
+ skills/ # Resolved skills (built from content/skills/ templates)
1195
+ dist/ # Compiled TypeScript output
870
1196
  ```
871
1197
 
872
1198
  ### Testing
@@ -880,12 +1206,12 @@ agent-skills/ # 2 shared agent skills packaged for Claude Code and Gemin
880
1206
 
881
1207
  ### Contributing
882
1208
 
883
- 1. Meta-prompt content lives in `pipeline/` — edit the relevant `.md` file
1209
+ 1. Meta-prompt content lives in `content/pipeline/` — edit the relevant `.md` file
884
1210
  2. If you changed adapter behavior, run `scaffold build` in a test project and inspect the generated artifacts under `.scaffold/generated/` plus the Gemini project-local outputs (`.agents/skills/`, `GEMINI.md`, `.gemini/commands/scaffold/`).
885
1211
  3. Run `make check-all` (lint + type-check + test + evals) before submitting
886
- 4. Knowledge entries live in `knowledge/` — follow the existing frontmatter schema
887
- 5. ADRs documenting architectural decisions are in `docs/v2/adrs/`
888
- 6. Run `make hooks` to install git hooks (ShellCheck, frontmatter validation, stale command detection)
1212
+ 4. Knowledge entries live in `content/knowledge/` — follow the existing frontmatter schema
1213
+ 5. ADRs documenting architectural decisions are in `docs/architecture/adrs/`
1214
+ 6. Run `make hooks` to install git hooks (ShellCheck, frontmatter validation)
889
1215
 
890
1216
  ## License
891
1217