@mmerterden/multi-agent-pipeline 16.10.1 → 16.12.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 (79) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +115 -4
  3. package/README.tr.md +116 -4
  4. package/docs/adr/0001-three-model-triage.md +5 -0
  5. package/docs/features.md +18 -2
  6. package/install/templates/copilot-instructions.md +1 -1
  7. package/package.json +1 -1
  8. package/pipeline/claude-md-template.md +1 -1
  9. package/pipeline/commands/multi-agent/SKILL.md +4 -4
  10. package/pipeline/commands/multi-agent/analysis/SKILL.md +10 -10
  11. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -2
  12. package/pipeline/commands/multi-agent/autopilot/SKILL.md +1 -1
  13. package/pipeline/commands/multi-agent/build-optimize/SKILL.md +2 -2
  14. package/pipeline/commands/multi-agent/channels/SKILL.md +1 -1
  15. package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +1 -1
  16. package/pipeline/commands/multi-agent/create-jira/SKILL.md +1 -1
  17. package/pipeline/commands/multi-agent/design-check/SKILL.md +2 -2
  18. package/pipeline/commands/multi-agent/help/SKILL.md +6 -6
  19. package/pipeline/commands/multi-agent/language/SKILL.md +3 -3
  20. package/pipeline/commands/multi-agent/local/SKILL.md +1 -1
  21. package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +1 -1
  22. package/pipeline/commands/multi-agent/purge/SKILL.md +2 -2
  23. package/pipeline/commands/multi-agent/resume-local/SKILL.md +4 -4
  24. package/pipeline/commands/multi-agent/review/SKILL.md +10 -9
  25. package/pipeline/commands/multi-agent/review-analysis/SKILL.md +1 -1
  26. package/pipeline/commands/multi-agent/setup/SKILL.md +9 -9
  27. package/pipeline/commands/multi-agent/stack/SKILL.md +12 -13
  28. package/pipeline/lib/extract-conventions.sh +19 -18
  29. package/pipeline/lib/figma-screenshot.sh +107 -7
  30. package/pipeline/lib/md2confluence-v3.py +133 -25
  31. package/pipeline/multi-agent-refs/_account-picker.md +1 -1
  32. package/pipeline/multi-agent-refs/_dev-context.md +2 -2
  33. package/pipeline/multi-agent-refs/_input-parser.md +1 -1
  34. package/pipeline/multi-agent-refs/analysis/evidence.md +4 -4
  35. package/pipeline/multi-agent-refs/analysis/intake.md +112 -36
  36. package/pipeline/multi-agent-refs/analysis/locked.md +5 -4
  37. package/pipeline/multi-agent-refs/analysis/render.md +72 -14
  38. package/pipeline/multi-agent-refs/analysis/review.md +17 -1
  39. package/pipeline/multi-agent-refs/analysis/synthesis.md +7 -7
  40. package/pipeline/multi-agent-refs/analysis-template-corporate.md +15 -4
  41. package/pipeline/multi-agent-refs/analysis-template.md +6 -6
  42. package/pipeline/multi-agent-refs/channels/confluence.md +1 -0
  43. package/pipeline/multi-agent-refs/channels/pr.md +2 -2
  44. package/pipeline/multi-agent-refs/conventions-defaults.md +13 -13
  45. package/pipeline/multi-agent-refs/features/stack-skill-routing.md +1 -1
  46. package/pipeline/multi-agent-refs/knowledge.md +1 -1
  47. package/pipeline/multi-agent-refs/phases/modes.md +1 -1
  48. package/pipeline/multi-agent-refs/phases/phase-0-init.md +10 -6
  49. package/pipeline/multi-agent-refs/phases/phase-2-planning.md +6 -5
  50. package/pipeline/multi-agent-refs/phases/phase-3-dev.md +4 -4
  51. package/pipeline/multi-agent-refs/phases/phase-4-review.md +8 -8
  52. package/pipeline/multi-agent-refs/phases/phase-6-commit.md +7 -7
  53. package/pipeline/multi-agent-refs/picker-contract.md +29 -4
  54. package/pipeline/multi-agent-refs/readiness-review.md +1 -1
  55. package/pipeline/multi-agent-refs/rules.md +4 -4
  56. package/pipeline/multi-agent-refs/{frontend-guide.md → web-guide.md} +2 -2
  57. package/pipeline/schemas/analysis-output.schema.json +1 -1
  58. package/pipeline/schemas/analysis-spec.schema.json +5 -3
  59. package/pipeline/schemas/prefs.schema.json +18 -2
  60. package/pipeline/schemas/reviewer-output.schema.json +1 -1
  61. package/pipeline/schemas/triage-output.schema.json +1 -1
  62. package/pipeline/scripts/anonymize-findings.mjs +1 -1
  63. package/pipeline/scripts/gen-skills-index.mjs +1 -1
  64. package/pipeline/scripts/smoke-cross-cli-behavior.sh +9 -9
  65. package/pipeline/scripts/validate-analysis-doc.mjs +92 -26
  66. package/pipeline/scripts/validate-analysis.mjs +6 -1
  67. package/pipeline/skills/.skills-index.json +2 -2
  68. package/pipeline/skills/shared/README.md +4 -4
  69. package/pipeline/skills/shared/core/multi-agent/SKILL.md +4 -4
  70. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +3 -3
  71. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
  72. package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +1 -1
  73. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +4 -4
  74. package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -2
  75. package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +1 -1
  76. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +2 -2
  77. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
  78. package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +11 -12
  79. package/pipeline/skills/skills-index.md +2 -2
package/CHANGELOG.md CHANGED
@@ -16,6 +16,64 @@ Internal file-layout changes that don't affect the slash-command surface are sti
16
16
 
17
17
  ## [Unreleased]
18
18
 
