@mmerterden/multi-agent-pipeline 13.5.0 → 14.0.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 (119) hide show
  1. package/CHANGELOG.md +243 -0
  2. package/README.md +3 -3
  3. package/docs/features.md +1 -1
  4. package/install/_common.mjs +73 -0
  5. package/install/_mcp-register.mjs +70 -31
  6. package/install/_plugin-skills.mjs +73 -14
  7. package/install/claude.mjs +28 -4
  8. package/install/codex.mjs +33 -2
  9. package/install/copilot.mjs +145 -9
  10. package/install/index.mjs +10 -6
  11. package/install/templates/copilot-instructions.md +1 -1
  12. package/package.json +1 -1
  13. package/pipeline/agents/code-reviewer.md +58 -1
  14. package/pipeline/commands/multi-agent/SKILL.md +7 -5
  15. package/pipeline/commands/multi-agent/analysis/SKILL.md +7 -7
  16. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +1 -1
  17. package/pipeline/commands/multi-agent/build-optimize/SKILL.md +7 -7
  18. package/pipeline/commands/multi-agent/channels/SKILL.md +5 -5
  19. package/pipeline/commands/multi-agent/dev/SKILL.md +23 -18
  20. package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +19 -13
  21. package/pipeline/commands/multi-agent/dev-local/SKILL.md +14 -12
  22. package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +17 -12
  23. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
  24. package/pipeline/commands/multi-agent/help/SKILL.md +4 -4
  25. package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +2 -2
  26. package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +4 -4
  27. package/pipeline/commands/multi-agent/resume/SKILL.md +1 -1
  28. package/pipeline/commands/multi-agent/review/SKILL.md +5 -5
  29. package/pipeline/commands/multi-agent/scan/SKILL.md +1 -1
  30. package/pipeline/commands/multi-agent/search/SKILL.md +1 -1
  31. package/pipeline/commands/multi-agent/setup/SKILL.md +6 -6
  32. package/pipeline/commands/multi-agent/{finish → ship}/SKILL.md +12 -12
  33. package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +1 -1
  34. package/pipeline/commands/multi-agent/update/SKILL.md +5 -2
  35. package/pipeline/commands/sim-test.md +2 -2
  36. package/pipeline/lib/credential-store-resolver.sh +16 -0
  37. package/pipeline/lib/credential-store.sh +47 -4
  38. package/pipeline/lib/fetch-figma-annotations.sh +26 -28
  39. package/pipeline/lib/figma-screenshot.sh +28 -39
  40. package/pipeline/lib/figma-token.sh +63 -0
  41. package/pipeline/multi-agent-refs/analysis-template.md +1 -1
  42. package/pipeline/multi-agent-refs/android-guide.md +1 -1
  43. package/pipeline/multi-agent-refs/channels/issue-comment.md +1 -1
  44. package/pipeline/multi-agent-refs/component-dispatch.md +2 -2
  45. package/pipeline/multi-agent-refs/cross-cli-contract.md +4 -4
  46. package/pipeline/multi-agent-refs/features/dev-critic.md +2 -2
  47. package/pipeline/multi-agent-refs/features/model-fallback.md +35 -2
  48. package/pipeline/multi-agent-refs/features/plan-todos.md +1 -1
  49. package/pipeline/multi-agent-refs/features/repo-map.md +1 -1
  50. package/pipeline/multi-agent-refs/features/review-multi-repo.md +3 -3
  51. package/pipeline/multi-agent-refs/features/shadow-git.md +1 -1
  52. package/pipeline/multi-agent-refs/features/skill-conformance.md +116 -0
  53. package/pipeline/multi-agent-refs/features/verify-by-test.md +1 -1
  54. package/pipeline/multi-agent-refs/generate-issue.md +1 -1
  55. package/pipeline/multi-agent-refs/multi-repo-integration-build.md +1 -1
  56. package/pipeline/multi-agent-refs/phases/log-format.md +4 -4
  57. package/pipeline/multi-agent-refs/phases/modes.md +7 -7
  58. package/pipeline/multi-agent-refs/phases/phase-0-init.md +13 -11
  59. package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +17 -15
  60. package/pipeline/multi-agent-refs/phases/phase-2-planning.md +7 -7
  61. package/pipeline/multi-agent-refs/phases/phase-3-dev.md +28 -13
  62. package/pipeline/multi-agent-refs/phases/phase-4-review.md +90 -58
  63. package/pipeline/multi-agent-refs/phases/phase-5-test.md +7 -7
  64. package/pipeline/multi-agent-refs/phases/phase-6-commit.md +8 -8
  65. package/pipeline/multi-agent-refs/phases/phase-7-report.md +8 -8
  66. package/pipeline/multi-agent-refs/phases.md +13 -13
  67. package/pipeline/multi-agent-refs/progress-contract.md +2 -2
  68. package/pipeline/multi-agent-refs/rules.md +7 -5
  69. package/pipeline/multi-agent-refs/swiftui-guide.md +1 -1
  70. package/pipeline/multi-agent-refs/tracker-contract.md +16 -15
  71. package/pipeline/preferences-template.json +7 -1
  72. package/pipeline/rules/figma-pipeline.md +2 -2
  73. package/pipeline/schemas/agent-state.schema.json +333 -79
  74. package/pipeline/schemas/criteria-manifest.schema.json +228 -0
  75. package/pipeline/schemas/migrations/prefs-2.4.0-to-2.5.0.mjs +64 -0
  76. package/pipeline/schemas/prefs.schema.json +118 -262
  77. package/pipeline/schemas/reviewer-output.schema.json +48 -3
  78. package/pipeline/schemas/token-budget.json +34 -10
  79. package/pipeline/schemas/triage-output.schema.json +112 -27
  80. package/pipeline/scripts/cost-table.json +7 -4
  81. package/pipeline/scripts/gc-worktrees.sh +1 -1
  82. package/pipeline/scripts/gen-mode-dispatch.mjs +6 -6
  83. package/pipeline/scripts/match-skills.mjs +37 -4
  84. package/pipeline/scripts/migrate-prefs.mjs +88 -17
  85. package/pipeline/scripts/phase-tracker.sh +14 -3
  86. package/pipeline/scripts/pre-commit-check.sh +49 -2
  87. package/pipeline/scripts/skill-conformance.mjs +960 -0
  88. package/pipeline/scripts/smoke-schema-validation.sh +17 -4
  89. package/pipeline/scripts/uninstall.mjs +35 -9
  90. package/pipeline/scripts/validate-reviewer.mjs +108 -1
  91. package/pipeline/skills/.skill-manifest.json +1 -1
  92. package/pipeline/skills/.skills-index.json +36 -9
  93. package/pipeline/skills/shared/README.md +15 -12
  94. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +1 -0
  95. package/pipeline/skills/shared/core/apple-archive-compliance/references/rules.yml +167 -0
  96. package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +1 -0
  97. package/pipeline/skills/shared/core/google-play-compliance/references/rules.yml +184 -0
  98. package/pipeline/skills/shared/core/multi-agent/SKILL.md +10 -10
  99. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +4 -4
  100. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
  101. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +2 -2
  102. package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
  103. package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +6 -5
  104. package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +7 -6
  105. package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +4 -3
  106. package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +2 -1
  107. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +2 -2
  108. package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +1 -1
  109. package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +4 -4
  110. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +5 -5
  111. package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +1 -1
  112. package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +1 -1
  113. package/pipeline/skills/shared/core/{multi-agent-finish → multi-agent-ship}/SKILL.md +8 -8
  114. package/pipeline/skills/shared/external/ios-coding-standard/SKILL.md +44 -5
  115. package/pipeline/skills/shared/external/ios-coding-standard/modules/_TEMPLATE.yml +82 -0
  116. package/pipeline/skills/shared/external/ios-coding-standard/references/STANDARD.md +169 -10
  117. package/pipeline/skills/shared/external/ios-coding-standard/references/lint-local.sh +13 -1
  118. package/pipeline/skills/shared/external/ios-coding-standard/references/rules.yml +335 -16
  119. package/pipeline/skills/skills-index.md +11 -8
@@ -6,7 +6,7 @@ allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdat
6
6
 
7
7
  # Multi-Agent Task Orchestrator
8
8
 
9
- > **MUST: Figma MCP is BLOCKING for any task with a Figma reference.** Before any UI synthesis runs in this pipeline (analysis, planning, dev, or rework), call `mcp__claude_ai_Figma__get_design_context` for every referenced frame and use the `CodeConnectSnippet` component name verbatim. Backend-only tasks are exempt. See `$HOME/.claude/multi-agent-refs/rules.md` "User Interaction Discipline" and `pipeline/rules/figma-pipeline.md` "MUST: Figma MCP-first (BLOCKING)".
9
+ > **MUST: Figma MCP is BLOCKING for any task with a Figma reference.** Before any UI synthesis runs in this pipeline (analysis, planning, dev, or rework), call `mcp__claude_ai_Figma__get_design_context` for every referenced frame and use the `CodeConnectSnippet` component name verbatim. Backend-only tasks are exempt. See `$HOME/.claude/multi-agent-refs/rules.md` "User Interaction Discipline" and `$HOME/.claude/rules/figma-pipeline.md` "MUST: Figma MCP-first (BLOCKING)".
10
10
 
11
11
  Parse the user input and route to the correct sub-command.
12
12
 
