@mmerterden/multi-agent-pipeline 18.0.0 → 19.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +287 -0
- package/README.md +36 -20
- package/README.tr.md +14 -16
- package/docs/adr/0002-instruction-driven-flag.md +1 -0
- package/docs/adr/0005-lazy-phase-docs.md +11 -1
- package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +1 -0
- package/docs/adr/0010-own-code-graph.md +1 -0
- package/docs/adr/0014-six-phase-consolidation.md +134 -0
- package/docs/adr/README.md +2 -1
- package/docs/architecture.md +37 -38
- package/docs/best-practices.md +1 -1
- package/docs/ecosystem.md +46 -27
- package/docs/engineering.md +1 -1
- package/docs/facts.json +61 -0
- package/docs/features.md +55 -54
- package/docs/performance.md +5 -5
- package/docs/recovery-guide.md +17 -17
- package/docs/token-budget-history.md +3 -1
- package/index.js +2 -2
- package/install/_codex-agents.mjs +1 -1
- package/install/templates/claude-hooks.json +1 -1
- package/install/templates/codex-instructions.md +1 -1
- package/install/templates/copilot-instructions.md +28 -28
- package/manifest.json +234 -216
- package/package.json +2 -2
- package/pipeline/agents/dev-critic.md +7 -7
- package/pipeline/commands/figma-to-swiftui.md +1 -1
- package/pipeline/commands/multi-agent/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/analysis/SKILL.md +15 -15
- package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/autopilot/SKILL.md +7 -7
- package/pipeline/commands/multi-agent/channels/SKILL.md +15 -15
- package/pipeline/commands/multi-agent/diff-explain/SKILL.md +6 -6
- package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/graph/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/help/SKILL.md +62 -62
- package/pipeline/commands/multi-agent/language/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/local/SKILL.md +11 -11
- package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +13 -13
- package/pipeline/commands/multi-agent/log/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/manual-test/SKILL.md +9 -9
- package/pipeline/commands/multi-agent/model/SKILL.md +69 -0
- package/pipeline/commands/multi-agent/refactor/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/resume/SKILL.md +4 -4
- package/pipeline/commands/multi-agent/resume-local/SKILL.md +19 -17
- package/pipeline/commands/multi-agent/review/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/review-analysis/SKILL.md +1 -1
- package/pipeline/commands/multi-agent/route-off/SKILL.md +36 -0
- package/pipeline/commands/multi-agent/route-on/SKILL.md +74 -0
- package/pipeline/commands/multi-agent/route-status/SKILL.md +56 -0
- package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/status/SKILL.md +5 -5
- package/pipeline/commands/multi-agent/steer/SKILL.md +2 -2
- package/pipeline/commands/multi-agent/sync/SKILL.md +12 -13
- package/pipeline/commands/multi-agent/test/SKILL.md +1 -1
- package/pipeline/lib/credential-inventory.sh +1 -1
- package/pipeline/lib/fetch-fortify.sh +1 -1
- package/pipeline/lib/model-dispatch.sh +140 -0
- package/pipeline/lib/model-rung.sh +142 -0
- package/pipeline/lib/outbound-gate.mjs +14 -0
- package/pipeline/lib/phase-schema.mjs +88 -0
- package/pipeline/lib/plan-todos.sh +5 -5
- package/pipeline/lib/route-state.sh +161 -0
- package/pipeline/lib/run-paths.sh +2 -2
- package/pipeline/multi-agent-refs/_account-picker.md +1 -1
- package/pipeline/multi-agent-refs/_dev-context.md +6 -6
- package/pipeline/multi-agent-refs/_input-parser.md +1 -1
- package/pipeline/multi-agent-refs/analysis/evidence.md +2 -11
- package/pipeline/multi-agent-refs/analysis/intake.md +7 -7
- package/pipeline/multi-agent-refs/analysis/locked.md +48 -22
- package/pipeline/multi-agent-refs/analysis/redesign.md +1 -1
- package/pipeline/multi-agent-refs/analysis/render.md +10 -10
- package/pipeline/multi-agent-refs/analysis/resolve.md +1 -1
- package/pipeline/multi-agent-refs/analysis/review.md +2 -2
- package/pipeline/multi-agent-refs/analysis/synthesis.md +13 -7
- package/pipeline/multi-agent-refs/analysis-template-corporate.md +9 -9
- package/pipeline/multi-agent-refs/analysis-template.md +19 -19
- package/pipeline/multi-agent-refs/android-guide.md +1 -1
- package/pipeline/multi-agent-refs/audit-guide.md +13 -13
- package/pipeline/multi-agent-refs/channels/issue-comment.md +2 -2
- package/pipeline/multi-agent-refs/channels/jira.md +3 -3
- package/pipeline/multi-agent-refs/channels/pr.md +4 -4
- package/pipeline/multi-agent-refs/channels/wiki.md +1 -1
- package/pipeline/multi-agent-refs/component-dispatch.md +8 -8
- package/pipeline/multi-agent-refs/conventions-defaults.md +2 -2
- package/pipeline/multi-agent-refs/cross-cli-contract.md +31 -6
- package/pipeline/multi-agent-refs/features/analysis-jira.md +1 -1
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +4 -4
- package/pipeline/multi-agent-refs/features/code-graph.md +5 -5
- package/pipeline/multi-agent-refs/features/design-conformance.md +1 -1
- package/pipeline/multi-agent-refs/features/dev-critic.md +3 -3
- package/pipeline/multi-agent-refs/features/doctor.md +3 -3
- package/pipeline/multi-agent-refs/features/external-context-injection.md +3 -3
- package/pipeline/multi-agent-refs/features/maturity-followup.md +3 -3
- package/pipeline/multi-agent-refs/features/model-fallback.md +41 -5
- package/pipeline/multi-agent-refs/features/plan-todos.md +1 -1
- package/pipeline/multi-agent-refs/features/repo-map.md +1 -1
- package/pipeline/multi-agent-refs/features/review-delta.md +3 -3
- package/pipeline/multi-agent-refs/features/review-multi-repo.md +2 -2
- package/pipeline/multi-agent-refs/features/scope-check.md +4 -4
- package/pipeline/multi-agent-refs/features/skill-conformance.md +2 -2
- package/pipeline/multi-agent-refs/features/stack-skill-routing.md +1 -1
- package/pipeline/multi-agent-refs/features/url-enrichment.md +1 -1
- package/pipeline/multi-agent-refs/features/verify-by-test.md +4 -4
- package/pipeline/multi-agent-refs/features/visual-evidence.md +19 -19
- package/pipeline/multi-agent-refs/features/worktree-finalize.md +6 -6
- package/pipeline/multi-agent-refs/issue-jira-triad.md +10 -10
- package/pipeline/multi-agent-refs/knowledge.md +11 -11
- package/pipeline/multi-agent-refs/multi-repo-integration-build.md +13 -13
- package/pipeline/multi-agent-refs/payload-contracts.md +8 -8
- package/pipeline/multi-agent-refs/phases/log-format.md +10 -10
- package/pipeline/multi-agent-refs/phases/modes.md +30 -30
- package/pipeline/multi-agent-refs/phases/operations.md +8 -8
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +24 -24
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +599 -0
- package/pipeline/multi-agent-refs/phases/{phase-3-dev.md → phase-2-dev.md} +129 -49
- package/pipeline/multi-agent-refs/phases/{phase-4-review.md → phase-3-review.md} +225 -107
- package/pipeline/multi-agent-refs/phases/{phase-6-commit.md → phase-4-commit.md} +23 -23
- package/pipeline/multi-agent-refs/phases/{phase-7-report.md → phase-5-report.md} +29 -29
- package/pipeline/multi-agent-refs/phases.md +44 -48
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/progress-contract.md +6 -6
- package/pipeline/multi-agent-refs/readiness-review.md +1 -1
- package/pipeline/multi-agent-refs/rules.md +7 -7
- package/pipeline/multi-agent-refs/swiftui-guide.md +2 -2
- package/pipeline/multi-agent-refs/tracker-contract.md +31 -32
- package/pipeline/multi-agent-refs/wiki-capture.md +14 -14
- package/pipeline/preferences-template.json +9 -1
- package/pipeline/rules/figma-pipeline.md +8 -8
- package/pipeline/rules/outside-the-pipeline.md +1 -1
- package/pipeline/schemas/agent-state.schema.json +50 -50
- package/pipeline/schemas/analysis-output.schema.json +3 -3
- package/pipeline/schemas/analysis-spec.schema.json +2 -2
- package/pipeline/schemas/autopilot-config.schema.json +1 -1
- package/pipeline/schemas/code-graph.schema.json +1 -1
- package/pipeline/schemas/criteria-manifest.schema.json +1 -1
- package/pipeline/schemas/dev-critic-output.schema.json +1 -1
- package/pipeline/schemas/diff-risk.schema.json +1 -1
- package/pipeline/schemas/figma-project-config.schema.json +1 -1
- package/pipeline/schemas/migrations/prefs-2.4.0-to-2.5.0.mjs +2 -2
- package/pipeline/schemas/migrations/prefs-2.6.0-to-2.7.0.mjs +31 -0
- package/pipeline/schemas/migrations/state-2.1.0-to-2.2.0.mjs +129 -0
- package/pipeline/schemas/phases.json +105 -0
- package/pipeline/schemas/plan-todos.schema.json +5 -5
- package/pipeline/schemas/planning-output.schema.json +1 -1
- package/pipeline/schemas/prefs.schema.json +102 -58
- package/pipeline/schemas/reviewer-output.schema.json +3 -3
- package/pipeline/schemas/route-config.schema.json +74 -0
- package/pipeline/schemas/scope-check.schema.json +1 -1
- package/pipeline/schemas/secret-patterns.json +124 -0
- package/pipeline/schemas/test-gap.schema.json +1 -1
- package/pipeline/schemas/token-budget.json +12 -18
- package/pipeline/schemas/triage-output.schema.json +6 -6
- package/pipeline/scripts/README.md +3 -3
- package/pipeline/scripts/_code-graph.mjs +2 -2
- package/pipeline/scripts/_run-paths.mjs +2 -2
- package/pipeline/scripts/_smoke-root.sh +1 -1
- package/pipeline/scripts/aggregate-metrics.mjs +1 -1
- package/pipeline/scripts/build-references.mjs +2 -2
- package/pipeline/scripts/bulk-read.sh +10 -1
- package/pipeline/scripts/capture-flush.sh +8 -8
- package/pipeline/scripts/capture-resume.sh +3 -3
- package/pipeline/scripts/classify-plan-safety.mjs +1 -1
- package/pipeline/scripts/cost-table.json +8 -1
- package/pipeline/scripts/diff-explain.mjs +1 -1
- package/pipeline/scripts/doctor.mjs +3 -3
- package/pipeline/scripts/gc-abandoned.sh +3 -3
- package/pipeline/scripts/gc-tmp.sh +1 -1
- package/pipeline/scripts/gc-worktrees.sh +1 -1
- package/pipeline/scripts/gen-facts.mjs +280 -0
- package/pipeline/scripts/gen-mode-dispatch.mjs +32 -37
- package/pipeline/scripts/gen-ref-toc.mjs +1 -1
- package/pipeline/scripts/graph-report.mjs +1 -1
- package/pipeline/scripts/jira-attach.sh +1 -1
- package/pipeline/scripts/learn-from-transcripts.mjs +1 -1
- package/pipeline/scripts/learning-curve.mjs +2 -2
- package/pipeline/scripts/log-metric.sh +17 -4
- package/pipeline/scripts/memory-save.sh +1 -1
- package/pipeline/scripts/migrate-prefs.mjs +22 -5
- package/pipeline/scripts/phase-banner.sh +20 -20
- package/pipeline/scripts/phase-tracker.sh +12 -12
- package/pipeline/scripts/plan-coverage-gate.mjs +2 -2
- package/pipeline/scripts/pre-commit-check.sh +30 -1
- package/pipeline/scripts/render-agent-log-cost.sh +1 -1
- package/pipeline/scripts/render-work-summary.sh +3 -3
- package/pipeline/scripts/review-file-filter.mjs +1 -1
- package/pipeline/scripts/run-aggregator.mjs +13 -6
- package/pipeline/scripts/run-metrics.mjs +1 -1
- package/pipeline/scripts/runs-index.mjs +11 -1
- package/pipeline/scripts/scan-skills.sh +26 -0
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +6 -6
- package/pipeline/scripts/smoke-schema-validation.sh +26 -7
- package/pipeline/scripts/token-budget-report.mjs +13 -2
- package/pipeline/scripts/triage-memory.mjs +2 -2
- package/pipeline/scripts/validate-analysis-doc.mjs +274 -43
- package/pipeline/scripts/validate-planning.mjs +1 -1
- package/pipeline/scripts/validate-reviewer.mjs +1 -1
- package/pipeline/scripts/validate-state.mjs +45 -5
- package/pipeline/scripts/validate-triage.mjs +3 -3
- package/pipeline/scripts/verify-citations.mjs +1 -1
- package/pipeline/scripts/worktree-finalize.sh +5 -5
- package/pipeline/scripts/write-state.mjs +32 -0
- package/pipeline/skills/.skill-manifest.json +38 -22
- package/pipeline/skills/.skills-index.json +49 -5
- package/pipeline/skills/shared/README.md +10 -6
- package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +8 -8
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +8 -8
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +81 -82
- package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +14 -14
- package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +5 -5
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +25 -23
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +8 -8
- package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +6 -6
- package/pipeline/skills/shared/core/multi-agent-model/SKILL.md +71 -0
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-resume-local/SKILL.md +7 -7
- package/pipeline/skills/shared/core/multi-agent-route-off/SKILL.md +39 -0
- package/pipeline/skills/shared/core/multi-agent-route-on/SKILL.md +76 -0
- package/pipeline/skills/shared/core/multi-agent-route-status/SKILL.md +59 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +5 -5
- package/pipeline/skills/shared/core/multi-agent-steer/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +6 -5
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +1 -1
- package/pipeline/skills/shared/external/signal-community/SKILL.md +8 -1
- package/pipeline/skills/skills-index.md +8 -4
- package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +0 -263
- package/pipeline/multi-agent-refs/phases/phase-2-planning.md +0 -344
- package/pipeline/multi-agent-refs/phases/phase-5-test.md +0 -182
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,293 @@ Internal file-layout changes that don't affect the slash-command surface are sti
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
+
## [19.1.0] - 2026-09-20
|
|
18
|
+
|
|
19
|
+
Minor: the routing preference 19.0.0 shipped now reaches dispatch, and the
|
|
20
|
+
toolkit's three new tool families are reflected everywhere the pipeline counts
|
|
21
|
+
them.
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- **`pipeline/lib/model-dispatch.sh` - routing that changes the answer.**
|
|
26
|
+
19.0.0 shipped `prefs.global.modelRouting` with a schema, four commands and a
|
|
27
|
+
status report, and nothing consulted it at dispatch time. A preference that is
|
|
28
|
+
written, validated and displayed but never read is worse than a missing one:
|
|
29
|
+
`route-status` said routing was on, the rules looked applied, and every call
|
|
30
|
+
went where it always went. Two call sites now ask: the subagent dispatch
|
|
31
|
+
contract in `skills/shared/core/multi-agent/SKILL.md`, and `bulk-read.sh`.
|
|
32
|
+
|
|
33
|
+
Precedence is `PHASE_MODEL_OVERRIDE` > a matching rule > persona
|
|
34
|
+
`preferredModel` > the global default. Routing sits below the per-dispatch
|
|
35
|
+
override on purpose: Phase 3 makes Reviewer 3 sonnet so the three reviewers
|
|
36
|
+
disagree, and a policy that could overrule that would turn a deliberate choice
|
|
37
|
+
into a suggestion.
|
|
38
|
+
|
|
39
|
+
The script never fails and never returns an empty rung - a router that can die
|
|
40
|
+
turns every call site into a place the run can die, for a feature that ships
|
|
41
|
+
disabled. Missing prefs, missing jq, unparseable JSON, an out-of-scope call
|
|
42
|
+
site and an unknown rung all return the caller's default, exit 0.
|
|
43
|
+
|
|
44
|
+
Two limits are enforced rather than documented. A rule preferring `fable`
|
|
45
|
+
falls past it while `modelFallback.fableEnabled` is false, so
|
|
46
|
+
`/multi-agent:model off` keeps meaning what it says. And a non-Anthropic rung
|
|
47
|
+
is refused for a subagent, because subagent dispatch belongs to the host - the
|
|
48
|
+
script says so on stderr instead of substituting an Anthropic rung and leaving
|
|
49
|
+
the user believing a rule worked that never could.
|
|
50
|
+
- `cost-table.json` rungs declare a `provider`. Without it every rung looks
|
|
51
|
+
alike and the subagent limit above cannot be checked at all.
|
|
52
|
+
- `smoke-model-dispatch.sh` (18 assertions). Half of them drive the router; the
|
|
53
|
+
other half assert the call sites invoke it, because a correct router nothing
|
|
54
|
+
calls is the same outage with better internals - which is exactly what 19.0.0
|
|
55
|
+
shipped.
|
|
56
|
+
- **Six analysis Locked decisions gained a gate.** 13 (Section 4 scenarios are
|
|
57
|
+
Gherkin), 14 (a goal owes a paired non-goal), 15 (a new non-SVG asset owes a
|
|
58
|
+
rationale), 17 (Section 9 may not write "other errors" in place of a status
|
|
59
|
+
code), 18 (a screenshot is embedded, not linked to a host that outlives
|
|
60
|
+
nothing), and 21 (References is the last numbered section). Each checks a
|
|
61
|
+
shape the template prescribes and keys off a structure only a real document
|
|
62
|
+
carries, so a minimal fixture is skipped rather than failed. The Gate status
|
|
63
|
+
count moves 11 -> 18, and the 18 that stay prose now say WHY in three groups:
|
|
64
|
+
run behaviour no document records, evidence gathering that happened before
|
|
65
|
+
rendering, and judgement about meaning.
|
|
66
|
+
- Nine anchors below Locked 25 in `smoke-locked-citations.sh`. The existing
|
|
67
|
+
anchors all sat above 25, which is where the v19 removal re-flowed the
|
|
68
|
+
numbering - and that is precisely why the older drift survived.
|
|
69
|
+
|
|
70
|
+
### Fixed
|
|
71
|
+
|
|
72
|
+
- **Nine drifted Locked citations in `analysis-template.md`.** It cited 13 for
|
|
73
|
+
paired goals (14), 12 for Gherkin (13), 14 for the SVG default (15), 16 for
|
|
74
|
+
exhaustive response variants (17), 21 for the concept layer (22), 28 for the
|
|
75
|
+
SwiftUI preview (27), 18 for variant drilling (19), and "17 + 18" for the
|
|
76
|
+
design reference (18 + 19). A tenth cited Locked 17 for analytics PII, which
|
|
77
|
+
no decision covers at all - the rule stays, the number goes, because a number
|
|
78
|
+
a reader cannot look up is worse than none. The new anchors hold all of them.
|
|
79
|
+
- **Locked 33 was enforced all along and documented as prose.**
|
|
80
|
+
`build-references.mjs --check` runs its coverage gate and
|
|
81
|
+
`smoke-build-references.sh` tests it, but neither named the decision in a
|
|
82
|
+
failure message and the attribution check reads messages. Both name it now.
|
|
83
|
+
The same trap caught the new Locked 21 check on its first run: the attribution
|
|
84
|
+
scan reads an error message up to the first semicolon, and the message had one
|
|
85
|
+
in the middle.
|
|
86
|
+
- **write-state verifies the write after the rename, not only before it.** No
|
|
87
|
+
POSIX call renames a file conditionally on still holding a lock, so the
|
|
88
|
+
`stillOurs` check is a time-of-check and the rename is the time-of-use. The
|
|
89
|
+
writer now reads the file back and compares the `rev` on disk against the one
|
|
90
|
+
it just wrote; a different rev means another writer's rename landed on top,
|
|
91
|
+
and the writer exits 4 instead of 0. Reporting success while losing an update
|
|
92
|
+
is the one outcome that script exists to prevent, and a window it could not
|
|
93
|
+
see was the one place that could still happen. The clobber branch has no test:
|
|
94
|
+
staging it from a shell needs a hook inside the writer, and a test-only hook
|
|
95
|
+
in the file that guards state is the worse trade.
|
|
96
|
+
|
|
97
|
+
- **Stale phase numbers in eleven files.** `/multi-agent:review` recorded its
|
|
98
|
+
standalone runs under phase id 4; a tracker example in `phase-3-review.md`
|
|
99
|
+
drew `Phase 3 Dev`; `rules/figma-pipeline.md` carried the whole eight-phase
|
|
100
|
+
access matrix, including two rows for phases that no longer exist. Historical
|
|
101
|
+
files (CHANGELOG, ROADMAP entries, ADRs, migration headers) were left alone -
|
|
102
|
+
they narrate what was true then - and so were the separate phase namespaces
|
|
103
|
+
that `analysis/SKILL.md` and the Figma component flow use.
|
|
104
|
+
|
|
105
|
+
### Changed
|
|
106
|
+
|
|
107
|
+
- Toolkit counts follow `multi-agent-toolkit-mcp` 3.13.0: **115 tools in 13
|
|
108
|
+
categories**, up from 99 in 10. The new families are a full-text context index
|
|
109
|
+
(FTS5 + bm25 over offloaded payloads), provider-backed research, and video key
|
|
110
|
+
frames. `docs/ecosystem.md` gained their rows, `docs/facts.json` regenerated,
|
|
111
|
+
and the MCP-server context-cost note in `doctor` and the prefs schema now
|
|
112
|
+
names the real number.
|
|
113
|
+
- `signal-community` records the second search path. The community-signal skill
|
|
114
|
+
carried a parity exemption because web search is not guaranteed on every host;
|
|
115
|
+
`research_search` runs over the MCP channel every host already speaks, so the
|
|
116
|
+
exemption now names the host's own search specifically and points at the
|
|
117
|
+
toolkit path as the preferred one.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## [19.0.0] - 2026-09-18
|
|
122
|
+
|
|
123
|
+
Major, because phase numbers are the contract and they moved. Eight phases
|
|
124
|
+
became six: two of the eight were doing the same work twice, and the count
|
|
125
|
+
itself was guarded by nothing.
|
|
126
|
+
|
|
127
|
+
Full reasoning, mapping and rejected alternatives:
|
|
128
|
+
[ADR-0014](./docs/adr/0014-six-phase-consolidation.md).
|
|
129
|
+
|
|
130
|
+
### Changed
|
|
131
|
+
|
|
132
|
+
- **Six phases.** `0 Init`, `1 Plan`, `2 Dev`, `3 Review`, `4 Commit`,
|
|
133
|
+
`5 Report`. Analysis and Planning were already one decision - the depth
|
|
134
|
+
picker skipped them together and `onlyDevelop` described them as one unit -
|
|
135
|
+
and they are one phase now. Review Stage 1 became Dev's exit gate, which is
|
|
136
|
+
what removes the second build: Dev built and tee'd a log, then Review built
|
|
137
|
+
again, and nothing consumed the difference. The user test moved inside
|
|
138
|
+
Review, keeping its waiting state.
|
|
139
|
+
- **`pipeline/schemas/phases.json` is the phase contract.** The list existed as
|
|
140
|
+
eight independent copies, none derived from another. The generator, the run
|
|
141
|
+
index, the metrics logger and the token budget read it now, and comparison
|
|
142
|
+
thresholds that used to be literals (`phase >= 6` for "waiting on you", the
|
|
143
|
+
Short-run boundary) are named fields in it.
|
|
144
|
+
- **`smoke-phase-contract.sh`** is the gate that never existed. The phase count
|
|
145
|
+
appeared in 91 places across 40 files with nothing holding any of them; the
|
|
146
|
+
command count, the jq count and the persona count all had gates. It derives
|
|
147
|
+
the count from the contract and checks the generator's output, the token
|
|
148
|
+
budget, the state-schema bounds, every shipped surface that states a count,
|
|
149
|
+
the progress fractions in sample output and the named thresholds. Verified
|
|
150
|
+
both ways: a deliberately wrong contract fails it.
|
|
151
|
+
- **`smoke-no-mcp-in-dev-phases.sh` keeps `phase >= 2`, and the gate now
|
|
152
|
+
asserts that it is unchanged.** Figma MCP was reachable only in Analysis (1);
|
|
153
|
+
Analysis is inside Plan (1). The permitted set `{0, 1}` is identical either
|
|
154
|
+
way, so the threshold surviving a renumbering is a result of the mapping
|
|
155
|
+
rather than an oversight - and an edit that "corrects" it would widen access.
|
|
156
|
+
- **Analysis has one pipeline.** Lite mode is removed. It chose sections from a
|
|
157
|
+
fixed list scored on three signals while Locked 2 chooses them from evidence,
|
|
158
|
+
and the two disagreed in both directions: a small feature with rich business
|
|
159
|
+
rules lost Section 15 because it was not on the list, and a feature with no
|
|
160
|
+
API contract kept Section 9 because it was. 37 Locked decisions became 36.
|
|
161
|
+
- **Locked 2's numbering clause was wrong and is corrected.** It said numbering
|
|
162
|
+
re-flows `1..N`; Locked 30 threads ids across the document BY NUMBER
|
|
163
|
+
(`Section 15.1`, `Section 4.4`), so a re-flowed document sends every one of
|
|
164
|
+
those references to the wrong section. No emitted document ever re-flowed.
|
|
165
|
+
A rendered section keeps its canonical number, gaps included, and the
|
|
166
|
+
validator now checks what actually holds: numbers inside the template range,
|
|
167
|
+
ascending, no repeats.
|
|
168
|
+
|
|
169
|
+
### Added
|
|
170
|
+
|
|
171
|
+
- **`/multi-agent:model`** turns the top rung on or off AND realigns
|
|
172
|
+
`costBudget.pricingModel` in the same write. The switch existed; the command
|
|
173
|
+
did not, and the pricing field it must move with was left to the user to
|
|
174
|
+
remember. It reports what the switch means on the host it runs on: a live
|
|
175
|
+
switch on Claude Code, a status report on Copilot CLI and Codex CLI.
|
|
176
|
+
- **`/multi-agent:route-on` · `:route-off` · `:route-status`** - policy-driven
|
|
177
|
+
model routing, shipping disabled. `scope` has no `host-session` member and
|
|
178
|
+
the schema enforces that: rewriting the host's base URL would route the
|
|
179
|
+
user's whole session, including work unrelated to this pipeline. `route-off`
|
|
180
|
+
keeps the rules, so `route-on` does not re-ask. `route-status` prints the
|
|
181
|
+
honest limit every time - a subagent cannot be sent to a non-Anthropic model,
|
|
182
|
+
because subagent dispatch belongs to the host.
|
|
183
|
+
- **`docs/facts.json`**, generated by `pipeline/scripts/gen-facts.mjs`: the
|
|
184
|
+
phase, command, skill and tool counts, derived rather than written. The
|
|
185
|
+
website read its own copies and said "8 faz + 51 komut" while the repo had
|
|
186
|
+
six phases and sixty commands. The tool count is asked of the toolkit's own
|
|
187
|
+
`tools/list` rather than counted out of its source, because three tool
|
|
188
|
+
families live in modules the main file only spreads in - a regex over
|
|
189
|
+
`index.js` returns 2 when the answer is 99.
|
|
190
|
+
- **`prefs.schema.json` moves to 2.7.0, and the shipped template moves with
|
|
191
|
+
it.** The template had been left at 2.6.0, which
|
|
192
|
+
`smoke-schema-validation.sh` catches by design: a fresh install that starts
|
|
193
|
+
behind the migration target makes an old entry in the migrator's accepted set
|
|
194
|
+
load-bearing purely to rescue the template. 2.7.0 removes the Lite value from
|
|
195
|
+
`analysisPhase.mode` and declares `global.modelRouting`, which the template
|
|
196
|
+
now ships explicitly disabled rather than leaving absent - a default that is
|
|
197
|
+
written down is one a reader can find.
|
|
198
|
+
- **The description-surface ceiling moves 86,500 -> 88,000**, and this is where
|
|
199
|
+
that has to be said. Four commands with a shared/core twin each is eight
|
|
200
|
+
descriptions; the average held at 316 against its own 420 ceiling, which is
|
|
201
|
+
the condition the gate's convention names for a raise rather than a trim -
|
|
202
|
+
the surface grew because there are more commands, not wordier ones. The
|
|
203
|
+
fixed per-run load was a different answer: it went 122 bytes over its 60,000
|
|
204
|
+
ceiling and the bytes were reclaimed from prose rather than the ceiling
|
|
205
|
+
raised, which is what that gate's message asks for in as many words.
|
|
206
|
+
- **`smoke-six-phase-run.sh`** drives phase-tracker.sh through a synthetic run
|
|
207
|
+
and asserts what a live run would show: six tiles named from the contract, no
|
|
208
|
+
tile above 5, the `Phase 2 Dev` line shape, a sub-step that registers under
|
|
209
|
+
its parent phase rather than as a seventh tile, a token count and a start
|
|
210
|
+
timestamp for the cost and elapsed suffixes, and a state file that validates
|
|
211
|
+
at 0..5 while `currentPhase: 6` is rejected. It says plainly what it does not
|
|
212
|
+
cover: that Review does not build a second time is an assertion about a model
|
|
213
|
+
following a document, and only a live run's `.build.log` mtime can show it.
|
|
214
|
+
Verified both ways - a seventh phase in the contract fails it.
|
|
215
|
+
- **A facts gate on the website** (`tests/facts-consistency.test.ts`). It does
|
|
216
|
+
not check that the copied `facts.json` is fresh - CI has no pipeline
|
|
217
|
+
checkout, that is `sync-facts.mjs --check` on a machine that does. It checks
|
|
218
|
+
what actually failed: that no component states a phase count or a phase
|
|
219
|
+
number that disagrees with the contract. Copy may say "6 phases"; it may not
|
|
220
|
+
say a different number. Verified both ways.
|
|
221
|
+
- **`metrics.jsonl` carries `phaseSchema`.** The file is append-only across a
|
|
222
|
+
renumbering, so `phase: 3` means Dev in a pre-v19 row and Review in a post-v19
|
|
223
|
+
one. Lines without the field are generation 1. `pipeline/lib/phase-schema.mjs`
|
|
224
|
+
resolves both, and the two aggregators that compared phase numbers to literals
|
|
225
|
+
go through it.
|
|
226
|
+
|
|
227
|
+
### Migration
|
|
228
|
+
|
|
229
|
+
- **`state-2.1.0-to-2.2.0.mjs`** maps `0→0, 1→1, 2→1, 3→2, 4→3, 5→3, 6→4, 7→5`.
|
|
230
|
+
Two sources can collide onto one `phases{}` key: furthest-along status wins,
|
|
231
|
+
`retryCount` takes the MAX (the schema caps it at 3, so a sum would emit an
|
|
232
|
+
invalid state), `files[]` union, earliest start, latest finish. It also
|
|
233
|
+
repairs four defects the live corpus already carried - `completed` →
|
|
234
|
+
`complete`, `awaiting-user-test-main-checkout` → `awaiting_input`, and
|
|
235
|
+
explicit defaults for a missing `currentPhase` or `status`. Measured on the
|
|
236
|
+
62 real state files: **52 valid before, 62 after.**
|
|
237
|
+
- **`prefs-2.6.0-to-2.7.0.mjs`** rewrites `analysisPhase.mode` from `auto` or
|
|
238
|
+
`lite` to `full`. The key is kept rather than deleted, so a file that set it
|
|
239
|
+
stays valid.
|
|
240
|
+
|
|
241
|
+
### Fixed
|
|
242
|
+
|
|
243
|
+
- `migrate-prefs.mjs` read its target version from a literal that had drifted
|
|
244
|
+
behind the schema. It reads the schema now, as do the two gates that were
|
|
245
|
+
checking against their own copies of it.
|
|
246
|
+
- `phases.md` carried a second token-budget table whose total said 17,000 while
|
|
247
|
+
the enforced file said 63,150 - wrong by a factor of four, for most of the
|
|
248
|
+
project's life, guarded by nothing. The numbers are gone; the enforced source
|
|
249
|
+
is named instead.
|
|
250
|
+
- `validate-analysis-doc.mjs` gated one half of Locked 2 and not the other. The
|
|
251
|
+
one emitted document available rendered `1..10, 12, 16, 20, 21` and nothing
|
|
252
|
+
looked.
|
|
253
|
+
- Eight pieces of dead code on the website, found by the linter rather than by
|
|
254
|
+
grep - which had already been wrong three times about this repo.
|
|
255
|
+
- **The phase bound is generation-aware, and it had to be.** Tightening
|
|
256
|
+
`currentPhase` to 0..5 marked every pre-v19 run log invalid - a run that
|
|
257
|
+
finished at phase 7 in October was correct when it was written, and a
|
|
258
|
+
validator that calls correct history invalid is one people learn to ignore.
|
|
259
|
+
A file stamped 2.2.0 or later is bounded 0..5; anything older, including the
|
|
260
|
+
files that predate stamping entirely, is bounded 0..7 and says so in the
|
|
261
|
+
error text. The same decision `metrics.jsonl` got: label the generation, do
|
|
262
|
+
not rewrite history. The tightening still bites where it matters - phase 7 on
|
|
263
|
+
a file claiming 2.2.0 is exactly what a skipped migration produces, and that
|
|
264
|
+
is rejected. Measured on the live corpus: 2 valid of 16 before, 11 of 16
|
|
265
|
+
after, and the 5 that remain were already invalid for reasons the plan had
|
|
266
|
+
recorded (no `currentPhase` at all, non-object phase values).
|
|
267
|
+
- `validate-state.mjs` did not check `retryCount`. The schema caps it at 3 and
|
|
268
|
+
four documents call 3 a hard kill, so `retryCount: 4` was a state that every
|
|
269
|
+
document forbade and every validator accepted. The bound is checked now. The
|
|
270
|
+
limit is named rather than overstated: this closes the validation boundary,
|
|
271
|
+
it does not stop the loop - that stays prose.
|
|
272
|
+
- **`phase-banner.sh` still had eight labels**, and it is the banner every
|
|
273
|
+
phase prints. Its table is bare words - `en:4) echo "Review"` - so all three
|
|
274
|
+
sweeps walked past it: they looked for `Phase 4 Review`, `4:Review` and
|
|
275
|
+
`Phase 4: Review`, and none of those spellings appear in it. It is now six
|
|
276
|
+
labels in both languages, and `smoke-phase-contract.sh` check 14 compares
|
|
277
|
+
every one against the contract and rejects a label above the last id, so the
|
|
278
|
+
one copy of the phase list that nothing derives is at least checked.
|
|
279
|
+
- A third spelling of a phase reference, `Phase N: Name`, which the first sweep
|
|
280
|
+
could not see: its rules matched `Phase 3 Dev` and the tracker tuple `3:Dev`,
|
|
281
|
+
and the colon form sits between them. It had left the canonical label table in
|
|
282
|
+
`skills/shared/core/multi-agent/SKILL.md` reading eight rows with six-phase
|
|
283
|
+
labels, and `/multi-agent:local` listing both a Phase 4 Review and a Phase 4
|
|
284
|
+
Commit. Fifteen files, corrected by name match rather than by number.
|
|
285
|
+
- The golden-task fixtures are named for the phases that produce them, so they
|
|
286
|
+
moved too: `phase-2-plan.json` -> `phase-1-plan.json`, `phase-4-review.json`
|
|
287
|
+
-> `phase-3-review.json`, `phase-4-triage.json` -> `phase-3-triage.json`.
|
|
288
|
+
- A doc sweep of 166 files in the repo and 68 in the source tree, none of which
|
|
289
|
+
the eight-phase plan had listed. Release history is deliberately excluded:
|
|
290
|
+
`CHANGELOG`, the `ROADMAP` "Previous Release" sections and
|
|
291
|
+
`docs/token-budget-history.md` keep the numbers their versions shipped with,
|
|
292
|
+
and four ADRs carry a pointer to ADR-0014 instead of being rewritten, because
|
|
293
|
+
an ADR records what was decided rather than what is true today.
|
|
294
|
+
|
|
295
|
+
### Removed
|
|
296
|
+
|
|
297
|
+
- **The engagement page** (`src/app/_nisan`, its API routes and its admin
|
|
298
|
+
panel) on the website. The 16 RSVP rows were exported before anything was
|
|
299
|
+
deleted and **the `rsvp_entries` table is kept** - removing code does not
|
|
300
|
+
remove data, and dropping the table is a separate decision.
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
17
304
|
## [18.0.0] - 2026-09-17
|
|
18
305
|
|
|
19
306
|
Major, for two behaviour changes rather than a renamed command: a run's state now
|
package/README.md
CHANGED
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
|
|
9
9
|
🇹🇷 Türkçe: [README.tr.md](./README.tr.md)
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
A 6-phase AI development pipeline for **Claude Code**, **Copilot CLI** and **Codex CLI**. Drives a Jira issue or GitHub URL to a merged PR in one command - analysis → plan → TDD → review → test → commit → PR - with multi-repo orchestration, a plan-approval gate, CLI-aware parallel review, and store-compliance checks. Component and Figma-to-code work is dispatched to the per-stack marketplace plugins (iOS/SwiftUI, Android/Compose) rather than bundled, so component skills live in one place.
|
|
12
12
|
|
|
13
13
|
Runs natively on Claude Code, Copilot CLI and Codex CLI. macOS only. Zero runtime dependencies.
|
|
14
14
|
|
|
15
|
-
📐 **[Architecture diagrams](./docs/architecture.md)** - the
|
|
15
|
+
📐 **[Architecture diagrams](./docs/architecture.md)** - the 6-phase flow, operating modes, review/triage, Figma subphases, component layout. **[Ecosystem diagram](./docs/ecosystem.md)** - how this repo, the `multi-agent-plugins` marketplace and `multi-agent-toolkit-mcp` compose.
|
|
16
16
|
|
|
17
17
|
### Prerequisites
|
|
18
18
|
|
|
19
19
|
- **Node.js >= 20.11** - required; the pipeline's own tooling runs on it.
|
|
20
|
-
- **`jq`** - required for nine paths, optional for the rest.
|
|
20
|
+
- **`jq`** - required for nine paths, optional for the rest. 84 shell files call it. The nine that publish or decide - the autopilot queue, Jira comments, PR reviews, issue updates, the plan file, both Figma fetchers, log search and Jira auth - now refuse with exit 3 rather than run, because a missing `jq` renders as empty DATA and the work carries on with it. Everywhere else it still degrades. The install prints a note when it is missing.
|
|
21
21
|
- **`gh`** - for GitHub issue and PR work. Its built-in `--jq` is independent of the `jq` binary.
|
|
22
22
|
|
|
23
23
|
## Quick Start
|
|
@@ -91,22 +91,38 @@ Update later with `/multi-agent:update`. Uninstall (tokens preserved) with `npx
|
|
|
91
91
|
|
|
92
92
|
## How it works
|
|
93
93
|
|
|
94
|
-
One command runs up to
|
|
94
|
+
One command runs up to 6 phases, with a gate between the risky ones. Phase 0
|
|
95
95
|
asks two questions that decide the shape of the rest - how deep the run goes
|
|
96
96
|
(Full or Short) and where the branch lives (a worktree or your current
|
|
97
97
|
checkout):
|
|
98
98
|
|
|
99
99
|
- **0 · Init** - parse the input (Jira id / GitHub URL / free text), pick account + repo(s), fetch the issue, run a maturity check.
|
|
100
|
-
- **1 ·
|
|
101
|
-
- **2 ·
|
|
102
|
-
- **3 ·
|
|
103
|
-
- **4 ·
|
|
104
|
-
- **5 ·
|
|
105
|
-
- **6 · Commit/PR** - conventional commit, push (must succeed), open a PR (`Ref: #N`, never auto-close).
|
|
106
|
-
- **7 · Report** - technical summary + a Jira comment with test scenarios, posted through the channels layer.
|
|
100
|
+
- **1 · Plan** - detect the stack, scan the codebase and write the analysis document, then break it into tasks with file-level targets and **stop for your approval** before touching code. Analysis and planning were two phases until 19.0.0; the depth picker always skipped them together, because they are one decision. Codebase scanning runs on the explorer persona (Sonnet).
|
|
101
|
+
- **2 · Dev** - TDD: failing test → code → green, following the repo's style + the active stack skills. The phase ends at its own gate: build, lint, tests and a secret scan, run **once**. Review used to build again, and nothing consumed the difference.
|
|
102
|
+
- **3 · Review** - a **CLI-aware parallel review** against the logs Dev produced - Claude Code runs 3 models (Fable + Opus + Sonnet), Copilot CLI runs 3 (GPT-5.4 + Opus + Sonnet) - then a **Fable triage** keeps only actionable findings; blockers loop back to Phase 2. The optional user test lives here, keeping its waiting state.
|
|
103
|
+
- **4 · Commit/PR** - conventional commit, push (must succeed), open a PR (`Ref: #N`, never auto-close).
|
|
104
|
+
- **5 · Report** - technical summary + a Jira comment with test scenarios, posted through the channels layer. This is the one step autopilot still pauses at, in every mode.
|
|
107
105
|
|
|
108
106
|
`/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.
|
|
109
107
|
|
|
108
|
+
### 19.0.0: six phases, and a gate for the number
|
|
109
|
+
|
|
110
|
+
Two of the six phases were doing the same work twice. Dev built the project
|
|
111
|
+
and tee'd a log; Review opened by building it again. Analysis and Planning were
|
|
112
|
+
already one decision - the depth picker skipped them together and the state
|
|
113
|
+
schema described them as one unit. Six phases now, one build per run.
|
|
114
|
+
|
|
115
|
+
The other half of the change is that the count is finally guarded.
|
|
116
|
+
`smoke-phase-contract.sh` derives it from `pipeline/schemas/phases.json` and
|
|
117
|
+
holds every other copy to it: the generator's output, the token budget, the
|
|
118
|
+
state-schema bounds, the progress fractions in sample output, and the named
|
|
119
|
+
thresholds that used to be literals scattered across scripts. The phase count
|
|
120
|
+
appeared in 91 places across 40 files with nothing checking any of them, while
|
|
121
|
+
the command count, the jq count and the persona count all had gates.
|
|
122
|
+
|
|
123
|
+
Reasoning, mapping and rejected alternatives:
|
|
124
|
+
[ADR-0014](./docs/adr/0014-six-phase-consolidation.md).
|
|
125
|
+
|
|
110
126
|
### 18.0.0: one state directory, and a way to ask whether your install is real
|
|
111
127
|
|
|
112
128
|
- **`multi-agent-pipeline verify`.** The install is a copy, and from the moment it is written the two halves drift independently: an edit in the installed tree is behaviour with no source, and a file the installer skipped is a script the docs describe and nobody has. `verify` compares both against a manifest built at pack time. What a green result proves is stated plainly - the bytes match what the publisher recorded, not who published them.
|
|
@@ -118,7 +134,7 @@ checkout):
|
|
|
118
134
|
|
|
119
135
|
Three smaller things in 17.6.0, each closing a gap where the pipeline assumed instead of looking:
|
|
120
136
|
|
|
121
|
-
- **Phase
|
|
137
|
+
- **Phase 2 stopped typing `npm`.** A repo on pnpm, yarn or bun used to fail in the development phase, with a worktree and a branch already created. The manager is resolved from the repo now - an env override, then `package.json#packageManager`, then the lock file, then npm reported as a default rather than as evidence. iOS and Android are untouched.
|
|
122
138
|
- **A compaction no longer eats what a phase learned.** The capture hook ran at session end; an auto-compaction summarizes a long review or development phase while it is still running, and anything not yet written was gone before session end ever fired. The hooks template now flushes at `PreCompact` too.
|
|
123
139
|
- **`doctor` counts your MCP servers.** Every registered server sends its tool list on every turn and they are added one at a time, so nobody ever sees the total. It reports the count and nothing else: no warning, no blocking, no disabling.
|
|
124
140
|
|
|
@@ -150,8 +166,8 @@ The discipline behind all of this - bounded loops, evidence gates, token-budgete
|
|
|
150
166
|
|
|
151
167
|
| Mode | Command | Flow |
|
|
152
168
|
| --------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
153
|
-
| Full | `/multi-agent "task"` | All
|
|
154
|
-
| Autopilot | `/multi-agent:autopilot "task"` |
|
|
169
|
+
| Full | `/multi-agent "task"` | All 6 phases, interactive |
|
|
170
|
+
| Autopilot | `/multi-agent:autopilot "task"` | 6 phases (interactive Test gate dropped), no confirmations |
|
|
155
171
|
| Local | `/multi-agent:local "task"` | Full pipeline minus the interactive Test gate, current branch (no worktree) |
|
|
156
172
|
| Depth | asked at Phase 0 Step 7.5 | Full (all phases) or Short (Dev → Review → Test → Commit → Report). Not a command name - `/multi-agent` and `:local` ask, both autopilot entries always run Full |
|
|
157
173
|
| Ship | `/multi-agent:resume-local` | Run the review→test→commit→report tail over local work |
|
|
@@ -207,7 +223,7 @@ The widget follows the answer rather than predicting it: Phase 0 is the only til
|
|
|
207
223
|
| `/multi-agent:review-jira` | Grade a Jira issue's readiness for development, comment the gaps |
|
|
208
224
|
| `/multi-agent:review-issue` | Same grading for a GitHub issue |
|
|
209
225
|
| `/multi-agent:review-analysis` | Review a written analysis document; findings cite the Locked rule they break |
|
|
210
|
-
| `/multi-agent:diff-explain` | Map a Phase
|
|
226
|
+
| `/multi-agent:diff-explain` | Map a Phase 3 triage finding back to the diff lines that caused it |
|
|
211
227
|
| `/multi-agent:refactor` | Best-practice extraction + bug hunt + derived-skill drift + toolkit MCP research → one plan |
|
|
212
228
|
| `/multi-agent:scan` | Skill security scan of local skill directories against a tiered pattern catalog |
|
|
213
229
|
| `/multi-agent:prune-prompts` | Zero-base review of the always-on instruction footprint; keep / trial / delete per rule |
|
|
@@ -230,7 +246,7 @@ The widget follows the answer rather than predicting it: Phase 0 is the only til
|
|
|
230
246
|
| `/multi-agent:test-accessibility` | VoiceOver labels, sub-44pt tap targets, contrast, traits |
|
|
231
247
|
| `/multi-agent:test-dynamic-type` | Re-walk every screen at XL through accessibility-XL, report truncation |
|
|
232
248
|
| `/multi-agent:test-screenshots [locale]` | App Store screenshot set in a locale (defaults to `tr`) |
|
|
233
|
-
| `/multi-agent:manual-test` | Phase
|
|
249
|
+
| `/multi-agent:manual-test` | Phase 3 standalone: check out the task branch and prepare it for Xcode |
|
|
234
250
|
|
|
235
251
|
### Design, build and store
|
|
236
252
|
|
|
@@ -343,17 +359,17 @@ This enables the matching plugin (+ the shared `ai-common` plugin) in the repo's
|
|
|
343
359
|
|
|
344
360
|
## Tool support
|
|
345
361
|
|
|
346
|
-
The pipeline runs natively on **Claude Code**, **Copilot CLI** and **Codex CLI** - all three install from the same `pipeline/` source and get the same
|
|
362
|
+
The pipeline runs natively on **Claude Code**, **Copilot CLI** and **Codex CLI** - all three install from the same `pipeline/` source and get the same 60 commands.
|
|
347
363
|
|
|
348
364
|
| Tool | Flag | What it installs |
|
|
349
365
|
| ----------- | -------------------- | ------------------------------------------------------------------------------------------------------ |
|
|
350
366
|
| Claude Code | `--claude` (default) | slash commands + skills + agents + three `PreToolUse` hooks (secret scan, agent-guard, read-size gate) |
|
|
351
|
-
| Copilot CLI | `--copilot` | instructions +
|
|
352
|
-
| Codex CLI | `--codex` | one router skill +
|
|
367
|
+
| Copilot CLI | `--copilot` | instructions + 60 sub-command skills + scripts |
|
|
368
|
+
| Codex CLI | `--codex` | one router skill + 60 specs as refs + 9 agent TOML + `AGENTS.md` block + `codex mcp add` |
|
|
353
369
|
|
|
354
370
|
Filter skills by stack with `--platform=ios\|android\|all`.
|
|
355
371
|
|
|
356
|
-
**Why Codex gets one skill and not
|
|
372
|
+
**Why Codex gets one skill and not 60.** Codex assembles every discovered skill's name
|
|
357
373
|
and description into a single prompt block and drops entries when it overflows, with no
|
|
358
374
|
error. Measured on 0.145: installing one plugin that declares 142 skills surfaced only
|
|
359
375
|
75 of them and evicted an unrelated user skill. So on Codex the pipeline ships a single
|
package/README.tr.md
CHANGED
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
|
|
9
9
|
🇬🇧 English: [README.md](./README.md)
|
|
10
10
|
|
|
11
|
-
**Claude Code**, **Copilot CLI** ve **Codex CLI** için
|
|
11
|
+
**Claude Code**, **Copilot CLI** ve **Codex CLI** için 6 fazlı bir AI geliştirme pipeline'ı. Bir Jira issue'sunu veya GitHub URL'sini tek komutla merge edilmiş bir PR'a dönüştürür - analiz → plan → TDD → review → test → commit → PR - çoklu-repo orkestrasyonu, bir plan-onay kapısı, CLI-farkında paralel review ve store-uyumluluk kontrolleriyle birlikte. Component ve Figma-to-code işleri paket içine gömülmek yerine stack başına marketplace plugin'lerine (iOS/SwiftUI, Android/Compose) devredilir, böylece component skill'leri tek bir yerde yaşar.
|
|
12
12
|
|
|
13
13
|
Claude Code, Copilot CLI ve Codex CLI üzerinde native çalışır. Yalnızca macOS. Sıfır runtime dependency.
|
|
14
14
|
|
|
15
|
-
📐 **[Mimari diyagramları](./docs/architecture.md)** -
|
|
15
|
+
📐 **[Mimari diyagramları](./docs/architecture.md)** - 6 faz akışı, çalışma modları, review/triage, Figma subphase'leri, component yapısı. **[Ekosistem diyagramı](./docs/ecosystem.md)** - bu repo, `multi-agent-plugins` marketplace'i ve `multi-agent-toolkit-mcp`'nin nasıl bir araya geldiği.
|
|
16
16
|
|
|
17
17
|
### Önkoşullar
|
|
18
18
|
|
|
@@ -90,19 +90,17 @@ Sonra `/multi-agent:update` ile güncelle. Kaldırmak için (tokenlar korunur) `
|
|
|
90
90
|
|
|
91
91
|
## Nasıl çalışır
|
|
92
92
|
|
|
93
|
-
Tek komut en fazla
|
|
93
|
+
Tek komut en fazla 6 fazı çalıştırır, riskli olanlar arasında bir kapı ile. Faz
|
|
94
94
|
0 geri kalanın şeklini belirleyen iki soru sorar: koşu ne kadar derin olacak
|
|
95
95
|
(Tam mı Kısa mı) ve branch nerede yaşayacak (worktree mi, mevcut checkout'un
|
|
96
96
|
mu):
|
|
97
97
|
|
|
98
98
|
- **0 · Init** - girdiyi ayrıştır (Jira id / GitHub URL / serbest metin), hesap + repo(lar) seç, issue'yu çek, maturity kontrolü yap.
|
|
99
|
-
- **1 ·
|
|
100
|
-
- **2 ·
|
|
101
|
-
- **3 · Dev** -
|
|
102
|
-
- **4 ·
|
|
103
|
-
- **5 ·
|
|
104
|
-
- **6 · Commit/PR** - conventional commit, push (başarılı olmalı), bir PR aç (`Ref: #N`, asla otomatik kapatma).
|
|
105
|
-
- **7 · Report** - teknik özet + test senaryolarıyla bir Jira yorumu, channels katmanından gönderilir.
|
|
99
|
+
- **1 · Plan** - stack'i tespit et, codebase'i tara ve analiz dokümanını yaz; sonra onu dosya seviyesinde hedefleri olan görevlere böl ve koda dokunmadan önce **onayın için dur**. Analiz ve planlama 19.0.0'a kadar iki ayrı fazdı; derinlik seçici ikisini hep birlikte atlıyordu, çünkü tek bir karar. Codebase taraması explorer persona'sı üzerinde koşar (Sonnet).
|
|
100
|
+
- **2 · Dev** - TDD: başarısız test → kod → yeşil, repo'nun stiline + aktif stack skill'lerine uyarak. Faz kendi kapısında biter: build, lint, test ve sır taraması, **bir kez** koşar. Review eskiden ikinci kez build ediyordu ve aradaki farkı kimse okumuyordu.
|
|
101
|
+
- **3 · Review** - Dev'in ürettiği log'lara karşı **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 2'ye geri döner. Opsiyonel kullanıcı testi burada, bekleme durumunu koruyarak.
|
|
102
|
+
- **4 · Commit/PR** - conventional commit, push (başarılı olmalı), bir PR aç (`Ref: #N`, asla otomatik kapatma).
|
|
103
|
+
- **5 · Report** - teknik özet + test senaryolarıyla bir Jira yorumu, channels katmanından gönderilir. Autopilot'un her modda hâlâ durduğu tek adım bu.
|
|
106
104
|
|
|
107
105
|
`/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.
|
|
108
106
|
|
|
@@ -149,8 +147,8 @@ Bunun arkasındaki disiplin - sınırlı loop'lar, kanıt kapıları, token-büt
|
|
|
149
147
|
|
|
150
148
|
| Mod | Komut | Akış |
|
|
151
149
|
| --------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
152
|
-
| Full | `/multi-agent "task"` | Tüm
|
|
153
|
-
| Autopilot | `/multi-agent:autopilot "task"` |
|
|
150
|
+
| Full | `/multi-agent "task"` | Tüm 6 faz, interaktif |
|
|
151
|
+
| Autopilot | `/multi-agent:autopilot "task"` | 6 faz (interaktif Test kapısı atlanır), onaysız |
|
|
154
152
|
| Local | `/multi-agent:local "task"` | İnteraktif Test kapısı hariç tam pipeline, mevcut branch (worktree yok) |
|
|
155
153
|
| 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 |
|
|
156
154
|
| Ship | `/multi-agent:resume-local` | Lokal iş üzerinde review→test→commit→report kuyruğunu çalıştır |
|
|
@@ -343,17 +341,17 @@ Bu, ilgili plugin'i (+ ortak `ai-common` plugin'ini) repo'nun `.claude/settings.
|
|
|
343
341
|
|
|
344
342
|
## Araç desteği
|
|
345
343
|
|
|
346
|
-
Pipeline **Claude Code**, **Copilot CLI** ve **Codex CLI** üzerinde native çalışır - üçü de aynı `pipeline/` kaynağından kurulur ve aynı
|
|
344
|
+
Pipeline **Claude Code**, **Copilot CLI** ve **Codex CLI** üzerinde native çalışır - üçü de aynı `pipeline/` kaynağından kurulur ve aynı 60 komutu alır.
|
|
347
345
|
|
|
348
346
|
| Araç | Bayrak | Ne kurar |
|
|
349
347
|
| ----------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
350
348
|
| Claude Code | `--claude` (varsayılan) | slash komutları + skill'ler + agent'lar + üç `PreToolUse` hook'u (secret scan, agent-guard, okuma-boyutu geçidi) |
|
|
351
|
-
| Copilot CLI | `--copilot` | talimatlar +
|
|
352
|
-
| Codex CLI | `--codex` | bir router skill + ref olarak
|
|
349
|
+
| Copilot CLI | `--copilot` | talimatlar + 60 alt-komut skill'i + script'ler |
|
|
350
|
+
| Codex CLI | `--codex` | bir router skill + ref olarak 60 spec + 9 agent TOML + `AGENTS.md` bloğu + `codex mcp add` |
|
|
353
351
|
|
|
354
352
|
Skill'leri stack'e göre filtrele: `--platform=ios\|android\|all`.
|
|
355
353
|
|
|
356
|
-
**Codex neden
|
|
354
|
+
**Codex neden 60 değil de tek bir skill alıyor.** Codex, keşfettiği her skill'in adını
|
|
357
355
|
ve açıklamasını tek bir prompt bloğuna toplar ve blok taştığında girdileri hatasızca
|
|
358
356
|
düşürür. 0.145 üzerinde ölçüldü: 142 skill deklare eden bir plugin kurulduğunda sadece
|
|
359
357
|
75'i yüzeye çıktı ve alakasız bir kullanıcı skill'i tahliye edildi. Bu yüzden Codex'te
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# 2. `instructionDriven` flag as explicit pipeline fork
|
|
2
2
|
|
|
3
3
|
**Status:** Accepted · 2025
|
|
4
|
+
> **Phase numbers below are the eight-phase ones.** [ADR-0014](./0014-six-phase-consolidation.md) renumbered the contract in v19.0.0 (Phase 6 Commit is now Phase 4, Phase 7 Report is now Phase 5). The decision this ADR records is unchanged; only the labels moved, and they are left as written because an ADR records what was decided.
|
|
4
5
|
|
|
5
6
|
## Context
|
|
6
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 5. Lazy-loaded phase docs with per-phase token budget
|
|
2
2
|
|
|
3
|
-
**Status:** Accepted · 2025
|
|
3
|
+
**Status:** Accepted · 2025 · amended by [ADR-0014](./0014-six-phase-consolidation.md)
|
|
4
4
|
|
|
5
5
|
## Context
|
|
6
6
|
|
|
@@ -36,6 +36,16 @@ Current budgets (v3.5.0):
|
|
|
36
36
|
|
|
37
37
|
Total phase doc budget: 14,300 tokens across 8 phases, loaded incrementally.
|
|
38
38
|
|
|
39
|
+
> **Amended by [ADR-0014](./0014-six-phase-consolidation.md) (v19.0.0).** There
|
|
40
|
+
> are six phase docs now, not eight, and the numbers above are the v3.5.0 ones
|
|
41
|
+
> rather than the current ceilings. They are left as written because an ADR
|
|
42
|
+
> records what was decided, not what is true today. The mechanism this ADR
|
|
43
|
+
> establishes is unchanged and still load-bearing: one document per phase,
|
|
44
|
+
> loaded on entry, with a committed ceiling `smoke-token-budget.sh` enforces.
|
|
45
|
+
> The live ceilings are in `pipeline/schemas/token-budget.json` and the phase
|
|
46
|
+
> list itself in `pipeline/schemas/phases.json`, which is the duplication
|
|
47
|
+
> ADR-0014 removed - restating either here would recreate it.
|
|
48
|
+
|
|
39
49
|
## Consequences
|
|
40
50
|
|
|
41
51
|
Positive:
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# 8. Installer modularization + secret-leak defense
|
|
2
2
|
|
|
3
3
|
**Status:** Accepted · 2026-04-27 (v8.0.0)
|
|
4
|
+
> **Phase numbers below are the eight-phase ones.** [ADR-0014](./0014-six-phase-consolidation.md) renumbered the contract in v19.0.0 (the producer/consumer phase docs it names were renumbered). The decision this ADR records is unchanged; only the labels moved, and they are left as written because an ADR records what was decided.
|
|
4
5
|
|
|
5
6
|
> **Amended v10.7.0:** the `_adapters.mjs` module and its third-party adapter dispatch were removed when the pipeline narrowed to Claude Code + Copilot CLI (see ADR 0007). `install/` now ships **8** modules, not 9; the module list below records the v8.0.0 decision as it shipped at the time.
|
|
6
7
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# 10. Our own code graph, not a forked one
|
|
2
2
|
|
|
3
3
|
**Status:** Accepted · 2026-08-28
|
|
4
|
+
> **Phase numbers below are the eight-phase ones.** [ADR-0014](./0014-six-phase-consolidation.md) renumbered the contract in v19.0.0 (`phase-1-analysis.md` is now `phase-1-plan.md` and Phase 7 Report is now Phase 5). The decision this ADR records is unchanged; only the labels moved, and they are left as written because an ADR records what was decided.
|
|
4
5
|
|
|
5
6
|
## Context
|
|
6
7
|
|