@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.
- package/CHANGELOG.md +58 -0
- package/README.md +115 -4
- package/README.tr.md +116 -4
- package/docs/adr/0001-three-model-triage.md +5 -0
- package/docs/features.md +18 -2
- package/install/templates/copilot-instructions.md +1 -1
- package/package.json +1 -1
- package/pipeline/claude-md-template.md +1 -1
- package/pipeline/commands/multi-agent/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/analysis/SKILL.md +10 -10
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/build-optimize/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/channels/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/create-jira/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/design-check/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/help/SKILL.md +6 -6
- package/pipeline/commands/multi-agent/language/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/local/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/purge/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/resume-local/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/review/SKILL.md +10 -9
- package/pipeline/commands/multi-agent/review-analysis/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/setup/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/stack/SKILL.md +12 -13
- package/pipeline/lib/extract-conventions.sh +19 -18
- package/pipeline/lib/figma-screenshot.sh +107 -7
- package/pipeline/lib/md2confluence-v3.py +133 -25
- package/pipeline/multi-agent-refs/_account-picker.md +1 -1
- package/pipeline/multi-agent-refs/_dev-context.md +2 -2
- package/pipeline/multi-agent-refs/_input-parser.md +1 -1
- package/pipeline/multi-agent-refs/analysis/evidence.md +4 -4
- package/pipeline/multi-agent-refs/analysis/intake.md +112 -36
- package/pipeline/multi-agent-refs/analysis/locked.md +5 -4
- package/pipeline/multi-agent-refs/analysis/render.md +72 -14
- package/pipeline/multi-agent-refs/analysis/review.md +17 -1
- package/pipeline/multi-agent-refs/analysis/synthesis.md +7 -7
- package/pipeline/multi-agent-refs/analysis-template-corporate.md +15 -4
- package/pipeline/multi-agent-refs/analysis-template.md +6 -6
- package/pipeline/multi-agent-refs/channels/confluence.md +1 -0
- package/pipeline/multi-agent-refs/channels/pr.md +2 -2
- package/pipeline/multi-agent-refs/conventions-defaults.md +13 -13
- package/pipeline/multi-agent-refs/features/stack-skill-routing.md +1 -1
- package/pipeline/multi-agent-refs/knowledge.md +1 -1
- package/pipeline/multi-agent-refs/phases/modes.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +10 -6
- package/pipeline/multi-agent-refs/phases/phase-2-planning.md +6 -5
- package/pipeline/multi-agent-refs/phases/phase-3-dev.md +4 -4
- package/pipeline/multi-agent-refs/phases/phase-4-review.md +8 -8
- package/pipeline/multi-agent-refs/phases/phase-6-commit.md +7 -7
- package/pipeline/multi-agent-refs/picker-contract.md +29 -4
- package/pipeline/multi-agent-refs/readiness-review.md +1 -1
- package/pipeline/multi-agent-refs/rules.md +4 -4
- package/pipeline/multi-agent-refs/{frontend-guide.md → web-guide.md} +2 -2
- package/pipeline/schemas/analysis-output.schema.json +1 -1
- package/pipeline/schemas/analysis-spec.schema.json +5 -3
- package/pipeline/schemas/prefs.schema.json +18 -2
- package/pipeline/schemas/reviewer-output.schema.json +1 -1
- package/pipeline/schemas/triage-output.schema.json +1 -1
- package/pipeline/scripts/anonymize-findings.mjs +1 -1
- package/pipeline/scripts/gen-skills-index.mjs +1 -1
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +9 -9
- package/pipeline/scripts/validate-analysis-doc.mjs +92 -26
- package/pipeline/scripts/validate-analysis.mjs +6 -1
- package/pipeline/skills/.skills-index.json +2 -2
- package/pipeline/skills/shared/README.md +4 -4
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +4 -4
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +4 -4
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +11 -12
- 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 `` 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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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|
|
|
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.
|
|
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 (
|
|
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
|
|
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`
|
|
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
|
-
|
|
|
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 `
|
|
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 `
|
|
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
|
|
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
|
|
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 |
|
|
135
|
-
- **Standards binding (
|
|
136
|
-
- **Firebase ingestion (
|
|
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
|
-
- **
|
|
140
|
-
- **Workspace coding documentation default**: when
|
|
141
|
-
- **Mixed paste handling**:
|
|
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
|
|
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,
|
|
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`
|
|
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
|
|