@@ -87,8 +87,8 @@ Lib scripts (`~/.claude/lib/`):
87
87
  | `stack [ios\|android\|backend\|mobile\|all]` | Swap skills for next conversation. No arg = show current stack. |
88
88
  | `language [en\|tr]` | Show or set the assistant `outputLanguage` (explanations and chat replies). `promptLanguage` is locked to `en` and is not toggleable. No arg = show current `outputLanguage`. With `en` or `tr` = set and persist `outputLanguage`. External payloads (commits, PR bodies, Jira) stay English. |
89
89
  | `setup` | Keychain token + Git Identity onboarding |
90
- | `--dev` | Dev-only: Init -> Dev(Opus) -> Commit -> Report |
91
- | `--dev autopilot` or `dev-autopilot` | Fastest path - Dev(Opus) + zero interaction |
90
+ | `--dev` | Dev-only: Init -> Dev(Opus) -> Review -> Test -> Commit -> Report |
91
+ | `--dev autopilot` or `dev-autopilot` | Fastest path - Dev(Opus) + Review (auto-fix) + zero interaction |
92
92
  | `--local` | No worktree - works directly on local branch |
93
93
  | `autopilot` | Skip user confirmations, auto commit/PR |
94
94
  | No args / `help` | Show usage guide |
@@ -121,6 +121,8 @@ This command uses lazy loading for token efficiency. Read the relevant sub-file
121
121
  | `build-optimize` | `$HOME/.claude/commands/multi-agent/build-optimize/SKILL.md` |
122
122
  | `local` | `$HOME/.claude/commands/multi-agent/local/SKILL.md` |
123
123
  | `local-autopilot` | `$HOME/.claude/commands/multi-agent/local-autopilot/SKILL.md` |
124
+ | `dev` | `$HOME/.claude/commands/multi-agent/dev/SKILL.md` |
125
+ | `dev-autopilot` | `$HOME/.claude/commands/multi-agent/dev-autopilot/SKILL.md` |
124
126
  | `dev-local` | `$HOME/.claude/commands/multi-agent/dev-local/SKILL.md` |
125
127
  | `dev-local-autopilot` | `$HOME/.claude/commands/multi-agent/dev-local-autopilot/SKILL.md` |
126
128
  | `create-jira` | `$HOME/.claude/commands/multi-agent/create-jira/SKILL.md` (loads `$HOME/.claude/multi-agent-refs/generate-issue.md`) |
@@ -162,7 +164,7 @@ This command uses lazy loading for token efficiency. Read the relevant sub-file
162
164
 
163
165
  ## language Command
164
166
 
165
- Toggles only `outputLanguage` (`promptLanguage` is locked to `"en"` - see `$HOME/.claude/multi-agent-refs/rules.md` section "Language Application"). Full spec: `pipeline/commands/multi-agent/language/SKILL.md`.
167
+ Toggles only `outputLanguage` (`promptLanguage` is locked to `"en"` - see `$HOME/.claude/multi-agent-refs/rules.md` section "Language Application"). Full spec: `$HOME/.claude/commands/multi-agent/language/SKILL.md`.
166
168
 
167
169
  ---
168
170
 
@@ -229,7 +231,7 @@ Save to `prefs.projects[{project}].branches`.
229
231
  ```
230
232
  Pipeline mode:
231
233
  1. Full pipeline (8 phases, Sonnet dev, parallel review + triage - CLI-aware reviewer set)
232
- 2. --dev (fast: Init → Dev(Opus) → Commit → Report)
234
+ 2. --dev (fast: Init → Dev(Opus) → Review → Test → Commit → Report - no analysis/planning)
233
235
  Select [1/2]:
234
236
  ```
235
237
 
