@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.
- package/README.md +366 -40
- package/content/knowledge/core/test-skeleton-generation.md +313 -0
- package/{knowledge → content/knowledge}/execution/enhancement-workflow.md +1 -1
- package/content/knowledge/product/vision-innovation.md +273 -0
- package/{knowledge → content/knowledge}/tools/post-implementation-review-methodology.md +1 -1
- package/{pipeline → content/pipeline}/consolidation/workflow-audit.md +1 -1
- package/{pipeline → content/pipeline}/decisions/review-adrs.md +1 -1
- package/{pipeline → content/pipeline}/environment/design-system.md +1 -1
- package/{pipeline → content/pipeline}/finalization/implementation-playbook.md +2 -2
- package/{pipeline → content/pipeline}/foundation/tech-stack.md +1 -1
- package/{pipeline → content/pipeline}/modeling/review-domain-modeling.md +1 -1
- package/{pipeline → content/pipeline}/planning/implementation-plan-review.md +2 -1
- package/{pipeline → content/pipeline}/quality/review-testing.md +1 -1
- package/{pipeline → content/pipeline}/quality/story-tests.md +2 -2
- package/{pipeline → content/pipeline}/vision/innovate-vision.md +1 -1
- package/content/skills/mmr/SKILL.md +65 -0
- package/content/skills/multi-model-dispatch/SKILL.md +327 -0
- package/{agent-skills → content/skills}/scaffold-pipeline/SKILL.md +14 -8
- package/{agent-skills → content/skills}/scaffold-runner/SKILL.md +64 -19
- package/{tools → content/tools}/post-implementation-review.md +2 -2
- package/{tools → content/tools}/prompt-pipeline.md +7 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +17 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/build.test.js +6 -5
- package/dist/cli/commands/build.test.js.map +1 -1
- package/dist/cli/commands/info.test.js +2 -2
- package/dist/cli/commands/info.test.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +9 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/init.test.js +6 -0
- package/dist/cli/commands/init.test.js.map +1 -1
- package/dist/cli/commands/list.test.js +8 -8
- package/dist/cli/commands/list.test.js.map +1 -1
- package/dist/cli/commands/run.test.js +4 -4
- package/dist/cli/commands/run.test.js.map +1 -1
- package/dist/cli/commands/skill.d.ts.map +1 -1
- package/dist/cli/commands/skill.js +16 -86
- package/dist/cli/commands/skill.js.map +1 -1
- package/dist/cli/commands/skill.test.js +27 -46
- package/dist/cli/commands/skill.test.js.map +1 -1
- package/dist/cli/middleware/project-root.d.ts.map +1 -1
- package/dist/cli/middleware/project-root.js +16 -0
- package/dist/cli/middleware/project-root.js.map +1 -1
- package/dist/cli/middleware/project-root.test.js +20 -0
- package/dist/cli/middleware/project-root.test.js.map +1 -1
- package/dist/core/adapters/gemini.js +2 -2
- package/dist/core/adapters/gemini.js.map +1 -1
- package/dist/core/adapters/gemini.test.js +1 -1
- package/dist/core/adapters/gemini.test.js.map +1 -1
- package/dist/core/skills/sync.d.ts +36 -0
- package/dist/core/skills/sync.d.ts.map +1 -0
- package/dist/core/skills/sync.js +119 -0
- package/dist/core/skills/sync.js.map +1 -0
- package/dist/core/skills/sync.test.d.ts +2 -0
- package/dist/core/skills/sync.test.d.ts.map +1 -0
- package/dist/core/skills/sync.test.js +166 -0
- package/dist/core/skills/sync.test.js.map +1 -0
- package/dist/e2e/commands.test.js +10 -10
- package/dist/e2e/commands.test.js.map +1 -1
- package/dist/e2e/knowledge.test.js +5 -4
- package/dist/e2e/knowledge.test.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/project/adopt.test.js +8 -8
- package/dist/project/adopt.test.js.map +1 -1
- package/dist/utils/fs.d.ts +5 -5
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +15 -15
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/fs.test.js +9 -9
- package/dist/utils/fs.test.js.map +1 -1
- package/dist/validation/index.test.js +2 -2
- package/dist/validation/index.test.js.map +1 -1
- package/package.json +3 -6
- package/skills/mmr/SKILL.md +65 -0
- package/skills/scaffold-pipeline/SKILL.md +3 -3
- /package/{knowledge → content/knowledge}/core/adr-craft.md +0 -0
- /package/{knowledge → content/knowledge}/core/ai-memory-management.md +0 -0
- /package/{knowledge → content/knowledge}/core/api-design.md +0 -0
- /package/{knowledge → content/knowledge}/core/automated-review-tooling.md +0 -0
- /package/{knowledge → content/knowledge}/core/claude-md-patterns.md +0 -0
- /package/{knowledge → content/knowledge}/core/coding-conventions.md +0 -0
- /package/{knowledge → content/knowledge}/core/database-design.md +0 -0
- /package/{knowledge → content/knowledge}/core/design-system-tokens.md +0 -0
- /package/{knowledge → content/knowledge}/core/dev-environment.md +0 -0
- /package/{knowledge → content/knowledge}/core/domain-modeling.md +0 -0
- /package/{knowledge → content/knowledge}/core/eval-craft.md +0 -0
- /package/{knowledge → content/knowledge}/core/git-workflow-patterns.md +0 -0
- /package/{knowledge → content/knowledge}/core/multi-model-review-dispatch.md +0 -0
- /package/{knowledge → content/knowledge}/core/operations-runbook.md +0 -0
- /package/{knowledge → content/knowledge}/core/project-structure-patterns.md +0 -0
- /package/{knowledge → content/knowledge}/core/review-step-template.md +0 -0
- /package/{knowledge → content/knowledge}/core/security-best-practices.md +0 -0
- /package/{knowledge → content/knowledge}/core/system-architecture.md +0 -0
- /package/{knowledge → content/knowledge}/core/task-decomposition.md +0 -0
- /package/{knowledge → content/knowledge}/core/task-tracking.md +0 -0
- /package/{knowledge → content/knowledge}/core/tech-stack-selection.md +0 -0
- /package/{knowledge → content/knowledge}/core/testing-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/core/user-stories.md +0 -0
- /package/{knowledge → content/knowledge}/core/user-story-innovation.md +0 -0
- /package/{knowledge → content/knowledge}/core/ux-specification.md +0 -0
- /package/{knowledge → content/knowledge}/execution/task-claiming-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/execution/tdd-execution-loop.md +0 -0
- /package/{knowledge → content/knowledge}/execution/worktree-management.md +0 -0
- /package/{knowledge → content/knowledge}/finalization/apply-fixes-and-freeze.md +0 -0
- /package/{knowledge → content/knowledge}/finalization/developer-onboarding.md +0 -0
- /package/{knowledge → content/knowledge}/finalization/implementation-playbook.md +0 -0
- /package/{knowledge → content/knowledge}/product/gap-analysis.md +0 -0
- /package/{knowledge → content/knowledge}/product/prd-craft.md +0 -0
- /package/{knowledge → content/knowledge}/product/prd-innovation.md +0 -0
- /package/{knowledge → content/knowledge}/product/vision-craft.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-adr.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-api-design.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-database-design.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-domain-modeling.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-implementation-tasks.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-methodology.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-operations.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-prd.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-security.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-system-architecture.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-testing-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-user-stories.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-ux-specification.md +0 -0
- /package/{knowledge → content/knowledge}/review/review-vision.md +0 -0
- /package/{knowledge → content/knowledge}/tools/release-management.md +0 -0
- /package/{knowledge → content/knowledge}/tools/session-analysis.md +0 -0
- /package/{knowledge → content/knowledge}/tools/version-strategy.md +0 -0
- /package/{knowledge → content/knowledge}/validation/critical-path-analysis.md +0 -0
- /package/{knowledge → content/knowledge}/validation/cross-phase-consistency.md +0 -0
- /package/{knowledge → content/knowledge}/validation/decision-completeness.md +0 -0
- /package/{knowledge → content/knowledge}/validation/dependency-validation.md +0 -0
- /package/{knowledge → content/knowledge}/validation/implementability-review.md +0 -0
- /package/{knowledge → content/knowledge}/validation/scope-management.md +0 -0
- /package/{knowledge → content/knowledge}/validation/traceability.md +0 -0
- /package/{methodology → content/methodology}/README.md +0 -0
- /package/{methodology → content/methodology}/custom-defaults.yml +0 -0
- /package/{methodology → content/methodology}/deep.yml +0 -0
- /package/{methodology → content/methodology}/mvp.yml +0 -0
- /package/{pipeline → content/pipeline}/architecture/review-architecture.md +0 -0
- /package/{pipeline → content/pipeline}/architecture/system-architecture.md +0 -0
- /package/{pipeline → content/pipeline}/build/multi-agent-resume.md +0 -0
- /package/{pipeline → content/pipeline}/build/multi-agent-start.md +0 -0
- /package/{pipeline → content/pipeline}/build/new-enhancement.md +0 -0
- /package/{pipeline → content/pipeline}/build/quick-task.md +0 -0
- /package/{pipeline → content/pipeline}/build/single-agent-resume.md +0 -0
- /package/{pipeline → content/pipeline}/build/single-agent-start.md +0 -0
- /package/{pipeline → content/pipeline}/consolidation/claude-md-optimization.md +0 -0
- /package/{pipeline → content/pipeline}/decisions/adrs.md +0 -0
- /package/{pipeline → content/pipeline}/environment/ai-memory-setup.md +0 -0
- /package/{pipeline → content/pipeline}/environment/automated-pr-review.md +0 -0
- /package/{pipeline → content/pipeline}/environment/dev-env-setup.md +0 -0
- /package/{pipeline → content/pipeline}/environment/git-workflow.md +0 -0
- /package/{pipeline → content/pipeline}/finalization/apply-fixes-and-freeze.md +0 -0
- /package/{pipeline → content/pipeline}/finalization/developer-onboarding-guide.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/beads.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/coding-standards.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/project-structure.md +0 -0
- /package/{pipeline → content/pipeline}/foundation/tdd.md +0 -0
- /package/{pipeline → content/pipeline}/integration/add-e2e-testing.md +0 -0
- /package/{pipeline → content/pipeline}/modeling/domain-modeling.md +0 -0
- /package/{pipeline → content/pipeline}/parity/platform-parity-review.md +0 -0
- /package/{pipeline → content/pipeline}/planning/implementation-plan.md +0 -0
- /package/{pipeline → content/pipeline}/pre/create-prd.md +0 -0
- /package/{pipeline → content/pipeline}/pre/innovate-prd.md +0 -0
- /package/{pipeline → content/pipeline}/pre/innovate-user-stories.md +0 -0
- /package/{pipeline → content/pipeline}/pre/review-prd.md +0 -0
- /package/{pipeline → content/pipeline}/pre/review-user-stories.md +0 -0
- /package/{pipeline → content/pipeline}/pre/user-stories.md +0 -0
- /package/{pipeline → content/pipeline}/quality/create-evals.md +0 -0
- /package/{pipeline → content/pipeline}/quality/operations.md +0 -0
- /package/{pipeline → content/pipeline}/quality/review-operations.md +0 -0
- /package/{pipeline → content/pipeline}/quality/review-security.md +0 -0
- /package/{pipeline → content/pipeline}/quality/security.md +0 -0
- /package/{pipeline → content/pipeline}/specification/api-contracts.md +0 -0
- /package/{pipeline → content/pipeline}/specification/database-schema.md +0 -0
- /package/{pipeline → content/pipeline}/specification/review-api.md +0 -0
- /package/{pipeline → content/pipeline}/specification/review-database.md +0 -0
- /package/{pipeline → content/pipeline}/specification/review-ux.md +0 -0
- /package/{pipeline → content/pipeline}/specification/ux-spec.md +0 -0
- /package/{pipeline → content/pipeline}/validation/critical-path-walkthrough.md +0 -0
- /package/{pipeline → content/pipeline}/validation/cross-phase-consistency.md +0 -0
- /package/{pipeline → content/pipeline}/validation/decision-completeness.md +0 -0
- /package/{pipeline → content/pipeline}/validation/dependency-graph-validation.md +0 -0
- /package/{pipeline → content/pipeline}/validation/implementability-dry-run.md +0 -0
- /package/{pipeline → content/pipeline}/validation/scope-creep-check.md +0 -0
- /package/{pipeline → content/pipeline}/validation/traceability-matrix.md +0 -0
- /package/{pipeline → content/pipeline}/vision/create-vision.md +0 -0
- /package/{pipeline → content/pipeline}/vision/review-vision.md +0 -0
- /package/{tools → content/tools}/dashboard.md +0 -0
- /package/{tools → content/tools}/release.md +0 -0
- /package/{tools → content/tools}/review-code.md +0 -0
- /package/{tools → content/tools}/review-pr.md +0 -0
- /package/{tools → content/tools}/session-analyzer.md +0 -0
- /package/{tools → content/tools}/update.md +0 -0
- /package/{tools → content/tools}/version-bump.md +0 -0
- /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
|
-
- **
|
|
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;
|
|
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**
|
|
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
|
|
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,
|
|
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`
|
|
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
|
|
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: `
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1034
|
+
scaffold run release
|
|
741
1035
|
```
|
|
742
1036
|
|
|
743
|
-
|
|
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.
|
|
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
|
-
| **
|
|
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`
|
|
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
|
-
|
|
864
|
-
|
|
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/
|
|
888
|
-
6. Run `make hooks` to install git hooks (ShellCheck, frontmatter validation
|
|
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
|
|