@jamie-tam/forge 6.0.0 → 6.2.0

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 (69) hide show
  1. package/README.md +77 -59
  2. package/agents/dreamer.md +10 -7
  3. package/agents/gotcha-hunter.md +1 -1
  4. package/agents/prototype-codifier.md +2 -2
  5. package/commands/{forge.md → discover.md} +13 -9
  6. package/commands/dream.md +71 -0
  7. package/commands/feature.md +57 -10
  8. package/commands/{evolve.md → forge-evolve.md} +3 -3
  9. package/commands/greenfield.md +5 -5
  10. package/commands/note.md +64 -0
  11. package/commands/{task-force.md → parallel.md} +15 -15
  12. package/commands/resume.md +2 -2
  13. package/commands/setup.md +18 -17
  14. package/commands/status.md +2 -2
  15. package/commands/wrap.md +130 -0
  16. package/dist/__tests__/hooks.test.js +334 -0
  17. package/dist/__tests__/init.test.js +110 -0
  18. package/dist/__tests__/work-manifest.test.js +48 -14
  19. package/dist/cli.js +0 -0
  20. package/dist/hooks.js +88 -6
  21. package/dist/init.js +39 -1
  22. package/dist/uninstall.js +11 -5
  23. package/dist/work-manifest.js +63 -24
  24. package/hooks/config/gate-requirements.json +1 -1
  25. package/hooks/hooks.json +14 -1
  26. package/hooks/scripts/gate-enforcer.sh +51 -6
  27. package/hooks/scripts/pre-compact.sh +120 -55
  28. package/hooks/scripts/session-start.sh +43 -4
  29. package/hooks/scripts/telemetry.sh +32 -2
  30. package/hooks/templates/CLAUDE.md.template +6 -3
  31. package/package.json +1 -1
  32. package/references/common/phases.md +8 -6
  33. package/references/common/skill-authoring.md +1 -1
  34. package/rules/common/forge-system.md +64 -6
  35. package/rules/common/quality-gates.md +2 -0
  36. package/skills/build-prototype/SKILL.md +4 -4
  37. package/skills/build-tdd/SKILL.md +14 -0
  38. package/skills/concept-slides/SKILL.md +11 -11
  39. package/skills/deliver-deploy/SKILL.md +10 -1
  40. package/skills/harden/SKILL.md +22 -8
  41. package/skills/iterate-prototype/SKILL.md +22 -0
  42. package/skills/quality-test-execution/SKILL.md +26 -1
  43. package/skills/quality-test-plan/SKILL.md +21 -1
  44. package/skills/support-debug/SKILL.md +1 -1
  45. package/skills/support-dream/SKILL.md +8 -7
  46. package/skills/support-gotcha/SKILL.md +3 -3
  47. package/skills/{support-task-force → support-parallel}/SKILL.md +22 -22
  48. package/skills/{support-task-force → support-parallel}/references/dispatch-pattern.md +10 -10
  49. package/skills/{support-task-force → support-parallel}/references/synthesis-template.md +10 -10
  50. package/skills/support-skill-validator/SKILL.md +5 -5
  51. package/skills/support-skill-validator/references/validation-checks.md +1 -1
  52. package/skills/support-system-guide/SKILL.md +4 -3
  53. package/skills/support-wiki-lint/scripts/lint.mjs +52 -0
  54. package/templates/README.md +1 -1
  55. package/templates/aiwiki/CLAUDE.md.template +48 -22
  56. package/templates/aiwiki/schemas/session.md +134 -49
  57. package/templates/manifests/bugfix.yaml +1 -1
  58. package/templates/manifests/feature.yaml +1 -1
  59. package/templates/manifests/greenfield.yaml +1 -1
  60. package/templates/manifests/hotfix.yaml +1 -1
  61. package/templates/manifests/refactor.yaml +1 -1
  62. package/templates/manifests/v5/SCHEMA.md +14 -17
  63. package/templates/manifests/v5/feature.yaml +1 -1
  64. package/templates/manifests/v6/SCHEMA.md +14 -10
  65. package/commands/abort.md +0 -25
  66. package/dist/__tests__/active-manifest.test.js +0 -272
  67. package/dist/__tests__/gate-check.test.js +0 -384
  68. package/dist/active-manifest.js +0 -229
  69. package/dist/gate-check.js +0 -326
package/README.md CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  **A production-grade `.claude` harness for prototype-driven AI development**
4
4
 