@@ -45,7 +45,7 @@ When citing a Locked decision in code or docs, prefer `Locked <n> (<short label>
45
45
  9. **Per-platform output split.** One markdown file is produced per selected platform under `analysis/<feature>-<platform>.md`. There is no merged single file. Section duplication follows the A3 hybrid table in `$HOME/.claude/multi-agent-refs/analysis-template.md` (Sections 1 + 4 duplicated verbatim; Sections 2, 3, 5, 6, 7 projected per platform). Each file carries a YAML front-matter header naming the feature, platform, generated-at timestamp, sibling file list, and binding standards source.
46
46
  10. **Output destination is asked after drafts exist.** Phase 3 renders each per-platform markdown to `/tmp/analysis-<feature-slug>-<timestamp>/` first. Only then does Phase 3.5 surface the output-destination picker (Local / Confluence / Jira). Drafts in `/tmp/` are the source of truth on resume; `/multi-agent:resume` re-uses them when `phase == awaiting_output_decision`.
47
47
  11. **Repo-evidence reuse-first.** Phase 1b runs a repo-evidence collector against each selected repo, producing 13 buckets (services, dtos, useCases, validationRules, domainEntities, routes, coordinators, diConfigurators, uiComponents, tokens, localizationKeys, testingIdentifiers, analyticsEvents) with each row tagged `direct-match | same-domain | cross-cutting`. Section 7 emits `Reuse existing X (file:line)` rows for `direct-match` items and advisory rows for `cross-cutting` items. New-write tasks for items that have a `direct-match` are downgraded to Risks ("existing X candidate found; reuse or document why a new one is needed").
48
- 12. **MUST: Figma access - 3-tier fallback chain, pipeline-wide.** When any Figma URL or node ID is supplied (Phase 0 Step 5), Phase 1 establishes a Figma ground-truth artefact via the 3-tier chain before any UI synthesis runs: (1) Figma MCP `get_design_context` / `get_screenshot` / `get_metadata` for every referenced frame, with one re-auth retry on auth failure; (2) Figma REST API (`GET /v1/files/{fileKey}/nodes`, `GET /v1/images/{fileKey}`) using the PAT resolved through `~/.claude/lib/credential-store.sh get <logical-key>` where `<logical-key>` = `prefs.global.keychainMapping.figma_pat`; (3) a user-attached screenshot as last resort. The tier in use is persisted as `state.figmaAccess.tier`. On Tier 1 the `CodeConnectSnippet` blocks name the exact target component consumed verbatim in Section 2 and Section 7. On Tier 2 the canonical-component decision falls back to the repo's `*.figma.swift` / `*.figma.kt` mappings keyed by `fileKey` + `nodeId`. On Tier 3 the canonical-component decision becomes "tier-3 best-fit pending design review" and produces a forced Open Question in Section 7 plus a Phase 4 `review_blocking` flag. Sound-alike alternatives, "more flexible" wrappers, and extrapolating from Confluence text-only "Component Kompozisyonu" / "Component Inventory" tables are forbidden in every tier. If all three tiers fail, halt the run and ask the user for access; never proceed with text-derived guesses. Section 7 architecture decisions must cite the node ID (Tier 1 or Tier 2) or the user-screenshot reference (Tier 3) for every UI atom row. Violations cost rebuild rounds (raw-primitive substitution; sound-alike-component swap). Generic rule rationale and checklist: see `pipeline/rules/figma-pipeline.md` "MUST: Figma access - 3-tier fallback chain (BLOCKING, pipeline-wide)". Memory: `[[figma-no-guesswork]]`.
48
+ 12. **MUST: Figma access - 3-tier fallback chain, pipeline-wide.** When any Figma URL or node ID is supplied (Phase 0 Step 5), Phase 1 establishes a Figma ground-truth artefact via the 3-tier chain before any UI synthesis runs: (1) Figma MCP `get_design_context` / `get_screenshot` / `get_metadata` for every referenced frame, with one re-auth retry on auth failure; (2) Figma REST API (`GET /v1/files/{fileKey}/nodes`, `GET /v1/images/{fileKey}`) using the PAT resolved through `~/.claude/lib/credential-store.sh get <logical-key>` where `<logical-key>` = `prefs.global.keychainMapping.figma`; (3) a user-attached screenshot as last resort. The tier in use is persisted as `state.figmaAccess.tier`. On Tier 1 the `CodeConnectSnippet` blocks name the exact target component consumed verbatim in Section 2 and Section 7. On Tier 2 the canonical-component decision falls back to the repo's `*.figma.swift` / `*.figma.kt` mappings keyed by `fileKey` + `nodeId`. On Tier 3 the canonical-component decision becomes "tier-3 best-fit pending design review" and produces a forced Open Question in Section 7 plus a Phase 4 `review_blocking` flag. Sound-alike alternatives, "more flexible" wrappers, and extrapolating from Confluence text-only "Component Kompozisyonu" / "Component Inventory" tables are forbidden in every tier. If all three tiers fail, halt the run and ask the user for access; never proceed with text-derived guesses. Section 7 architecture decisions must cite the node ID (Tier 1 or Tier 2) or the user-screenshot reference (Tier 3) for every UI atom row. Violations cost rebuild rounds (raw-primitive substitution; sound-alike-component swap). Generic rule rationale and checklist: see `$HOME/.claude/rules/figma-pipeline.md` "MUST: Figma access - 3-tier fallback chain (BLOCKING, pipeline-wide)". Memory: `[[figma-no-guesswork]]`.
49
49
  13. **Gherkin user stories.** Section 4 scenarios use Given / When / Then. Plain-prose user stories are rejected at render time.
50
50
  14. **Goals and Non-Goals are paired.** Section 2 always carries both columns. A row in only the goal column without an explicit non-goal counterpart is rejected. Vague "out of scope" phrasing does not satisfy the non-goal column; each non-goal names what is excluded.
51
51
  15. **New assets default to SVG.** Section 8 entries marked `new` are SVG unless a documented exception is captured in the rationale column (Lottie for motion design, optimized PNG for raster-only icons). PDF, JPG, and unoptimized PNG are rejected.
@@ -65,7 +65,7 @@ When citing a Locked decision in code or docs, prefer `Locked <n> (<short label>
65
65
  27. **Evidence digest caches Phase 1b and 1c.** `evidence_digest = sha256(featureName || sorted(platforms) || repoEvidence.summary || conventions.summary)`. When the same feature name is invoked again against the same set of repos and the digest matches, Phase 1b and 1c are skipped and the cached `evidence.repoEvidence` / `evidence.conventions` is reused. Cache TTL is 24 hours; manual invalidation via `--no-cache` flag.
66
66
  28. **SwiftUI Preview block mandatory (iOS projection, SwiftUI only).** When the iOS file is produced AND the affected view is a SwiftUI view (detected via `import SwiftUI` + `: View` protocol conformance in `evidence.repoEvidence[<repo>].buckets.uiComponents`), Section 13.6 renders a Preview block table covering at minimum: canonical default (LTR Light), Dark, RTL, Dynamic Type accessibilityLarge, and one error variant. Loading state and edge-case variants are added when distinct from canonical. UIKit-only features (no SwiftUI view artefact) drop Section 13.6 with note `(N/A: UIKit-only feature)`. Preview macro convention (`#Preview` for Swift 5.9+ vs legacy `PreviewProvider`) is read from `evidence.conventions[<repo>].previewMacro`. Each Preview variant listed in Section 13.6 must have a matching row in Section 15.2 Snapshot Tests; a Preview without a snapshot row triggers a Section 20 Risk.
67
67
  29. **Variant usage explicit and bounded.** Section 6 inventory rows list which variants this feature consumes per component (concrete enum case + bool value). New Section 6.X (Variant Usage Matrix) catalogues the full variant axis vs. used subset with a rationale per excluded variant. Sections 13.6 (Preview) and 15.2 (Snapshot) cover only the used subset; expanding the variant set requires updating Section 6.X first.
68
- 30. **Analysis as self-contained design bridge - no MCP outside analysis phase (BLOCKING, pipeline-wide).** The analysis document is the sole design source for every downstream phase. After Phase 1 of `/multi-agent:analysis` produces `analysis/<feature>-<platform>.md`, Phase 2 Planning, Phase 3 Dev, Phase 4 Review, Phase 5 Test, Phase 6 Commit, and Phase 7 Report consume only the analysis document plus repo Code Connect mappings (`*.figma.swift` / `*.figma.kt`). Calling `mcp__claude_ai_Figma__*`, hitting `api.figma.com`, or fetching a `figma.com/design/...` URL during Phase 2+ is a violation. Applies to every mode that runs Phase 2+: `/multi-agent`, `/multi-agent:autopilot`, `/multi-agent:local`, `/multi-agent:local-autopilot`, `/multi-agent:dev`, `/multi-agent:dev-autopilot`, `/multi-agent:dev-local`, `/multi-agent:dev-local-autopilot`. Hard requirement (v9.0.0): Phase 2 Pre-item and Phase 3 Pre-item (BLOCKING) abort the run when the analysis document is missing. Memory: `[[mcp-only-in-analysis]]`. Generic rule rationale and access matrix: see `pipeline/rules/figma-pipeline.md` "MUST: No MCP outside analysis phase".
68
+ 30. **Analysis as self-contained design bridge - no MCP outside analysis phase (BLOCKING, pipeline-wide).** The analysis document is the sole design source for every downstream phase. After Phase 1 of `/multi-agent:analysis` produces `analysis/<feature>-<platform>.md`, Phase 2 Planning, Phase 3 Dev, Phase 4 Review, Phase 5 Test, Phase 6 Commit, and Phase 7 Report consume only the analysis document plus repo Code Connect mappings (`*.figma.swift` / `*.figma.kt`). Calling `mcp__claude_ai_Figma__*`, hitting `api.figma.com`, or fetching a `figma.com/design/...` URL during Phase 2+ is a violation. Applies to every mode that runs Phase 2+: `/multi-agent`, `/multi-agent:autopilot`, `/multi-agent:local`, `/multi-agent:local-autopilot`, `/multi-agent:dev`, `/multi-agent:dev-autopilot`, `/multi-agent:dev-local`, `/multi-agent:dev-local-autopilot`. Hard requirement (v9.0.0): Phase 2 Pre-item and Phase 3 Pre-item (BLOCKING) abort the run when the analysis document is missing. Memory: `[[mcp-only-in-analysis]]`. Generic rule rationale and access matrix: see `$HOME/.claude/rules/figma-pipeline.md` "MUST: No MCP outside analysis phase".
69
69
  31. **Business-rule to acceptance-criterion to test traceability (AI + human spine).** The analysis is a development handoff that both an AI implementer and a human reviewer must act on, so it is bound by one shared-ID vocabulary. Every business rule carries a stable id `BR-<slug>-NN` (Section 4.4). Each rule maps to at least one acceptance criterion written Given / When / Then (binary - two readers must not be able to disagree on pass/fail). Each acceptance criterion maps to unit-test scenarios in Section 15.1, one row per case across happy / boundary / error / empty-nil (enumerate at least the failure modes; agents hallucinate error handling when it is omitted). The same ids thread onward: Section 15.6 UI-test flows reference the `BR-` ids and use stable selectors (accessibilityIdentifier / testTag), Section 16 accessibility items reuse those identifiers, Section 11 analytics events cite their triggering rule or story, and Section 5/7 layout cells carry token + Figma node refs. Never invent copy or values (blank beats a guess; a missing source becomes a Section 20 Open Question). **Mode-aware gate:** in Full mode a business rule with no acceptance criterion, or an acceptance criterion with no Section 15.1 scenario, fails the dispatch gate. In **Lite mode Section 15 is not rendered**, so the rule-to-test half does not apply - Section 4.4 still lists each rule with its Given/When/Then acceptance criterion (the acceptance criterion is itself the testable statement), and the 15.1 mapping is deferred to whenever the feature is later analyzed in Full or implemented via `/multi-agent:dev`. The rule-to-acceptance-criterion half always holds, in both modes.
70
70
 
71
71
  ## Input
@@ -236,7 +236,7 @@ For each entry in `state.analysisSpec.contextLinks[]`, fan out by `type`. Entrie
236
236
  |------|---------|---------------|
237
237
  | swagger | `~/.claude/lib/fetch-swagger.sh <url>` | `state.analysisSpec.evidence.swagger[]` |
238
238
  | confluence | `~/.claude/lib/fetch-confluence.sh <url>` | `state.analysisSpec.evidence.confluence[]` |
239
- | figma | **MUST** establish the Figma access tier per Locked decision #12. Tier 1 (preferred): call `mcp__claude_ai_Figma__get_design_context` (primary), `mcp__claude_ai_Figma__get_screenshot`, `mcp__claude_ai_Figma__get_metadata` for every node ID; auth failure runs `authenticate` + `complete_authentication` then retries. Tier 2 (fallback): `GET https://api.figma.com/v1/files/{fileKey}/nodes?ids={nodeId}` for design context and `GET /v1/images/{fileKey}?ids={nodeId}&format=png&scale=2` for screenshots, with PAT from `~/.claude/lib/credential-store.sh get <logical-key>` (logical key = `prefs.global.keychainMapping.figma_pat`); canonical component resolves via repo `*.figma.swift` / `*.figma.kt` mapping. Tier 3 (last resort): user-attached screenshot, `codeConnectSnippets: []`, forced Open Question. Capture each `CodeConnectSnippet` block verbatim when on Tier 1 (component name + modifier chain). **Annotation capture (when the project `figma-config` has `annotations.enabled`):** on Tier 1, walk the `annotations[]` the `get_design_context` payload returns for each node (read `label` / `labelMarkdown`); on Tier 2, run `~/.claude/lib/fetch-figma-annotations.sh --file-key <fileKey> --node-id <ids> --lang-prefixes <config.annotations.langPrefixes>`. Parse each annotation by the configured language prefixes (prefixed `TR:/EN:` wins, else line1/line2, else single) and persist to `annotations[]`. The annotation is the authoritative copy for its node (Locked 3); the visible text layer is a placeholder. Persist `state.figmaAccess.tier`. See Locked decision #12 and `pipeline/rules/figma-pipeline.md` "MUST: Figma access - 3-tier fallback chain". | `state.analysisSpec.evidence.figma[]` (records: `nodeId`, `screenshotUrl`, `codeConnectSnippets[]`, `tokens[]`, `textLayers[]`, `annotations[]`, `tier`; see `analysis-spec.schema.json`) |
239
+ | figma | **MUST** establish the Figma access tier per Locked decision #12. Tier 1 (preferred): call `mcp__claude_ai_Figma__get_design_context` (primary), `mcp__claude_ai_Figma__get_screenshot`, `mcp__claude_ai_Figma__get_metadata` for every node ID; auth failure runs `authenticate` + `complete_authentication` then retries. Tier 2 (fallback): `GET https://api.figma.com/v1/files/{fileKey}/nodes?ids={nodeId}` for design context and `GET /v1/images/{fileKey}?ids={nodeId}&format=png&scale=2` for screenshots, with PAT from `~/.claude/lib/credential-store.sh get <logical-key>` (logical key = `prefs.global.keychainMapping.figma`); canonical component resolves via repo `*.figma.swift` / `*.figma.kt` mapping. Tier 3 (last resort): user-attached screenshot, `codeConnectSnippets: []`, forced Open Question. Capture each `CodeConnectSnippet` block verbatim when on Tier 1 (component name + modifier chain). **Annotation capture (when the project `figma-config` has `annotations.enabled`):** on Tier 1, walk the `annotations[]` the `get_design_context` payload returns for each node (read `label` / `labelMarkdown`); on Tier 2, run `~/.claude/lib/fetch-figma-annotations.sh --file-key <fileKey> --node-id <ids> --lang-prefixes <config.annotations.langPrefixes>`. Parse each annotation by the configured language prefixes (prefixed `TR:/EN:` wins, else line1/line2, else single) and persist to `annotations[]`. The annotation is the authoritative copy for its node (Locked 3); the visible text layer is a placeholder. Persist `state.figmaAccess.tier`. See Locked decision #12 and `$HOME/.claude/rules/figma-pipeline.md` "MUST: Figma access - 3-tier fallback chain". | `state.analysisSpec.evidence.figma[]` (records: `nodeId`, `screenshotUrl`, `codeConnectSnippets[]`, `tokens[]`, `textLayers[]`, `annotations[]`, `tier`; see `analysis-spec.schema.json`) |
240
240
  | jira | `gh api` or Jira REST API for issue summary | `state.analysisSpec.evidence.jira[]` |
241
241
  | generic-doc | WebFetch on demand | `state.analysisSpec.evidence.confluence[]` (generic bucket) unless `binding: true` -> `evidence.standards[]` |
242
242
  | `local-file` | `Read` (no fetch) on tilde-expanded absolute path | `state.analysisSpec.evidence.standards[]` |
@@ -431,7 +431,7 @@ synthesizedSections = {
431
431
  | 3. Localization | If both Figma annotations/text layers and `evidence.repoEvidence[*].buckets.localizationKeys` are empty → `byPlatform[*]` = null. Otherwise produce the key table per the project `localization.ownership` mode (Locked 20): `in-repo` fills the configured locale set (default `ar, de, en, es, fr, it, ru, tr`, RTL for ar); `externally-owned` lists key + status + copy source + base value and defers per-locale values. Base copy is sourced from the Figma annotation when present (Locked 3). |
432
432
  | 4. API Contracts | If `evidence.swagger[]` is empty AND no Confluence embedded API table AND no `evidence.repoEvidence[*].buckets.services` direct-match → null. Otherwise produce endpoint summary + per-endpoint tables (shared verbatim across files). |
433
433
  | 5. Deeplink / Push | Per-platform: iOS uses Universal Links / `UNUserNotificationCenter`; Android uses `intent-filter` / FCM; Frontend uses web URL routing; Backend file omits this section entirely. |
434
- | 6. Business + Tests | If sections 2 and 4 are both `null` AND `evidence.firebase[]` is empty → null. Otherwise produce use-case + mock stubs + per-platform test skeletons + shared Firebase events table. Reuse Red-Green-Refactor naming from `pipeline/rules/tdd.md`. |
434
+ | 6. Business + Tests | If sections 2 and 4 are both `null` AND `evidence.firebase[]` is empty → null. Otherwise produce use-case + mock stubs + per-platform test skeletons + shared Firebase events table. Reuse Red-Green-Refactor naming from `$HOME/.claude/rules/tdd.md`. |
435
435
  | 7. Development Plan | Always present. Tasks for the current platform only. Architecture standards come from `evidence.standards[]` filtered by platform (see Pass B step 1). **Reuse-first rule (Locked 11)**: when an item has `direct-match` in `evidence.repoEvidence[<repo>].buckets.<X>`, emit `Reuse existing <FQN> (<file>:<line>)` instead of `Add new <FQN>`. New-write task with a `direct-match` competitor becomes a Risk row. |
436
436
 
437
437
  #### Phase 2a - Pass B preview (Locked 26)
@@ -495,7 +495,7 @@ For each `platform` in `state.analysisSpec.platforms[]`:
495
495
  6. **Concatenate non-null sections in canonical order.** Numbering stays sequential `1..N` over the rendered set (omitted sections do not create gaps).
496
496
  7. **Schema validation** on the per-platform spec object:
497
497
  ```bash
498
- python3 -c "import json,jsonschema; jsonschema.validate(json.load(open('state/<feature>-<platform>.json')), json.load(open('pipeline/schemas/analysis-spec.schema.json')))"
498
+ python3 -c "import json,jsonschema; jsonschema.validate(json.load(open('state/<feature>-<platform>.json')), json.load(open('$HOME/.claude/schemas/analysis-spec.schema.json')))"
499
499
  ```
500
500
  On failure for any platform, surface the error and stop before Phase 3 (do not draft partial outputs).
501
501
 
@@ -662,11 +662,11 @@ When `phase == "cancelled_at_pass_b_preview"`:
662
662
  | `~/.claude/lib/extract-conventions.sh` | Phase 1c convention extractor (7 pattern groups, JSON output, confidence levels) |
663
663
  | `~/.claude/lib/figma-screenshot.sh` | Phase 2b Tier 2 Figma image downloader (REST API, section drill, 2x scale PNG, manifest.json) |
664
664
  | `~/.claude/lib/md2confluence-v3.py` | Phase 4 Confluence dispatch (multipart attachments, `<ac:image>` injection, mermaid macro + fallback, tooltip footnote macro, punctuation gate) |
665
- | `pipeline/skills/shared/external/humanizer/SKILL.md` | Phase 3 tone pass |
665
+ | `$HOME/.claude/skills/humanizer/SKILL.md` | Phase 3 tone pass |
666
666
  | 8-locale set (ar, de, en, es, fr, it, ru, tr) + localization-key naming (inline) | Section 10 localization generation |
667
667
  | `$HOME/.claude/multi-agent-refs/channels/confluence.md` | Phase 4 Confluence dispatch |
668
668
  | `$HOME/.claude/multi-agent-refs/channels/jira.md` | Phase 4 Jira dispatch |
669
- | `pipeline/rules/tdd.md` | Section 15 test naming |
669
+ | `$HOME/.claude/rules/tdd.md` | Section 15 test naming |
670
670
  | `$HOME/.claude/multi-agent-refs/analysis-template.md` | Template master copy + language matrix (v3 - 23 main sections + 3 footer) |
671
671
  | `$HOME/.claude/multi-agent-refs/conventions-defaults.md` | Pass B fallback defaults (4 platforms x 7 pattern groups) - applied when convention confidence is none AND standards binding is silent |
672
672
  | `$HOME/.claude/scripts/validate-analysis-doc.mjs` | Phase 4 pre-dispatch gate: deterministic check of the emitted per-platform doc (front-matter, never-omitted sections, humanizer punctuation, Full-mode BR traceability) |
@@ -121,7 +121,7 @@ For each open row in source order:
121
121
  | `$HOME/.claude/multi-agent-refs/analysis-template.md` | Section 20 / Section 23 table contracts, front-matter shape, omission re-flow |
122
122
  | `$HOME/.claude/multi-agent-refs/conventions-defaults.md` | `convention-fallback` default values per platform |
123
123
  | `~/.claude/lib/extract-conventions.sh` | fresh single-field extraction for convention-fallback candidates |
124
- | `pipeline/skills/shared/external/humanizer/SKILL.md` | tone reference for longer merged fragments (short fragments only need the punctuation gate) |
124
+ | `$HOME/.claude/skills/humanizer/SKILL.md` | tone reference for longer merged fragments (short fragments only need the punctuation gate) |
125
125
 
126
126
  ## Notes
127
127
 
@@ -62,13 +62,13 @@ Before dispatch, fail fast on non-iOS repos. Detect iOS context via the standard
62
62
 
63
63
  | Path | Reason |
64
64
  |------|--------|
65
- | `pipeline/skills/shared/external/xcode-build-orchestrator/SKILL.md` | The orchestrator this wrapper dispatches to |
66
- | `pipeline/skills/shared/external/xcode-build-benchmark/SKILL.md` | Baseline timing |
67
- | `pipeline/skills/shared/external/xcode-compilation-analyzer/SKILL.md` | Swift compile hotspots |
68
- | `pipeline/skills/shared/external/xcode-project-analyzer/SKILL.md` | Build settings / script phases / parallelism |
69
- | `pipeline/skills/shared/external/spm-build-analysis/SKILL.md` | SPM graph + plugins |
70
- | `pipeline/skills/shared/external/xcode-build-fixer/SKILL.md` | Apply approved fixes + re-benchmark |
71
- | `pipeline/skills/shared/external/NOTICE-xcode-build-skills.md` | MIT attribution + upstream pin |
65
+ | `$HOME/.claude/skills/xcode-build-orchestrator/SKILL.md` | The orchestrator this wrapper dispatches to |
66
+ | `$HOME/.claude/skills/xcode-build-benchmark/SKILL.md` | Baseline timing |
67
+ | `$HOME/.claude/skills/xcode-compilation-analyzer/SKILL.md` | Swift compile hotspots |
68
+ | `$HOME/.claude/skills/xcode-project-analyzer/SKILL.md` | Build settings / script phases / parallelism |
69
+ | `$HOME/.claude/skills/spm-build-analysis/SKILL.md` | SPM graph + plugins |
70
+ | `$HOME/.claude/skills/xcode-build-fixer/SKILL.md` | Apply approved fixes + re-benchmark |
71
+ | `$HOME/.claude/skills/NOTICE-xcode-build-skills.md` | MIT attribution + upstream pin |
72
72
 
73
73
  ## Notes
74
74
 
@@ -73,7 +73,7 @@ Rendered in English (`promptLanguage` is locked to `en`). Previous selections (`
73
73
  **Runs only when** (a) `agent-state.json` exists for the task AND (b) a Work Summary can be generated (same availability rule as the "Yapılan iş özeti" content row). Purpose: give the user an instant "what did this ship?" answer BEFORE they pick channels. They see the outcome first, then decide where to route it - instead of the reverse.
74
74
 
75
75
  ```bash
76
- preview=$(bash pipeline/scripts/render-work-summary.sh "$TASK_ID" 2>/dev/null || true)
76
+ preview=$(bash $HOME/.claude/scripts/render-work-summary.sh "$TASK_ID" 2>/dev/null || true)
77
77
  [ -n "$preview" ] && {
78
78
  printf '%s\n\n' "$preview"
79
79
  # Auto-tick workSummary content row when preview was shown.
@@ -240,7 +240,7 @@ If no cached report exists, skip silently - this is augmentation, not a gate.
240
240
 
241
241
  **Work summary generation:**
242
242
 
243
- Emitted only when `reportContent.workSummary === true` and at least one of (`agent-state.json`, `--branch` flag) is available. The shell adapter is `pipeline/scripts/render-work-summary.sh <taskId>`:
243
+ Emitted only when `reportContent.workSummary === true` and at least one of (`agent-state.json`, `--branch` flag) is available. The shell adapter is `$HOME/.claude/scripts/render-work-summary.sh <taskId>`:
244
244
 
245
245
  1. **Task header** - `taskId`, `branch`, `baseBranch`, `prNumber` from `agent-state.json` (or explicit flags for post-hoc invocation).
246
246
  2. **Scope delivered** - Phase 2 `planTodos[]` / `tasks[]` rendered as `✅` (status=done) or `⏳` (anything else) rows. Task id + title shown; `(deferred - rationale)` appended if the task's `status` is `"deferred"`.
@@ -278,7 +278,7 @@ Emitted only when `reportContent.costSummary === true` and tracker data is avail
278
278
 
279
279
  1. **Token tallies per phase** - read `.worktrees/{taskPath}/phase-tracker.json` (written by `phase-tracker.sh update` / `tokens` actions). If present, each phase row has `{tokens_in, tokens_out}`.
280
280
  2. **Fallback to OTel spans** - if tracker JSON has no token columns but `otel-spans.jsonl` exists (set `MULTI_AGENT_OTEL_SPANS=1` beforehand), aggregate `phase.tokens` spans by phase ID.
281
- 3. **USD estimate** - uses a static price table in `pipeline/scripts/cost-table.json` (model → $/Mtok_in, $/Mtok_out). Missing model → show ` - ` for USD, never block.
281
+ 3. **USD estimate** - uses a static price table in `$HOME/.claude/scripts/cost-table.json` (model → $/Mtok_in, $/Mtok_out). Missing model → show ` - ` for USD, never block.
282
282
 
283
283
  **Output template:**
284
284
 
@@ -293,7 +293,7 @@ Emitted only when `reportContent.costSummary === true` and tracker data is avail
293
293
  | **Total** | | **94,744** | **22,930** | **$2.04** |
294
294
  ```
295
295
 
296
- Generated by `pipeline/scripts/render-cost-summary.sh <task-id>` using prices from `pipeline/scripts/cost-table.json`. The channels adapter shells out to this renderer - doc table is illustrative only, runtime is authoritative.
296
+ Generated by `$HOME/.claude/scripts/render-cost-summary.sh <task-id>` using prices from `$HOME/.claude/scripts/cost-table.json`. The channels adapter shells out to this renderer - doc table is illustrative only, runtime is authoritative.
297
297
 
298
298
  **Precision rules:** tokens as thousand-separated integers. USD rounded to 2 dp (`printf '$%.2f'`). Rows with zero tokens dropped. If total USD is ` - ` (no price for any model), replace the total row USD cell with ` - ` and add a one-line footnote: `*USD unavailable - add model to cost-table.json*`.
299
299
 
@@ -469,7 +469,7 @@ Phase 7 passes a runtime state bundle: `{jiraId, prUrl, remoteType, taskType, fi
469
469
  | Claude Code | `/multi-agent:channels` | Slash namespace (colon) |
470
470
  | Copilot CLI | `multi-agent-channels` | Top-level command (dash-separated, no namespace support) |
471
471
 
472
- Both installations read the same source file (`pipeline/commands/multi-agent/channels/SKILL.md`) - `install.js --all` copies to:
472
+ Both installations read the same source file (`$HOME/.claude/commands/multi-agent/channels/SKILL.md`) - `install.js --all` copies to:
473
473
  - `~/.claude/commands/multi-agent/channels/SKILL.md`
474
474
  - `~/.copilot/commands/multi-agent-channels.md`
475
475
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- description: "Fast development mode: Init → Dev (Opus) → Test → Commit → Report. Analysis, planning, and review phases are skipped. Use when the work is already scoped and only development, test and commit are needed."
3
- description-tr: "Hızlı geliştirme modu: Init → Dev (Opus) → Test → Commit → Report. Analiz, planlama ve review fazları atlanır."
2
+ description: "Fast development mode: Init → Dev (Opus) → Review → Test → Commit → Report. Analysis and planning are skipped, review is not. Use when the work is already scoped but the result still has to be checked."
3
+ description-tr: "Hızlı geliştirme modu: Init → Dev (Opus) → Review → Test → Commit → Report. Analiz ve planlama atlanır, review atlanmaz."
4
4
  ---
5
5
 
6
6
  # multi-agent dev - Fast Development Mode (--dev)
@@ -21,28 +21,31 @@ description-tr: "Hızlı geliştirme modu: Init → Dev (Opus) → Test → Comm
21
21
  >
22
22
  > Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
23
23
 
24
- A 5-phase fast pipeline: Init → Dev → Test → Commit → Report. Development runs on the Opus model (top intelligence tier).
24
+ A 6-phase fast pipeline: Init → Dev → Review → Test → Commit → Report. Development runs on the Opus model (top intelligence tier).
25
25
 
26
26
  ## When to use it
27
27
  - Small changes, bug fixes, quick features
28
28
  - Simple tasks that don't need the full 8-phase pipeline
29
- - Routine work that does not require formal review
29
+ - Work that is already scoped, so analysis and planning buy nothing - the result is still reviewed
30
30
 
31
31
  ## Pipeline
32
32
 
33
33
  ```
34
34
  Phase 0: Init → project detection, worktree, branch, identity (full picker)
35
35
  Phase 3: Dev → direct development on Opus (TDD optional)
36
+ Phase 4: Review → deterministic gates + parallel review + triage
36
37
  Phase 5: Test → User Test (interactive simulator)
37
38
  Phase 6: Commit → commit + push + PR
38
39
  Phase 7: Report → channels (Jira / Confluence / PR / Wiki)
39
40
  ```
40
41
 
41
- `--dev` skips Phase 1 (Analysis), Phase 2 (Planning + Approval Gate), and Phase 4 (Review). Phase 3 Dev runs on **Opus**. Phase 0 picker, Phase 5 test, Phase 6 commit, and Phase 7 channels are identical to the full pipeline.
42
+ `--dev` skips Phase 1 (Analysis) and Phase 2 (Planning + Approval Gate). Phase 3 Dev runs on **Opus**. Phase 0 picker, Phase 4 review, Phase 5 test, Phase 6 commit, and Phase 7 channels are identical to the full pipeline.
42
43
 
43
44
  ## What `--dev` does NOT skip (required)
44
45
 
45
- `--dev` skips the LLM-heavy phases (Phase 1 Analysis, Phase 2 Planning + Approval, Phase 4 Review) and runs Phase 3 Dev on Opus. Phase 0 (Init), Phase 5 (Test), Phase 6 (Commit), and Phase 7 (Report + channels) are byte-for-byte the same as the full pipeline. User-facing prompts **always run** - they exist for audit, not speed.
46
+ `--dev` skips the two phases that front-load a task (Phase 1 Analysis, Phase 2 Planning + Approval) and runs Phase 3 Dev on Opus. Phase 0 (Init), Phase 4 (Review), Phase 5 (Test), Phase 6 (Commit), and Phase 7 (Report + channels) are byte-for-byte the same as the full pipeline. User-facing prompts **always run** - they exist for audit, not speed.
47
+
48
+ **Review is not a fast-mode casualty.** Skipping analysis means the run has less context, not that the output deserves less scrutiny: Phase 4 runs its deterministic gates, dispatches the parallel reviewers and triages their findings exactly as the full pipeline does. Accepted blocking findings loop back to Phase 3, capped at 3 iterations. Because Phase 1 never ran, Phase 4 substitutes a deterministic stack classifier for `detectedStack` and records every Phase-1-dependent step as `not-applicable`, so a step that could not run is distinguishable from a step that passed.
46
49
 
47
50
  ### Required user prompts (Phase 0)
48
51
 
@@ -155,9 +158,8 @@ No "pre-existing" claim is allowed without a baseline reproduce.
155
158
 
156
159
  - Phase 1 (Analysis → Opus deep-think + explore agents)
157
160
  - Phase 2 → Plan Approval Gate including clarification + approval
158
- - Phase 4 (Review → parallel + triage)
159
161
 
160
- Phase 0 (Init full picker), Phase 5 (User Test), Phase 6 (Commit), and Phase 7 (Report + channels) run exactly as in the full pipeline. Phase 3 Dev model is **Opus**.
162
+ That is the whole list. Phase 0 (Init full picker), Phase 4 (Review), Phase 5 (User Test), Phase 6 (Commit), and Phase 7 (Report + channels) run exactly as in the full pipeline. Phase 3 Dev model is **Opus**.
161
163
 
162
164
  ## Steps
163
165
 
@@ -187,25 +189,28 @@ Phase 0 (Init full picker), Phase 5 (User Test), Phase 6 (Commit), and Phase 7 (
187
189
 
188
190
  The dispatch is keyed on `agent-state.taskType`, written by Phase 0 Step 7 (`feedback_phase0_tasktype.md`). If the issue body contains a Figma URL, the type is `"component"` and 3a applies - no exception, even in `--dev`.
189
191
 
190
- 4. **Phase 5: User Test** - same as the full pipeline (interactive simulator / local-test prompt)
192
+ 4. **Phase 4: Review** - same as the full pipeline, per `$HOME/.claude/multi-agent-refs/phases/phase-4-review.md`: deterministic gates (build / lint / test / secrets / evidence), the parallel reviewer set (CLI-aware), and triage. Accepted blocking findings return to step 3 for rework, capped at 3 iterations per `operations.md`. Phase-1-dependent steps (1.8 Figma evidence, 2.8 visual conformance) are recorded as `not-applicable (no Phase 1 evidence)` rather than skipped silently.
193
+
194
+ 5. **Phase 5: User Test** - same as the full pipeline (interactive simulator / local-test prompt)
191
195
 
192
- 5. **Phase 6: Commit** - same as the full pipeline (commit + push + PR + shared-branch final confirm)
196
+ 6. **Phase 6: Commit** - same as the full pipeline (commit + push + PR + shared-branch final confirm). Phase 6 refuses to commit while an accepted blocking finding is unresolved.
193
197
 
194
- 6. **Phase 7: Report** - same as the full pipeline (channels prompt: Jira / Confluence / PR description / Wiki)
198
+ 7. **Phase 7: Report** - same as the full pipeline (channels prompt: Jira / Confluence / PR description / Wiki)
195
199
 
196
200
  ## Differences vs full pipeline
197
201
 
198
202
  | Aspect | Full (`/multi-agent`) | Dev (`/multi-agent:dev`) |
199
203
  |---------|---------------------|------------------------|
200
- | Phases | 8 (0-7) | 5 (0, 3, 5, 6, 7) - 1, 2, 4 skipped |
204
+ | Phases | 8 (0-7) | 6 (0, 3, 4, 5, 6, 7) - 1, 2 skipped |
201
205
  | Phase 3 Dev model | Sonnet | **Opus** |
202
206
  | Phase 1 Analysis (explore agents) | ✅ | ❌ |
203
207
  | Phase 2 Planning + Approval Gate | ✅ | ❌ |
204
- | Phase 4 Review (parallel + triage) | ✅ | ❌ |
208
+ | Phase 4 Review (parallel + triage) | ✅ | ✅ (same) |
209
+ | Phase 4 criteria source | Phase 1 `detectedStack` | deterministic stack classifier |
205
210
  | Phase 0 picker (account, repos, branch, ...) | ✅ | ✅ (same) |
206
211
  | Phase 5 User Test | ✅ | ✅ (same) |
207
212
  | Phase 7 channels (Jira / Confluence / PR / Wiki) | ✅ | ✅ (same) |
208
- | Duration | ~10-15 min | ~5-7 min |
213
+ | Duration | ~10-15 min | ~7-10 min |
209
214
  ## Required: Phase Tracker Contract
210
215
 
211
216
  **The phase tracker is mandatory** - the agent cannot skip it. Full spec: [`$HOME/.claude/multi-agent-refs/tracker-contract.md`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
@@ -218,7 +223,7 @@ Two channels run in parallel at every phase boundary:
218
223
  ```bash
219
224
  # Phase 0, very first shell call (every CLI):
220
225
  bash $HOME/.claude/scripts/phase-tracker.sh init "$TASK_ID"
221
- for p in "0:Init" "3:Dev" "5:Test" "6:Commit" "7:Report"; do
226
+ for p in "0:Init" "3:Dev" "4:Review" "5:Test" "6:Commit" "7:Report"; do
222
227
  bash $HOME/.claude/scripts/phase-tracker.sh add "${p%%:*}" "${p#*:}"
223
228
  done
224
229
  bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
@@ -238,7 +243,7 @@ In Claude Code the agent MUST also drive the native TaskList widget so the user
238
243
 
239
244
  ```text
240
245
  # Phase 0 startup - register one tile per phase (0..N), capture the taskId, persist it:
241
- for each phase in 0:Init, 3:Dev, 5:Test, 6:Commit, 7:Report:
246
+ for each phase in 0:Init, 3:Dev, 4:Review, 5:Test, 6:Commit, 7:Report:
242
247
  TaskCreate({ subject: "Phase <N>: <Name>", activeForm: "<doing-form>" })
243
248
  -> returns taskId
244
249
  bash $HOME/.claude/scripts/phase-tracker.sh meta <N> tasklist_id "<taskId>"
@@ -255,11 +260,11 @@ TaskUpdate({ taskId: <saved>, status: "completed" })
255
260
  bash $HOME/.claude/scripts/phase-tracker.sh update <N> completed
256
261
  ```
257
262
 
258
- `--dev` mode does NOT TaskCreate phases 1/2/4 - those are not part of the `--dev` phase set (`0:Init 3:Dev 5:Test 6:Commit 7:Report`). Only register tiles for the active set.
263
+ `--dev` mode does NOT TaskCreate phases 1/2 - those are not part of the `--dev` phase set (`0:Init 3:Dev 4:Review 5:Test 6:Commit 7:Report`). Only register tiles for the active set.
259
264
 
260
265
  #### TaskCreate ordering (strict)
261
266
 
262
- **All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For `--dev` that means: Phase 0 → Phase 3 → Phase 5 → Phase 6 → Phase 7. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
267
+ **All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For `--dev` that means: Phase 0 → Phase 3 → Phase 4 → Phase 5 → Phase 6 → Phase 7. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
263
268
 
264
269
  ### Visual channel - Copilot CLI / plain shell
265
270
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- description: "Fastest mode: Dev (Opus) plus Autopilot. Init → Dev → Commit → Report with zero confirmations. Use when a change is well understood and should go from start to commit with no questions asked."
3
- description-tr: "En hızlı mod: Dev (Opus) + Autopilot. Init → Dev → Commit → Report, sıfır onay."
2
+ description: "Fastest mode: Dev (Opus) plus Autopilot. Init → Dev → Review → Commit → Report with zero confirmations. Review still runs and auto-fixes blocking findings. Use when a change is well understood and should go from start to commit with no questions asked."
3
+ description-tr: "En hızlı mod: Dev (Opus) + Autopilot. Init → Dev → Review → Commit → Report, sıfır onay. Review koşar, blocking bulguları otomatik düzeltir."
4
4
  ---
5
5
 
6
6
  # multi-agent dev autopilot - Fastest Path
@@ -21,38 +21,44 @@ Dev mode + Autopilot combined: a 4-phase pipeline with no confirmations, end-to-
21
21
  ```
22
22
  Phase 0: Init → project detection, worktree, branch, identity
23
23
  Phase 3: Dev → direct development on Opus
24
+ Phase 4: Review → gates + parallel review + triage, auto-fix
24
25
  Phase 6: Commit → auto commit + push + PR (no confirmations)
25
26
  Phase 7: Report → short terminal summary
26
27
  ```
27
28
 
28
- **Skipped phases**: Analysis (1), Planning (2), Review (4), User Test (5).
29
+ **Skipped phases**: Analysis (1), Planning (2), User Test (5).
29
30
  **Skipped confirmations**: Plan Approval Gate (clarification + approval loop), test prompt, commit prompt, PR prompt.
30
31
 
31
32
  > If you want to talk through the plan, do not use this mode - pick `/multi-agent "task"` (normal) or any mode without `autopilot`. The Dev+Autopilot contract is: "ask nothing."
32
33
 
34
+ **Review runs here too, and asking nothing does not mean accepting anything.** Autopilot consumes the *confirmation* prompts, not the *quality* gates: Phase 4 reviews the diff and auto-fixes accepted blocking findings without asking. The contract holds because no question is put to the user - the run only halts when it cannot converge, which is the rework-storm trigger in `$HOME/.claude/multi-agent-refs/features/autopilot-circuit-breaker.md` (`maxReworkCycles = 3`).
35
+
33
36
  ## Steps
34
37
 
35
38
  1. **Parse input** - standard multi-agent input formats (Issue URL, Jira ID, free text)
36
39
  2. **Phase 0: Init** - set `"mode": "dev", "autopilot": true` in `agent-state.json`
37
- 3. **Phase 3: Dev** - write code directly on `claude-opus-4-8` and verify the build
38
- 4. **Phase 6: Commit** - auto commit + push + PR
39
- 5. **Phase 7: Report** - terminal summary
40
+ 3. **Phase 3: Dev** - write code directly on `claude-opus-5` and verify the build
41
+ 4. **Phase 4: Review** - gates, parallel reviewers, triage. Accepted blocking findings are fixed automatically (back to step 3), no prompt
42
+ 5. **Phase 6: Commit** - auto commit + push + PR
43
+ 6. **Phase 7: Report** - terminal summary
40
44
 
41
45
  ## Safety
42
46
 
43
47
  - Build failure → 3 retries; if it still fails → **pause** (ask the user)
48
+ - Review rework → 3 cycles; if blocking findings survive → **pause** (circuit breaker, no auto-commit)
44
49
  - Kill / Purge → always asks for confirmation (destructive)
45
50
 
46
51
  ## Differences
47
52
 
48
53
  | | Full | Dev | Autopilot | **Dev+Autopilot** |
49
54
  |--|------|-----|-----------|-------------------|
50
- | Phases | 8 | 4 | 8 | **4** |
55
+ | Phases | 8 | 6 | 8 | **5** |
51
56
  | Model | Sonnet | Opus | Sonnet | **Opus** |
52
57
  | Plan Approval Gate | ✅ (clarification + approval) | ❌ | ❌ | **❌** |
53
58
  | Confirmations (test / commit / PR) | Yes | Yes | No | **No** |
54
- | Review | Parallel + triage (CLI-aware) | None | Parallel + triage (CLI-aware) | **None** |
55
- | Estimated duration | ~12 min | ~5 min | ~10 min | **~3 min** |
59
+ | Review | Parallel + triage (CLI-aware) | Parallel + triage (CLI-aware) | Parallel + triage (CLI-aware) | **Parallel + triage, auto-fix** |
60
+ | Blocking finding | Fix loop, then ask | Fix loop, then ask | Auto-fix, breaker at 3 | **Auto-fix, breaker at 3** |
61
+ | Estimated duration | ~12 min | ~7 min | ~10 min | **~5 min** |
56
62
  ## Required: Phase Tracker Contract
57
63
 
58
64
  **The phase tracker is mandatory** - the agent cannot skip it. Full spec: [`$HOME/.claude/multi-agent-refs/tracker-contract.md`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
@@ -67,7 +73,7 @@ Two channels run in parallel at every phase boundary:
67
73
  ```bash
68
74
  # Phase 0, very first shell call (every CLI):
69
75
  bash $HOME/.claude/scripts/phase-tracker.sh init "$TASK_ID"
70
- for p in "0:Init" "3:Dev" "6:Commit" "7:Report"; do
76
+ for p in "0:Init" "3:Dev" "4:Review" "6:Commit" "7:Report"; do
71
77
  bash $HOME/.claude/scripts/phase-tracker.sh add "${p%%:*}" "${p#*:}"
72
78
  done
73
79
  bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
@@ -87,7 +93,7 @@ In Claude Code the agent MUST also drive the native TaskList widget so the user
87
93
 
88
94
  ```text
89
95
  # Phase 0 startup - register one tile per phase (0..N), capture the taskId, persist it:
90
- for each phase in 0:Init, 3:Dev, 6:Commit, 7:Report:
96
+ for each phase in 0:Init, 3:Dev, 4:Review, 6:Commit, 7:Report:
91
97
  TaskCreate({ subject: "Phase <N>: <Name>", activeForm: "<doing-form>" })
92
98
  -> returns taskId
93
99
  bash $HOME/.claude/scripts/phase-tracker.sh meta <N> tasklist_id "<taskId>"
@@ -104,11 +110,11 @@ TaskUpdate({ taskId: <saved>, status: "completed" })
104
110
  bash $HOME/.claude/scripts/phase-tracker.sh update <N> completed
105
111
  ```
106
112
 
107
- `--dev autopilot` mode does NOT TaskCreate phases 1/2/4/5 - those are not part of the `--dev autopilot` phase set (`0:Init 3:Dev 6:Commit 7:Report`). Only register tiles for the active set.
113
+ `--dev autopilot` mode does NOT TaskCreate phases 1/2/5 - those are not part of the `--dev autopilot` phase set (`0:Init 3:Dev 4:Review 6:Commit 7:Report`). Only register tiles for the active set.
108
114
 
109
115
  #### TaskCreate ordering (strict)
110
116
 
111
- **All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For `--dev autopilot` that means: Phase 0 → Phase 3 → Phase 6 → Phase 7. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
117
+ **All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For `--dev autopilot` that means: Phase 0 → Phase 3 → Phase 4 → Phase 6 → Phase 7. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
112
118
 
113
119
  ### Visual channel - Copilot CLI / plain shell
114
120
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- description: "Fast mode + local - Init → Dev(Opus) → Commit → Report, no worktree. Use when a change should be developed on the current branch without creating a worktree."
3
- description-tr: "Hızlı mod + lokal - Init → Dev(Opus) → Commit → Report, worktree yok."
2
+ description: "Fast mode + local - Init → Dev(Opus) → Review → Commit → Report, no worktree. Use when a change should be developed and reviewed on the current branch without creating a worktree."
3
+ description-tr: "Hızlı mod + lokal - Init → Dev(Opus) → Review → Commit → Report, worktree yok."
4
4
  allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, WebFetch, Skill
5
5
  ---
6
6
 
@@ -14,20 +14,21 @@ Dedicated form of the `--dev` + `--local` combination. A 4-phase fast pipeline (
14
14
 
15
15
  ```
16
16
  Phase 0: Init → project detection, branch check, state (NO worktree)
17
- Phase 3: Dev → direct development on Opus (Analysis + Planning + Review skipped)
17
+ Phase 3: Dev → direct development on Opus (Analysis + Planning skipped)
18
+ Phase 4: Review → deterministic gates + parallel review + triage
18
19
  Phase 6: Commit → pre-commit checkout prompt, commit + push + PR
19
20
  Phase 7: Report → Jira / Wiki + log + knowledge/memory
20
21
  ```
21
22
 
22
- `--dev local` skips Phase 1 (Analysis), Phase 2 (Planning + Approval Gate), Phase 4 (Review), and Phase 5 (User Test - local/autopilot variants skip the interactive test gate). It differs from `--dev` on two axes: no git worktree is created (development happens directly on the current branch in `$PROJECT_ROOT`), and the interactive User Test phase is skipped.
23
+ `--dev local` skips Phase 1 (Analysis), Phase 2 (Planning + Approval Gate), and Phase 5 (User Test - local/autopilot variants skip the interactive test gate). It differs from `--dev` on two axes: no git worktree is created (development happens directly on the current branch in `$PROJECT_ROOT`), and the interactive User Test phase is skipped. **Review is not skipped** - Phase 4 runs its gates, resolves the criteria the dev phase was supposed to honour, reviews in parallel and triages, and accepted blocking findings return to Phase 3 (3-iteration cap).
23
24
 
24
- > **Want the quality tail afterwards?** Since this mode skips Review + Test, run [`/multi-agent:finish`](../finish/SKILL.md) on the same branch when you're done to add parallel review, a build+test success gate, PR, and a Jira technical-analysis + test-scenario comment - without re-developing.
25
+ > **Already have work on the branch?** For changes developed outside the pipeline, or by hand, run [`/multi-agent:ship`](../ship/SKILL.md) on that branch: it puts the existing diff through the same review, adds a build+test success gate, opens the PR and posts the Jira technical-analysis + test-scenario comment - without re-developing.
25
26
 
26
27
  ## When to use it
27
28
 
28
- - Quick bug fix or small feature - review overhead is unnecessary
29
+ - Quick bug fix or small feature - analysis and planning buy nothing here
29
30
  - You're working on the current branch and don't want to switch worktrees
30
- - A change you trust - no need for multi-model review
31
+ - A well-understood change - you want it reviewed, not designed
31
32
  ## Required: Phase Tracker Contract
32
33
 
33
34
  **The phase tracker is mandatory** - the agent cannot skip it. Full spec: [`$HOME/.claude/multi-agent-refs/tracker-contract.md`]($HOME/.claude/multi-agent-refs/tracker-contract.md).
@@ -42,7 +43,7 @@ Two channels run in parallel at every phase boundary:
42
43
  ```bash
43
44
  # Phase 0, very first shell call (every CLI):
44
45
  bash $HOME/.claude/scripts/phase-tracker.sh init "$TASK_ID"
45
- for p in "0:Init" "3:Dev" "6:Commit" "7:Report"; do
46
+ for p in "0:Init" "3:Dev" "4:Review" "6:Commit" "7:Report"; do
46
47
  bash $HOME/.claude/scripts/phase-tracker.sh add "${p%%:*}" "${p#*:}"
47
48
  done
48
49
  bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
@@ -62,7 +63,7 @@ In Claude Code the agent MUST also drive the native TaskList widget so the user
62
63
 
63
64
  ```text
64
65
  # Phase 0 startup - register one tile per phase (0..N), capture the taskId, persist it:
65
- for each phase in 0:Init, 3:Dev, 6:Commit, 7:Report:
66
+ for each phase in 0:Init, 3:Dev, 4:Review, 6:Commit, 7:Report:
66
67
  TaskCreate({ subject: "Phase <N>: <Name>", activeForm: "<doing-form>" })
67
68
  -> returns taskId
68
69
  bash $HOME/.claude/scripts/phase-tracker.sh meta <N> tasklist_id "<taskId>"
@@ -79,11 +80,11 @@ TaskUpdate({ taskId: <saved>, status: "completed" })
79
80
  bash $HOME/.claude/scripts/phase-tracker.sh update <N> completed
80
81
  ```
81
82
 
82
- `--dev local` mode does NOT TaskCreate phases 1/2/4/5 - those are not part of the `--dev local` phase set (`0:Init 3:Dev 6:Commit 7:Report`). Only register tiles for the active set.
83
+ `--dev local` mode does NOT TaskCreate phases 1/2/5 - those are not part of the `--dev local` phase set (`0:Init 3:Dev 4:Review 6:Commit 7:Report`). Only register tiles for the active set.
83
84
 
84
85
  #### TaskCreate ordering (strict)
85
86
 
86
- **All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For `--dev local` that means: Phase 0 → Phase 3 → Phase 6 → Phase 7. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
87
+ **All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For `--dev local` that means: Phase 0 → Phase 3 → Phase 4 → Phase 6 → Phase 7. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
87
88
 
88
89
  ### Visual channel - Copilot CLI / plain shell
89
90
 
@@ -98,8 +99,9 @@ Do NOT call TaskCreate on these CLIs - the tool does not exist and the call fa
98
99
 
99
100
  Routes to the orchestrator with `--dev --local` flags. Apply the `$HOME/.claude/commands/multi-agent/dev/SKILL.md` pipeline in local mode:
100
101
  - Phase 0: skip worktree creation, continue on the current branch
101
- - Phase 1 (Analysis), Phase 2 (Planning + Approval Gate), Phase 4 (Review), and Phase 5 (User Test) are skipped (`--dev` + local/autopilot drop the interactive test gate)
102
+ - Phase 1 (Analysis), Phase 2 (Planning + Approval Gate), and Phase 5 (User Test) are skipped (`--dev` + local/autopilot drop the interactive test gate)
102
103
  - Phase 3: develop on Opus (instead of the Sonnet TDD cycle)
104
+ - Phase 4: review as in the full pipeline, on the local branch diff; accepted blocking findings loop back to Phase 3, capped at 3 iterations
103
105
  - Phase 6: commit + push + PR (the local checkout prompt is natural in local mode - you're already there; no worktree removal needed, code is already in `$PROJECT_ROOT`)
104
106
  - Phase 7: report + channels (same as `--dev`)
105
107
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- description: "Fastest + local - Dev(Opus) + autopilot, no worktree, zero interaction. Use when a change should be developed on the current branch with no worktree and no prompts."
3
- description-tr: "En hızlı + lokal - Dev(Opus) + autopilot, worktree yok, sıfır etkileşim."
2
+ description: "Fastest + local - Dev(Opus) + Review + autopilot, no worktree, zero interaction. Review runs and auto-fixes blocking findings. Use when a change should be developed on the current branch with no worktree and no prompts."
3
+ description-tr: "En hızlı + lokal - Dev(Opus) + Review + autopilot, worktree yok, sıfır etkileşim. Review koşar, blocking bulguları otomatik düzeltir."
4
4
  allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet, WebFetch, Skill
5
5
  ---
6
6
 
@@ -15,25 +15,30 @@ The triple `--dev` + `--local` + `autopilot` - the fastest form available. Zer
15
15
  ```
16
16
  Phase 0: Init → project detection, branch check, state (NO worktree, NO confirmation)
17
17
  Phase 3: Dev → direct development on Opus (automatic)
18
+ Phase 4: Review → gates + parallel review + triage, auto-fix
18
19
  Phase 6: Commit → auto commit + push + PR (no local checkout prompt)
19
20
  Phase 7: Report → Jira / Wiki + log + knowledge/memory
20
21
  ```
21
22
 
23
+ Phase 1 (Analysis), Phase 2 (Planning + Approval Gate) and Phase 5 (User Test) are skipped. Review is not: accepted blocking findings are fixed automatically without a prompt, and the run halts rather than committing if they survive 3 rework cycles.
24
+
22
25
  ## When to use it
23
26
 
24
- - Routine change you trust that needs no review
27
+ - Routine change you trust - you want it reviewed, not discussed
25
28
  - A CI / batch environment running the pipeline automatically - no user interaction
26
- - Prototype / spike - you care about speed, quality gates can wait
29
+ - Prototype / spike - you care about speed, and the review that runs costs you no prompts
27
30
 
28
31
  ## When NOT to use it
29
32
 
30
- - Production-bound change - at minimum use `--dev` (without autopilot)
31
- - Security-sensitive code - autopilot bypasses the safety gates
32
- - A first big refactor - human review is required
33
+ - Production-bound change - at minimum use `--dev` (without autopilot), so you see the findings before the commit
34
+ - Security-sensitive code - autopilot decides for you which accepted findings to fix, and commits when they are gone
35
+ - A first big refactor - human review is required, and machine review does not substitute for it
33
36
 
34
37
  ## Delegation
35
38
 
36
- Routes to the orchestrator with `--dev --local autopilot` flags. The pipeline contract matches `dev-autopilot.md` exactly, with Phase 0 Step 8 (worktree creation) skipped.
39
+ Routes to the orchestrator with `--dev --local autopilot` flags. The pipeline contract matches [`dev-autopilot/SKILL.md`](../dev-autopilot/SKILL.md) exactly, with Phase 0 Step 8 (worktree creation) skipped.
40
+
41
+ > **Already have work on the branch?** For a diff that exists without a pipeline run behind it, [`/multi-agent:ship`](../ship/SKILL.md) applies the same review plus a build+test gate before the PR.
37
42
 
38
43
  ## Examples
39
44
 
@@ -57,7 +62,7 @@ Two channels run in parallel at every phase boundary:
57
62
  ```bash
58
63
  # Phase 0, very first shell call (every CLI):
59
64
  bash $HOME/.claude/scripts/phase-tracker.sh init "$TASK_ID"
60
- for p in "0:Init" "3:Dev" "6:Commit" "7:Report"; do
65
+ for p in "0:Init" "3:Dev" "4:Review" "6:Commit" "7:Report"; do
61
66
  bash $HOME/.claude/scripts/phase-tracker.sh add "${p%%:*}" "${p#*:}"
62
67
  done
63
68
  bash $HOME/.claude/scripts/phase-tracker.sh update 0 in_progress
@@ -77,7 +82,7 @@ In Claude Code the agent MUST also drive the native TaskList widget so the user
77
82
 
78
83
  ```text
79
84
  # Phase 0 startup - register one tile per phase (0..N), capture the taskId, persist it:
80
- for each phase in 0:Init, 3:Dev, 6:Commit, 7:Report:
85
+ for each phase in 0:Init, 3:Dev, 4:Review, 6:Commit, 7:Report:
81
86
  TaskCreate({ subject: "Phase <N>: <Name>", activeForm: "<doing-form>" })
82
87
  -> returns taskId
83
88
  bash $HOME/.claude/scripts/phase-tracker.sh meta <N> tasklist_id "<taskId>"
@@ -94,11 +99,11 @@ TaskUpdate({ taskId: <saved>, status: "completed" })
94
99
  bash $HOME/.claude/scripts/phase-tracker.sh update <N> completed
95
100
  ```
96
101
 
97
- `--dev local autopilot` mode does NOT TaskCreate phases 1/2/4/5 - those are not part of the `--dev local autopilot` phase set (`0:Init 3:Dev 6:Commit 7:Report`). Only register tiles for the active set.
102
+ `--dev local autopilot` mode does NOT TaskCreate phases 1/2/5 - those are not part of the `--dev local autopilot` phase set (`0:Init 3:Dev 4:Review 6:Commit 7:Report`). Only register tiles for the active set.
98
103
 
99
104
  #### TaskCreate ordering (strict)
100
105
 
101
- **All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For `--dev local autopilot` that means: Phase 0 → Phase 3 → Phase 6 → Phase 7. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
106
+ **All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied.** For `--dev local autopilot` that means: Phase 0 → Phase 3 → Phase 4 → Phase 6 → Phase 7. The native widget renders by creation order, not by phase number - out-of-order calls produce visually scrambled tile stacks. Full ordering contract in `$HOME/.claude/multi-agent-refs/tracker-contract.md` section "TaskCreate ordering (strict)".
102
107
 
103
108
  ### Visual channel - Copilot CLI / plain shell
104
109
 
@@ -62,7 +62,7 @@ deletes nothing until you confirm.
62
62
  residue in the index (`.worktrees/{id}` recorded as a "Subproject commit"
63
63
  entry by a pre-guard `git add -A`), and a missing `.worktrees/` line in
64
64
  `.git/info/exclude`. Registered, healthy worktrees are NEVER touched -
65
- those belong to `/multi-agent:finish` / `/multi-agent:kill`.
65
+ those belong to `/multi-agent:ship` / `/multi-agent:kill`.
66
66
 
67
67
  - Output says `nothing to do` -> skip silently, no question.
68
68
  - Otherwise surface a second `AskUserQuestion` (in `outputLanguage`):