19
+ ## [16.12.0] - 2026-08-27
20
+
21
+ ### Added
22
+
23
+ - **`/multi-agent:analysis` reviews the document before publishing it.** It had no review phase: the only pre-dispatch gate was a structural validator, so nothing ever read what was about to reach Confluence, and one real run published a channel it never searched for, an open question about a frame it never opened, and twenty-three unowned `EKLENECEK` markers. Phase 3.2 runs `phase-4-review.md` Step 0 (the analysis branch that already existed and nothing called) on the draft, before the destination is chosen. Reviewers are subagents holding `analysis/review.md`, never the context that wrote the document, because a context cannot notice a search it never thought to run. A blocking finding returns to synthesis with dispatch closed and never becomes an open question. Locked 36.
24
+ - **Phase 3.3 closes gaps instead of writing them down.** Reachable evidence is searched and never asked about, decisions the user owns are asked, and only external gaps enter the document as `AS-NN` rows with an owner. A gap with neither a `searched, not found` nor an `asked, external` stamp fails the dispatch gate. Autopilot runs both phases; only the asking degrades.
25
+ - **A third reviewer on Claude Code.** Opus fills the slot GPT-5.4 occupies on Copilot and Codex, so every host now runs three: Fable + Opus + Sonnet here. A finding two independent readers both miss is one triage has no chance to catch.
26
+ - **`figma-screenshot.sh --discover-sections`.** One `GET ?depth=3` lists every section whose name matches the feature, with a frame count and a channel guess, folding diacritics so `Elite` and `Elit` are the same word. A channel may no longer be called missing until this returns nothing, and the record must cite the scan (Locked 12). Verified against the file that caused the defect: it returns both the Desktop section and the mobileWeb sibling the run had declared absent.
27
+ - **Four validator gates**: `AS-NN` matched in both directions, `EKLENECEK` without an id, JSON inside a service-table cell, and Turkish diagram labels flattened to ASCII inside a mermaid fence, which the punctuation gate skips.
28
+
29
+ ### Changed
30
+
31
+ - **"All variants drilled" now means read, not counted** (Locked 19). Visible `TEXT` layers inside each frame's own bounds are extracted, hidden layers and overflowing component boilerplate dropped. A frame can be called out of scope only by quoting its own text, and opening an open question about a frame nobody read fails the gate. One run logged a frame named `08 Payment` as ambiguous while its text spelled out the whole payment step.
32
+ - **Every frame-inventory row gets an embedded image** (Locked 18). The gallery is generated from the inventory rather than hand-picked; narrowing to a canonical subset for page weight is not a call the run makes alone. One run uploaded 34 attachments and embedded 14, and was reported as "frames not uploaded" - the files were there and invisible.
33
+ - **Embedded images carry a display width.** `md2confluence-v3.py --image-width` defaults to 720 with a per-image `![](f.png "width=320")` override; the attachment stays full resolution. A 2x phone export is 750x1624 and took two screen heights at natural size.
34
+ - **Service tables put payloads under the table, not in a cell.** `Request` and `Response` carry one of three states; JSON goes in a fenced block below, field notes in their own table. A whole-unknown contract is one line, not six `EKLENECEK` cells.
35
+
36
+ ### Fixed
37
+
38
+ - **`md2confluence` re-upload logged one warning per attachment and lost nothing.** The already-exists path was keyed off HTTP 400, and this Confluence Server answers 500 for a duplicate filename, so the update path was unreachable. It looks before creating now; 400, 409 and 500 remain handled as the race they should always have been. `attachments_updated` is counted apart from `attachments_uploaded`, because "0 uploaded, 12 warnings" reads as data loss when nothing was lost.
39
+ - **The mermaid fallback lost every edge in any diagram whose nodes carry labels.** The pattern required the node id to sit next to the arrow, so `A[Basla] --> B` matched nothing - not just labelled branches, the whole flow. Both label syntaxes are captured now and the label is kept (`Evet -> Odeme Yap`), and the source ships beside the list so the diagram is recoverable.
40
+
41
+ ### Internal
42
+
43
+ - **This release sets the `required` dist-tag.** An install older than 16.12.0 does not produce a worse analysis document, it produces one that has to be redone: no review before publishing, gaps recorded instead of closed, a channel called missing without the file ever being scanned, and frame filenames where the pictures belong. That is the criterion in the Supported Version Gate, so the tag is set rather than left off.
44
+ - The analysis ref ceiling moves 148000 -> 154000 across two raises in one session. Everything that could live outside the count already does: the scan in `figma-screenshot.sh`, the reviewer rubric in `analysis/review.md` which a subagent loads and the orchestrator does not, and all four new gates in `validate-analysis-doc.mjs`. The tree was measured for reclaimable duplication first and had none.
45
+ - `smoke-validate-analysis-doc.sh` replaces four section-number pairing assertions with the `AS-NN` contract in both directions.
46
+
47
+
48
+ ## [16.11.0] - 2026-08-27
49
+
50
+ ### Changed
51
+
52
+ - **Picker option labels now follow `outputLanguage`.** Only the `AskUserQuestion` `header` chip stays English, because it is capped at 12 characters and most Turkish equivalents overflow it. A Turkish run used to render a Turkish question with English buttons, which reads as a half-translated dialogue rather than a contract. `rules.md` carries the new per-field matrix; `picker-contract.md` carries what the caller now owns: branch on which option was picked, never on its rendered text, and pass `default` / `ASK_CHOICE_DEFAULT` as a 1-based index. The host's own **Other** row is injected in English and no run can localize it.
53
+ - **`Frontend` is `Web` across the pipeline** - the platform picker, the stack command, the schemas, the conventions tables, the phase docs and `frontend-guide.md`, now `web-guide.md`. The published `ai-frontend-toolkit` plugin id, the `frontendRepos` / `frontendRoots` prefs keys and the `frontend` stack alias all keep working: `web` is canonical and `frontend` still resolves, so nothing written before this release stops loading. `webRepos` / `webRoots` are the new spelling; the old pair is documented as deprecated rather than removed.
54
+ - **A repo-less analysis run keeps its channel split.** It used to flatten everything into one document because there were no repo conventions to project onto. But a phone screen and a browser screen carry different requirements whether or not a repository exists; only the *projection* half of the split needed conventions. Channels are now derived from the evidence (`intake.md` Step 3 carries the signal table) and one document is emitted per channel. `mobile` stays one channel rather than iOS plus Android, since without conventions nothing tells the two apart.
55
+
56
+ ### Fixed
57
+
58
+ - **The depth question passed a label as `ASK_CHOICE_DEFAULT`.** With labels localized, `"Full"` matches nothing on a Turkish run, `ask-choice.sh` falls through, and a non-TTY silently takes option one - the exact failure Phase 0 Step 7.5 was written to prevent. It passes the index now. Two more sites branched on a literal label (the plan gate and the review post-prompt) and now branch on the option.
59
+ - **The analysis source questions asked all seven in one `AskUserQuestion` call**, which the host rejects at 4. Every run improvised its own grouping, and the improvised split separated the Document question from the Confluence one. The split is fixed at two batches now: what the feature is (Figma, Confluence, Document, Jira), then what constrains it (Swagger, Standards, Firebase). A spec arrives as an attached `.docx` or `.pdf` at least as often as a Confluence page, so both are asked on the same screen.
60
+ - **Questions feeding only the development layer are no longer asked when no platform is selected.** With `platforms[]` empty that layer does not render, so the Standards and UI Tests questions spent the user's attention on answers nothing would consume. Firebase and A11y depth are still asked - they land in Part B, which does render.
61
+ - **Confluence and Jira dispatch had no rule for a repo-less run.** Both were written only for the per-platform case, so "one page per platform" and the `h2. Platform: <X>` separators had nothing to bind to. They now cover the derived channels, and a single channel-agnostic document gets no suffix and no separator.
62
+ - **A Confluence frame gallery shipped filenames where the pictures should be.** The analysis dispatch described the conversion, the attachment upload and the `<ac:image>` injection as three hand-rolled steps, while `md2confluence-v3.py` already implements all three. Hand-rolling is where the image reference got lost. Dispatch calls the script with `--attachments-dir` now and surfaces its `image reference has no matching attachment` warnings instead of reporting a clean publish; the conversion table documents that the converter degrades a missing file to a text link, which is the diagnosis for a page full of filenames.
63
+ - **`language/SKILL.md` claimed PR bodies, Jira comments and wiki pages are always English**, contradicting the `rules.md` matrix that routes all three through `outputLanguage`. Commit messages, PR title prefixes, branch names and identifiers stay English; the bodies a human reads do not.
64
+ - **The analysis command cited the wrong sections for two inputs** - Standards as Section 7 and Firebase as Section 6, where the template puts them at 13.7 and 11.
65
+
66
+ ### Added
67
+
68
+ - **A `.docx` / `.pdf` / `.md` / `.txt` spec is a first-class analysis source**, asked next to the Confluence question. `fetch-document.sh` reads `.docx` with the Python standard library, so `python-docx` is neither imported nor needed; `.pdf` needs a `pdftotext` binary and degrades to referenced-but-not-fetched without one. `/multi-agent:setup` reports that binary as an advisory dependency, never a halt.
69
+ - **A full command catalog in both READMEs** - 53 sub-commands in nine groups, the 8 subagents, and the two compliance skills that are not commands. The list previously existed only inside `/multi-agent:help`.
70
+
71
+ ### Internal
72
+
73
+ - The analysis ref ceiling moves 145000 -> 148000. Unlike the v16.6.0 raise this one is not compensating for a measurement error: the tree gained three features and the number is right. About 1.4 kB of new prose was trimmed back before the ceiling was touched.
74
+ - `smoke-language-matrix.sh` and `smoke-language-axis.sh` now assert the new rule in both directions - label follows `outputLanguage`, header stays English - and three more phrasings were added to the contradiction list after one slipped past the old set.
75
+
76
+
19
77
  ### Fixed
20
78
 
21
79
  - **The website sync committed under whatever identity the run carried, and the site silently stopped updating.** Step 4 ran a bare `git commit`, so the commit took the active account's address. The deploy platform builds only a commit whose author is a contributor on the project; any other author is accepted by the push and then never built - the deployment is created, reports `readyState: BLOCKED` (rendered by the CLI as `UNKNOWN` with a 0ms build), and the live site keeps serving the previous version. v16.4.0 and v16.5.0 were both pushed that way, neither was ever built, and both syncs reported the website as done.
package/README.md CHANGED
@@ -62,11 +62,13 @@ One command runs 8 phases, with a gate between the risky ones:
62
62
  - **1 · Analysis** - detect the stack, scan the codebase, map impact (Sonnet).
63
63
  - **2 · Plan** - write a task breakdown and **stop for your approval** before touching code.
64
64
  - **3 · Dev** - TDD: failing test → code → green, following the repo's style + the active stack skills.
65
- - **4 · Review** - deterministic gates (build / lint / test / secret-scan) must pass first, then a **CLI-aware parallel review** - Claude Code runs 2 models (Fable + Sonnet), Copilot CLI runs 3 (GPT-5.4 + Opus + Sonnet) - and a **Fable triage** keeps only actionable findings; blockers loop back to Phase 3.
65
+ - **4 · Review** - deterministic gates (build / lint / test / secret-scan) must pass first, then a **CLI-aware parallel review** - Claude Code runs 3 models (Fable + Opus + Sonnet), Copilot CLI runs 3 (GPT-5.4 + Opus + Sonnet) - and a **Fable triage** keeps only actionable findings; blockers loop back to Phase 3.
66
66
  - **5 · Test** - build + run the suite; success is required (no faked passes).
