@mmerterden/multi-agent-pipeline 18.0.0 → 19.1.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.
- package/CHANGELOG.md +287 -0
- package/README.md +36 -20
- package/README.tr.md +14 -16
- package/docs/adr/0002-instruction-driven-flag.md +1 -0
- package/docs/adr/0005-lazy-phase-docs.md +11 -1
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +1 -0
- package/docs/adr/0010-own-code-graph.md +1 -0
- package/docs/adr/0014-six-phase-consolidation.md +134 -0
- package/docs/adr/README.md +2 -1
- package/docs/architecture.md +37 -38
- package/docs/best-practices.md +1 -1
- package/docs/ecosystem.md +46 -27
- package/docs/engineering.md +1 -1
- package/docs/facts.json +61 -0
- package/docs/features.md +55 -54
- package/docs/performance.md +5 -5
- package/docs/recovery-guide.md +17 -17
- package/docs/token-budget-history.md +3 -1
- package/index.js +2 -2
- package/install/_codex-agents.mjs +1 -1
- package/install/templates/claude-hooks.json +1 -1
- package/install/templates/codex-instructions.md +1 -1
- package/install/templates/copilot-instructions.md +28 -28
- package/manifest.json +234 -216
- package/package.json +2 -2
- package/pipeline/agents/dev-critic.md +7 -7
- package/pipeline/commands/figma-to-swiftui.md +1 -1
- package/pipeline/commands/multi-agent/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/analysis/SKILL.md +15 -15
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +7 -7
- package/pipeline/commands/multi-agent/channels/SKILL.md +15 -15
- package/pipeline/commands/multi-agent/diff-explain/SKILL.md +6 -6
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/graph/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/help/SKILL.md +62 -62
- package/pipeline/commands/multi-agent/language/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/local/SKILL.md +11 -11
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +13 -13
- package/pipeline/commands/multi-agent/log/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/model/SKILL.md +69 -0
- package/pipeline/commands/multi-agent/refactor/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/resume/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/resume-local/SKILL.md +19 -17
- package/pipeline/commands/multi-agent/review/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/review-analysis/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/route-off/SKILL.md +36 -0
- package/pipeline/commands/multi-agent/route-on/SKILL.md +74 -0
- package/pipeline/commands/multi-agent/route-status/SKILL.md +56 -0
- package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/status/SKILL.md +5 -5
- package/pipeline/commands/multi-agent/steer/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/sync/SKILL.md +12 -13
- package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
- package/pipeline/lib/credential-inventory.sh +1 -1
- package/pipeline/lib/fetch-fortify.sh +1 -1
- package/pipeline/lib/model-dispatch.sh +140 -0
- package/pipeline/lib/model-rung.sh +142 -0
- package/pipeline/lib/outbound-gate.mjs +14 -0
- package/pipeline/lib/phase-schema.mjs +88 -0
- package/pipeline/lib/plan-todos.sh +5 -5
- package/pipeline/lib/route-state.sh +161 -0
- package/pipeline/lib/run-paths.sh +2 -2
- package/pipeline/multi-agent-refs/_account-picker.md +1 -1
- package/pipeline/multi-agent-refs/_dev-context.md +6 -6
- package/pipeline/multi-agent-refs/_input-parser.md +1 -1
- package/pipeline/multi-agent-refs/analysis/evidence.md +2 -11
- package/pipeline/multi-agent-refs/analysis/intake.md +7 -7
- package/pipeline/multi-agent-refs/analysis/locked.md +48 -22
- package/pipeline/multi-agent-refs/analysis/redesign.md +1 -1
- package/pipeline/multi-agent-refs/analysis/render.md +10 -10
- package/pipeline/multi-agent-refs/analysis/resolve.md +1 -1
- package/pipeline/multi-agent-refs/analysis/review.md +2 -2
- package/pipeline/multi-agent-refs/analysis/synthesis.md +13 -7
- package/pipeline/multi-agent-refs/analysis-template-corporate.md +9 -9
- package/pipeline/multi-agent-refs/analysis-template.md +19 -19
- package/pipeline/multi-agent-refs/android-guide.md +1 -1
- package/pipeline/multi-agent-refs/audit-guide.md +13 -13
- package/pipeline/multi-agent-refs/channels/issue-comment.md +2 -2
- package/pipeline/multi-agent-refs/channels/jira.md +3 -3
- package/pipeline/multi-agent-refs/channels/pr.md +4 -4
- package/pipeline/multi-agent-refs/channels/wiki.md +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +8 -8
- package/pipeline/multi-agent-refs/conventions-defaults.md +2 -2
- package/pipeline/multi-agent-refs/cross-cli-contract.md +31 -6
- package/pipeline/multi-agent-refs/features/analysis-jira.md +1 -1
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +4 -4
- package/pipeline/multi-agent-refs/features/code-graph.md +5 -5
- package/pipeline/multi-agent-refs/features/design-conformance.md +1 -1
- package/pipeline/multi-agent-refs/features/dev-critic.md +3 -3
- package/pipeline/multi-agent-refs/features/doctor.md +3 -3
- package/pipeline/multi-agent-refs/features/external-context-injection.md +3 -3
- package/pipeline/multi-agent-refs/features/maturity-followup.md +3 -3
- package/pipeline/multi-agent-refs/features/model-fallback.md +41 -5
- package/pipeline/multi-agent-refs/features/plan-todos.md +1 -1
- package/pipeline/multi-agent-refs/features/repo-map.md +1 -1
- package/pipeline/multi-agent-refs/features/review-delta.md +3 -3
- package/pipeline/multi-agent-refs/features/review-multi-repo.md +2 -2
- package/pipeline/multi-agent-refs/features/scope-check.md +4 -4
- package/pipeline/multi-agent-refs/features/skill-conformance.md +2 -2
- package/pipeline/multi-agent-refs/features/stack-skill-routing.md +1 -1
- package/pipeline/multi-agent-refs/features/url-enrichment.md +1 -1
- package/pipeline/multi-agent-refs/features/verify-by-test.md +4 -4
- package/pipeline/multi-agent-refs/features/visual-evidence.md +19 -19
- package/pipeline/multi-agent-refs/features/worktree-finalize.md +6 -6
- package/pipeline/multi-agent-refs/issue-jira-triad.md +10 -10
- package/pipeline/multi-agent-refs/knowledge.md +11 -11
- package/pipeline/multi-agent-refs/multi-repo-integration-build.md +13 -13
- package/pipeline/multi-agent-refs/payload-contracts.md +8 -8
- package/pipeline/multi-agent-refs/phases/log-format.md +10 -10
- package/pipeline/multi-agent-refs/phases/modes.md +30 -30
- package/pipeline/multi-agent-refs/phases/operations.md +8 -8
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +24 -24
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +599 -0
- package/pipeline/multi-agent-refs/phases/{phase-3-dev.md → phase-2-dev.md} +129 -49
- package/pipeline/multi-agent-refs/phases/{phase-4-review.md → phase-3-review.md} +225 -107
- package/pipeline/multi-agent-refs/phases/{phase-6-commit.md → phase-4-commit.md} +23 -23
- package/pipeline/multi-agent-refs/phases/{phase-7-report.md → phase-5-report.md} +29 -29
- package/pipeline/multi-agent-refs/phases.md +44 -48
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/progress-contract.md +6 -6
- package/pipeline/multi-agent-refs/readiness-review.md +1 -1
- package/pipeline/multi-agent-refs/rules.md +7 -7
- package/pipeline/multi-agent-refs/swiftui-guide.md +2 -2
- package/pipeline/multi-agent-refs/tracker-contract.md +31 -32
- package/pipeline/multi-agent-refs/wiki-capture.md +14 -14
- package/pipeline/preferences-template.json +9 -1
- package/pipeline/rules/figma-pipeline.md +8 -8
- package/pipeline/rules/outside-the-pipeline.md +1 -1
- package/pipeline/schemas/agent-state.schema.json +50 -50
- package/pipeline/schemas/analysis-output.schema.json +3 -3
- package/pipeline/schemas/analysis-spec.schema.json +2 -2
- package/pipeline/schemas/autopilot-config.schema.json +1 -1
- package/pipeline/schemas/code-graph.schema.json +1 -1
- package/pipeline/schemas/criteria-manifest.schema.json +1 -1
- package/pipeline/schemas/dev-critic-output.schema.json +1 -1
- package/pipeline/schemas/diff-risk.schema.json +1 -1
- package/pipeline/schemas/figma-project-config.schema.json +1 -1
- package/pipeline/schemas/migrations/prefs-2.4.0-to-2.5.0.mjs +2 -2
- package/pipeline/schemas/migrations/prefs-2.6.0-to-2.7.0.mjs +31 -0
- package/pipeline/schemas/migrations/state-2.1.0-to-2.2.0.mjs +129 -0
- package/pipeline/schemas/phases.json +105 -0
- package/pipeline/schemas/plan-todos.schema.json +5 -5
- package/pipeline/schemas/planning-output.schema.json +1 -1
- package/pipeline/schemas/prefs.schema.json +102 -58
- package/pipeline/schemas/reviewer-output.schema.json +3 -3
- package/pipeline/schemas/route-config.schema.json +74 -0
- package/pipeline/schemas/scope-check.schema.json +1 -1
- package/pipeline/schemas/secret-patterns.json +124 -0
- package/pipeline/schemas/test-gap.schema.json +1 -1
- package/pipeline/schemas/token-budget.json +12 -18
- package/pipeline/schemas/triage-output.schema.json +6 -6
- package/pipeline/scripts/README.md +3 -3
- package/pipeline/scripts/_code-graph.mjs +2 -2
- package/pipeline/scripts/_run-paths.mjs +2 -2
- package/pipeline/scripts/_smoke-root.sh +1 -1
- package/pipeline/scripts/aggregate-metrics.mjs +1 -1
- package/pipeline/scripts/build-references.mjs +2 -2
- package/pipeline/scripts/bulk-read.sh +10 -1
- package/pipeline/scripts/capture-flush.sh +8 -8
- package/pipeline/scripts/capture-resume.sh +3 -3
- package/pipeline/scripts/classify-plan-safety.mjs +1 -1
- package/pipeline/scripts/cost-table.json +8 -1
- package/pipeline/scripts/diff-explain.mjs +1 -1
- package/pipeline/scripts/doctor.mjs +3 -3
- package/pipeline/scripts/gc-abandoned.sh +3 -3
- package/pipeline/scripts/gc-tmp.sh +1 -1
- package/pipeline/scripts/gc-worktrees.sh +1 -1
- package/pipeline/scripts/gen-facts.mjs +280 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +32 -37
- package/pipeline/scripts/gen-ref-toc.mjs +1 -1
- package/pipeline/scripts/graph-report.mjs +1 -1
- package/pipeline/scripts/jira-attach.sh +1 -1
- package/pipeline/scripts/learn-from-transcripts.mjs +1 -1
- package/pipeline/scripts/learning-curve.mjs +2 -2
- package/pipeline/scripts/log-metric.sh +17 -4
- package/pipeline/scripts/memory-save.sh +1 -1
- package/pipeline/scripts/migrate-prefs.mjs +22 -5
- package/pipeline/scripts/phase-banner.sh +20 -20
- package/pipeline/scripts/phase-tracker.sh +12 -12
- package/pipeline/scripts/plan-coverage-gate.mjs +2 -2
- package/pipeline/scripts/pre-commit-check.sh +30 -1
- package/pipeline/scripts/render-agent-log-cost.sh +1 -1
- package/pipeline/scripts/render-work-summary.sh +3 -3
- package/pipeline/scripts/review-file-filter.mjs +1 -1
- package/pipeline/scripts/run-aggregator.mjs +13 -6
- package/pipeline/scripts/run-metrics.mjs +1 -1
- package/pipeline/scripts/runs-index.mjs +11 -1
- package/pipeline/scripts/scan-skills.sh +26 -0
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +6 -6
- package/pipeline/scripts/smoke-schema-validation.sh +26 -7
- package/pipeline/scripts/token-budget-report.mjs +13 -2
- package/pipeline/scripts/triage-memory.mjs +2 -2
- package/pipeline/scripts/validate-analysis-doc.mjs +274 -43
- package/pipeline/scripts/validate-planning.mjs +1 -1
- package/pipeline/scripts/validate-reviewer.mjs +1 -1
- package/pipeline/scripts/validate-state.mjs +45 -5
- package/pipeline/scripts/validate-triage.mjs +3 -3
- package/pipeline/scripts/verify-citations.mjs +1 -1
- package/pipeline/scripts/worktree-finalize.sh +5 -5
- package/pipeline/scripts/write-state.mjs +32 -0
- package/pipeline/skills/.skill-manifest.json +38 -22
- package/pipeline/skills/.skills-index.json +49 -5
- package/pipeline/skills/shared/README.md +10 -6
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +8 -8
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +8 -8
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +81 -82
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +5 -5
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +25 -23
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +8 -8
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +6 -6
- package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +71 -0
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-resume-local/SKILL.md +7 -7
- package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +39 -0
- package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +76 -0
- package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +59 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +5 -5
- package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +6 -5
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +1 -1
- package/pipeline/skills/shared/external/signal-community/SKILL.md +8 -1
- package/pipeline/skills/skills-index.md +8 -4
- package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +0 -263
- package/pipeline/multi-agent-refs/phases/phase-2-planning.md +0 -344
- package/pipeline/multi-agent-refs/phases/phase-5-test.md +0 -182
|
@@ -75,13 +75,13 @@ multi-agent "LoginView dark mode fix" autopilot
|
|
|
75
75
|
|
|
76
76
|
| Phase | Normal | Autopilot |
|
|
77
77
|
|-------|--------|-----------|
|
|
78
|
-
| Phase
|
|
79
|
-
| Phase 5 (User Test) | "Want to test it?" → wait | Skip → go straight to Phase
|
|
80
|
-
| Phase
|
|
81
|
-
| Phase
|
|
78
|
+
| Phase 1 (Plan Approval Gate) | Clarification (max 2 rounds) + approval loop - user replies `onayla`/`iptal`/free-text | **Gate skip** - log the plan, go straight to Phase 3 (autopilot contract: zero interaction) |
|
|
79
|
+
| Phase 5 (User Test) | "Want to test it?" → wait | Skip → go straight to Phase 4 |
|
|
80
|
+
| Phase 4 (Commit) | "Want to commit?" → wait | Automatic commit + push |
|
|
81
|
+
| Phase 4 (PR) | "Want to open a PR?" → wait | Automatically create the PR |
|
|
82
82
|
|
|
83
83
|
**What NEVER skips (even in autopilot):**
|
|
84
|
-
- Phase
|
|
84
|
+
- Phase 3 Review → if there is a blocking finding, return to Phase 3, fix + rebuild automatically (safety)
|
|
85
85
|
- Kill/Purge confirmations → destructive operations always ask
|
|
86
86
|
- Build fail → fix + rebuild automatically (max 3 retries). If it still fails after 3 retries → pause, ask the user
|
|
87
87
|
|
|
@@ -108,8 +108,8 @@ ID is stored in `agent-state.json` and shown in `multi-agent status`:
|
|
|
108
108
|
|
|
109
109
|
| ID | Jira | Branch | Phase | Status |
|
|
110
110
|
|----|------|--------|-------|--------|
|
|
111
|
-
| #1 | PROJ-12345 | feature/PROJ-12345-... |
|
|
112
|
-
| #2 | PROJ-67890 | feature/PROJ-67890-... | 1/
|
|
111
|
+
| #1 | PROJ-12345 | feature/PROJ-12345-... | 2/5 Dev | ⚡ in progress |
|
|
112
|
+
| #2 | PROJ-67890 | feature/PROJ-67890-... | 1/5 Analysis | 📊 scanning |
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
ID counter stored at `.worktrees/.multi-agent-counter` (persists across sessions).
|
|
@@ -181,14 +181,14 @@ When `multi-agent purge` is called:
|
|
|
181
181
|
|
|
182
182
|
When `multi-agent resume [id]` is called:
|
|
183
183
|
|
|
184
|
-
1. **Find state file**: `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-state.json` - that is where Phase 0 writes it, not inside the worktree. A task finalized by Phase
|
|
184
|
+
1. **Find state file**: `$HOME/.claude/logs/multi-agent/{project}/{task-id}/agent-state.json` - that is where Phase 0 writes it, not inside the worktree. A task finalized by Phase 4 keeps its state at `.../{task-id}/artifacts/agent-state.json`, so look there too before reporting not-found.
|
|
185
185
|
- If no `id` given, take the most recent task dir with `status != "done"`
|
|
186
186
|
2. **Read state**: Parse `agent-state.json` → determine last completed phase
|
|
187
187
|
3. **Restore context**: Read `agent-log.md` for previous findings:
|
|
188
|
-
- Phase 1 analysis findings → reuse in Phase 2+
|
|
189
|
-
- Phase
|
|
190
|
-
- Phase
|
|
191
|
-
- Phase
|
|
188
|
+
- Phase 1 analysis findings → reuse in Phase 2+ (Dev onwards)
|
|
189
|
+
- Phase 1 plan/todos → reuse in Phase 2+
|
|
190
|
+
- Phase 2 code changes → already on disk in worktree
|
|
191
|
+
- Phase 3 review findings → reuse if re-reviewing
|
|
192
192
|
4. **Resume from next phase**: Skip completed phases, start from `currentPhase + 1`
|
|
193
193
|
5. **Log**: `🔄 Resumed PROJ-{id} from Phase {N}`
|
|
194
194
|
|
|
@@ -204,28 +204,29 @@ This works across sessions because:
|
|
|
204
204
|
|
|
205
205
|
Every agent persona under `$HOME/.claude/agents/*.md` declares a `preferredModel` frontmatter field. The orchestrator MUST honor it on every dispatch, on both Claude Code and Copilot CLI - cross-CLI parity is enforced by `smoke-cross-cli-behavior.sh`.
|
|
206
206
|
|
|
207
|
-
|
|
208
|
-
|---|---|---|
|
|
209
|
-
| `explorer` | `sonnet` | Scan/pattern work, cost-efficient without quality loss |
|
|
210
|
-
| `code-reviewer` | `fable` | Reviewer 1; Phase 4 sets Reviewer 2 `opus`, Reviewer 3 `sonnet` |
|
|
211
|
-
| `security-auditor` | `opus` | False-negative cost is high; opus reduces miss rate |
|
|
212
|
-
| `ios-architect` | `fable` | Deep module/protocol/migration reasoning |
|
|
213
|
-
| `android-architect` | `fable` | Gradle modules, Compose stability, Hilt graphs |
|
|
214
|
-
| `backend-architect` | `fable` | API + migration + scaling reasoning |
|
|
207
|
+
Each persona file carries its own `modelRationale`; this is the rung only.
|
|
215
208
|
|
|
216
|
-
|
|
209
|
+
| Persona | `preferredModel` |
|
|
210
|
+
|---|---|
|
|
211
|
+
| `explorer` | `sonnet` |
|
|
212
|
+
| `code-reviewer` | `fable` (Reviewer 1; Phase 3 sets Reviewer 2 `opus`, Reviewer 3 `sonnet`) |
|
|
213
|
+
| `security-auditor` | `opus` |
|
|
214
|
+
| `ios-architect` / `android-architect` / `backend-architect` | `fable` |
|
|
215
|
+
|
|
216
|
+
**Dispatch contract:**
|
|
217
217
|
|
|
218
218
|
```bash
|
|
219
219
|
persona_file="$HOME/.claude/agents/${persona}.md"
|
|
220
220
|
pref_model="$(awk '/^preferredModel:/ {print $2; exit}' "$persona_file")"
|
|
221
|
-
override="${PHASE_MODEL_OVERRIDE:-}" #
|
|
222
|
-
|
|
221
|
+
override="${PHASE_MODEL_OVERRIDE:-}" # per-dispatch, e.g. Phase 3 Reviewer 3 → sonnet
|
|
222
|
+
routed="${override:-$("$HOME/.claude/lib/model-dispatch.sh" subagent --persona "$persona" --phase "$currentPhase" --task-kind "$taskType" --default "${pref_model:-opus}" 2>/dev/null)}"
|
|
223
|
+
resolved_model="${routed:-${pref_model:-opus}}"
|
|
223
224
|
|
|
224
225
|
export CLAUDE_CODE_SUBAGENT_MODEL="$resolved_model"
|
|
225
|
-
# Claude Code honors the env var; Copilot CLI
|
|
226
|
+
# Claude Code honors the env var; Copilot CLI also passes it as --model.
|
|
226
227
|
```
|
|
227
228
|
|
|
228
|
-
**Precedence:** per-dispatch `PHASE_MODEL_OVERRIDE` > persona `preferredModel` > global default (`opus`).
|
|
229
|
+
**Precedence:** per-dispatch `PHASE_MODEL_OVERRIDE` > `prefs.global.modelRouting` rule > persona `preferredModel` > global default (`opus`). Routing here is Anthropic-only: features/model-fallback.md "Routing at dispatch".
|
|
229
230
|
|
|
230
231
|
**Observability:** emit `phase.agent.dispatch` OTel span with `{persona, resolved_model, override_source}` attributes when `MULTI_AGENT_OTEL_SPANS=1` (see `phase-tracker.sh`).
|
|
231
232
|
|
|
@@ -255,7 +256,7 @@ matched_skills=$(node "$HOME/.claude/scripts/match-skills.mjs" \
|
|
|
255
256
|
--limit 12 \
|
|
256
257
|
--json)
|
|
257
258
|
|
|
258
|
-
# Inject only matched skills[] into subagent prompts for Phase
|
|
259
|
+
# Inject only matched skills[] into subagent prompts for Phase 1-3.
|
|
259
260
|
# Skills not in the matched list are not loaded - saves ~10K-30K tokens
|
|
260
261
|
# per subagent dispatch on small tasks.
|
|
261
262
|
```
|
|
@@ -289,16 +290,14 @@ and the copy named a path the code had stopped using.
|
|
|
289
290
|
|
|
290
291
|
Every user-facing phase title - TaskCreate cards, `phase-banner.sh` headers, and any status line rendered to the terminal - MUST come from this table. Phase labels are English on every host (`promptLanguage` is fixed to `en`; picker text follows its own matrix):
|
|
291
292
|
|
|
292
|
-
| # | Label
|
|
293
|
-
|
|
294
|
-
| 0 | Phase 0: Init
|
|
295
|
-
| 1 | Phase 1:
|
|
296
|
-
| 2 | Phase 2:
|
|
297
|
-
| 3 | Phase 3:
|
|
298
|
-
| 4 | Phase 4:
|
|
299
|
-
| 5 | Phase 5:
|
|
300
|
-
| 6 | Phase 6: Commit & PR |
|
|
301
|
-
| 7 | Phase 7: Report |
|
|
293
|
+
| # | Label |
|
|
294
|
+
|---|----------------------|
|
|
295
|
+
| 0 | Phase 0: Init |
|
|
296
|
+
| 1 | Phase 1: Plan |
|
|
297
|
+
| 2 | Phase 2: Dev |
|
|
298
|
+
| 3 | Phase 3: Review |
|
|
299
|
+
| 4 | Phase 4: Commit & PR |
|
|
300
|
+
| 5 | Phase 5: Report |
|
|
302
301
|
|
|
303
302
|
**Render rule:**
|
|
304
303
|
|
|
@@ -313,7 +312,7 @@ Every user-facing phase title - TaskCreate cards, `phase-banner.sh` headers, a
|
|
|
313
312
|
All TaskCreate calls fire in strict phase-number order BEFORE any TaskUpdate is applied (Claude Code path; Copilot CLI does not have a TaskList widget so this rule is Claude-only). The native widget renders by creation order, not by phase-number metadata - out-of-order calls produce visually scrambled tile stacks (e.g. `1 ✓ · 2 ✓ · 4 ✓ · 0 ▶ · 3 ☐`) even when the underlying state file is correct. Pre-marking phases as completed/skipped before Phase 0 starts is FORBIDDEN: register the tile in order with default `pending` status, then flip via TaskUpdate when the phase actually short-circuits. Mode-specific phase sets:
|
|
314
313
|
|
|
315
314
|
- `multi-agent`: 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7
|
|
316
|
-
- `multi-agent-local`, `multi-agent-autopilot`, `multi-agent-local-autopilot`: 0 → 1 → 2 → 3 → 4 →
|
|
315
|
+
- `multi-agent-local`, `multi-agent-autopilot`, `multi-agent-local-autopilot`: 0 → 1 → 2 → 3 → 4 → 5 (the interactive Phase 5 gate needs a worktree checkout and an attended run)
|
|
317
316
|
- `multi-agent-analysis`: 0 → 1 → 2 → 4 → 6 → 7 (no code, so no Dev and no Test)
|
|
318
317
|
|
|
319
318
|
Depth decides WHICH of the command's set is registered. The tracker boots at Step -1, long before the depth question can be asked, so it registers Phase 0 alone and the remaining tiles are created at Step 7.5 once the answer is known - a Short run never draws an Analysis or Planning tile.
|
|
@@ -421,26 +420,26 @@ Full contract: `refs/tracker-contract.md` section "TaskCreate ordering (strict)"
|
|
|
421
420
|
|
|
422
421
|
**IMPORTANT**: Update `agent-state.json` at EVERY phase transition. This file is the resume source of truth.
|
|
423
422
|
|
|
424
|
-
### Phase 1:
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
423
|
+
### Phase 1: Plan
|
|
424
|
+
Two halves, one phase, one approval gate (Phases 1 and 2 until 19.0.0).
|
|
425
|
+
|
|
426
|
+
**1a - Analysis** (claude-sonnet-5, `explorer` persona)
|
|
427
|
+
1. Launch **explore agents** (parallel) to scan the codebase: related files, existing patterns and conventions, potential impact areas
|
|
429
428
|
2. Optionally launch **security-auditor** agent for pre-check
|
|
430
429
|
3. Summarize findings
|
|
431
|
-
4. Log: `📊 Phase 1:
|
|
430
|
+
4. Log: `📊 Phase 1: Plan (analysis) - {N} files identified, {summary}`
|
|
432
431
|
|
|
433
|
-
|
|
432
|
+
**1b - Planning** (claude-fable-5)
|
|
434
433
|
1. Create task breakdown → todos with dependencies
|
|
435
434
|
2. Launch **ios-architect** agent for architecture review (if structural changes)
|
|
436
435
|
3. Determine development approach per todo (new file, modify, refactor)
|
|
437
|
-
4. Log: `🧠 Phase
|
|
438
|
-
5. **Plan Approval Gate** (Full + interactive only - a Short run has no plan, autopilot may not ask). Full flow in `refs/phases/phase-
|
|
436
|
+
4. Log: `🧠 Phase 1: Plan - {N} todos created`
|
|
437
|
+
5. **Plan Approval Gate** (Full + interactive only - a Short run has no plan, autopilot may not ask). Full flow in `refs/phases/phase-1-plan.md` Step 5:
|
|
439
438
|
- **5a - Clarification** (conditional, max 2 rounds): if the Jira/issue description is ambiguous (vague acceptance, UI task without Figma, API task without endpoint contract, `ambiguityScore >= 2`, parent-story scope drift), ask structured questions before rendering the plan. User answers → plan regenerated. If it is still unclear after the 2nd round, render the plan with a "best-effort" banner.
|
|
440
439
|
- **5b - Approval loop**: render plan → user: `onayla`/`iptal`/free-text. A free-text edit request → the planning model (Fable) revises the plan → show it again. No iteration cap; user controls exit via `onayla` or `iptal`.
|
|
441
|
-
- Persist `clarificationRounds`, `clarificationQuestions`, `clarificationAnswers`, `planIterations`, `planApprovedAt`, `planEditRequests` to `state.phases["
|
|
440
|
+
- Persist `clarificationRounds`, `clarificationQuestions`, `clarificationAnswers`, `planIterations`, `planApprovedAt`, `planEditRequests` to `state.phases["1"]`.
|
|
442
441
|
|
|
443
|
-
### Phase
|
|
442
|
+
### Phase 2: Dev (claude-sonnet-5)
|
|
444
443
|
For each todo (respecting dependency order):
|
|
445
444
|
1. Update todo status: `in_progress`
|
|
446
445
|
2. **TDD cycle**:
|
|
@@ -450,31 +449,31 @@ For each todo (respecting dependency order):
|
|
|
450
449
|
3. Run build: `xcodebuild` via **task agent**
|
|
451
450
|
4. If build fails → fix → rebuild (max 3 attempts, track `retryCount` in `agent-state.json`)
|
|
452
451
|
5. Update todo status: `done`
|
|
453
|
-
6. Log: `⚡ Phase
|
|
452
|
+
6. Log: `⚡ Phase 2: {todo-id} - Test ✅ Build ✅`
|
|
454
453
|
|
|
455
|
-
### Phase
|
|
454
|
+
### Phase 3: Review (parallel + triage)
|
|
456
455
|
0. **Diff Risk Scoring (advisory, v8.3+)** - before reviewer dispatch run `node $HOME/.claude/scripts/diff-risk-score.mjs --base "$BASE_BRANCH" --top 5` and inject the top-N risk-ranked files as a `${PRIORITY_FILES}` block into each reviewer's prompt. Heuristic, deterministic, sub-second, never gates the pipeline. Disabled when `prefs.global.diffRiskAdvisory = false`. Signals: security paths (×3), schema migrations (×4), public API surfaces (×2), no-test-change (×2.5), complexity delta (×1.5), UI-critical paths (×1.5), loc changed (×1).
|
|
457
456
|
1. Launch **code-reviewer** agents in parallel. Reviewer set depends on which CLI is hosting the pipeline:
|
|
458
457
|
- **Claude Code** (3 reviewers): `claude-fable-5` (deep security + architecture) + `claude-opus-5` (edge cases, different perspective) + `claude-sonnet-5` (quality + correctness)
|
|
459
458
|
- **Copilot CLI** (3 reviewers): `gpt-5.4` (edge cases, different perspective) + `claude-opus-5` + `claude-sonnet-5` (Fable 5 is not offered on Copilot CLI)
|
|
460
459
|
- Triage: single top-tier pass over merged findings (`claude-fable-5` on Claude Code, `claude-opus-5` on Copilot CLI)
|
|
461
460
|
2. Collect findings, classify:
|
|
462
|
-
- 🔴 **Blocking** → must fix → back to Phase
|
|
461
|
+
- 🔴 **Blocking** → must fix → back to Phase 2 (max 3 iterations)
|
|
463
462
|
- 🟡 **Important** → fix and re-review
|
|
464
463
|
- 🟢 **Suggestion** → apply if reasonable
|
|
465
|
-
3. Log: `🔍 Phase
|
|
464
|
+
3. Log: `🔍 Phase 3: Review - {consensus}`
|
|
466
465
|
|
|
467
|
-
|
|
468
|
-
Lets the user
|
|
466
|
+
#### Phase 3 user test (optional, interactive)
|
|
467
|
+
Lets the user test the code before the PR. The prompt MUST say that yes **removes the worktree and checks the branch out locally**, or the side effect is implicit.
|
|
469
468
|
|
|
470
|
-
0. **Test Gap Report (advisory, v8.3+)** - before the local-checkout prompt run `node $HOME/.claude/scripts/test-gap-scan.mjs --base "$BASE_BRANCH" --stack <ios|android|python|node>` to surface public symbols added in this branch that have no paired test. Heuristic, deterministic, sub-second, never gates by default. iOS `*View.swift` / Android `@Composable` symbols default to `important` severity; other public API additions to `suggestion`. Optional gating via `prefs.testGap.blockingThreshold` (loops back to Phase
|
|
469
|
+
0. **Test Gap Report (advisory, v8.3+)** - before the local-checkout prompt run `node $HOME/.claude/scripts/test-gap-scan.mjs --base "$BASE_BRANCH" --stack <ios|android|python|node>` to surface public symbols added in this branch that have no paired test. Heuristic, deterministic, sub-second, never gates by default. iOS `*View.swift` / Android `@Composable` symbols default to `important` severity; other public API additions to `suggestion`. Optional gating via `prefs.testGap.blockingThreshold` (loops back to Phase 2 rework when the important+blocking count exceeds the threshold). Disabled when `prefs.testGap.enabled = false`.
|
|
471
470
|
1. **Ask** with a native `AskUserQuestion` picker (never a typed y/N prompt). The options MUST make the local-checkout side effect explicit - testing removes the worktree and checks the branch out into the main repo:
|
|
472
471
|
- `question`: "Check out locally to test now?" (rendered in `outputLanguage`)
|
|
473
472
|
- `header`: "Test" (English, <=12 chars)
|
|
474
473
|
- `options`:
|
|
475
474
|
- `{ label: "Test now", description: "Removes the worktree and checks the branch out into the main repo for Xcode / manual test" }`
|
|
476
|
-
- `{ label: "Skip", description: "Stay in the worktree and go to Phase
|
|
477
|
-
- **Skip** → go to Phase
|
|
475
|
+
- `{ label: "Skip", description: "Stay in the worktree and go to Phase 4" }`
|
|
476
|
+
- **Skip** → go to Phase 4
|
|
478
477
|
- **Test now** → continue:
|
|
479
478
|
2. **Remove the worktree and switch to the branch** (automatic):
|
|
480
479
|
```bash
|
|
@@ -491,18 +490,18 @@ Lets the user physically test the code before opening a PR. The prompt MUST make
|
|
|
491
490
|
• Xcode → open the app's `.xcworkspace` → Cmd+B → Cmd+U
|
|
492
491
|
• Manual test on the Simulator
|
|
493
492
|
|
|
494
|
-
✅ "tamam" → proceeds to Phase
|
|
495
|
-
❌ "fix: ..." → worktree is recreated, returns to Phase
|
|
493
|
+
✅ "tamam" → proceeds to Phase 4
|
|
494
|
+
❌ "fix: ..." → worktree is recreated, returns to Phase 2
|
|
496
495
|
```
|
|
497
496
|
4. **Pause and wait**: Wait for the user's response
|
|
498
497
|
5. **If a fix is needed**:
|
|
499
498
|
- Recreate the worktree: `git worktree add .worktrees/PROJ-{id} {branch-name}`
|
|
500
|
-
- Return to Phase
|
|
501
|
-
6. Log: `🧪 Phase
|
|
499
|
+
- Return to Phase 2
|
|
500
|
+
6. Log: `🧪 Phase 3: Review (user test) - {result}`
|
|
502
501
|
|
|
503
502
|
> ⚠️ Commits live on the branch - removing the worktree does NOT delete the commits.
|
|
504
503
|
|
|
505
|
-
### Phase
|
|
504
|
+
### Phase 4: Commit & PR
|
|
506
505
|
|
|
507
506
|
**Project-specific commit strategy:**
|
|
508
507
|
|
|
@@ -513,7 +512,7 @@ Lets the user physically test the code before opening a PR. The prompt MUST make
|
|
|
513
512
|
2. Run `/figma-iteration-commit {ComponentName}`
|
|
514
513
|
- Build verification, test, key sync, code review, submodule commits to `iteration/develop`, push with rebase-retry, issue housekeeping, auto-unblock dependents - the skill handles all of it
|
|
515
514
|
- Do NOT commit manually - the skill manages everything
|
|
516
|
-
3. Log: `📦 Phase
|
|
515
|
+
3. Log: `📦 Phase 4: figma-iteration-commit - {ComponentName}`
|
|
517
516
|
|
|
518
517
|
#### my-app / generic
|
|
519
518
|
1. **Ask**: "Want to commit?"
|
|
@@ -524,15 +523,15 @@ Lets the user physically test the code before opening a PR. The prompt MUST make
|
|
|
524
523
|
- Author: resolved from `prefs.global.identities[]` (e.g. `Ada Lovelace <ada@example.com>`) - NEVER hardcode.
|
|
525
524
|
4. Push to remote
|
|
526
525
|
5. **Ask**: "Want to open a Pull Request?"
|
|
527
|
-
- **No** → go to Phase
|
|
526
|
+
- **No** → go to Phase 5 (only commit + push will have been done)
|
|
528
527
|
- **Yes** → create the PR (target: source branch)
|
|
529
528
|
6. **Issue body update** (if GitHub Issue exists):
|
|
530
529
|
- Fill PR links in issue body: `- **common:** {PR URL}`, `- **uicomponents:** {PR URL}`
|
|
531
530
|
- Update Progress flags: `Implementation 🟢`, `Testing 🟢`, `Code Connect 🟢`
|
|
532
531
|
- Use `gh issue edit {issueNo} --body "{updated body}"` - preserve all existing sections
|
|
533
|
-
7. Log: `📦 Phase
|
|
532
|
+
7. Log: `📦 Phase 4: Commit {sha} - PR #{number}`
|
|
534
533
|
|
|
535
|
-
### Phase
|
|
534
|
+
### Phase 5 Report Step 2: WIKI + Figma Screenshots (for component tasks with GitHub Issue)
|
|
536
535
|
|
|
537
536
|
Skip this sub-step if the task is NOT a component implementation (e.g., bug fix, refactor).
|
|
538
537
|
|
|
@@ -566,9 +565,9 @@ Skip this sub-step if the task is NOT a component implementation (e.g., bug fix,
|
|
|
566
565
|
git push origin HEAD:master
|
|
567
566
|
```
|
|
568
567
|
7. **Update issue Wiki flag**: Set `Wiki` → `🟢` in issue body
|
|
569
|
-
8. Log: `📖 Phase
|
|
568
|
+
8. Log: `📖 Phase 5 Step 2: Wiki - {ComponentName}.md + {ComponentName}-iOS.md + screenshot`
|
|
570
569
|
|
|
571
|
-
### Phase
|
|
570
|
+
### Phase 5: Report
|
|
572
571
|
1. Finalize `agent-log.md` with ALL sections:
|
|
573
572
|
- **Timeline table**: phase, agent, model, duration, status, detail
|
|
574
573
|
- **Agent Activity Report**: per-agent call count, total duration, models used, skill count
|
|
@@ -586,7 +585,7 @@ Skip this sub-step if the task is NOT a component implementation (e.g., bug fix,
|
|
|
586
585
|
📖 Wiki: {ComponentName}.md pushed to wiki master
|
|
587
586
|
📋 Full report: ~/.claude/logs/multi-agent/{project}/{task-id}/agent-log.md
|
|
588
587
|
```
|
|
589
|
-
3. Log: `📋 Phase
|
|
588
|
+
3. Log: `📋 Phase 5: Report complete`
|
|
590
589
|
|
|
591
590
|
---
|
|
592
591
|
|
|
@@ -635,27 +634,27 @@ Sub-agents have embedded skills in their `.agent.md` files. Each agent is pre-lo
|
|
|
635
634
|
|
|
636
635
|
| Agent | Embedded Skills | When Activated |
|
|
637
636
|
|-------|----------------|----------------|
|
|
638
|
-
| **code-reviewer** | Code Review Excellence, Security Audit, Performance Review, TDD Verification, Error Detective | Phase
|
|
639
|
-
| **ios-architect** | Spec-Driven Architecture, Context Management, Multi-Agent Coordination, API Design, Performance Architecture, Design System Governance | Phase
|
|
640
|
-
| **security-auditor** | iOS Security Deep Dive, App Store Review Gates, Third-Party SDK Risk, Error Detective (Security) | Phase 1:
|
|
637
|
+
| **code-reviewer** | Code Review Excellence, Security Audit, Performance Review, TDD Verification, Error Detective | Phase 3: Review |
|
|
638
|
+
| **ios-architect** | Spec-Driven Architecture, Context Management, Multi-Agent Coordination, API Design, Performance Architecture, Design System Governance | Phase 1: Plan |
|
|
639
|
+
| **security-auditor** | iOS Security Deep Dive, App Store Review Gates, Third-Party SDK Risk, Error Detective (Security) | Phase 1: Plan (analysis half, pre-check) + Phase 3: Review |
|
|
641
640
|
|
|
642
641
|
### Phase → Agent → Skills Flow
|
|
643
642
|
|
|
644
643
|
```
|
|
645
|
-
Phase 1:
|
|
644
|
+
Phase 1: Plan - analysis half
|
|
646
645
|
├─ explore agents (no skills needed - pure file reading)
|
|
647
646
|
└─ security-auditor agent
|
|
648
647
|
└─ Skills: iOS Security Deep Dive, App Store Review Gates, SDK Risk
|
|
649
648
|
|
|
650
|
-
Phase
|
|
649
|
+
Phase 1: Plan - planning half
|
|
651
650
|
└─ ios-architect agent
|
|
652
651
|
└─ Skills: Spec-Driven Architecture, API Design, Performance Architecture
|
|
653
652
|
|
|
654
|
-
Phase
|
|
653
|
+
Phase 2: Dev
|
|
655
654
|
└─ Ana agent (reads copilot-instructions.md directly)
|
|
656
655
|
└─ TDD, token rules, code style - from global instructions
|
|
657
656
|
|
|
658
|
-
Phase
|
|
657
|
+
Phase 3: Review (parallel + triage)
|
|
659
658
|
Claude Code (3 parallel):
|
|
660
659
|
├─ code-reviewer (claude-opus) → all 5 review skills
|
|
661
660
|
└─ code-reviewer (claude-sonnet) → all 5 review skills
|
|
@@ -671,13 +670,13 @@ Phase 4: Review (parallel + triage)
|
|
|
671
670
|
When calling sub-agents, the ana agent SHOULD add task-specific context to the prompt:
|
|
672
671
|
|
|
673
672
|
```
|
|
674
|
-
For code-reviewer in Phase
|
|
673
|
+
For code-reviewer in Phase 3:
|
|
675
674
|
"Review this diff for PROJ-{id}. Focus areas based on analysis:
|
|
676
675
|
- {files changed summary from Phase 1}
|
|
677
|
-
- {architecture decisions from Phase
|
|
676
|
+
- {architecture decisions from Phase 1}
|
|
678
677
|
- {specific risk areas identified}"
|
|
679
678
|
|
|
680
|
-
For ios-architect in Phase
|
|
679
|
+
For ios-architect in Phase 1:
|
|
681
680
|
"Evaluate architecture for PROJ-{id}. Context:
|
|
682
681
|
- {task description from Jira/GitHub}
|
|
683
682
|
- {affected modules from Phase 1 analysis}
|
|
@@ -697,9 +696,9 @@ When `multi-agent status` is called, show:
|
|
|
697
696
|
|
|
698
697
|
| ID | Jira | Branch | Phase | Status | Duration |
|
|
699
698
|
|----|------|--------|-------|--------|----------|
|
|
700
|
-
| #1 | PROJ-12345 | feature/PROJ-12345-... |
|
|
701
|
-
| #2 | PROJ-67890 | feature/PROJ-67890-... |
|
|
702
|
-
| #3 | PROJ-11111 | feature/PROJ-11111-... |
|
|
699
|
+
| #1 | PROJ-12345 | feature/PROJ-12345-... | 2/5 Dev | ⚡ todo-2 in progress | 4m |
|
|
700
|
+
| #2 | PROJ-67890 | feature/PROJ-67890-... | 3/5 Review | 🔍 Waiting consensus | 7m |
|
|
701
|
+
| #3 | PROJ-11111 | feature/PROJ-11111-... | 5/5 DONE | ✅ Complete | 12m |
|
|
703
702
|
|
|
704
703
|
💡 kill #2 | log #1 | resume #3
|
|
705
704
|
```
|
|
@@ -17,9 +17,9 @@ Run the task end-to-end with no confirmations.
|
|
|
17
17
|
| Phase | Normal | Autopilot |
|
|
18
18
|
|-----|--------|-----------|
|
|
19
19
|
| Phase 2 (Plan) | "Shall I continue?" → wait | Go straight to Phase 3 |
|
|
20
|
-
| Phase 5 (Test) | "Do you want to test?" → wait | Skip → Phase
|
|
21
|
-
| Phase
|
|
22
|
-
| Phase
|
|
20
|
+
| Phase 5 (Test) | "Do you want to test?" → wait | Skip → Phase 4 |
|
|
21
|
+
| Phase 4 (Commit) | "Shall I commit?" → wait | Automatic commit + push |
|
|
22
|
+
| Phase 4 (PR) | "Shall I open a PR?" → wait | Create PR automatically |
|
|
23
23
|
|
|
24
24
|
## What is NEVER skipped
|
|
25
25
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multi-agent-channels
|
|
3
3
|
language: en
|
|
4
|
-
description: "Multi-channel reporter - Jira/Confluence/Wiki/PR description. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbucket PR PUT. Phase
|
|
4
|
+
description: "Multi-channel reporter - Jira/Confluence/Wiki/PR description. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbucket PR PUT. Phase 5 delegates to this skill; users can invoke post-hoc by Jira ID / PR URL / branch."
|
|
5
5
|
user-invocable: true
|
|
6
6
|
argument-hint: '<Jira-id | PR-url | #N | Jira-url> [--channels pr,jira,confluence,wiki] [--content normal,technical,test,auto-diff,note] [--message "..."] [--message-file path] [--dry-run] [--append] [--ready]'
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# multi-agent-channels - Multi-Channel Reporter
|
|
10
10
|
|
|
11
|
-
> **TLDR** - Single entry point for posting task reports to external channels. Supports Jira, Confluence, Wiki (component-only), and PR description updates. Multi-select channels × multi-select content sources. Phase
|
|
11
|
+
> **TLDR** - Single entry point for posting task reports to external channels. Supports Jira, Confluence, Wiki (component-only), and PR description updates. Multi-select channels × multi-select content sources. Phase 5 of the pipeline delegates to this skill; users can also invoke it post-hoc by Jira ID / PR URL / branch.
|
|
12
12
|
>
|
|
13
13
|
> **Replaces the old enrich skill in v5.7+** - all enrich capabilities (diff auto-summarize, manual mode, reviewer-preserving Bitbucket PR PUT) are preserved and extended with two additional channels (Confluence, Wiki).
|
|
14
14
|
|
|
@@ -39,7 +39,7 @@ multi-agent-channels PROJ-12345 --dry-run # preview, no POST
|
|
|
39
39
|
1. **Target resolution** - Parse argument, classify (Jira-id, Jira-url, PR-url GitHub or Bitbucket, GitHub-issue-number, empty→cwd+branch). Resolve linked entities (Jira→PR, PR→Jira). Detect remote type.
|
|
40
40
|
2. **Context source detection** - auto-pick best available: pipeline log (`$HOME/.claude/logs/multi-agent/<project>/<task-id>/agent-log.md` matching jiraId), PR diff (`gh pr diff` or Bitbucket `/diff?contextLines=5`), or manual `--message`.
|
|
41
41
|
3. **Menu (multi-select)** - channel + content, previous selections pre-ticked from `prefs.global.reportChannels` + `prefs.global.reportContent`. Greyed-out rules per context availability.
|
|
42
|
-
4. **Mode short-circuit** - `--channels X,Y` + `--content A,B` flags skip menu. Autopilot ALWAYS pauses at the menu (v5.7+ Phase
|
|
42
|
+
4. **Mode short-circuit** - `--channels X,Y` + `--content A,B` flags skip menu. Autopilot ALWAYS pauses at the menu (v5.7+ Phase 5 exception).
|
|
43
43
|
5. **Generator** - for each selected content source, produce a section body. Humanizer pass per channel separately.
|
|
44
44
|
6. **Body preview + approval gate** - interactive runs render every selected channel's final body and ask Approve & post / Edit (loop) / Skip channels / Cancel BEFORE any external write. Skipped only by autopilot and `--dry-run`. What is posted is byte-identical to the approved preview.
|
|
45
45
|
7. **Channel dispatch** - parallel adapter calls, never before the gate resolves: PR description (reviewer-preserving PUT on Bitbucket), Jira comment (wiki markup), Confluence page (storage format + parent page), Wiki (component adapter - Case A scope multi-select or Case B precondition menu).
|
|
@@ -69,7 +69,7 @@ Rendered in English (`promptLanguage` is locked to `en`).
|
|
|
69
69
|
**Greyed-out rules:**
|
|
70
70
|
- Wiki unselectable unless `state.taskType === "component"` AND `figmaConfig.wiki.enabled === true`.
|
|
71
71
|
- Normal analiz + Test senaryoları unselectable if no pipeline log found.
|
|
72
|
-
- Teknik analiz unselectable if no Phase
|
|
72
|
+
- Teknik analiz unselectable if no Phase 1 planning log AND no PR diff.
|
|
73
73
|
- Auto-diff unselectable if no PR found.
|
|
74
74
|
- Manuel not always available.
|
|
75
75
|
|
|
@@ -192,9 +192,9 @@ forgotten, and that is how the selector above shipped.
|
|
|
192
192
|
|
|
193
193
|
### Technical Details ← if "Teknik analiz" selected
|
|
194
194
|
#### Changes
|
|
195
|
-
{Per changed-file-group, what changed + why - from Phase
|
|
195
|
+
{Per changed-file-group, what changed + why - from Phase 2 dev log}
|
|
196
196
|
#### Architecture
|
|
197
|
-
{Structural decisions, pattern changes - from Phase
|
|
197
|
+
{Structural decisions, pattern changes - from Phase 1 plan}
|
|
198
198
|
#### Dependencies
|
|
199
199
|
{New imports / frameworks / packages - from git diff --stat, or "None"}
|
|
200
200
|
|
|
@@ -290,16 +290,16 @@ Target length: < 80 lines (fits one screen). Auto-diff capped at 5 lines per sec
|
|
|
290
290
|
| Jira token missing/expired | Token Save Flow inline; skip on user-skip |
|
|
291
291
|
| Wiki preconditions not met | Case B menu per `refs/wiki-capture.md` |
|
|
292
292
|
|
|
293
|
-
## Phase
|
|
293
|
+
## Phase 5 delegation contract
|
|
294
294
|
|
|
295
|
-
Phase
|
|
295
|
+
Phase 5 builds a state bundle and invokes this skill internally. Responsibilities:
|
|
296
296
|
|
|
297
297
|
| Who | What |
|
|
298
298
|
|---|---|
|
|
299
|
-
| Phase
|
|
299
|
+
| Phase 5 | Progress tracker (3 sub-steps), agent-log finalization, knowledge+memory capture, telemetry emission |
|
|
300
300
|
| `multi-agent-channels` | All external delivery: PR description update, Jira comment, Confluence page, Wiki pages |
|
|
301
301
|
|
|
302
|
-
**State bundle** passed from Phase
|
|
302
|
+
**State bundle** passed from Phase 5:
|
|
303
303
|
```json
|
|
304
304
|
{
|
|
305
305
|
"jiraId": "PROJ-12345",
|
|
@@ -313,7 +313,7 @@ Phase 7 builds a state bundle and invokes this skill internally. Responsibilitie
|
|
|
313
313
|
}
|
|
314
314
|
```
|
|
315
315
|
|
|
316
|
-
**Autopilot pause contract:** Phase
|
|
316
|
+
**Autopilot pause contract:** Phase 5 ALWAYS pauses at the channels menu - 30-min timeout → session ends cleanly → resumable via `/multi-agent:resume`. Full contract in `refs/phases/modes.md` + `refs/phases/phase-5-report.md`.
|
|
317
317
|
|
|
318
318
|
## Cross-CLI parity
|
|
319
319
|
|
|
@@ -322,12 +322,12 @@ Prompts MUST be byte-identical between Claude and Copilot. `smoke-cross-cli-beha
|
|
|
322
322
|
Progress emission on Copilot (no native TaskCreate UI):
|
|
323
323
|
|
|
324
324
|
```bash
|
|
325
|
-
bash ~/.copilot/scripts/phase-tracker.sh sub
|
|
325
|
+
bash ~/.copilot/scripts/phase-tracker.sh sub 5 1 "Channels dispatch" in_progress
|
|
326
326
|
# ... adapter runs ...
|
|
327
|
-
bash ~/.copilot/scripts/phase-tracker.sh sub
|
|
327
|
+
bash ~/.copilot/scripts/phase-tracker.sh sub 5 1 "Channels dispatch" completed
|
|
328
328
|
```
|
|
329
329
|
|
|
330
|
-
Same shape as Phase
|
|
330
|
+
Same shape as Phase 5 sub-step tracking.
|
|
331
331
|
|
|
332
332
|
## Examples
|
|
333
333
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multi-agent-diff-explain
|
|
3
3
|
language: en
|
|
4
|
-
description: "Map Phase
|
|
4
|
+
description: "Map Phase 3 triage findings to branch diff lines. Read-only post-hoc command, used after review to answer 'which finding lines up with which code change'. Use when a review finding has to be traced to the exact lines that caused it."
|
|
5
5
|
user-invocable: true
|
|
6
6
|
argument-hint: "[#task-id | --triage <path> | --state <path>] [--branch <name>] [--base <name>]"
|
|
7
7
|
---
|
|
@@ -10,12 +10,12 @@ argument-hint: "[#task-id | --triage <path> | --state <path>] [--branch <name>]
|
|
|
10
10
|
|
|
11
11
|
**Input**: $ARGUMENTS
|
|
12
12
|
|
|
13
|
-
Maps the Phase
|
|
13
|
+
Maps the Phase 3 triage output (`accepted` / `deferred` / `rejected`) to the branch's `git diff` output. For each finding, the relevant file/line hunk is embedded in the output. **Produces no side effects** - it only runs `git diff` and emits markdown.
|
|
14
14
|
|
|
15
15
|
## When to use it
|
|
16
16
|
|
|
17
17
|
- After Phase 4 but before Phase 5/6: to answer "which finding lines up with which code?".
|
|
18
|
-
- Phase
|
|
18
|
+
- Phase 5 reporting content: "review summary with code context" for Wiki / Confluence.
|
|
19
19
|
- Post-hoc audit: review-vs-fix comparison for a closed PR.
|
|
20
20
|
|
|
21
21
|
## Steps
|
|
@@ -40,7 +40,7 @@ Maps the Phase 4 triage output (`accepted` / `deferred` / `rejected`) to the bra
|
|
|
40
40
|
|
|
41
41
|
4. **Show the output to the user** and optionally add commentary:
|
|
42
42
|
- Phase 3 fix coverage: were all blocking findings touched
|
|
43
|
-
- Deferred follow-up: are they all on the Phase
|
|
43
|
+
- Deferred follow-up: are they all on the Phase 5 list
|
|
44
44
|
|
|
45
45
|
## Output template
|
|
46
46
|
|
|
@@ -57,7 +57,7 @@ Maps the Phase 4 triage output (`accepted` / `deferred` / `rejected`) to the bra
|
|
|
57
57
|
> Race condition: order total computed twice without lock
|
|
58
58
|
**Fix:** Compute total once inside the existing transaction block
|
|
59
59
|
\`\`\`diff
|
|
60
|
-
|
|
60
|
+
-98,5 +98,7 ...
|
|
61
61
|
\`\`\`
|
|
62
62
|
```
|
|
63
63
|
|
|
@@ -11,7 +11,7 @@ argument-hint: "[build | refresh | ask \"<question>\" | affected \"<symbol>\" |
|
|
|
11
11
|
|
|
12
12
|
A code graph is a map of what this repo declares and what refers to what, built by
|
|
13
13
|
regex over comment-stripped source. It exists so Phase 1 can narrow its Explore
|
|
14
|
-
fan-out and Phase
|
|
14
|
+
fan-out and Phase 5 can refresh `~/.claude/knowledge/<project>/` without an LLM
|
|
15
15
|
pass. It answers "where does this live" and "what depends on this". It does not
|
|
16
16
|
answer "what calls this at runtime": call graphs and type resolution need a real
|
|
17
17
|
parser, which would be an npm runtime dependency, and ADR-0004 forbids one.
|
|
@@ -59,30 +59,31 @@ How It Works (Phase 0 - Interactive Flow):
|
|
|
59
59
|
Pipeline (after Phase 0):
|
|
60
60
|
|
|
61
61
|
Phase 0: Init -> The 8 steps above
|
|
62
|
-
Phase 1:
|
|
63
|
-
|
|
64
|
-
Phase
|
|
65
|
-
|
|
62
|
+
Phase 1: Plan -> Stack detection + codebase scan, then task breakdown,
|
|
63
|
+
architecture review and the Plan Approval Gate (Opus)
|
|
64
|
+
Phase 2: Dev -> TDD: test -> code -> build (Sonnet) + build queue, then the
|
|
65
|
+
Verify exit gate: build, lint, tests, secrets
|
|
66
|
+
(the build runs ONCE per run; its log carries into Review)
|
|
67
|
+
Phase 3: Review -> Parallel AI review + Fable triage, then the optional user test
|
|
66
68
|
(Claude Code: Fable + Opus + Sonnet · Copilot CLI: GPT-5.4 + Opus + Sonnet)
|
|
67
|
-
Phase
|
|
68
|
-
Phase
|
|
69
|
-
Phase 7: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
|
|
69
|
+
Phase 4: Commit -> Commit -> push -> PR + issue body update (never auto-closes)
|
|
70
|
+
Phase 5: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
|
|
70
71
|
+ internal capture (agent-log · knowledge · memory)
|
|
71
72
|
|
|
72
|
-
Autopilot always pauses at the Phase
|
|
73
|
+
Autopilot always pauses at the Phase 5 channels menu (30-min timeout → session ends).
|
|
73
74
|
|
|
74
75
|
------------------------------------------------------------
|
|
75
76
|
|
|
76
77
|
Modes:
|
|
77
78
|
|
|
78
79
|
Depth is asked at Phase 0 Step 7.5, not passed as a flag:
|
|
79
|
-
Full
|
|
80
|
-
Short Dev(Opus, self-contained) -> Review ->
|
|
80
|
+
Full Plan -> Dev(Sonnet) -> Review -> Commit -> Report
|
|
81
|
+
Short Dev(Opus, self-contained) -> Review -> Commit -> Report
|
|
81
82
|
Recommended from taskType. Review is never skipped either way.
|
|
82
83
|
|
|
83
84
|
--local No worktree - works directly on local branch
|
|
84
85
|
autopilot Skip all confirmations, including the depth question, so
|
|
85
|
-
it always runs Full (EXCEPT Phase
|
|
86
|
+
it always runs Full (EXCEPT Phase 5 channels menu)
|
|
86
87
|
|
|
87
88
|
Dedicated dash commands (Copilot):
|
|
88
89
|
multi-agent-local, multi-agent-autopilot, multi-agent-local-autopilot
|
|
@@ -147,7 +148,7 @@ UI Testing (standalone):
|
|
|
147
148
|
and lives at /multi-agent:store-ready. The old /multi-agent:test "store-ready"
|
|
148
149
|
tag still works and hands off there.
|
|
149
150
|
|
|
150
|
-
Manual Test (Phase
|
|
151
|
+
Manual Test (Phase 3 user-test step, standalone - Xcode hint flow):
|
|
151
152
|
|
|
152
153
|
/multi-agent:manual-test [#N] Checkout task branch, print Xcode/SourceTree hints.
|
|
153
154
|
(Renamed from :test in v5.7.4.)
|
|
@@ -232,30 +233,31 @@ Nasıl Çalışır (Phase 0 - İnteraktif Akış):
|
|
|
232
233
|
Pipeline (Phase 0'dan sonra):
|
|
233
234
|
|
|
234
235
|
Phase 0: Init -> Yukarıdaki 8 adım
|
|
235
|
-
Phase 1:
|
|
236
|
-
|
|
237
|
-
Phase
|
|
238
|
-
|
|
236
|
+
Phase 1: Plan -> Stack tespiti + codebase taraması, ardından task kırılımı,
|
|
237
|
+
mimari inceleme ve Plan Onay Kapısı (Opus)
|
|
238
|
+
Phase 2: Dev -> TDD: test -> kod -> build (Sonnet) + build queue, sonra
|
|
239
|
+
Verify çıkış kapısı: build, lint, test, sır taraması
|
|
240
|
+
(build koşu başına BİR kez çalışır, log'u Review'a devreder)
|
|
241
|
+
Phase 3: Review -> Paralel AI review + Fable triage, sonra opsiyonel kullanıcı testi
|
|
239
242
|
(Claude Code: Fable + Opus + Sonnet · Copilot CLI: GPT-5.4 + Opus + Sonnet)
|
|
240
|
-
Phase
|
|
241
|
-
Phase
|
|
242
|
-
Phase 7: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
|
|
243
|
+
Phase 4: Commit -> Commit -> push -> PR + issue body güncelleme (hiç auto-close yok)
|
|
244
|
+
Phase 5: Report -> Channels dispatcher (PR · Jira · Confluence · Wiki, multi-select)
|
|
243
245
|
+ internal capture (agent-log · knowledge · memory)
|
|
244
246
|
|
|
245
|
-
Autopilot Phase
|
|
247
|
+
Autopilot Phase 5 channels menüsünde HER ZAMAN durur (30 dk timeout → session biter).
|
|
246
248
|
|
|
247
249
|
------------------------------------------------------------
|
|
248
250
|
|
|
249
251
|
Modlar:
|
|
250
252
|
|
|
251
253
|
Derinlik Faz 0 Adım 7.5'te sorulur, bayrakla geçilmez:
|
|
252
|
-
Tam
|
|
253
|
-
Kısa Dev(Opus, kendi kendine yeten) -> Review ->
|
|
254
|
+
Tam Plan -> Dev(Sonnet) -> Review -> Commit -> Report
|
|
255
|
+
Kısa Dev(Opus, kendi kendine yeten) -> Review -> Commit -> Report
|
|
254
256
|
taskType'a göre önerilir. Review iki durumda da atlanmaz.
|
|
255
257
|
|
|
256
258
|
--local Worktree yok - doğrudan local branch'te çalışır
|
|
257
259
|
autopilot Derinlik sorusu dahil tüm onayları atlar, bu yüzden her
|
|
258
|
-
zaman Tam koşar (İSTİSNA: Phase
|
|
260
|
+
zaman Tam koşar (İSTİSNA: Phase 5 channels menüsü)
|
|
259
261
|
|
|
260
262
|
Dedicated dash komutlar (Copilot):
|
|
261
263
|
multi-agent-local, multi-agent-autopilot, multi-agent-local-autopilot
|
|
@@ -14,7 +14,7 @@ Two-axis language preference for the pipeline:
|
|
|
14
14
|
|
|
15
15
|
| Field | Controls | Stored at | Mutability |
|
|
16
16
|
|---|---|---|---|
|
|
17
|
-
| `promptLanguage` | Interactive prompts during a pipeline run (account picker, project picker, dev-context picker, base-branch picker, branch-name picker, maturity ack, channels picker, Phase
|
|
17
|
+
| `promptLanguage` | Interactive prompts during a pipeline run (account picker, project picker, dev-context picker, base-branch picker, branch-name picker, maturity ack, channels picker, Phase 3 test prompt, Phase 4 local-checkout prompt) | `prefs.global.promptLanguage` | **Fixed to `en`** - never toggled by this skill |
|
|
18
18
|
| `outputLanguage` | Assistant's explanations, status updates, error messages, and pipeline-generated reports rendered to the user (NOT external payloads) | `prefs.global.outputLanguage` | Toggled by this skill |
|
|
19
19
|
|
|
20
20
|
**Why promptLanguage is fixed:** it governs the picker's structural chrome only - the `AskUserQuestion` `header` chip, host error UI, and internal contract identifiers. The chip stays English because it is capped at 12 characters and most Turkish equivalents overflow it. Everything a user actually reads follows `outputLanguage`: the picker `question`, each option's `label`, and each option's `description`, per the canonical per-field matrix in `multi-agent-refs/rules.md`. A picker whose question or buttons are English on a Turkish run is a bug, not the contract. The host's own **Other** row is injected by the CLI and stays English on every run; nothing in the pipeline can localize it.
|
|
@@ -83,5 +83,5 @@ Render in the new outputLanguage:
|
|
|
83
83
|
|
|
84
84
|
- `multi-agent-setup` - first-run language picker (asks only outputLanguage; promptLanguage seeded as `en`)
|
|
85
85
|
- `prefs.schema.json` - `global.promptLanguage` (fixed `"en"`) and `global.outputLanguage`
|
|
86
|
-
- Phase 5 / Phase
|
|
86
|
+
- Phase 5 / Phase 4 - interactive prompts follow the per-field matrix: `question` + `label` + `description` in `outputLanguage`, `header` English
|
|
87
87
|
- `multi-agent-help` - reads outputLanguage for its own copy
|