@mmerterden/multi-agent-pipeline 12.11.0 → 13.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +179 -0
- package/README.md +24 -7
- package/index.js +5 -2
- package/install/_codex-agents.mjs +211 -0
- package/install/_codex-instructions.mjs +33 -0
- package/install/_managed-block.mjs +99 -0
- package/install/codex.mjs +478 -0
- package/install/copilot.mjs +34 -80
- package/install/index.mjs +25 -9
- package/install/templates/codex-instructions.md +45 -0
- package/package.json +5 -3
- package/pipeline/claude-md-template.md +1 -0
- package/pipeline/commands/multi-agent/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/dev/SKILL.md +52 -6
- package/pipeline/commands/multi-agent/dev-local/SKILL.md +21 -0
- package/pipeline/commands/multi-agent/finish/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/language/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/setup/SKILL.md +69 -2
- package/pipeline/commands/multi-agent/sync/SKILL.md +128 -5
- package/pipeline/commands/multi-agent/testflight-validation/SKILL.md +219 -0
- package/pipeline/commands/multi-agent/update/SKILL.md +7 -4
- package/pipeline/multi-agent-refs/_input-parser.md +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +40 -7
- package/pipeline/multi-agent-refs/cross-cli-contract.md +51 -17
- package/pipeline/multi-agent-refs/features/model-fallback.md +29 -0
- package/pipeline/multi-agent-refs/features/review-multi-repo.md +1 -1
- package/pipeline/multi-agent-refs/phases/log-format.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +43 -2
- package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +24 -1
- package/pipeline/multi-agent-refs/phases/phase-3-dev.md +32 -0
- package/pipeline/multi-agent-refs/phases/phase-4-review.md +62 -5
- package/pipeline/multi-agent-refs/progress-contract.md +1 -1
- package/pipeline/multi-agent-refs/tracker-contract.md +17 -1
- package/pipeline/schemas/prefs.schema.json +296 -62
- package/pipeline/schemas/reviewer-output.schema.json +1 -1
- package/pipeline/schemas/triage-output.schema.json +1 -1
- package/pipeline/scripts/cost-table.json +15 -1
- package/pipeline/scripts/phase0-exit-gate.mjs +185 -0
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +25 -10
- package/pipeline/scripts/uninstall.mjs +105 -9
- package/pipeline/scripts/update-check.sh +2 -1
- package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +21 -0
- package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +21 -0
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +48 -1
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +87 -6
- package/pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md +120 -0
|
@@ -218,11 +218,42 @@ Launch Agent instances **in parallel** using the shared `code-reviewer` subagent
|
|
|
218
218
|
|
|
219
219
|
**Scope from Step 1.77.** `$REVIEW_SCOPE == "single"` → dispatch **Reviewer 1 only**, and skip Step 2.5 + 3.6 (both no-ops with one reviewer). `"full"` (default + fail-safe) → the whole set below. Either way record the count in `consensus.reviewerCount`.
|
|
220
220
|
|
|
221
|
-
| Reviewer | subagent_type
|
|
222
|
-
| ---------- |
|
|
223
|
-
| Reviewer 1 | `code-reviewer`
|
|
224
|
-
| Reviewer 2 | `code-reviewer`
|
|
225
|
-
| Reviewer 3 | `code-reviewer`
|
|
221
|
+
| Reviewer | subagent_type | Claude Code | Copilot CLI | Codex CLI | Focus | Skills Referenced |
|
|
222
|
+
| ---------- | --------------- | --- | --- | --- | --- | --- |
|
|
223
|
+
| Reviewer 1 | `code-reviewer` | `claude-fable-5` | `claude-opus-4-8` | `gpt-5.6` @ `xhigh` | Deep security + architecture | `api-security-best-practices`, `architecture` |
|
|
224
|
+
| Reviewer 2 | `code-reviewer` | (not dispatched) | `gpt-5.4` | `gpt-5.4` @ `high` | Edge cases, different perspective | cross-model diversity |
|
|
225
|
+
| Reviewer 3 | `code-reviewer` | `claude-sonnet-4-6` | `claude-sonnet-4-6` | `gpt-5.6` @ `medium` | Quality + correctness + naming | `clean-code`, stack-specific skill |
|
|
226
|
+
| Triage | triage persona | `claude-fable-5` | `claude-opus-4-8` | `gpt-5.6` @ `max` | Filter false positives + out-of-scope | - |
|
|
227
|
+
|
|
228
|
+
Reviewer count per host: **Claude Code 2, Copilot CLI 3, Codex CLI 3**.
|
|
229
|
+
|
|
230
|
+
#### Codex CLI - two constraints that fail silently
|
|
231
|
+
|
|
232
|
+
Both were measured against Codex 0.145, not inferred. Getting either wrong produces
|
|
233
|
+
a review that looks like it ran.
|
|
234
|
+
|
|
235
|
+
1. **Every `spawn_agent` that sets `model` or `reasoning_effort` MUST pass
|
|
236
|
+
`fork_turns: "none"`** (or a positive integer). Codex states that a full-history
|
|
237
|
+
fork "inherits the parent model and reasoning effort and does not accept
|
|
238
|
+
overrides" - so omitting `fork_turns` silently collapses the whole panel onto
|
|
239
|
+
the orchestrator's model, with three reviewers reporting from one perspective
|
|
240
|
+
and no error anywhere.
|
|
241
|
+
2. **Three concurrent children is the ceiling.** Codex advertises 4 concurrency
|
|
242
|
+
slots *including the orchestrator*, so a 3-reviewer panel saturates it and a 4th
|
|
243
|
+
child queues instead of running in parallel. The reviewer count on Codex is
|
|
244
|
+
capability-derived, not a preference.
|
|
245
|
+
|
|
246
|
+
Codex also refuses to spawn sub-agents at all unless instructions ask for it
|
|
247
|
+
explicitly; the pipeline's `~/.codex/AGENTS.md` managed block carries that
|
|
248
|
+
authorization. Without it Phase 4 degrades to a single in-thread review.
|
|
249
|
+
|
|
250
|
+
**Single-vendor caveat.** Every Codex reviewer is an OpenAI model, so the
|
|
251
|
+
cross-vendor disagreement that Claude Code and Copilot CLI get for free is absent.
|
|
252
|
+
The diversity budget shifts to reasoning effort and persona focus: Reviewer 1 runs
|
|
253
|
+
`xhigh` on security and architecture, Reviewer 2 runs a different model family
|
|
254
|
+
member on edge cases, Reviewer 3 runs `medium` on quality. Treat consensus among
|
|
255
|
+
them as weaker evidence than the same consensus on a two-vendor host, and say so
|
|
256
|
+
in the triage note when all three agree on a borderline finding.
|
|
226
257
|
|
|
227
258
|
Each reviewer inherits the `code-reviewer` agent's focus areas (Security, Architecture, Quality, Performance) and output contract. The orchestrator overrides only the model and the stack-specific skill per-reviewer - no prompt duplication.
|
|
228
259
|
|
|
@@ -241,6 +272,32 @@ Each reviewer inherits the `code-reviewer` agent's focus areas (Security, Archit
|
|
|
241
272
|
|
|
242
273
|
Skills are injected into reviewer prompt context - the reviewer uses them as reference, not as commands.
|
|
243
274
|
|
|
275
|
+
#### Step 2.8 - Visual conformance gate (component / screen work only)
|
|
276
|
+
|
|
277
|
+
Runs when `state.taskType == "component"` **or** the diff touches SwiftUI UI files
|
|
278
|
+
AND the task carried a Figma reference. Two checks, in order:
|
|
279
|
+
|
|
280
|
+
1. **`ai-ios-engineering-toolkit:figma-review`** over the implemented frames - the
|
|
281
|
+
plugin's own component review, including the 14-item checklist that covers design
|
|
282
|
+
tokens, accessibility identifiers, previews and Code Connect.
|
|
283
|
+
2. **`/multi-agent:design-check`** for pixel + spacing + typography + colour
|
|
284
|
+
conformance against the Figma variants, with its coverage gate: a variant that is
|
|
285
|
+
neither audited nor skipped-with-a-reason fails the run.
|
|
286
|
+
|
|
287
|
+
**Code Connect must be published, not merely written.** A `*.figma.swift` file on
|
|
288
|
+
disk with `Code Connect: Not published` in Figma means the binding does not exist for
|
|
289
|
+
anyone but the author. Assert the publish step ran; an unpublished binding is a
|
|
290
|
+
blocking finding.
|
|
291
|
+
|
|
292
|
+
Why this is a gate and not advice: `design-check` existed as a command for a while
|
|
293
|
+
with **no phase invoking it**, so the only thing standing between a build and visual
|
|
294
|
+
drift was the user opening the app and looking. On one run that produced 16pt padding
|
|
295
|
+
where the frame said `Spacing/12`, and a full sheet rebuild afterwards. A reviewer
|
|
296
|
+
reading a diff cannot see spacing; something has to compare against the design.
|
|
297
|
+
|
|
298
|
+
Skip only when the diff has no UI change. Record the outcome in
|
|
299
|
+
`consensus.visualConformance` so Phase 7 reports whether it ran.
|
|
300
|
+
|
|
244
301
|
**iOS/Swift - interaction & convention checks (conditional).** When the diff touches SwiftUI UI files (`*View.swift`, `*Screen.swift`, `*Configuration.swift`, `*+Modifiers.swift`), the iOS reviewers additionally apply the component/interaction conventions documented in the analysis doc (Section 14 Code Connect mapping) and, where the repo has the marketplace component toolkit enabled (`ai-ios-engineering-toolkit`), that plugin's navigation / overlay / bottom-sheet conventions (interaction: emit-intent vs self-route/self-present; native-SwiftUI-first vs the project's `ui.*` custom system) plus the component accessibility rules (minimalism). These back the Step 1.5 iOS convention checks. Generic across SwiftUI projects - not tied to any one app. Omit when the diff has no SwiftUI UI changes (keeps the reviewer prompt lean).
|
|
245
302
|
|
|
246
303
|
**Module review guides (conditional, all stacks).** A module in the repo may carry its own CLAUDE guide - a convention/checklist file living somewhere in the module's directory tree that the host CLI never auto-loads. When a changed file's module has such a guide, the review must consult it. Discovery is deterministic, from the diff's changed paths: for each changed file, walk its directory chain up to the repo root and collect `CLAUDE.md`, `*-CLAUDE.md`, and `AGENTS.md` files (root-level ones excluded - the host CLI already loads those). Dedupe, cap at 5 (log any dropped). Inject into every reviewer prompt with the directive: read each guide before reviewing and apply its rules/checklist to the changed files under its directory - a guide governs only its own subtree, and guide violations are findings triaged by severity like any other. No guides found → no-op, prompt stays lean. Same contract as `/multi-agent:review` Step 2b.
|
|
@@ -129,7 +129,7 @@ Every phase that dispatches a billable LLM agent MUST forward the call's token t
|
|
|
129
129
|
|
|
130
130
|
```bash
|
|
131
131
|
LOG_METRIC_FORWARD_TO_TRACKER=1 pipeline/scripts/log-metric.sh "$TASK_ID" <phase-id> <event> \
|
|
132
|
-
model=<fable|opus|sonnet|haiku|gpt-5.4> \
|
|
132
|
+
model=<fable|opus|sonnet|haiku|gpt-5.4|gpt-5.6|gpt-5.6-terra> \
|
|
133
133
|
tokens_in=$IN tokens_out=$OUT duration_ms=$DUR
|
|
134
134
|
```
|
|
135
135
|
|
|
@@ -24,7 +24,8 @@ The agent detects which CLI it's running in and uses the appropriate visual mech
|
|
|
24
24
|
```
|
|
25
25
|
1. system prompt mentions "Claude Code" → claude-code
|
|
26
26
|
2. system prompt mentions "Copilot" / "GitHub Copilot" → copilot
|
|
27
|
-
3.
|
|
27
|
+
3. system prompt mentions "Codex" → codex
|
|
28
|
+
4. None of the above → generic (bash stdout)
|
|
28
29
|
```
|
|
29
30
|
|
|
30
31
|
Visual mechanism per CLI:
|
|
@@ -33,12 +34,27 @@ Visual mechanism per CLI:
|
|
|
33
34
|
|---|---|
|
|
34
35
|
| **claude-code** | `TaskCreate({subject, activeForm})` then `TaskUpdate({status, activeForm})`. Native sticky widget; ⏺ tiles, spinner header. |
|
|
35
36
|
| **copilot** | Inline call: `bash phase-tracker.sh render`. The bordered ANSI card lands as the last tool result in the chat. |
|
|
37
|
+
| **codex** | The native `update_plan` tool: one plan step per phase, `status: pending \| in_progress \| completed`. Rewrite the whole step list on each boundary - the tool takes the full plan, not a delta. |
|
|
36
38
|
| **generic** (plain shell, Git Bash, WSL, tmux) | Same bash render - the bordered ANSI card prints to terminal stdout in place. |
|
|
37
39
|
|
|
38
40
|
**Common to every CLI**: `phase-tracker.sh add/update/meta/tokens` calls run identically → the state file is always correct, and `:resume` / `:log` / `:status` work on every CLI.
|
|
39
41
|
|
|
40
42
|
**Claude Code only**: in addition, `TaskCreate` / `TaskUpdate` native tool calls → the sticky widget pins the phase stack in the user's view.
|
|
41
43
|
|
|
44
|
+
### Codex specifics
|
|
45
|
+
|
|
46
|
+
Two constraints on `update_plan`, both of which fail quietly if ignored:
|
|
47
|
+
|
|
48
|
+
- **Never call it in parallel with another tool.** Codex states this explicitly. A
|
|
49
|
+
phase boundary that batches `update_plan` alongside other calls loses the update.
|
|
50
|
+
- **It is unavailable in Codex plan mode.** Fall back to
|
|
51
|
+
`bash phase-tracker.sh render` there rather than skipping the visual channel.
|
|
52
|
+
|
|
53
|
+
The plan step is the phase label, not a restatement of the work: `Phase 4 - Review`
|
|
54
|
+
in the step list, with detail going to the agent log. A plan that mirrors the phase
|
|
55
|
+
list is legible; one that mirrors the task list duplicates what the log already
|
|
56
|
+
holds.
|
|
57
|
+
|
|
42
58
|
## Call pattern
|
|
43
59
|
|
|
44
60
|
At every phase boundary the agent takes **two steps**:
|