67
67
  - **6 · Commit/PR** - conventional commit, push (must succeed), open a PR (`Ref: #N`, never auto-close).
68
68
  - **7 · Report** - technical summary + a Jira comment with test scenarios, posted through the channels layer.
69
69
 
70
+ `/multi-agent:analysis` runs its own shorter chain and, since v16.12.0, reviews what it wrote before publishing it: the draft goes through the same three-reviewer set and triage as a code diff, a blocking finding returns it to synthesis with dispatch closed, and the gaps that survive are either searched, asked about, or recorded with an owner. It used to publish behind a structural validator alone.
71
+
70
72
  Under the hood: each task runs in its own **git worktree** (or the current branch with `:local`), commits use the **git identity routed from the repo's origin URL**, and **multi-repo** tasks get per-repo worktrees plus an integration build. Tokens stay in the OS keychain; nothing is committed or logged. `/multi-agent:review` can also review an existing GitHub/Bitbucket PR - per-finding inline comments anchored to `file:line` + an explicit Approve / Needs-Work state.
71
73
 
72
74
  The discipline behind all of this - bounded loops, evidence gates, token-budgeted phase docs, immutable tests, fresh-context handoffs - is catalogued in [docs/engineering.md](./docs/engineering.md). The full feature list lives in [docs/features.md](./docs/features.md). How this repo, the `multi-agent-plugins` marketplace, and the `multi-agent-toolkit-mcp` server compose at install time and at run time is diagrammed in [docs/ecosystem.md](./docs/ecosystem.md).
@@ -83,7 +85,116 @@ The discipline behind all of this - bounded loops, evidence gates, token-budgete
83
85
  | Audit | `/multi-agent:design-check` | Mock-mode vs Figma conformance, local-only |
84
86
  | Audit | `/multi-agent:testflight-validation` | Pre-submission gates for a TestFlight build: static archive audit → Apple's `altool --validate-app` → Review-Guidelines check. Validates only, never uploads |
85
87
 
86
- Helpers: `setup`, `status`, `resume #N`, `kill #N`, `garbage-collect`, `prune-logs`, `purge`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `review-analysis`, `feedback`, `create-jira`, `save`, `routines`, `forget`. 53 commands in all - full list: `/multi-agent:help`.
88
+ Depth, autopilot and `--local` are the only knobs on the run itself; everything else is its own command. The full catalog is below.
89
+
90
+ ## Commands
91
+
92
+ `/multi-agent` plus 53 sub-commands. `/multi-agent:help` renders the same catalog in your terminal, in your `outputLanguage`.
93
+
94
+ ### Pipeline entries
95
+
96
+ | Command | What it does |
97
+ |---|---|
98
+ | `/multi-agent "task"` | Full pipeline in a worktree. Asks Full or Short depth at Phase 0 |
99
+ | `/multi-agent:local "task"` | Same pipeline on the current branch, no worktree |
100
+ | `/multi-agent:autopilot "task"` | Worktree, no confirmations, always Full |
101
+ | `/multi-agent:local-autopilot "task"` | Current branch, no confirmations, always Full |
102
+ | `/multi-agent:resume-local` | Pipeline tail over work already done locally: Review → Build+Test → Commit/PR → Report. No dev phase |
103
+
104
+ ### Task control
105
+
106
+ | Command | What it does |
107
+ |---|---|
108
+ | `/multi-agent:status` | Every task's ID, phase, branch and state |
109
+ | `/multi-agent:log [#N]` | Show a task's `agent-log.md` (most recent by default) |
110
+ | `/multi-agent:resume [#N]` | Carry a stopped or failed task on from its last phase |
111
+ | `/multi-agent:kill [#N]` | Stop a task, remove its worktree and branch |
112
+ | `/multi-agent:search` | Ranked search across every task log; `--semantic` queries the triage corpus |
113
+ | `/multi-agent:garbage-collect` | Sweep leftover scratch, orphan worktrees and offloaded payloads. Dry-run first |
114
+ | `/multi-agent:prune-logs` | Delete per-task logs by age / project / task. Audit trail and metrics kept |
115
+ | `/multi-agent:purge` | Wipe every worktree, branch, log and state file. Double confirmation |
116
+
117
+ ### Review
118
+
119
+ | Command | What it does |
120
+ |---|---|
121
+ | `/multi-agent:review` | Parallel review of a branch diff or a PR; inline comments + approve/needs-work on PR input |
122
+ | `/multi-agent:review-jira` | Grade a Jira issue's readiness for development, comment the gaps |
123
+ | `/multi-agent:review-issue` | Same grading for a GitHub issue |
124
+ | `/multi-agent:review-analysis` | Review a written analysis document; findings cite the Locked rule they break |
125
+ | `/multi-agent:diff-explain` | Map a Phase 4 triage finding back to the diff lines that caused it |
126
+ | `/multi-agent:refactor` | Best-practice extraction + bug hunt + derived-skill drift + toolkit MCP research → one plan |
127
+ | `/multi-agent:scan` | Skill security scan of local skill directories against a tiered pattern catalog |
128
+ | `/multi-agent:prune-prompts` | Zero-base review of the always-on instruction footprint; keep / trial / delete per rule |
129
+ | `/multi-agent:ios-coding-standard` | Audit an iOS module against the 99-rule registry, produce a remediation plan |
130
+
131
+ ### Analysis
132
+
133
+ | Command | What it does |
134
+ |---|---|
135
+ | `/multi-agent:analysis` | Standalone feature spec: global (23-section handoff) or corporate (IG/UC/FG) profile |
136
+ | `/multi-agent:analysis-resolve` | Answer an analysis doc's Section 20 open questions one row at a time |
137
+ | `/multi-agent:complaint-analysis` | Customer-complaint triage with Graylog evidence: client / bff root cause, or core routing |
138
+
139
+ ### Testing on a device
140
+
141
+ | Command | What it does |
142
+ |---|---|
143
+ | `/multi-agent:test` | UI Bug Hunter on a booted simulator or emulator: screenshot, tap, analyze |
144
+ | `/multi-agent:test-dark-mode` | Walk every screen light then dark, report contrast and colour bugs |
145
+ | `/multi-agent:test-accessibility` | VoiceOver labels, sub-44pt tap targets, contrast, traits |
146
+ | `/multi-agent:test-dynamic-type` | Re-walk every screen at XL through accessibility-XL, report truncation |
147
+ | `/multi-agent:test-screenshots [locale]` | App Store screenshot set in a locale (defaults to `tr`) |
148
+ | `/multi-agent:manual-test` | Phase 5 standalone: check out the task branch and prepare it for Xcode |
149
+
150
+ ### Design, build and store
151
+
152
+ | Command | What it does |
153
+ |---|---|
154
+ | `/multi-agent:design-check` | Mock-mode vs Figma audit with a coverage gate; annotated HTML + PDF report |
155
+ | `/multi-agent:store-ready` | Pre-submission gates for iOS and Android: package audit, store validation, policy review |
156
+ | `/multi-agent:testflight-validation` | iOS-pinned alias of `store-ready`. Validates only, never uploads |
157
+ | `/multi-agent:build-optimize` | Benchmark an Xcode build, run the analyzers, produce a recommend-first plan |
158
+
159
+ ### Tickets and reporting
160
+
161
+ | Command | What it does |
162
+ |---|---|
163
+ | `/multi-agent:jira` | Browse your open Jira issues → pick → branch → mode → launch |
164
+ | `/multi-agent:issue` | Browse unassigned GitHub issues → pick → auto-assign → launch |
165
+ | `/multi-agent:create-jira` | Draft a Task / Bug / Story to the project's own conventions, preview before create |
166
+ | `/multi-agent:channels` | Post the multi-channel report: Jira, Confluence, Wiki, PR description, board status |
167
+ | `/multi-agent:feedback` | Send one message to the maintainer. Only your text is sent, no logs or paths |
168
+
169
+ ### Your own routines
170
+
171
+ | Command | What it does |
172
+ |---|---|
173
+ | `/multi-agent:save [name]` | Save a recurring job as a reusable `/multi-agent:<name>`. Local-only, never synced |
174
+ | `/multi-agent:routines` | List your saved routines and what each does |
175
+ | `/multi-agent:forget [name]` | Remove a saved routine and its registry entry |
176
+
177
+ ### Setup and maintenance
178
+
179
+ | Command | What it does |
180
+ |---|---|
181
+ | `/multi-agent:setup` | First-run wizard: keychain token discovery, git identity, pipeline preparation |
182
+ | `/multi-agent:stack [ids]` | Enable the marketplace plugin(s) for this repo. Multi-select |
183
+ | `/multi-agent:language [en\|tr]` | Show or set `outputLanguage`; `promptLanguage` stays English |
184
+ | `/multi-agent:sync` | One-shot sync: Claude Code, Copilot CLI, pipeline repo, website, toolkit MCP |
185
+ | `/multi-agent:update` | Update to the latest published npm release and run migrations |
186
+ | `/multi-agent:uninstall` | Remove the pipeline from every CLI. Keychain tokens always left intact |
187
+ | `/multi-agent:help` | This catalog, in the terminal, in your `outputLanguage` |
188
+
189
+ Four names are kept only as redirects: `:dev` and `:dev-local` point at `/multi-agent` and `:local` answered Short, and `:dev-autopilot` / `:dev-local-autopilot` have no equivalent - "fast plus unattended" was removed in v16.0.0.
190
+
191
+ ### Subagents
192
+
193
+ Eight are installed alongside the commands and dispatched by the phases: `explorer` and `task-clarifier` (Phase 0-1), `ios-architect` / `android-architect` / `backend-architect` (Phase 2), `dev-critic` (Phase 3), `code-reviewer` and `security-auditor` (Phase 4).
194
+
195
+ ### Skills that are not commands
196
+
197
+ Two compliance skills install on every host and back the store gates: `apple-archive-compliance` (18-rule Apple review scan with ITMS code mapping) and `google-play-compliance` (21-rule Play policy catalog with Console error codes). Everything else stack-shaped - SwiftUI, Compose, backend, frontend - comes from the marketplace plugins described below.
87
198
 