5
- <!-- Badges -->
6
- <!-- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) -->
7
- <!-- [![Claude Code](https://img.shields.io/badge/Claude%20Code-compatible-blue.svg)](#) -->
5
+ Source: [github.com/lps-ai/forge](https://github.com/lps-ai/forge) · Changelog: [CHANGELOG.md](CHANGELOG.md) · License: [MIT](LICENSE)
6
+
7
+ ---
8
+
9
+ > ⚠️ **Experimental — early access.** This npm package is still experimental and needs a lot of adjustment. It was published to npm for convenience (so `npx @jamie-tam/forge init` works), but forge is **not feature-complete and not well-tested yet**. Expect breaking changes between versions, rough edges, half-finished commands, and gaps that dogfooding hasn't surfaced. Names, command surfaces, manifest schemas, and skill boundaries are all still in motion. If you try it: pin a version, expect to update often, and please file issues at [github.com/lps-ai/forge/issues](https://github.com/lps-ai/forge/issues) — every real-world signal helps stabilize the next release.
8
10
 
9
11
  ---
10
12
 
@@ -25,10 +27,10 @@ The v6 schema (`templates/manifests/v6/SCHEMA.md`) adds `phase_plan:` at the top
25
27
 
26
28
  ## Key Features
27
29
 
28
- - **30 skills** spanning the prototype-driven pipeline plus production-grade quality gates
29
- - **13 commands** for discovery, setup, workflows, evolution, and validation
30
- - **17 specialized agents** with explicit phase-context (prototype-builder for Phase 4, builder for Phase 6, plus architects, reviewers, hunters, dreamers)
31
- - **8 common rules** tiered by phase (always-on safety floor + phase-conditional from codify onward) + **7 common references** for skill authoring, agent coordination, and workflow protocol
30
+ - **31 skills** spanning the prototype-driven pipeline plus production-grade quality gates
31
+ - **15 commands** for discovery, setup, workflows, knowledge capture, evolution, and validation
32
+ - **17 specialized agents** with explicit phase-context (prototype-builder for Phase 3-4, builder for Phase 6, plus architects, reviewers, hunters, dreamers)
33
+ - **8 common rules** auto-loaded every session (one `testing.md` is paths-conditional, loading only on test files and source code) + **8 common references** for skill authoring, agent coordination, and workflow protocol
32
34
  - **Work manifests** with `phase_plan` (preflight intent), `phases` (gate state), `slice_graph` (build decomposition), and `artifacts` (phase outputs + lock signals)
33
35
  - **`aiwiki/` typed pages** with LINT on every write + async dream consolidation
34
36
  - **Quality gates** at the prototype-to-production transition where they catch real bugs, not premature plan-phase gates
@@ -43,9 +45,9 @@ npx @jamie-tam/forge init
43
45
  ```
44
46
 
45
47
  This installs everything into your project's `.claude/` directory:
46
- - **Rules** — phase-tiered (always-on safety floor + phase-conditional standards from codify onward)
47
- - **Skills** — 30 atomic skills covering the prototype-driven pipeline + production gates
48
- - **Commands** — 8 slash commands for setup, workflows, evolution, and validation
48
+ - **Rules** — 8 common rules auto-loaded every session (one is paths-conditional) + language-specific rules layered per detected stack
49
+ - **Skills** — 31 atomic skills covering the prototype-driven pipeline + production gates
50
+ - **Commands** — 15 slash commands for discovery, setup, workflows, knowledge capture, evolution, and validation
49
51
  - **Agents** — 17 specialized subagents with MCP server access (context7, playwright)
50
52
  - **Hooks** — gate-enforcer, wiki-lint, telemetry, state preservation, session checkpoints
51
53
  - **CLAUDE.md** — project configuration template
@@ -145,41 +147,48 @@ Forge detects these tools automatically and offers integration when available. W
145
147
  ## Architecture
146
148
 
147
149
  ```
148
- Commands (workflows) Skills (prefix-grouped) Rules (phase-tiered)
149
- --------------------- ----------------------- --------------------
150
- /forge (discovery) concept-slides [Phase 1] Always-on (safety floor):
151
- /setup build-wireframe [Phase 2] common/security
152
- /feature build-prototype [Phase 3] common/guardrails
153
- /greenfield iterate-prototype [Phase 4] common/verification
154
- /bugfix harden [Phase 5] common/skill-selection
155
- /refactor build-scaffold Phase-conditional (from codify):
156
- /hotfix build-tdd [Phase 6] common/testing
157
- /evolve build-pr-workflow common/quality-gates
158
- /validate quality-code-review common/git-workflow
159
- quality-test-plan
160
- Work Manifests (v6) quality-test-execution References (load on demand)
161
- ------------------- quality-security-audit ----------------------------
162
- .forge/work/ quality-uiux common/
163
- {type}/ deliver-deploy [Phase 7] agent-coordination
164
- {name}/ deliver-db-migration io-protocol
165
- manifest.yaml deliver-onboarding skill-authoring
166
- schema_version: "6" discover-requirements skill-compliance
167
- phase_plan: {…} discover-codebase-analysis phases (canonical vocab)
168
- phases: {…} plan-brainstorm coding-standards
169
- slice_graph: {} plan-architecture typescript/ python/ react/
170
- artifacts: {} plan-design-system [extensible]
171
- plan-task-decompose
172
- aiwiki/ (knowledge layer) support-system-guide Protocols (read on demand)
173
- ------------------------- support-debug --------------------------
174
- decisions/ support-gotcha protocols/codex.md
175
- gotchas/ support-wiki-lint protocols/graphify.md
176
- conventions/ support-runtime-reachability
177
- architecture/ support-dream Hooks
178
- sessions/ support-skill-validator ------
179
- raw/ gate-enforcer
180
- proposed/ (dream queue) wiki-lint
181
- schemas/ session-start / pre-compact
182
- CLAUDE.md (usage rules) telemetry
150
+ Commands (workflows) Skills (prefix-grouped) Rules (auto-loaded)
151
+ --------------------- ----------------------- -------------------
152
+ /discover (discovery) concept-slides [Phase 1] common/forge-system
153
+ /setup build-wireframe [Phase 2] common/security
154
+ /feature build-prototype [Phase 3] common/guardrails
155
+ /greenfield iterate-prototype [Phase 4] common/verification
156
+ /bugfix harden [Phase 5] common/skill-selection
157
+ /refactor build-scaffold common/quality-gates
158
+ /hotfix build-tdd [Phase 6] common/git-workflow
159
+ /note (capture) build-pr-workflow common/testing (paths-conditional)
160
+ /dream (capture) quality-code-review
161
+ /wrap (capture) quality-test-plan
162
+ /parallel (parallel) quality-test-execution References (load on demand)
163
+ /status quality-security-audit ----------------------------
164
+ /resume quality-uiux common/
165
+ /forge-evolve deliver-deploy [Phase 7] agent-coordination
166
+ /validate deliver-db-migration io-protocol
167
+ deliver-onboarding skill-authoring
168
+ Work Manifests (v6) discover-requirements skill-compliance
169
+ ------------------- discover-codebase-analysis phases (canonical vocab)
170
+ .forge/work/ plan-brainstorm coding-standards
171
+ {type}/ plan-architecture quality-gates
172
+ {name}/ plan-design-system feature-tracking
173
+ manifest.yaml plan-task-decompose typescript/ python/ react/
174
+ schema_version: "6" support-system-guide [extensible]
175
+ phase_plan: {…} support-debug
176
+ phases: {…} support-gotcha Protocols (read on demand)
177
+ slice_graph: {…} support-wiki-lint --------------------------
178
+ artifacts: {…} support-wiki-bootstrap protocols/codex.md
179
+ support-dream protocols/graphify.md
180
+ aiwiki/ (knowledge layer) support-parallel
181
+ ------------------------- support-runtime-reachability Hooks
182
+ decisions/ support-skill-validator ------
183
+ gotchas/ gate-enforcer
184
+ conventions/ wiki-lint
185
+ architecture/ session-start / pre-compact
186
+ sessions/ (per-session) telemetry
187
+ raw/ (free-form notes)
188
+ oracles/ (prototype contracts)
189
+ proposed/ (dream queue)
190
+ schemas/
191
+ CLAUDE.md (usage rules)
183
192
  ```
184
193
 
185
194
  ---
@@ -188,15 +197,21 @@ aiwiki/ (knowledge layer) support-system-guide Protocols (re
188
197
 
189
198
  | Command | Description | When to Use |
190
199
  |---------|-------------|-------------|
191
- | `/forge` | One-screen orientation -- installed capabilities, active work, suggested next | Run this first if you're new, or any time you want an overview |
200
+ | `/discover` | One-screen orientation -- installed capabilities, active work, suggested next | Run this first if you're new, or any time you want an overview |
192
201
  | `/setup` | Detect project stack, install matching language rules, and fill the project profile | Right after `npx @jamie-tam/forge init` |
193
- | `/feature` | Full feature workflow with quality gates at every transition | Adding a feature to an existing codebase |
202
+ | `/feature` | Full feature workflow with quality gates at the codify-to-production transition (Phase 5+) | Adding a feature to an existing codebase |
194
203
  | `/greenfield` | New project from zero -- includes scaffolding and onboarding docs | Starting a brand-new project |
195
204
  | `/bugfix` | Systematic debug, TDD fix, code review, and PR | Something is broken and needs fixing |
196
205
  | `/refactor` | Analyze, plan approach, restructure with tests, PR | Code needs cleanup without new functionality |
197
206
  | `/hotfix` | Emergency compressed flow -- debug, minimal test, deploy | Production is down, need a fix now |
198
- | `/evolve` | Review gotchas, improve skills, validate changes | Improving the system itself after a project cycle |
199
- | `/validate` | Run 5 consistency checks across all skills, rules, and commands | After customizing skills or running `/evolve` |
207
+ | `/note` | Append an ad-hoc research note or brainstorm to `aiwiki/raw/{date}.md` | Phase 1-2 research, half-formed thoughts, anything that doesn't yet fit a typed page |
208
+ | `/dream` | Manually trigger aiwiki consolidation (merge duplicates, promote raw → typed, prune stale) | After a refactor, branch merge, or whenever `aiwiki/` feels noisy. Auto-fires at phase-close + PreCompact too. |
209
+ | `/wrap` | Capture & finalize the current Claude session — fills `aiwiki/sessions/{date}-{id}.md` with Files touched / Decisions / Gotchas / Open questions / Next steps | At the natural end of a working session, before a long break, or before switching focus mid-day. Next session-start hook reads it. |
210
+ | `/parallel` | Dispatch parallel agents for a punch list of ad-hoc tasks; phase-aware sizing | Multiple independent small tasks to crunch in one pass |
211
+ | `/status` | List in-flight `.forge/work` items and their current phase | Check what's open before starting new work |
212
+ | `/resume` | Continue a paused work item from its current phase | Pick up a `.forge/work` item left mid-flow |
213
+ | `/forge-evolve` | Review gotchas, improve skills, validate changes | Improving the system itself after a project cycle |
214
+ | `/validate` | Run 5 consistency checks across all skills, rules, and commands | After customizing skills or running `/forge-evolve` |
200
215
 
201
216
  ---
202
217
 
@@ -210,7 +225,7 @@ aiwiki/ (knowledge layer) support-system-guide Protocols (re
210
225
  | `build-wireframe` | 2 | Single-HTML annotated wireframe with click-through demo and callouts; backend-heavy products get a verification-UI sketch |
211
226
  | `build-prototype` | 3 | Vite + React + TS + Tailwind v4 + Zustand v5 scaffold with parallel partition builders |
212
227
  | `iterate-prototype` | 4 | Polish loop with feedback file + 5-cycle drift checks; captures gotchas + conventions as side effects |
213
- | `harden` | 5 | Codifies the locked prototype into architecture files + ADRs (with `/second-opinion` review) + slice graph + tasks |
228
+ | `harden` | 5 | Codifies the locked prototype into architecture files + ADRs (adversarial objections surfaced inline in each ADR `review:` block) + slice graph + tasks |
214
229
 
215
230
  ### Discover & Plan (fallback for non-prototype work)
216
231
 
@@ -257,7 +272,9 @@ aiwiki/ (knowledge layer) support-system-guide Protocols (re
257
272
  | `support-debug` | Systematic 4-phase debugging with 3-fix threshold and fact-checking |
258
273
  | `support-gotcha` | Self-learning from mistakes — captures lessons to `aiwiki/gotchas/`, auto-promotes after N=3 occurrences |
259
274
  | `support-wiki-lint` | Validates `aiwiki/` page schemas + citations on every write (hook-driven); backfills `@<sha7>` citation hashes |
275
+ | `support-wiki-bootstrap` | Scaffold `aiwiki/` (typed-page subdirs, schemas, CLAUDE.md, INDEX) once before workflows write to it |
260
276
  | `support-dream` | Async wiki consolidation (merge/promote/prune) at phase-close / pre-compact / manual. Writes to `aiwiki/proposed/` for user review |
277
+ | `support-parallel` | Run parallel agents for a user-supplied punch list; phase-aware crew sizing, command-routing for command-shaped items |
261
278
  | `support-runtime-reachability` | Detects orphaned exports (code with no production caller) — the gate that catches "tests pass but feature isn't wired up" |
262
279
  | `support-skill-validator` | Validate skill consistency: conflicts, I/O gaps, overlaps, gate coverage, drift |
263
280
 
@@ -270,31 +287,32 @@ A standard-size `/feature "add auth"` on an existing prototype-driven codebase f
270
287
  ```
271
288
  User: /feature "add auth"
272
289
  |
273
- +-- Step 0: Repo-state detection
290
+ +-- Preflight 0: Repo-state detection
274
291
  | Prototype mode? → offer redirect to iterate-prototype
275
292
  | Production mode? → proceed
276
- +-- Step 0a: Preflight checks (git clean, tests pass)
277
- +-- Step 0b: aiwiki/ scaffold if missing
278
- +-- Step 1: phase_plan — preflight planner proposes per-phase
293
+ +-- Preflight 1: Preflight checks (git clean, tests pass)
294
+ +-- Preflight 2: aiwiki/ scaffold if missing
295
+ +-- Preflight 3: phase_plan — preflight planner proposes per-phase
279
296
  | active / active-light / skipped status; user confirms
280
297
  +-- Create/resume manifest (.forge/work/feature/add-auth/manifest.yaml)
281
298
  |
282
- +-- Phase 2: [concept-slides] (if active)
299
+ +-- Phase 1: [concept-slides] (if active)
283
300
  | Low-fidelity deck — what is this feature, where it sits
284
301
  | === GATE: concept locked → artifacts.concept.locked_at ===
285
302
  |
286
- +-- Phase 3: [build-wireframe] (if active)
303
+ +-- Phase 2: [build-wireframe] (if active)
287
304
  | Single-HTML mini-wireframe for the feature's screens
288
305
  | === GATE: wireframe locked → artifacts.wireframe.locked_at ===
289
306
  |
290
- +-- Phase 4: [build-prototype] + [iterate-prototype] (if active)
307
+ +-- Phase 3-4: [build-prototype] + [iterate-prototype] (if active)
291
308
  | Working prototype skin into existing app; iterate to satisfaction
292
309
  | Side effects: capture gotchas + conventions to aiwiki/
293
310
  | === GATE: prototype locked → artifacts.prototype.locked_at ===
294
311
  |
295
312
  +-- Phase 5: [harden] (if active)
296
- | Codify prototype → aiwiki/architecture/, ADRs (with /second-opinion),
297
- | slice graph in manifest. Dream consolidates phase 4 captures.
313
+ | Codify prototype → aiwiki/architecture/, ADRs (adversarial objections
314
+ | in each ADR `review:` block), slice graph in manifest.
315
+ | Dream consolidates phase 3-4 captures.
298
316
  | === GATE: codify locked + user approves dream proposal ===
299
317
  |
300
318
  +-- Phase 6: [build-pr-workflow] worktree → per-slice:
package/agents/dreamer.md CHANGED
@@ -61,11 +61,14 @@ Apply operations in this order:
61
61
  3. **Prune stale** — for each entry whose cited code no longer exists OR whose decision is superseded:
62
62
  - Mark for deletion in the manifest's `operations` (`op: prune`)
63
63
  - Do NOT write a "tombstone" file; absence in proposed/ means delete on accept
64
- 4. **Refresh session file (PreCompact only)** — for `aiwiki/sessions/{current}.md`:
65
- - Read the existing file (the hook-maintained event log)
66
- - Consolidate the event log into the schema sections (Files touched, Decisions made, Gotchas surfaced, Open questions, Next steps)
67
- - Write the refined version to `aiwiki/proposed/{dream_id}/sessions/{current}.md`
68
- - DO NOT recreate the file it must exist (hook created it). If missing, FAIL with `SESSION_FILE_MISSING`.
64
+ 4. **Refine the active session file (PreCompact and phase-close triggers)** — locate `aiwiki/sessions/{date}-{session_id_short}.md`:
65
+ - **The file is expected to be present.** `hooks/scripts/pre-compact.sh` creates it lazily on first PreCompact fire; `/wrap`, `/dream`, and `harden` also create it lazily if absent. By the time you run, one of those has fired during this session — so the file exists.
66
+ - **If it is truly missing** (no in-session writer fired before you, no `aiwiki/sessions/{today}-*.md` matches), this is a non-fatal anomaly: log it in the dream manifest's `lint_warnings` as `session_file_missing: true` and proceed with raw + typed page consolidation only. Do NOT fabricate a session file — let the next writer (pre-compact, /wrap, harden) create it cleanly.
67
+ - **If it exists**: read it. The `## Checkpoints` section is append-only event log written by pre-compact and dream itself. Your refinement work targets:
68
+ - **Trim `## Checkpoints`**: if more than 10 entries, summarize older ones into a single "## Checkpoint summary {date-range}" entry. Preserve any `Status: unconsumed` entries as-is.
69
+ - **Pre-populate index sections** (`## Files touched`, `## Decisions made`, `## Gotchas surfaced`, `## Open questions`, `## Next steps`) from git diff + aiwiki writes during this session. Mark each line with a `<!-- dream-suggested -->` HTML comment so `/wrap` knows what dream proposed vs what the user wrote.
70
+ - **Do NOT set `status: done`** — that's `/wrap`'s responsibility. Leave `status: active`.
71
+ - Write the refined version to `aiwiki/proposed/{dream_id}/sessions/{date}-{session_id_short}.md`.
69
72
 
70
73
  ### Phase 4: Prune & index
71
74
 
@@ -94,7 +97,7 @@ Apply operations in this order:
94
97
  - ANY file in `aiwiki/` (input store untouched)
95
98
  - ANY file in `.forge/work/` (operational state, not knowledge)
96
99
  - Tombstone files for prunes (manifest's `operations` log records the prune; absence in proposed/ means delete on accept)
97
- - A fresh `aiwiki/sessions/{current}.md` if the hook-maintained one doesn't exist (FAIL with `SESSION_FILE_MISSING` instead something is wrong upstream)
100
+ - A fresh `aiwiki/sessions/{date}-{session_id_short}.md` if it doesn't exist — let the next pre-compact / /wrap / harden writer create it cleanly. If it's truly missing when you run, log `session_file_missing: true` in the dream manifest's `lint_warnings` and skip session-file refinement (no failure, no speculation-write)
98
101
  - Any file outside `aiwiki/proposed/{dream_id}/`
99
102
 
100
103
  ## Provider Mode (for `anthropic-managed` only)
@@ -111,7 +114,7 @@ If dispatched with `provider: anthropic-managed`:
111
114
 
112
115
  | Mistake | Fix |
113
116
  |---|---|
114
- | Recreating `aiwiki/sessions/{current}.md` instead of refining the existing one | The session file MUST exist (hook created it). If absent, FAIL — don't paper over an upstream bug. |
117
+ | Recreating `aiwiki/sessions/{date}-{session_id_short}.md` instead of refining the existing one | The session file is expected to exist (pre-compact / /wrap / harden creates it lazily). If absent when you run, log `session_file_missing: true` in the manifest and skip session refinement — don't fabricate a session file. The next writer will create it cleanly. |
115
118
  | Promoting a raw entry that doesn't satisfy the target schema | Validate against schema first; failures go into `lint_warnings`, not into `aiwiki/proposed/{type}/` |
116
119
  | Merging unrelated typed pages because they share a keyword | Merge requires shared root cause / topic, not surface-level term overlap |
117
120
  | Pruning an entry without checking if the citation still resolves | Re-check the cited file/symbol before marking prune; LINT staleness != prune trigger |
@@ -98,7 +98,7 @@ If a relevant gotcha has status `promotion-pending`, note it explicitly:
98
98
  [!] PROMOTION-PENDING — {title}
99
99
  This gotcha was auto-drafted at the 3rd occurrence and is awaiting
100
100
  session-start review. The proposed rule targets {target_rule_file}.
101
- Resolve at session-start or via /evolve before promoting more lessons.
101
+ Resolve at session-start or via /forge-evolve before promoting more lessons.
102
102
  ```
103
103
 
104
104
  ### Step 5: Summary
@@ -153,7 +153,7 @@ For every production delta whose answer is non-obvious OR has tradeoffs, draft a
153
153
  Each draft has:
154
154
  - `status: proposed` (will be changed to `accepted` or dropped after review)
155
155
  - All required schema sections (Context, Decision, Alternatives if non-obvious, Consequences, Review)
156
- - The `review` block is left empty — the harden skill's step 2 fills it via adversarial review (the dedicated `/second-opinion` slash command is *planned, not yet implemented*; until it ships, harden inlines the adversarial pass and writes the resulting objections + verdict into the `review:` block before promoting the ADR to `accepted`)
156
+ - The `review` block is left empty — the harden skill's Step 2 fills it via adversarial review (run inline by Claude, or dispatched to Codex in verify mode if configured) and writes the resulting objections + verdict into the `review:` block before promoting the ADR to `accepted`
157
157
 
158
158
  DO NOT skip an ADR because the answer "feels obvious." If it's a trigger-list decision, it needs the record.
159
159
 
@@ -187,7 +187,7 @@ Nothing. You return the structured proposal. The `harden` skill writes the files
187
187
  | Generating architecture by reasoning about what production should look like | Every claim cites a prototype file; if you can't cite, the claim is premature — drop it or mark it as a delta question for the user |
188
188
  | One giant architecture.md across all subsystems | Split by topic; multiple <400 line files beat one 1500-line file |
189
189
  | Skipping ADRs for "obvious" trigger-list decisions | Trigger list is strict; if it's on the list, the ADR exists regardless of how obvious you find the answer |
190
- | Pre-filling the ADR `review` block with imagined objections | Leave it empty; the harden skill's Step 2 runs adversarial review (today inline; `/second-opinion` dedicated surface is planned) to populate it |
190
+ | Pre-filling the ADR `review` block with imagined objections | Leave it empty; the harden skill's Step 2 runs adversarial review (inline or via Codex verify mode) to populate it |
191
191
  | Slice graph with vague acceptance criteria like "implementation is complete" | Each criterion is testable: "all routes return JSON with the documented error shape", not "errors are handled" |
192
192
  | Promoting Phase 4 raw entries to typed pages | Not your job — dream consolidates raw at phase close |
193
193
  | Modifying the prototype to fix issues you noticed | The prototype is locked; if there's a real issue, surface it as a finding, do not edit |
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: forge
2
+ name: discover
3
3
  description: "Discovery command — show installed forge capabilities, current project state, in-flight work, and the most useful next action. Run this when you're new to a forge-enabled project, or any time you want a one-screen overview."
4
4
  ---
5
5
 
6
- # /forge — Discovery
6
+ # /discover — Discovery
7
7
 
8
8
  Give the user a single-screen orientation to forge in this project. Five sections, in order. Keep each section terse — drill-downs go to skills (`support-system-guide` for routing) or rules (`.claude/rules/common/forge-system.md` for system structure).
9
9
 
@@ -26,7 +26,7 @@ Read the `## Project Profile` block from `CLAUDE.md` and present its yaml compac
26
26
 
27
27
  ## Section 3 — Active work
28
28
 
29
- Glob `.forge/work/*/*/manifest.yaml`. Exclude items whose top-level `status` is `completed`, `abandoned`, or `escalated`. For each remaining item, infer the current phase from the first phase or gate that is not complete/locked/skipped/not-applicable. Print a compact table:
29
+ Glob `.forge/work/*/*/manifest.yaml`. Exclude items whose top-level `status` is `completed` or `escalated`. For each remaining item, infer the current phase from the first phase or gate that is not complete/locked/skipped/not-applicable. Print a compact table:
30
30
 
31
31
  ```markdown
32
32
  | Type | Name | Phase | Manifest |
@@ -46,7 +46,7 @@ Pick **one** suggestion based on the state observed in sections 2 and 3. Use thi
46
46
  | Profile has `{detected ...}` placeholders | `/setup` |
47
47
  | One in-flight item | `/resume {type}/{name}` (cite the matching item) |
48
48
  | Multiple in-flight items, all recent | `/status` (then user picks) |
49
- | Stale in-flight items (manifest `mtime` older than 30 days AND no commit on `{branch}` in 30 days — check via `git log -1 --since='30 days ago' {branch}`) | Surface them: "Item X has been idle since {date} — consider `/abort {type}/{name}` or `/resume`." |
49
+ | Stale in-flight items (manifest `mtime` older than 30 days AND no commit on `{branch}` in 30 days — check via `git log -1 --since='30 days ago' {branch}`) | Surface them: "Item X has been idle since {date} — `/resume` to continue, or delete `.forge/work/{type}/{name}/` to drop it." |
50
50
  | Profile filled, no work items, `pocs/` exists | `/greenfield` (resume the prototype-driven flow) |
51
51
  | Profile filled, no work items, no `pocs/` | `/feature <name>` or `/greenfield <name>` — ask the user which |
52
52
 
@@ -67,26 +67,30 @@ Workflow commands
67
67
  State commands
68
68
  /status list in-flight work
69
69
  /resume <name> continue an in-flight item
70
- /abort <name> cancel an in-flight item
70
+
71
+ Knowledge commands
72
+ /note <text> append a research note / brainstorm to aiwiki/raw/{date}.md
73
+ /dream [scope] consolidate aiwiki — merge duplicates, promote raw → typed, prune stale
74
+ /wrap [focus] capture & finalize current session into aiwiki/sessions/{date}-{id}.md
71
75
 
72
76
  System commands
73
77
  /setup detect stack, fill project profile, scaffold .forge/ + aiwiki/
74
78
  /validate check skill/rule consistency
75
- /evolve improve the forge harness itself
76
- /task-force <list> parallel agents for a punch list of ad-hoc tasks
79
+ /forge-evolve improve the forge harness itself
80
+ /parallel <list> parallel agents for a punch list of ad-hoc tasks
77
81
  ```
78
82
 
79
83
  End with one drill-down line: **For routing a specific intent or unsure which command to use, invoke the `support-system-guide` skill. For system structure (skills, agents, .forge/ layout), see `.claude/rules/common/forge-system.md`.**
80
84
 
81
85
  ## When to use
82
86
 
83
- - User invokes `/forge` explicitly
87
+ - User invokes `/discover` explicitly
84
88
  - User asks "what's in this project?", "show me forge", or "what can forge do here?"
85
89
  - Periodic check-in — useful at the start of a session to see if anything is in flight before starting new work
86
90
 
87
91
  ## Do NOT
88
92
 
89
- - Do NOT invoke this on every session start — `support-system-guide` is the auto-triggering orientation skill. `/forge` is the explicit on-demand version.
93
+ - Do NOT invoke this on every session start — `support-system-guide` is the auto-triggering orientation skill. `/discover` is the explicit on-demand version.
90
94
  - Do NOT duplicate the long skill/group descriptions inline — drill-downs to `support-system-guide` keep this command compact.
91
95
  - Do NOT modify anything. This is a read-only discovery command.
92
96
 
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: dream
3
+ description: "Manually trigger aiwiki consolidation. Merges duplicate notes, promotes raw → typed pages, prunes stale entries. Output is written to aiwiki/proposed/{dream_id}/ for review — input store is never modified. Use after a major refactor, a long session, or whenever aiwiki/ feels noisy. Optional argument: scope (default = full aiwiki/; alternatives = aiwiki/raw/, aiwiki/gotchas/, etc.)."
4
+ ---
5
+
6
+ # /dream — Consolidate aiwiki
7
+
8
+ Manual trigger for `support-dream`. Produces a reviewable consolidation proposal in `aiwiki/proposed/{dream_id}/`; you accept or reject via the web view (`forge wiki ui`) or CLI (`forge wiki review {dream_id}`).
9
+
10
+ This is the user-driven trigger. Dream also fires automatically:
11
+ - **PreCompact** — `hooks/scripts/pre-compact.sh` appends a `**Dream directive (unconsumed)**` block to the active session file's `## Checkpoints` section (`aiwiki/sessions/{date}-{session_id_short}.md`, created lazily). The post-compact agent reads the session file, finds the directive, and invokes `support-dream`.
12
+ - **Phase-close** — `iterate-prototype`, `harden`, `build-pr-workflow`, and `deliver-deploy` dispatch `support-dream` after writing their respective `artifacts.{phase}.locked_at` lock signal.
13
+
14
+ The manual `/dream` invocation is the escape hatch for between-trigger consolidation.
15
+
16
+ ## Steps
17
+
18
+ 1. **Parse scope** from the user's argument:
19
+ - No argument → scope is the full `aiwiki/` tree.
20
+ - One token (`raw`, `gotchas`, `decisions`, `conventions`, `architecture`, `sessions`) → scope is `aiwiki/{token}/`.
21
+ - Multiple tokens or explicit path → scope is the union of those paths.
22
+ 2. **Verify aiwiki exists.** If `aiwiki/` is missing, dispatch `support-wiki-bootstrap` first.
23
+ 3. **Check for pending dreams.** If `aiwiki/proposed/{dream_id}/` directories already exist with `review_status: pending` in their manifest, surface them to the user and ask whether to queue a new dream or review the pending ones first. Do not silently overwrite.
24
+ 4. **Invoke `support-dream` skill** with the parsed scope and `trigger: manual`. The skill dispatches the `dreamer` subagent and writes the proposed output.
25
+ 5. **Report to the user**: new `dream_id`, list of `changed_pages` / `new_pages` / `deleted_pages` counts, lint status, and the path to review:
26
+ ```
27
+ Dream complete: 2026-05-18-1742-manual
28
+ Proposals: aiwiki/proposed/2026-05-18-1742-manual/
29
+ Changed: 3 New: 1 Deleted: 0 Lint: passed
30
+ Review: `forge wiki review 2026-05-18-1742-manual` or open `forge wiki ui`
31
+ ```
32
+
33
+ ## Example
34
+
35
+ User: `/dream`
36
+ → Full aiwiki consolidation, dispatched as `trigger: manual`.
37
+
38
+ User: `/dream raw gotchas`
39
+ → Scope limited to `aiwiki/raw/` + `aiwiki/gotchas/`.
40
+
41
+ User: `/dream after the auth refactor`
42
+ → Free-form description folded into `trigger_detail`; scope defaults to full aiwiki.
43
+
44
+ ## When to use
45
+
46
+ - After a **major refactor** or **branch merge** brought in lots of new wiki entries.
47
+ - When `aiwiki/raw/` has accumulated unclassified notes from `/note` invocations.
48
+ - When you suspect **duplicate gotchas** across recent debugging sessions.
49
+ - Before **handoff** to a new contributor — get the wiki into curated shape first.
50
+ - When `forge wiki status` shows no pending dreams but the aiwiki feels noisy.
51
+
52
+ ## When NOT to use
53
+
54
+ - A dream is already pending review (`forge wiki status` lists it). Review the existing one first; queueing a new dream against the same source state produces overlapping proposals.
55
+ - `aiwiki/` has no recent activity — there's nothing to consolidate; the cycle would no-op.
56
+ - You want to **edit a single page**. Edit it directly. Dream is for *merging / promoting / pruning across pages*, not per-page revision.
57
+
58
+ ## I/O Contract
59
+
60
+ | Field | Value |
61
+ |---|---|
62
+ | **Requires** | `aiwiki/` (scaffolded by `/setup`), `aiwiki/schemas/` |
63
+ | **Produces** | `aiwiki/proposed/{dream_id}/` (mirror structure) + `.dream-manifest.json` |
64
+ | **Dispatches** | `support-dream` skill → `dreamer` subagent |
65
+ | **Review surface** | `forge wiki ui` (web view at 127.0.0.1:8765) or `forge wiki review/accept/reject` CLI |
66
+
67
+ ## Do NOT
68
+
69
+ - Do NOT modify `aiwiki/` directly inside this flow — that is `support-dream`'s invariant.
70
+ - Do NOT queue a new dream while one is pending review against the same source state.
71
+ - Do NOT skip the lint pass — `support-dream` runs lint on the proposed output before marking the dream complete.
@@ -58,8 +58,48 @@ If production mode is detected (or the user chose "no continue"), proceed to Ste
58
58
 
59
59
  REQUIRED SUB-SKILL: Use **support-wiki-bootstrap** to ensure aiwiki/ exists.
60
60
 
61
+ ## Step 0c: Trivial-Scope Fast Path
62
+
63
+ Before stepping through phase planning, detect whether the work is bugfix-sized. If so, offer a single-confirmation fast path that collapses Steps 1–6 (planning, discover, concept, wireframe, design-system, prototype, codify) and jumps straight to worktree → production-build → tests → review → PR.
64
+
65
+ **Detection signals (any one is sufficient):**
66
+ - `--size trivial` flag passed
67
+ - Description matches obvious trivial patterns: "fix typo", "change copy", "tweak <colour|spacing|padding|margin>", "rename X to Y", "bump version", "update dep", "add log line"
68
+ - User has explicitly scoped to a single file path in the description
69
+
70
+ **If a trivial signal fires, offer:**
71
+
72
+ ```
73
+ This looks like trivial-scope work (signal: <list matched signals>).
74
+
75
+ Fast path: skip Steps 1–6 (phase planning + discover + concept + wireframe + design-system + prototype + codify) and jump to:
76
+
77
+ Step 7 Worktree
78
+ Step 8 Production-build (build-tdd with --size trivial → focused regression test)
79
+ Step 9 Test plan + execution (trivial: unit tests for changed code, no E2E/load)
80
+ Step 10 Final code review
81
+ Step 11 Create PR
82
+ Step 13 Gotcha capture (if anything surprising emerged)
83
+
84
+ Manifest will be created with phase_plan:
85
+ concept, wireframe, plan-design-system, prototype, iterate, codify,
86
+ discover-codebase, uiux-review, onboarding: skipped
87
+ production-build, test-plan, code-review-final, deliver, gotchas: active
88
+
89
+ Confirm fast path? [Y]es / [n]o use standard /feature flow / [a]bort
90
+ ```
91
+
92
+ User responses:
93
+ - **Y / yes**: create the manifest with the trivial `phase_plan` above, then jump directly to Step 7 (skip Steps 1–6).
94
+ - **n / no**: proceed to Step 1 with the standard flow. User must accept the planning ceremony explicitly.
95
+ - **a / abort**: stop without action.
96
+
97
+ If no trivial signal fires (or the user chose "no continue"), proceed to Step 1.
98
+
61
99
  ## Step 1: Manifest + Phase Planning
62
100
 
101
+ **Skip if Step 0c's fast path was taken** — the manifest was already created with the trivial phase_plan and the flow has jumped to Step 7.
102
+
63
103
  Check if `.forge/work/feature/{name}/manifest.yaml` exists.
64
104
 
65
105
  **If it exists**: Resume from the last incomplete phase. Skip phases marked `locked` or `skipped`. If `status: escalated` or `status: completed`, do NOT resume — surface `successor_path` and ask the user.
@@ -82,17 +122,19 @@ For trivial features, multiple phases collapse — sometimes the entire workflow
82
122
 
83
123
  User can override any phase decision (e.g. "actually let's do a wireframe — I want to see the layout").
84
124
 
85
- ## Step 2: Discover — Codebase Analysis
125
+ ## Step 2: Discover — Codebase Analysis — if active
126
+
127
+ **Skip if** `phase_plan.discover-codebase: skipped` (the Step 0c fast path or explicit user override). For trivial-scope work that touches a single file the user has already named, codebase analysis is overhead; the trivial fast path skips it deliberately.
86
128
 
87
- REQUIRED SUB-SKILL: Use **discover-codebase-analysis**.
129
+ **Otherwise:** REQUIRED SUB-SKILL: Use **discover-codebase-analysis**.
88
130
 
89
- For features on existing codebases, this is non-optional — production code grows from the prototype, and the prototype skins into the existing app. Without codebase analysis, the prototype-builder will reinvent patterns that already exist.
131
+ For non-trivial features on existing codebases, this is non-optional — production code grows from the prototype, and the prototype skins into the existing app. Without codebase analysis, the prototype-builder will reinvent patterns that already exist.
90
132
 
91
133
  ### GATE: Codebase Analysis Approved
92
134
 
93
135
  User reviews. Update manifest: `discover.codebase-analysis.{status: complete, gate-passed: true}`.
94
136
 
95
- ## Step 3: Concept (Phase 2) — if active
137
+ ## Step 3: Concept (Phase 1) — if active
96
138
 
97
139
  REQUIRED SUB-SKILL: Use **concept-slides**.
98
140
 
@@ -102,7 +144,7 @@ For features, often a 1-3 slide mini-deck — what the feature is, where it sits
102
144
 
103
145
  Update manifest: `artifacts.concept.{deck_path, locked_at}`. Presence of `locked_at` is the lock signal that downstream phases check.
104
146
 
105
- ## Step 4: Wireframe (Phase 3) — if active
147
+ ## Step 4: Wireframe (Phase 2) — if active
106
148
 
107
149
  REQUIRED SUB-SKILL: Use **build-wireframe**.
108
150
 
@@ -124,7 +166,7 @@ Backend-only features (API endpoints, schema changes, internal refactors) skip t
124
166
 
125
167
  Update manifest: `artifacts.design-system.{path, approved_at}`.
126
168
 
127
- ## Step 5: Prototype (Phase 4) — if active
169
+ ## Step 5: Prototype (Phase 3) — if active
128
170
 
129
171
  REQUIRED SUB-SKILL: Use **build-prototype**, then **iterate-prototype** for polish.
130
172
 
@@ -144,7 +186,7 @@ REQUIRED SUB-SKILL: Use **harden**.
144
186
 
145
187
  For features, often produces an architecture-delta (extending existing `aiwiki/architecture/{topic}.md` rather than creating new), 0-3 ADRs, and a focused slice graph (the production tasks specific to this feature).
146
188
 
147
- For features touching `--size major` complexity (auth, payments, PII, schema changes): adversarial review is mandatory on every ADR. The dedicated `/second-opinion` skill is *planned, not yet implemented* — until it ships, surface adversarial objections inline in the ADR `review:` block during harden Step 2 and have the user sign off explicitly before the ADR is marked `accepted`.
189
+ For features touching `--size major` complexity (auth, payments, PII, schema changes): adversarial review is mandatory on every ADR. Surface adversarial objections inline in the ADR `review:` block during harden Step 2 and have the user sign off explicitly before the ADR is marked `accepted`. If Codex is configured (`protocols/codex.md`), the review pass may be dispatched to Codex in verify mode.
148
190
 
149
191
  ### GATE: Codified Plan Approved
150
192
 
@@ -164,7 +206,12 @@ Execute the slice graph from Phase 5. Per slice:
164
206
  2. REQUIRED SUB-SKILL: Use **quality-code-review**
165
207
  3. Fix any Critical or Important findings
166
208
  4. Per-slice user-confirm
167
- 5. Per-slice dream consolidates slice-scoped wiki updates
209
+ 5. **Per-slice dream (auto-fire on slice close).** After the slice's gates pass (`gate-passed: true` on the slice's `code-review` + `runtime-reach`), invoke the **support-dream** skill with:
210
+ - **scope:** `aiwiki/gotchas/`, `aiwiki/conventions/` (any subfolders the slice's builder + reviewer subagents wrote to; check git diff on `aiwiki/` since the slice started for a precise list)
211
+ - **trigger:** `phase-close`
212
+ - **trigger_detail:** `"Phase 6 per-slice — {slice_id}"`
213
+ Dream output goes to `aiwiki/proposed/{dream_id}/`. Surface the id + review path to the user. The next slice can start while the proposal is pending review (per-slice dreams do NOT block forward motion — only phase-close gates do).
214
+ **Skip when:** the slice's build wrote nothing to `aiwiki/` (pure code change with no new gotcha or convention). No-op dreams add noise.
168
215
 
169
216
  For `--size major` features: also escalate to `quality-security-audit` on slices that touch auth/payments/PII.
170
217
 
@@ -172,7 +219,7 @@ Optional: `/autopilot production` for Ralph-loop hands-off slice execution *(pla
172
219
 
173
220
  ### GATE: All Slices Complete
174
221
 
175
- All slices `gate-passed: true`. Update manifest: `artifacts.production-build.locked_at` (the slice terminal state + the production code ARE the production-build artifacts).
222
+ All slices `gate-passed: true`. Update manifest: `artifacts.production-build.locked_at` (the slice terminal state + the production code ARE the production-build artifacts). Any pending per-slice dream proposals from Step 8.5 must be reviewed before Phase 7 (deliver) starts — Phase 7's retrospective dream depends on a consolidated wiki state.
176
223
 
177
224
  ## Step 9: Test Plan + Execution
178
225
 
@@ -219,7 +266,7 @@ REQUIRED SUB-SKILL: Use **deliver-onboarding**.
219
266
  ## Step 13: Support — Record Lessons
220
267
 
221
268
  REQUIRED SUB-SKILL: Use **support-gotcha**.
222
- Final dream cycle consolidates all Phase 4-12 wiki captures.
269
+ Final dream cycle consolidates all wiki captures from the previous phases.
223
270
 
224
271
  Update manifest: `status: completed`.
225
272
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: evolve
3
- description: "Review lessons learned and improve the skill system. Run after completing a feature or project."
2
+ name: forge-evolve
3
+ description: "Review lessons learned from accumulated gotchas and improve the forge skill system itself. Run after completing a feature or project. Operates on the forge harness — not on user project code."
4
4
  ---
5
5
 
6
- # /evolve — Self-Improvement Review
6
+ # /forge-evolve — Self-Improvement Review
7
7
 
8
8
  You are reviewing lessons learned and improving the forge skill system itself. This is how the system gets smarter over time. Run this after completing a feature, project, or periodically to process accumulated gotchas.
9
9
 
@@ -55,7 +55,7 @@ If the user provided detailed requirements upfront, this step extracts and struc
55
55
 
56
56
  REQUIRED SUB-SKILL: Use **discover-requirements** (only if user has substantive existing requirements docs).
57
57
 
58
- ## Step 3: Concept (Phase 2)
58
+ ## Step 3: Concept (Phase 1)
59
59
 
60
60
  REQUIRED SUB-SKILL: Use **concept-slides**.
61
61
 
@@ -65,7 +65,7 @@ Produces a low-fidelity marp deck at `decks/{project-name}/slides.md` with hook,
65
65
 
66
66
  User reviews the rendered deck (HTML), gives feedback, locks when satisfied. Update manifest: `artifacts.concept.{deck_path, locked_at}`.
67
67
 
68
- ## Step 4: Wireframe (Phase 3)
68
+ ## Step 4: Wireframe (Phase 2)
69
69
 
70
70
  REQUIRED SUB-SKILL: Use **build-wireframe**.
71
71
 
@@ -85,7 +85,7 @@ Backend-only / CLI projects without a frontend skip this step entirely (no desig
85
85
 
86
86
  User approves the design tokens written to `DESIGN.md`. Update manifest: `artifacts.design-system.{path, approved_at}`.
87
87
 
88
- ## Step 5: Prototype (Phase 4)
88
+ ## Step 5: Prototype (Phase 3)
89
89
 
90
90
  REQUIRED SUB-SKILL: Use **build-prototype** for initial scaffold, then **iterate-prototype** for the polish loop.
91
91
 
@@ -105,7 +105,7 @@ REQUIRED SUB-SKILL: Use **harden**.
105
105
 
106
106
  Codifies the locked prototype into production-ready plans:
107
107
  - `aiwiki/architecture/{topic}.md` — one or more focused architecture files
108
- - `aiwiki/decisions/{nnnn}-{slug}.md` — ADRs (adversarial review via `/second-opinion` is *planned, not yet implemented* — until that ships, surface objections inline in the ADR `review:` block during harden Step 2)
108
+ - `aiwiki/decisions/{nnnn}-{slug}.md` — ADRs (adversarial review runs inline at harden Step 2, surfacing objections in each ADR's `review:` block; optionally dispatched to Codex in verify mode when configured)
109
109
  - `aiwiki/conventions/` — production-surface conventions
110
110
  - `aiwiki/gotchas/` — Phase 4 gotchas with production addenda
111
111
  - Slice graph + `tasks.md` in manifest
@@ -144,7 +144,7 @@ ALL tests pass. Coverage meets thresholds (minimum 80%, 100% for critical paths)
144
144
 
145
145
  ## Step 8.5: UI/UX Review (if applicable)
146
146
 
147
- If the project has a frontend (per Phase 1 phase planning):
147
+ If the project has a frontend (per Step 1 phase planning):
148
148
 
149
149
  REQUIRED SUB-SKILL: Use **quality-uiux**.
150
150
  Validates production implementation matches the locked wireframe + design tokens.