88
199
  ## Stacks
89
200
 
@@ -114,8 +225,8 @@ error. Measured on 0.145: installing one plugin that declares 142 skills surface
114
225
  `multi-agent` router and keeps the sub-command specs as reference files that cost
115
226
  nothing until read - same commands, same behaviour, a layout the host can actually hold.
116
227
 
117
- Reviewer sets differ because the available models do: Claude Code runs 2 reviewers
118
- (Fable + Sonnet), Copilot CLI 3 (Opus + GPT-5.4 + Sonnet), Codex CLI 3 (gpt-5.6 at
228
+ Reviewer sets differ because the available models do: Claude Code runs 3 reviewers
229
+ (Fable + Opus + Sonnet), Copilot CLI 3 (Opus + GPT-5.4 + Sonnet), Codex CLI 3 (gpt-5.6 at
119
230
  xhigh, gpt-5.4, gpt-5.6 at medium). Codex is single-vendor, so consensus among its three
120
231
  is weaker evidence than the same consensus on a two-vendor host, and the triage note
121
232
  says so.
package/README.tr.md CHANGED
@@ -62,11 +62,13 @@ Tek komut 8 fazı çalıştırır, riskli olanlar arasında bir kapı ile:
62
62
  - **1 · Analysis** - stack'i tespit et, codebase'i tara, etkiyi haritala (Sonnet).
63
63
  - **2 · Plan** - bir görev kırılımı yaz ve koda dokunmadan önce **onayın için dur**.
64
64
  - **3 · Dev** - TDD: başarısız test → kod → yeşil, repo'nun stiline + aktif stack skill'lerine uyarak.
65
- - **4 · Review** - önce deterministik kapılar (build / lint / test / secret-scan) geçmeli, sonra bir **CLI-farkında paralel review** - Claude Code 2 model çalıştırır (Fable + Sonnet), Copilot CLI 3 (GPT-5.4 + Opus + Sonnet) - ve bir **Fable triage** sadece aksiyon alınabilir bulguları tutar; blocker'lar Phase 3'e geri döner.
65
+ - **4 · Review** - önce deterministik kapılar (build / lint / test / secret-scan) geçmeli, sonra bir **CLI-farkında paralel review** - Claude Code 3 model çalıştırır (Fable + Opus + Sonnet), Copilot CLI 3 (GPT-5.4 + Opus + Sonnet) - ve bir **Fable triage** sadece aksiyon alınabilir bulguları tutar; blocker'lar Phase 3'e geri döner.
66
66
  - **5 · Test** - build + suite'i çalıştır; başarı zorunlu (sahte pass yok).
67
67
  - **6 · Commit/PR** - conventional commit, push (başarılı olmalı), bir PR aç (`Ref: #N`, asla otomatik kapatma).
68
68
  - **7 · Report** - teknik özet + test senaryolarıyla bir Jira yorumu, channels katmanından gönderilir.
69
69
 
70
+ `/multi-agent:analysis` kendi kısa zincirini koşar ve v16.12.0'dan beri yazdığını yayınlamadan önce review ediyor: taslak, bir kod diff'iyle aynı üç-reviewer setinden ve triyajdan geçiyor, bloklayıcı bulgu dokümanı sentez fazına geri gönderip dispatch'i kapatıyor, hayatta kalan boşluklar ya aranıyor ya sana soruluyor ya da sahibiyle birlikte kayda giriyor. Önceden yalnızca yapısal bir validator'ın arkasından yayınlıyordu.
71
+
70
72
  Perde arkasında: her görev kendi **git worktree**'sinde çalışır (ya da `:local` ile mevcut branch'te), commit'ler **repo'nun origin URL'inden yönlendirilen git kimliğini** kullanır, ve **çoklu-repo** görevleri repo başına worktree artı bir integration build alır. Tokenlar OS keychain'de kalır; hiçbir şey commit edilmez ya da loglanmaz. `/multi-agent:review` mevcut bir GitHub/Bitbucket PR'ını da review edebilir - `file:line`'a bağlı bulgu-başına inline yorumlar + açık bir Approve / Needs-Work durumu.
71
73
 
72
74
  Bunun arkasındaki disiplin - sınırlı loop'lar, kanıt kapıları, token-bütçeli faz dokümanları, değişmez testler, taze-context handoff'lar - [docs/engineering.md](./docs/engineering.md)'de kataloglanmıştır. Tam özellik listesi [docs/features.md](./docs/features.md)'te. Bu repo, `multi-agent-plugins` marketplace'i ve `multi-agent-toolkit-mcp` sunucusunun install zamanında ve run zamanında nasıl bir araya geldiği [docs/ecosystem.md](./docs/ecosystem.md)'de diyagramlanmıştır.
@@ -78,11 +80,121 @@ Bunun arkasındaki disiplin - sınırlı loop'lar, kanıt kapıları, token-büt
78
80
  | Full | `/multi-agent "task"` | Tüm 8 faz, interaktif |
79
81
  | Autopilot | `/multi-agent:autopilot "task"` | 7 faz (interaktif Test kapısı atlanır), onaysız |
80
82
  | Local | `/multi-agent:local "task"` | İnteraktif Test kapısı hariç tam pipeline, mevcut branch (worktree yok) |
83
+ | Derinlik | Faz 0 Adım 7.5'te sorulur | Full (tüm fazlar) veya Short (Dev → Review → Test → Commit → Report). Komut adı değil - `/multi-agent` ve `:local` sorar, iki autopilot girişi de her zaman Full koşar |
81
84
  | Ship | `/multi-agent:resume-local` | Lokal iş üzerinde review→test→commit→report kuyruğunu çalıştır |
82
85
  | Audit | `/multi-agent:design-check` | Mock-mode vs Figma uygunluğu, yalnızca lokal |
83
86
  | Audit | `/multi-agent:testflight-validation` | TestFlight build için pre-submission kapıları: statik archive denetimi → Apple'ın `altool --validate-app`'i → Review-Guidelines kontrolü. Yalnızca doğrular, asla yüklemez |
84
87
 
85
- Yardımcılar: `setup`, `status`, `resume #N`, `kill #N`, `garbage-collect`, `prune-logs`, `purge`, `review`, `test`, `channels`, `stack`, `update`, `sync`, `refactor`, `jira`, `issue`, `analysis`, `review-analysis`, `feedback`, `create-jira`, `save`, `routines`, `forget`. Toplam 53 komut - tam liste: `/multi-agent:help`.
88
+ Koşunun kendisinde ayarlanabilen tek şey derinlik, autopilot ve `--local`; geri kalan her şey kendi komutu. Tam katalog aşağıda.
89
+
90
+ ## Komutlar
91
+
92
+ `/multi-agent` ve 53 alt komut. `/multi-agent:help` aynı katalogu terminalde, `outputLanguage` ayarına göre gösterir.
93
+
94
+ ### Pipeline girişleri
95
+
96
+ | Komut | Ne yapar |
97
+ |---|---|
98
+ | `/multi-agent "task"` | Worktree'de tam pipeline. Faz 0'da Full mu Short mu diye sorar |
99
+ | `/multi-agent:local "task"` | Aynı pipeline, mevcut branch üzerinde, worktree yok |
100
+ | `/multi-agent:autopilot "task"` | Worktree, onay yok, her zaman Full |
101
+ | `/multi-agent:local-autopilot "task"` | Mevcut branch, onay yok, her zaman Full |
102
+ | `/multi-agent:resume-local` | Lokalde bitmiş iş için pipeline kuyruğu: Review → Build+Test → Commit/PR → Report. Dev fazı yok |
103
+
104
+ ### Görev kontrolü
105
+
106
+ | Komut | Ne yapar |
107
+ |---|---|
108
+ | `/multi-agent:status` | Her görevin ID'si, fazı, branch'i ve durumu |
109
+ | `/multi-agent:log [#N]` | Görevin `agent-log.md` dosyası (varsayılan: en son görev) |
110
+ | `/multi-agent:resume [#N]` | Durmuş ya da hata almış görevi kaldığı fazdan sürdürür |
111
+ | `/multi-agent:kill [#N]` | Görevi durdurur, worktree'sini ve branch'ini siler |
112
+ | `/multi-agent:search` | Tüm görev loglarında sıralamalı arama; `--semantic` triyaj corpus'unu sorgular |
113
+ | `/multi-agent:garbage-collect` | Artık scratch, sahipsiz worktree ve offload edilmiş payload'ları süpürür. Önce dry-run |
114
+ | `/multi-agent:prune-logs` | Görev loglarını yaş / proje / görev filtresiyle siler. Denetim izi ve metrikler kalır |
115
+ | `/multi-agent:purge` | Tüm worktree, branch, log ve state dosyalarını siler. Çift onay |
116
+
117
+ ### Review
118
+
119
+ | Komut | Ne yapar |
120
+ |---|---|
121
+ | `/multi-agent:review` | Branch diff'i veya PR üzerinde paralel review; PR girdisinde inline yorum + approve/needs-work |
122
+ | `/multi-agent:review-jira` | Bir Jira issue'sunun geliştirmeye hazırlığını puanlar, eksikleri yorum olarak yazar |
123
+ | `/multi-agent:review-issue` | Aynı puanlama, GitHub issue'su için |
124
+ | `/multi-agent:review-analysis` | Yazılmış analiz dokümanını review eder; bulgular ihlal edilen Locked kuralını gösterir |
125
+ | `/multi-agent:diff-explain` | Faz 4 triyaj bulgusunu onu doğuran diff satırlarına eşler |
126
+ | `/multi-agent:refactor` | Best-practice çıkarımı + bug avı + türetilmiş skill drift'i + toolkit MCP araştırması → tek plan |
127
+ | `/multi-agent:scan` | Yerel skill dizinlerini kademeli desen kataloğuna göre güvenlik taraması |
128
+ | `/multi-agent:prune-prompts` | Sürekli yüklü talimat yükünün sıfır-tabanlı incelemesi; kural başına tut / dene / sil |
129
+ | `/multi-agent:ios-coding-standard` | Bir iOS modülünü 99 kurallık registry'ye göre denetler, düzeltme planı çıkarır |
130
+
131
+ ### Analiz
132
+
133
+ | Komut | Ne yapar |
134
+ |---|---|
135
+ | `/multi-agent:analysis` | Bağımsız özellik spesifikasyonu: global (23 bölümlük doküman) veya kurumsal (IG/UC/FG) profili |
136
+ | `/multi-agent:analysis-resolve` | Analiz dokümanının Bölüm 20 açık sorularını satır satır cevaplar |
137
+ | `/multi-agent:complaint-analysis` | Graylog kanıtıyla şikayet triyajı: client / bff kök neden ya da core'a yönlendirme |
138
+
139
+ ### Cihaz üstü test
140
+
141
+ | Komut | Ne yapar |
142
+ |---|---|
143
+ | `/multi-agent:test` | Açık simülatör veya emülatörde UI Bug Hunter: screenshot, tap, analiz |
144
+ | `/multi-agent:test-dark-mode` | Her ekranı önce light sonra dark gezer, kontrast ve renk hatalarını raporlar |
145
+ | `/multi-agent:test-accessibility` | VoiceOver etiketleri, 44pt altı dokunma alanları, kontrast, trait'ler |
146
+ | `/multi-agent:test-dynamic-type` | Her ekranı XL'den accessibility-XL'e kadar yeniden gezer, kırpılmaları raporlar |
147
+ | `/multi-agent:test-screenshots [dil]` | Bir dilde App Store screenshot seti (varsayılan `tr`) |
148
+ | `/multi-agent:manual-test` | Faz 5'in bağımsız hali: görev branch'ine geçer, Xcode için hazırlar |
149
+
150
+ ### Tasarım, build ve store
151
+
152
+ | Komut | Ne yapar |
153
+ |---|---|
154
+ | `/multi-agent:design-check` | Kapsam geçitli mock-mode vs Figma denetimi; annotasyonlu HTML + PDF rapor |
155
+ | `/multi-agent:store-ready` | iOS ve Android için yayın öncesi kapılar: paket denetimi, store doğrulaması, politika incelemesi |
156
+ | `/multi-agent:testflight-validation` | `store-ready`'nin iOS'a sabitlenmiş hali. Yalnızca doğrular, asla yüklemez |
157
+ | `/multi-agent:build-optimize` | Xcode build'ini ölçer, analizörleri koşar, önce-öneri yaklaşımlı plan üretir |
158
+
159
+ ### Ticket ve raporlama
160
+
161
+ | Komut | Ne yapar |
162
+ |---|---|
163
+ | `/multi-agent:jira` | Açık Jira issue'larını gez → seç → branch → mod → başlat |
164
+ | `/multi-agent:issue` | Atanmamış GitHub issue'larını gez → seç → otomatik ata → başlat |
165
+ | `/multi-agent:create-jira` | Projenin kendi konvansiyonlarına uygun Task / Bug / Story taslağı, oluşturmadan önce önizleme |
166
+ | `/multi-agent:channels` | Çok kanallı raporu gönderir: Jira, Confluence, Wiki, PR açıklaması, board durumu |
167
+ | `/multi-agent:feedback` | Bakımcıya tek mesaj. Yalnızca yazdığın metin gider, log ve yol gitmez |
168
+
169
+ ### Kendi rutinlerin
170
+
171
+ | Komut | Ne yapar |
172
+ |---|---|
173
+ | `/multi-agent:save [ad]` | Tekrar eden bir işi `/multi-agent:<ad>` olarak kaydeder. Local-only, asla sync edilmez |
174
+ | `/multi-agent:routines` | Kaydettiğin rutinleri ve ne yaptıklarını listeler |
175
+ | `/multi-agent:forget [ad]` | Kayıtlı bir rutini ve registry kaydını siler |
176
+
177
+ ### Kurulum ve bakım
178
+
179
+ | Komut | Ne yapar |
180
+ |---|---|
181
+ | `/multi-agent:setup` | İlk kurulum sihirbazı: keychain token keşfi, git identity, pipeline hazırlığı |
182
+ | `/multi-agent:stack [id]` | Bu repo için marketplace plugin'lerini etkinleştirir. Çoklu seçim |
183
+ | `/multi-agent:language [en\|tr]` | `outputLanguage`'i gösterir veya değiştirir; `promptLanguage` İngilizce kalır |
184
+ | `/multi-agent:sync` | Tek atımlık senkron: Claude Code, Copilot CLI, pipeline repo, website, toolkit MCP |
185
+ | `/multi-agent:update` | npm'deki son yayına günceller ve migration'ları koşar |
186
+ | `/multi-agent:uninstall` | Pipeline'ı her CLI'dan kaldırır. Keychain token'larına hiç dokunmaz |
187
+ | `/multi-agent:help` | Bu katalog, terminalde, `outputLanguage`'ine göre |
188
+
189
+ Dört ad yalnızca yönlendirme olarak duruyor: `:dev` ve `:dev-local` sırasıyla `/multi-agent` ve `:local` çalıştırıp Short seçmeye yönlendirir, `:dev-autopilot` ile `:dev-local-autopilot` ise karşılıksız - "hızlı artı gözetimsiz" v16.0.0'da kaldırıldı.
190
+
191
+ ### Alt agent'lar
192
+
193
+ Komutlarla birlikte sekiz agent kurulur ve fazlar bunları çağırır: `explorer` ve `task-clarifier` (Faz 0-1), `ios-architect` / `android-architect` / `backend-architect` (Faz 2), `dev-critic` (Faz 3), `code-reviewer` ve `security-auditor` (Faz 4).
194
+
195
+ ### Komut olmayan skill'ler
196
+
197
+ İki uyumluluk skill'i her host'a kurulur ve store kapılarını besler: `apple-archive-compliance` (ITMS kod eşlemeli 18 kurallı Apple review taraması) ve `google-play-compliance` (Console hata kodlu 21 kurallı Play politika kataloğu). Stack'e bağlı geri kalan her şey - SwiftUI, Compose, backend, frontend - aşağıda anlatılan marketplace plugin'lerinden gelir.
86
198
 
87
199
  ## Stack'ler
88
200
 
@@ -114,8 +226,8 @@ pipeline tek bir `multi-agent` router gönderir ve alt-komut spec'lerini, okunan
114
226
  hiçbir maliyeti olmayan referans dosyaları olarak tutar - aynı komutlar, aynı davranış,
115
227
  host'un gerçekten tutabildiği bir düzen.
116
228
 
117
- Reviewer setleri farklı çünkü mevcut modeller farklı: Claude Code 2 reviewer çalıştırır
118
- (Fable + Sonnet), Copilot CLI 3 (Opus + GPT-5.4 + Sonnet), Codex CLI 3 (xhigh'da
229
+ Reviewer setleri farklı çünkü mevcut modeller farklı: Claude Code 3 reviewer çalıştırır
230
+ (Fable + Opus + Sonnet), Copilot CLI 3 (Opus + GPT-5.4 + Sonnet), Codex CLI 3 (xhigh'da
119
231
  gpt-5.6, gpt-5.4, medium'da gpt-5.6). Codex tek-vendor olduğu için üçü arasındaki
120
232
  konsensüs, iki-vendor'lu bir host'taki aynı konsensüsten daha zayıf bir kanıttır ve
121
233
  triage notu bunu belirtir.
@@ -2,6 +2,11 @@
2
2
 
3
3
  **Status:** Accepted · 2025 · Amended 2026-04 (CLI-aware reviewer set) · Amended 2026-07 (v10.6.0: Fable 5 restored - Reviewer 1 and triage run on Fable on Claude Code; Copilot CLI pins Opus. "Opus" below reads as "the top tier of the day")
4
4
 
5
+ > **Superseded in part, v16.12.0.** The reviewer count is now 3 on every host: Opus
6
+ > fills the slot GPT-5.4 occupies on Copilot and Codex, so Claude Code runs
7
+ > Fable + Opus + Sonnet. The reasoning below about a 2-reviewer set on Claude Code
8
+ > is kept as the record of what was decided then, not as current behaviour.
9
+
5
10
  ## Context
6
11
 
7
12
  Code review is the phase where the pipeline most commonly ships wrong work. A
package/docs/features.md CHANGED
@@ -12,7 +12,7 @@ Phase 1: Analysis Stack detection, codebase exploration (parallel Explore agent
12
12
  Phase 2: Planning Task decomposition, architecture review, user approval
13
13
  Phase 3: Dev TDD cycle: test → code → build (Sonnet)
14
14
  Phase 4: Review Deterministic gates + parallel AI review + Fable triage
15
- (Claude Code: Fable + Sonnet · Copilot CLI: GPT-5.4 + Opus + Sonnet)
15
+ (Claude Code: Fable + Opus + Sonnet · Copilot CLI: GPT-5.4 + Opus + Sonnet)
16
16
  Phase 5: Test Optional manual testing + on-demand device audits
17
17
  Phase 6: Commit Git commit, push, PR with default reviewers + draft/ready prompt
18
18
  Phase 7: Report External: Jira comment · Wiki + Figma screenshots · Confluence
@@ -134,6 +134,22 @@ Cheap, objective checks run BEFORE any AI token is spent:
134
134
 
135
135
  If any gate fails, fix first. Don't waste AI tokens reviewing broken code.
136
136
 
137
+ ### Analysis Document Review (Phase 3.2 + 3.3)
138
+
139
+ `/multi-agent:analysis` published behind a structural validator alone until v16.12.0: nothing read the
140
+ document before it reached Confluence. Phase 3.2 now runs the same reviewer set and triage a code diff
141
+ gets, on the draft, before the destination is even chosen. Its first question is what the run skipped -
142
+ an input declared missing that nothing searched for, an open question about evidence nobody read, a gap
143
+ with no owner, a scope call made without asking. A blocking finding returns to synthesis with dispatch
144
+ closed; it never becomes an open question, because "the document is wrong" is not something to ask the
145
+ reader.
146
+
147
+ Phase 3.3 then sorts what is left: reachable evidence is searched (never asked about), decisions the
148
+ user owns are asked with `AskUserQuestion`, and only genuinely external gaps enter the document as
149
+ `AS-NN` rows with an owner. A gap carrying neither a `searched, not found` nor an `asked, external`
150
+ stamp fails the dispatch gate. Autopilot runs both phases; only the asking degrades, into rows stamped
151
+ `autopilot: could not ask`.
152
+
137
153
  ### CLI-Aware Parallel Review + Fable Triage (Phase 4 Steps 2-3)
138
154
 
139
155
  | Reviewer | Model | Focus | Where it runs |
@@ -142,7 +158,7 @@ If any gate fails, fix first. Don't waste AI tokens reviewing broken code.
142
158
  | Reviewer 2 | `gpt-5.4` | Edge cases, different perspective | **Copilot CLI only** |
143
159
  | Reviewer 3 | `claude-sonnet-4-6` | Quality + correctness + naming | Both CLIs |
144
160
 
145
- The reviewer set is **CLI-aware**: Claude Code dispatches 2 reviewers in parallel (Fable + Sonnet - GPT-5.4 is not available there); Copilot CLI dispatches all 3. Each returns structured JSON for deterministic aggregation. Cross-model diversity catches blind spots that any single model family would miss.
161
+ The reviewer set is **CLI-aware**: Claude Code dispatches 3 reviewers in parallel (Fable + Opus + Sonnet - Opus fills the slot GPT-5.4 takes elsewhere); Copilot CLI dispatches all 3. Each returns structured JSON for deterministic aggregation. Cross-model diversity catches blind spots that any single model family would miss.
146
162
 
147
163
  **Fable Triage** (Phase 4 Step 3, Opus on Copilot CLI): Evaluates merged raw findings against task scope. Classifies each as `accepted` (fix now), `deferred` (out of scope, log for later), or `rejected` (false positive / noise). Only triage-accepted blocking items loop back to Phase 3.
148
164
 
@@ -266,7 +266,7 @@ Always, in every mode:
266
266
  Stack skill sets ship as versioned plugins in the `multi-agent-plugins` marketplace. Selecting a stack enables the matching plugin(s) in the target repo's `.claude/settings.json` `enabledPlugins`; the `ai-common-toolkit` is always enabled alongside. There is no session-start auto-swap script. Select or change the stack with:
267
267
 
268
268
  ```bash
269
- multi-agent-stack [ios|android|mobile|backend|frontend|fullstack|all]
269
+ multi-agent-stack [ios|android|mobile|backend|web|fullstack|all]
270
270
  ```
271
271
 
272
272
  ## UI Bug Hunter
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmerterden/multi-agent-pipeline",
3
- "version": "16.10.1",
3
+ "version": "16.12.0",
4
4
  "description": "8-phase AI development pipeline with full orchestration on Claude Code, Copilot CLI and Codex CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -17,7 +17,7 @@
17
17
  2. Planning (Opus) -> spec, task breakdown
18
18
  3. Development (Sonnet) -> TDD, code, build
19
19
  4. Review -> deterministic gates + parallel review + Fable triage
20
- - Claude Code: Opus + Sonnet (2 paralel)
20
+ - Claude Code: Fable + Opus + Sonnet (3 paralel)
21
21
  - Copilot CLI: GPT-5.4 + Opus + Sonnet (3 paralel)
22
22
  - Codex CLI: gpt-5.6 (xhigh) + gpt-5.4 + gpt-5.6 (medium) (3 paralel)
23
23
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: "Task orchestrator - full pipeline via Jira ID + branch or GitHub Issue URL: analysis, plan, TDD development, parallel review + Fable triage (CLI-aware: 2-model on Claude Code, 3-model on Copilot CLI), commit, log. Use when given a Jira ID, a GitHub issue or a free-text task and the whole pipeline should run."
3
- description-tr: "Görev orkestratörü - Jira ID + branch veya GitHub Issue URL ile tam pipeline: analiz, plan, TDD geliştirme, paralel review + Fable triyajı (CLI'ya göre: Claude Code'da 2, Copilot CLI'da 3 model), commit, log"
3
+ description-tr: "Görev orkestratörü - Jira ID + branch veya GitHub Issue URL ile tam pipeline: analiz, plan, TDD geliştirme, paralel review + Fable triyajı (CLI'ya göre: Claude Code'da 3, Copilot CLI'da 3 model), commit, log"
4
4
  allowed-tools: Agent, Bash, Read, Write, Edit, Glob, Grep, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, WebFetch, WebSearch, NotebookEdit, Skill
5
5
  ---
6
6
 
@@ -12,7 +12,7 @@ Parse the user input and route to the correct sub-command.
12
12
 
13
13
  **Input**: $ARGUMENTS
14
14
 
15
- > **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` from `$HOME/.claude/multi-agent-preferences.json` and render every conversational line in it. `AskUserQuestion` `label`/`header` stay English, but its `question` and option `description`s render in `outputLanguage`; external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
15
+ > **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` from `$HOME/.claude/multi-agent-preferences.json` and render every conversational line in it. `AskUserQuestion` renders its `question`, option `label`s and option `description`s in `outputLanguage`; only `header` stays English (<=12-char chip); external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
16
16
 
17
17
  ## Canonical Invocation (per CLI)
18
18
 
@@ -134,7 +134,7 @@ This command uses lazy loading for token efficiency. Read the relevant sub-file
134
134
  | SwiftUI component task (iOS) | `$HOME/.claude/multi-agent-refs/swiftui-guide.md` |
135
135
  | Jetpack Compose task (Android) | `$HOME/.claude/multi-agent-refs/android-guide.md` |
136
136
  | Backend API task | `$HOME/.claude/multi-agent-refs/backend-guide.md` |
137
- | Frontend component task | `$HOME/.claude/multi-agent-refs/frontend-guide.md` |
137
+ | Web component task | `$HOME/.claude/multi-agent-refs/web-guide.md` |
138
138
  | Phase 1 or Phase 7 (knowledge) | `$HOME/.claude/multi-agent-refs/knowledge.md` |
139
139
  | Token lookup needed | `$HOME/.claude/multi-agent-refs/keychain.md` |
140
140
  | Audit tools (Phase 5/6) | `$HOME/.claude/multi-agent-refs/audit-guide.md` |
@@ -151,7 +151,7 @@ This command uses lazy loading for token efficiency. Read the relevant sub-file
151
151
  - iOS detected -> load `swiftui-guide.md`
152
152
  - Android detected -> load `android-guide.md`
153
153
  - Python/Node.js/Go detected -> load `backend-guide.md`
154
- - React/Vue/Next.js detected -> load `frontend-guide.md`
154
+ - React/Vue/Next.js detected -> load `web-guide.md`
155
155
  - Multiple stacks -> load all relevant guides
156
156
 
157
157
  **Agent definitions** (used in Phase 1 and Phase 4):
@@ -12,7 +12,7 @@ This command is **independent** from the orchestrator's Phase 1 analysis (which
12
12
 
13
13
  **Scope (development analysis, not a screen spec)**: this command produces a *development* analysis - what to build, the architecture plan, files to add, the test plan, and which existing components to reuse. It is NOT a design / screen-anatomy specification. The design itself is already produced elsewhere (figma-to-swiftui builds the components and binds them via Code Connect), so the analysis consumes those existing bindings as the source of truth for "what already exists" (see Phase 1b.1) instead of re-deriving the design. Do not grow this command toward exhaustive per-screen layout / gesture / state documentation; keep it development-focused.
14
14
 
15
- > **Language**: Per `$HOME/.claude/multi-agent-refs/rules.md` Language Application matrix - instruction prose stays English (this file is read as a system prompt). `AskUserQuestion.label` and `header` stay English. `question` and `description` follow `outputLanguage`. The emitted analysis document body follows `outputLanguage` (`tr` or `en`).
15
+ > **Language**: Per `$HOME/.claude/multi-agent-refs/rules.md` Language Application matrix - instruction prose stays English (this file is read as a system prompt). `AskUserQuestion.question`, `.options[].label` and `.options[].description` follow `outputLanguage`; only `header` stays English (<=12-char chip). The emitted analysis document body follows `outputLanguage` (`tr` or `en`).
16
16
 
17
17
  ## Locked decisions (do not re-ask)
18
18
 
@@ -61,7 +61,7 @@ Full contract: `$HOME/.claude/multi-agent-refs/analysis/evidence.md`. Fetches ev
61
61
 
62
62
  Full contract: `$HOME/.claude/multi-agent-refs/analysis/synthesis.md`. Pass A builds the platform-agnostic concept layer; Phase 2a previews the resolved conventions for approval (Locked 26); Pass B projects each concept onto the selected platform with a footnote per filled cell (Locked 24).
63
63
 
64
- ### Phases 3, 3.5, 4, 5 - Render, publish, report
64
+ ### Phases 3, 3.2, 3.3, 3.5, 4, 5 - Render, review, publish, report
65
65
 
66
66
  Full contract: `$HOME/.claude/multi-agent-refs/analysis/render.md`. Renders one markdown file per platform, runs the **required** `ai-common-toolkit:humanizer` pass, gates on `validate-analysis-doc.mjs` and on the `build-references.mjs --check` references coverage gate (Locked 34), asks for the output destination, dispatches to Local / Confluence / Jira (a Jira issue receives a comment unless the user explicitly asks for the description, which is never overwritten without a backup and a confirmation), then reports and stops. The humanizer pass and the validator are required in every mode; a document that skipped either is not shippable.
67
67
 
@@ -106,7 +106,7 @@ When `phase == "cancelled_at_pass_b_preview"`:
106
106
  | Path | Reason |
107
107
  |------|--------|
108
108
  | `~/.claude/lib/submodule-detector.sh` | Phase 0 Step 4 repo discovery |
109
- | `~/.claude/lib/context-link-extractor.sh` | Phase 0 Step 5/Q6 URL classifier (handles `local-file`, `wiki`, `standards-confluence`, `generic-doc`, `firebase-events:names`, `firebase-events:schema`, `firebase-events:console` types) |
109
+ | `~/.claude/lib/context-link-extractor.sh` | Phase 0 Step 5 source classifier for every question's Other input (handles `local-file`, `document`, `wiki`, `standards-confluence`, `generic-doc`, `firebase-events:names`, `firebase-events:schema`, `firebase-events:console` types) |
110
110
  | `~/.claude/lib/fetch-swagger.sh`, `fetch-confluence.sh` | Phase 1 fetchers |
111
111
  | Phase 1 wiki fetch chain (inline, no standalone script) | `git clone --depth 1 <repo>.wiki.git` first, `gh api repos/.../contents/<file>.md` second, WebFetch third - see the Phase 1 type table `wiki` row |
112
112
  | `~/.claude/lib/extract-conventions.sh` | Phase 1c convention extractor (7 pattern groups, JSON output, confidence levels) |
@@ -122,7 +122,7 @@ When `phase == "cancelled_at_pass_b_preview"`:
122
122
  | `$HOME/.claude/lib/jira-publish.sh` | Phase 4 Jira write: comment by default, description only on explicit choice - reads the current description first, backs it up, appends below a rule, refuses a non-empty replace without `--confirm-overwrite` |
123
123
  | `$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) |
124
124
  | a project-supplied Confluence-embedded API-table parser (optional) | Parse endpoints from a Confluence page's Request Path / Service Name / Response Body table columns |
125
- | `~/<project>-Standards.md` | Canonical home-dir standards reference (auto-detected at Q5 option 2; exact filename from `prefs.projects[<project>].standardsFile`) |
125
+ | `~/<project>-Standards.md` | Canonical home-dir standards reference (auto-detected by the Standards question's option 2; exact filename from `prefs.projects[<project>].standardsFile`) |
126
126
  | `~/.claude/rules/*.md` | Fallback rules when `evidence.standards[]` is empty |
127
127
 
128
128
  ## Notes
@@ -131,14 +131,14 @@ When `phase == "cancelled_at_pass_b_preview"`:
131
131
  - The minimum possible output (per per-platform file) is `1. Scope` + `7. Development Plan` (both always-present).
132
132
  - If Confluence or Jira POST returns 401 / 403 during Phase 4, surface the error and offer Local fallback (the local drafts in `/tmp/` are still on disk; copying them into the repo working tree is always available).
133
133
  - The `analysis/` directory is not in `.gitignore`; the user can `git add analysis/` manually. No auto-commit.
134
- - **Per-platform file naming**: `analysis/<feature>-<platform>.md`. The `<platform>` slug is lowercase, one of `ios | android | backend | frontend`. The `<feature>` slug preserves the user's feature name with whitespace replaced by `-` (e.g. `User Profile` -> `UserProfile` or `Item-Status` depending on input shape; the renderer trims and de-duplicates dashes).
135
- - **Standards binding (Q5)**: When `evidence.standards[]` is non-empty, every decision in Section 7 must cite the binding source. The renderer enforces this by failing render if any Section 7 architectural decision has no `cite:` reference; the user is prompted to either tighten the source or add a Risk row acknowledging the missing citation.
136
- - **Firebase ingestion (Q6)**: Console URLs are never fetched (auth-gated). Only `:names` and `:schema` inputs feed `evidence.firebase[]`. Section 6 emits per-platform snippets but the events table itself is shared across all per-platform files (the rules / event vocabulary is one product invariant).
134
+ - **Per-platform file naming**: `analysis/<feature>-<platform>.md`. The `<platform>` slug is lowercase, one of `ios | android | web | backend` for a repo-backed run, or `mobile | web` for the channels a repo-less run derives from its evidence (Locked 35). `web` is the pre-`web` spelling and is still read back for older state and documents. The `<feature>` slug preserves the user's feature name with whitespace replaced by `-` (e.g. `User Profile` -> `UserProfile` or `Item-Status` depending on input shape; the renderer trims and de-duplicates dashes).
135
+ - **Standards binding (the Standards question)**: When `evidence.standards[]` is non-empty, every decision in Section 13 (Architecture Plan, corporate Section 17) must cite the binding source in its 13.7 Standards-binding table. The renderer enforces this by failing render if any architectural decision has no `cite:` reference; the user is prompted to either tighten the source or add a Risk row acknowledging the missing citation.
136
+ - **Firebase ingestion (the Firebase question)**: Console URLs are never fetched (auth-gated). Only `:names` and `:schema` inputs feed `evidence.firebase[]`. Section 11 Analytics (corporate Section 13) emits per-platform snippets but the events table itself is shared across all per-platform files (the rules / event vocabulary is one product invariant).
137
137
  - **Wiki access fallback chain**: Phase 1 `wiki` fetcher tries (a) `git clone .wiki.git`, (b) `gh api repos/.../contents/<file>.md`, (c) raw `WebFetch` of the page URL. Only after all three fail does the entry land in `fetchErrors[]`.
138
138
  - **Local-file safety**: `local-file` reads are scoped to `~/`, `/Users/`, and the repo's working tree. Paths outside these prefixes are rejected with `WARN: refusing to read <path>; outside allowed roots` to avoid accidental ingestion of unrelated files.
139
- - **Q5 vs Q3 split**: Q3 (Confluence) collects feature-specific spec pages. Q5 (Standards) collects cross-cutting documentation that constrains the development plan (architecture, coding conventions, navigation pattern). A URL pasted in both questions is de-duplicated by URL and the Q5 entry wins (binding flag is retained).
140
- - **Workspace coding documentation default**: when Q5 option 2 (Auto-detect) is selected, the probe also reads `prefs.projects[<project>].confluenceStandardsParent` (if set) and looks for child pages whose title starts with `Coding`, `Standards`, `Architecture`, or `Navigation`. If that fetch fails with auth, log a hint that the user should host an offline mirror at `prefs.projects[<project>].standardsFile` (canonical local fallback).
141
- - **Mixed paste handling**: Q5 / Q6 Other inputs accept comma-separated mixed entries. Whitespace is trimmed; entries are de-duplicated by canonicalised string (lowercase scheme + host + path for URLs; `realpath` for local files; lowercase exact match for event names).
139
+ - **Standards vs Confluence vs Document split**: the Confluence question collects feature-specific spec pages and the Document question the same spec delivered as a `.docx` / `.pdf` / `.md` / `.txt` file - both describe what the feature IS and both land in `evidence.documents[]`. The Standards question collects cross-cutting documentation that constrains the development plan (architecture, coding conventions, navigation pattern). A source pasted in more than one of the three is de-duplicated (by URL, or by `realpath` for a local file) and the Standards entry wins, because it retains the binding flag.
140
+ - **Workspace coding documentation default**: when the Standards question's option 2 (Auto-detect) is selected, the probe also reads `prefs.projects[<project>].confluenceStandardsParent` (if set) and looks for child pages whose title starts with `Coding`, `Standards`, `Architecture`, or `Navigation`. If that fetch fails with auth, log a hint that the user should host an offline mirror at `prefs.projects[<project>].standardsFile` (canonical local fallback).
141
+ - **Mixed paste handling**: the Standards and Firebase Other inputs accept comma-separated mixed entries. Whitespace is trimmed; entries are de-duplicated by canonicalised string (lowercase scheme + host + path for URLs; `realpath` for local files; lowercase exact match for event names).
142
142
  - **Repo-evidence reuse policy**: Phase 1b's catalogue is consulted by Pass B Section 7 rendering. The `direct-match` tag is the strongest signal; a `same-domain` row becomes an advisory note ("consider adapting existing X in the same feature directory"); `cross-cutting` items become a sentence in the section preamble ("reuse the cross-feature X from Common/"). See Locked decision 11.
143
143
 
144
144
  ## Required: Phase Tracker Contract
@@ -10,7 +10,7 @@ Companion command to `/multi-agent:analysis`. Takes an `analysis/<feature>-<plat
10
10
 
11
11
  **Core invariant - read this twice:** the analysis doc is authoritative and forward-looking. The resolver never invents an answer; if no source produces a credible candidate, the only options offered are Defer and Other. Each Section 20 row is its own decision; never blend candidates across rows.
12
12
 
13
- > **Language**: Per `$HOME/.claude/multi-agent-refs/rules.md` Language Application matrix - instruction prose stays English. `AskUserQuestion.label` and `header` stay English; `question` and `description` follow `prefs.global.outputLanguage`. Fragments written INTO the doc follow the doc's own front-matter `language` field (not `outputLanguage`), so a `tr` doc stays uniformly Turkish even when the session language differs.
13
+ > **Language**: Per `$HOME/.claude/multi-agent-refs/rules.md` Language Application matrix - instruction prose stays English. `AskUserQuestion.question`, `.options[].label` and `.options[].description` follow `prefs.global.outputLanguage`; only `header` stays English (<=12-char chip). Fragments written INTO the doc follow the doc's own front-matter `language` field (not `outputLanguage`), so a `tr` doc stays uniformly Turkish even when the session language differs.
14
14
 
15
15
  ## Inherited Locked decisions (from /multi-agent:analysis - binding here)
16
16
 
@@ -35,7 +35,7 @@ Inherited decisions: `$HOME/.claude/multi-agent-refs/analysis/locked.md`.
35
35
 
36
36
  ### Phase 0 - Intake
37
37
 
38
- **Step 1 - Doc picker.** If `$ARGUMENTS` has a path, validate it. Otherwise glob `analysis/*-{ios,android,backend,frontend}.md` under cwd (and each repo root from `state.analysisSpec.repos[]` when the session still holds analysis state):
38
+ **Step 1 - Doc picker.** If `$ARGUMENTS` has a path, validate it. Otherwise glob `analysis/*-{ios,android,backend,web}.md` under cwd (and each repo root from `state.analysisSpec.repos[]` when the session still holds analysis state):
39
39
  - 1 match: use it; echo the path, no question.
40
40
  - 0 or 2+ matches: AskUserQuestion, `header: "Doc"`, question `<localized: "Which analysis document should we resolve?">`, options = matches (max 3) + Other for a free-typed path.
41
41
 
@@ -8,7 +8,7 @@ argument-hint: '"task" - issue URL, Jira ID, free-text, or #id (for resume)'
8
8
 
9
9
  **Input**: $ARGUMENTS
10
10
 
11
- > **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` `label`/`header` stay English, but its `question` and option `description`s render in `outputLanguage`; external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
11
+ > **Language (read FIRST)**: Before any status output, read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` renders its `question`, option `label`s and option `description`s in `outputLanguage`; only `header` stays English (<=12-char chip); external payload bodies follow `outputLanguage` too (identifiers, commit messages, branch names stay English). Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
12
12
 
13
13
  Run the task end-to-end with no confirmations.
14
14