@mmerterden/multi-agent-pipeline 20.36.0 → 20.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/docs/facts.json +2 -2
  3. package/docs/features.md +1 -1
  4. package/docs/recovery-guide.md +1 -1
  5. package/install/catalog-history.json +1 -1
  6. package/manifest.json +225 -148
  7. package/package.json +1 -1
  8. package/pipeline/commands/multi-agent/SKILL.md +33 -154
  9. package/pipeline/commands/multi-agent/analysis/SKILL.md +14 -68
  10. package/pipeline/commands/multi-agent/analysis-jira/SKILL.md +5 -8
  11. package/pipeline/commands/multi-agent/autopilot-on/SKILL.md +38 -109
  12. package/pipeline/commands/multi-agent/channels/SKILL.md +38 -167
  13. package/pipeline/commands/multi-agent/complaint-analysis/SKILL.md +37 -144
  14. package/pipeline/commands/multi-agent/design-check/SKILL.md +27 -131
  15. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +22 -48
  16. package/pipeline/commands/multi-agent/ios-coding-standard/SKILL.md +37 -180
  17. package/pipeline/commands/multi-agent/jira/SKILL.md +16 -46
  18. package/pipeline/commands/multi-agent/manual-test/SKILL.md +12 -7
  19. package/pipeline/commands/multi-agent/refactor/SKILL.md +23 -184
  20. package/pipeline/commands/multi-agent/resume/SKILL.md +30 -136
  21. package/pipeline/commands/multi-agent/review/SKILL.md +24 -199
  22. package/pipeline/commands/multi-agent/setup/SKILL.md +25 -181
  23. package/pipeline/commands/multi-agent/stack/SKILL.md +9 -53
  24. package/pipeline/commands/multi-agent/status/SKILL.md +13 -2
  25. package/pipeline/commands/multi-agent/store-ready/SKILL.md +27 -226
  26. package/pipeline/commands/multi-agent/sync/SKILL.md +35 -164
  27. package/pipeline/commands/multi-agent/test-gen/SKILL.md +2 -4
  28. package/pipeline/commands/multi-agent/update/SKILL.md +18 -60
  29. package/pipeline/contract/CHANGELOG.md +9 -0
  30. package/pipeline/contract/fixtures/error-invalid-request.json +1 -1
  31. package/pipeline/contract/fixtures/error-unauthorized.json +1 -1
  32. package/pipeline/contract/fixtures/error-unsigned.json +1 -1
  33. package/pipeline/contract/fixtures/runs-awaiting-question.json +1 -1
  34. package/pipeline/contract/fixtures/runs-empty.json +1 -1
  35. package/pipeline/contract/fixtures/runs-failed.json +1 -1
  36. package/pipeline/contract/fixtures/runs-pr-opened-redacted.json +1 -1
  37. package/pipeline/contract/fixtures/runs-pr-opened.json +1 -1
  38. package/pipeline/contract/fixtures/runs-running.json +1 -1
  39. package/pipeline/contract/manifest.json +5 -5
  40. package/pipeline/contract/types/index.d.ts +3 -2
  41. package/pipeline/multi-agent-refs/audit-guide.md +20 -0
  42. package/pipeline/multi-agent-refs/autopilot-on/details.md +148 -0
  43. package/pipeline/multi-agent-refs/channels/generator.md +14 -0
  44. package/pipeline/multi-agent-refs/channels/preview.md +13 -0
  45. package/pipeline/multi-agent-refs/channels/reference.md +46 -0
  46. package/pipeline/multi-agent-refs/complaint-analysis/phases.md +159 -0
  47. package/pipeline/multi-agent-refs/design-check/export.md +1 -0
  48. package/pipeline/multi-agent-refs/design-check/init-inventory.md +1 -1
  49. package/pipeline/multi-agent-refs/design-check/scope-and-ledger.md +64 -0
  50. package/pipeline/multi-agent-refs/features/analysis-command-notes.md +53 -0
  51. package/pipeline/multi-agent-refs/features/commit-multi-repo.md +63 -0
  52. package/pipeline/multi-agent-refs/features/dev-multi-repo.md +51 -0
  53. package/pipeline/multi-agent-refs/features/test-gap.md +40 -0
  54. package/pipeline/multi-agent-refs/features/worktree-finalize.md +1 -1
  55. package/pipeline/multi-agent-refs/garbage-collect/phases.md +60 -0
  56. package/pipeline/multi-agent-refs/ios-coding-standard/plan.md +71 -0
  57. package/pipeline/multi-agent-refs/ios-coding-standard/resolve-and-scan.md +135 -0
  58. package/pipeline/multi-agent-refs/jira/picker-detail.md +71 -0
  59. package/pipeline/multi-agent-refs/orchestrator/copilot-pipeline.md +88 -0
  60. package/pipeline/multi-agent-refs/orchestrator/dispatcher.md +96 -1
  61. package/pipeline/multi-agent-refs/orchestrator/phase-3-user-test.md +12 -9
  62. package/pipeline/multi-agent-refs/phases/phase-1-plan.md +4 -4
  63. package/pipeline/multi-agent-refs/phases/phase-2-dev.md +8 -47
  64. package/pipeline/multi-agent-refs/phases/phase-3-review.md +21 -65
  65. package/pipeline/multi-agent-refs/phases/phase-4-commit.md +9 -59
  66. package/pipeline/multi-agent-refs/phases/phase-5-report.md +0 -31
  67. package/pipeline/multi-agent-refs/refactor/sweep.md +190 -0
  68. package/pipeline/multi-agent-refs/resume/details.md +115 -2
  69. package/pipeline/multi-agent-refs/review/inputs.md +33 -1
  70. package/pipeline/multi-agent-refs/review/module-guides.md +9 -1
  71. package/pipeline/multi-agent-refs/review/panel.md +75 -0
  72. package/pipeline/multi-agent-refs/review/valven.md +5 -1
  73. package/pipeline/multi-agent-refs/rules.md +1 -1
  74. package/pipeline/multi-agent-refs/setup/hooks-and-plugins.md +4 -0
  75. package/pipeline/multi-agent-refs/setup/token-save-flow.md +13 -0
  76. package/pipeline/multi-agent-refs/stack/background.md +72 -0
  77. package/pipeline/multi-agent-refs/store-ready/gates.md +139 -0
  78. package/pipeline/multi-agent-refs/store-ready/report.md +40 -2
  79. package/pipeline/multi-agent-refs/sync/office.md +10 -0
  80. package/pipeline/multi-agent-refs/sync/overview.md +61 -0
  81. package/pipeline/multi-agent-refs/sync/repo.md +91 -0
  82. package/pipeline/multi-agent-refs/update/details.md +83 -0
  83. package/pipeline/office/index.html +6 -3
  84. package/pipeline/office/toolkit.json +1 -1
  85. package/pipeline/rules/figma-pipeline.md +6 -3
  86. package/pipeline/schemas/prefs.schema.json +1 -1
  87. package/pipeline/schemas/runs-index.schema.json +2 -1
  88. package/pipeline/scripts/_memory-policy.mjs +27 -5
  89. package/pipeline/scripts/checkpoint-fold.sh +59 -0
  90. package/pipeline/scripts/contract-server.mjs +1 -1
  91. package/pipeline/scripts/gate-ledger.mjs +1 -1
  92. package/pipeline/scripts/office-control.mjs +41 -15
  93. package/pipeline/scripts/offload-ref.sh +1 -1
  94. package/pipeline/scripts/rework-rulings.mjs +5 -3
  95. package/pipeline/scripts/runs-index.mjs +34 -7
  96. package/pipeline/scripts/scope-check-gate.mjs +15 -2
  97. package/pipeline/scripts/status-overview.mjs +401 -0
  98. package/pipeline/scripts/user-test-handoff.sh +203 -0
  99. package/pipeline/scripts/validate-planning.mjs +5 -3
  100. package/pipeline/scripts/validate-triage.mjs +2 -1
  101. package/pipeline/scripts/write-state.mjs +13 -4
  102. package/pipeline/skills/.skill-manifest.json +64 -64
  103. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +7 -70
  104. package/pipeline/skills/shared/core/apple-archive-compliance/references/examples.md +67 -0
  105. package/pipeline/skills/shared/core/apple-archive-compliance/references/version-history.md +8 -0
  106. package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +10 -72
  107. package/pipeline/skills/shared/core/google-play-compliance/references/examples.md +69 -0
  108. package/pipeline/skills/shared/core/google-play-compliance/references/notes.md +7 -0
  109. package/pipeline/skills/shared/core/google-play-compliance/references/version-history.md +5 -0
  110. package/pipeline/skills/shared/core/multi-agent/SKILL.md +39 -262
  111. package/pipeline/skills/shared/core/multi-agent-autopilot-on/SKILL.md +35 -73
  112. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +37 -337
  113. package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +27 -122
  114. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +8 -340
  115. package/pipeline/skills/shared/core/multi-agent-ios-coding-standard/SKILL.md +37 -180
  116. package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +12 -7
  117. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +23 -184
  118. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +14 -82
  119. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +25 -277
  120. package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +13 -2
  121. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +73 -217
  122. package/pipeline/skills/shared/external/alarmkit/SKILL.md +11 -162
  123. package/pipeline/skills/shared/external/alarmkit/references/alarmkit-code.md +257 -0
  124. package/pipeline/skills/shared/external/android-architecture/SKILL.md +7 -58
  125. package/pipeline/skills/shared/external/android-architecture/references/code-examples.md +68 -0
  126. package/pipeline/skills/shared/external/app-intents/SKILL.md +3 -45
  127. package/pipeline/skills/shared/external/app-intents/references/code-examples.md +54 -0
  128. package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +5 -81
  129. package/pipeline/skills/shared/external/app-store-optimization/references/engagement-and-localization.md +96 -0
  130. package/pipeline/skills/shared/external/app-store-review/SKILL.md +6 -112
  131. package/pipeline/skills/shared/external/app-store-review/references/monetization-and-submission.md +138 -0
  132. package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +10 -117
  133. package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models-code.md +186 -0
  134. package/pipeline/skills/shared/external/authentication/SKILL.md +3 -50
  135. package/pipeline/skills/shared/external/authentication/references/code-examples.md +59 -0
  136. package/pipeline/skills/shared/external/callkit-voip/SKILL.md +3 -84
  137. package/pipeline/skills/shared/external/callkit-voip/references/code-examples.md +93 -0
  138. package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +7 -263
  139. package/pipeline/skills/shared/external/ci-cd-pipelines/references/pipeline-examples.md +281 -0
  140. package/pipeline/skills/shared/external/clean-code/SKILL.md +8 -41
  141. package/pipeline/skills/shared/external/clean-code/references/code-examples.md +56 -0
  142. package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +8 -146
  143. package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-code.md +214 -0
  144. package/pipeline/skills/shared/external/compose-components/SKILL.md +6 -80
  145. package/pipeline/skills/shared/external/compose-components/references/code-examples.md +89 -0
  146. package/pipeline/skills/shared/external/compose-navigation/SKILL.md +5 -64
  147. package/pipeline/skills/shared/external/compose-navigation/references/code-examples.md +70 -0
  148. package/pipeline/skills/shared/external/core-data/SKILL.md +9 -157
  149. package/pipeline/skills/shared/external/core-data/references/core-data-code.md +221 -0
  150. package/pipeline/skills/shared/external/core-nfc/SKILL.md +3 -89
  151. package/pipeline/skills/shared/external/core-nfc/references/code-examples.md +98 -0
  152. package/pipeline/skills/shared/external/coreml/SKILL.md +17 -133
  153. package/pipeline/skills/shared/external/coreml/references/coreml-code.md +208 -0
  154. package/pipeline/skills/shared/external/css-modern/SKILL.md +8 -131
  155. package/pipeline/skills/shared/external/css-modern/references/code-examples.md +142 -0
  156. package/pipeline/skills/shared/external/database-patterns/SKILL.md +6 -103
  157. package/pipeline/skills/shared/external/database-patterns/references/orm-examples.md +112 -0
  158. package/pipeline/skills/shared/external/html-semantic/SKILL.md +7 -48
  159. package/pipeline/skills/shared/external/html-semantic/references/code-examples.md +54 -0
  160. package/pipeline/skills/shared/external/humanizer/SKILL.md +6 -19
  161. package/pipeline/skills/shared/external/humanizer/references/voice.md +24 -0
  162. package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +13 -170
  163. package/pipeline/skills/shared/external/ios-accessibility/references/assistive-tech-review.md +224 -0
  164. package/pipeline/skills/shared/external/ios-localization/SKILL.md +2 -24
  165. package/pipeline/skills/shared/external/ios-localization/references/code-examples.md +30 -0
  166. package/pipeline/skills/shared/external/ios-networking/SKILL.md +3 -58
  167. package/pipeline/skills/shared/external/ios-networking/references/code-examples.md +67 -0
  168. package/pipeline/skills/shared/external/ios-security/SKILL.md +4 -64
  169. package/pipeline/skills/shared/external/ios-security/references/code-examples.md +74 -0
  170. package/pipeline/skills/shared/external/live-activities/SKILL.md +4 -90
  171. package/pipeline/skills/shared/external/live-activities/references/code-examples.md +108 -0
  172. package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +9 -23
  173. package/pipeline/skills/shared/external/localization-reuse-map/references/project-settings.md +22 -0
  174. package/pipeline/skills/shared/external/mapkit-location/SKILL.md +5 -95
  175. package/pipeline/skills/shared/external/mapkit-location/references/code-examples.md +117 -0
  176. package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +7 -106
  177. package/pipeline/skills/shared/external/nextjs-app-router/references/app-router-examples.md +124 -0
  178. package/pipeline/skills/shared/external/permissionkit/SKILL.md +2 -31
  179. package/pipeline/skills/shared/external/permissionkit/references/code-examples.md +37 -0
  180. package/pipeline/skills/shared/external/play-store-review/SKILL.md +6 -74
  181. package/pipeline/skills/shared/external/play-store-review/references/signing-and-policies.md +83 -0
  182. package/pipeline/skills/shared/external/push-notifications/SKILL.md +8 -125
  183. package/pipeline/skills/shared/external/push-notifications/references/notification-code.md +176 -0
  184. package/pipeline/skills/shared/external/python-patterns/SKILL.md +7 -158
  185. package/pipeline/skills/shared/external/python-patterns/references/python-examples.md +176 -0
  186. package/pipeline/skills/shared/external/rest-api-design/SKILL.md +7 -157
  187. package/pipeline/skills/shared/external/rest-api-design/references/api-examples.md +175 -0
  188. package/pipeline/skills/shared/external/swift-architecture/SKILL.md +11 -230
  189. package/pipeline/skills/shared/external/swift-architecture/references/pattern-examples.md +295 -0
  190. package/pipeline/skills/shared/external/swift-codable/SKILL.md +17 -149
  191. package/pipeline/skills/shared/external/swift-codable/references/codable-recipes.md +207 -0
  192. package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +12 -99
  193. package/pipeline/skills/shared/external/swift-concurrency/references/code-examples.md +100 -0
  194. package/pipeline/skills/shared/external/swift-concurrency/references/swift-6-2-additions.md +18 -0
  195. package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +9 -78
  196. package/pipeline/skills/shared/external/swift-formatstyle/references/formatstyle-examples.md +113 -0
  197. package/pipeline/skills/shared/external/swift-language/SKILL.md +3 -56
  198. package/pipeline/skills/shared/external/swift-language/references/code-examples.md +65 -0
  199. package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +1 -0
  200. package/pipeline/skills/shared/external/swiftdata/SKILL.md +6 -122
  201. package/pipeline/skills/shared/external/swiftdata/references/code-examples.md +140 -0
  202. package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +12 -139
  203. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/interop-code.md +198 -0
  204. package/pipeline/skills/shared/external/tailwind-css/SKILL.md +9 -81
  205. package/pipeline/skills/shared/external/tailwind-css/references/code-examples.md +91 -0
  206. package/pipeline/skills/shared/external/testing-backend/SKILL.md +7 -207
  207. package/pipeline/skills/shared/external/testing-backend/references/testing-examples.md +225 -0
  208. package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +8 -89
  209. package/pipeline/skills/shared/external/typescript-patterns/references/code-examples.md +100 -0
  210. package/pipeline/skills/shared/external/vision-framework/SKILL.md +2 -20
  211. package/pipeline/skills/shared/external/vision-framework/references/code-examples.md +26 -0
  212. package/pipeline/skills/shared/external/vue-composition/SKILL.md +7 -169
  213. package/pipeline/skills/shared/external/vue-composition/references/vue-examples.md +187 -0
  214. package/pipeline/skills/shared/external/web-accessibility/SKILL.md +7 -174
  215. package/pipeline/skills/shared/external/web-accessibility/references/a11y-examples.md +192 -0
  216. package/pipeline/skills/shared/external/web-performance/SKILL.md +8 -66
  217. package/pipeline/skills/shared/external/web-performance/references/code-examples.md +77 -0
  218. package/pipeline/skills/shared/external/web-testing/SKILL.md +11 -186
  219. package/pipeline/skills/shared/external/web-testing/references/testing-examples.md +213 -0
  220. /package/pipeline/skills/shared/external/localization-reuse-map/{reference → references}/format-and-output.md +0 -0
  221. /package/pipeline/skills/shared/external/localization-reuse-map/{reference → references}/publish-and-snapshot.md +0 -0
  222. /package/pipeline/skills/shared/external/localization-reuse-map/{reference → references}/sources-and-recipes.md +0 -0
@@ -13,14 +13,14 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, WebFetch
13
13
 
14
14
  **One command. Full ecosystem sync. No arguments needed.**
15
15
 
16
- When invoked, it synchronizes all targets in order. It detects what changed, updates only the stale ones, and returns a result report. macOS only (ADR-0012); credential access goes through `~/.claude/lib/credential-store.sh` so no call site names the keychain backend.
16
+ It syncs all targets in order, updating only the stale ones, and reports. macOS only (ADR-0012); credential access goes through `~/.claude/lib/credential-store.sh` so no call site names the keychain backend.
17
17
 
18
18
  **Input**: $ARGUMENTS (optional)
19
19
 
20
20
  | Arg | Meaning |
21
21
  |---|---|
22
- | (none) | Full ecosystem sync: Claude Code, Copilot CLI, pipeline repo, website, multi-agent-toolkit MCP server. |
23
- | `release` | Full sync + version bump + tag + npm publish + website deploy (plus the multi-agent-toolkit ship path) |
22
+ | (none) | Full ecosystem sync, every target |
23
+ | `release` | Full sync + version bump + tag + npm publish + website deploy (Release Flow) |
24
24
  | `multi-agent-toolkit` | Run Step 3d only: gate, commit and publish the companion MCP server |
25
25
  | `"change description"` | Apply the description to every target at once |
26
26
 
@@ -28,43 +28,16 @@ When invoked, it synchronizes all targets in order. It detects what changed, upd
28
28
 
29
29
  - The pre-push gate is timing-sensitive: under heavy load a deadline test fails closed. Re-run it on a quiet machine; never push with `--no-verify`.
30
30
  - `npm publish` answering 202 means the registry is still processing. Verify with the registry's dist-tags before moving `required`, which is asked for every release.
31
- - The installed tree is localized (Turkish descriptions, `model: opus` while fable is off). Normalize before copying into the repo, or the public tree ships the local form.
31
+ - The installed tree is localized (Turkish descriptions, `model: opus` while fable is off). Normalize to English and `model: fable` before copying into the repo.
32
32
  - Synced shell runs on BSD userland: BSD grep has no Perl-regex flag, and `sed` has no `\b` or `\|`. A pattern that silently matches nothing reads as "clean".
33
33
 
34
34
  ## Targets
35
35
 
36
- | # | Target | Path | Direction |
37
- |---|-------|-----|-----|
38
- | 1 | Claude Code (source of truth) | `~/.claude/commands/multi-agent/` + `~/.claude/multi-agent-refs/` + `~/.claude/agents/` + `~/.claude/scripts/` + `~/.claude/lib/` | source |
39
- | 2 | Copilot CLI | `~/.copilot/copilot-instructions.md` + `~/.copilot/skills/` | <- from Claude |
40
- | 2b | Codex CLI | `~/.codex/AGENTS.md` + `~/.codex/skills/multi-agent/` + `~/.codex/multi-agent-refs/` + `~/.codex/agents/*.toml` | <- from Claude (path-rewritten) |
41
- | 3 | multi-agent-pipeline repo | `~/multi-agent-pipeline/pipeline/` | <- from Claude (genericized) |
42
- | 4 | Website | `{owner}/{website-host}` | <- version + features |
43
- | 5 | multi-agent-toolkit MCP server | resolved from `prefs.global.devToolkit` or the `mcpServers` registration | own repo: gate, commit, publish |
44
-
45
- ## Platform Support (macOS only)
46
-
47
- Only macOS is supported (ADR-0012). `package.json` declares `os: ["darwin"]`, which npm enforces on the root package, so this tree cannot be installed elsewhere, and a detection table for other hosts would describe a case that cannot occur.
48
-
49
- **Contract for synced shell scripts.** The runtime is BSD userland and bash 3.2,
50
- and that is a stricter constraint than "cross-platform", not a looser one:
51
-
52
- 1. Path handling: always quote (`"$f"`); use `$HOME`, never `/Users/...`.
53
- 2. `grep -P` is banned. BSD grep has no `-P`: it exits 2, and with `2>/dev/null`
54
- that reads as "found nothing". Two gates have already shipped green for
55
- exactly this reason. Use `-E`.
56
- 3. Timestamps: `stat -c %Y` FIRST, then `stat -f %m`. GNU-first ordering is
57
- required because `stat -f` is a valid GNU flag (`--file-system`) that
58
- succeeds and prints something that is not a timestamp.
59
- 4. Hashes: `sha256sum || shasum`, in that order. The gate fails a file that
60
- names either alone.
61
- 5. `find` traversal: `-prune` for `node_modules`, `Pods`, `.build`,
62
- `DerivedData`, `.next`.
63
- 6. Sed / awk: POSIX-portable. `-E`, never `-r`; `sed -i ''` on BSD.
64
- 7. Keychain I/O: always via `~/.claude/lib/credential-store.sh get|set`, never
65
- `security` directly - the wrapper is what keeps a secret off argv.
66
- 8. Verification: after Step 3 (REPO), `bash -n` every shell script in
67
- `pipeline/lib/` and `pipeline/scripts/`.
36
+ Claude Code (source of truth) -> Copilot CLI, Codex CLI (path-rewritten), the
37
+ pipeline repo (genericized), the website (`{owner}/{website-host}`) and the
38
+ multi-agent-toolkit MCP server (its own repo). Paths, directions, the shared
39
+ Claude <-> Copilot sections and the token table: `$HOME/.claude/multi-agent-refs/sync/overview.md`; read it
40
+ before Step 1.5.
68
41
 
69
42
  ## Default Behavior (no arguments)
70
43
 
@@ -74,15 +47,14 @@ Run every step automatically:
74
47
  Step 0: DOCTOR doctor.mjs - exit 2 or 4 stops the sync
75
48
  Step 1.5: DETECT Compare timestamps, find stale targets
76
49
  Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 70 sub-command skills)
77
- Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + sub-command specs as refs + agent TOML)
50
+ Step 2b: CODEX Claude Code -> Codex CLI (router skill + specs as refs + agent TOML)
78
51
  Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub, bash -n on all sh)
79
- Step 3c: PLUGINS pipeline shared/external -> multi-agent-plugins marketplace (rebuild knowledge/,
80
- bump changed plugins' patch version, commit + push the plugins repo)
52
+ Step 3c: PLUGINS shared/external -> multi-agent-plugins marketplace (rebuild, bump, push)
81
53
  Step 3d: DEV-TOOLKIT companion MCP server -> detect movement, run the ship gates, commit + publish
82
54
  Step 3e: OFFICE panel page is current, installed copies match it, toolkit version recorded
83
55
  Step 4: WEBSITE Version + phase/model counts -> {website-host} (i18n + projects.ts)
84
56
  Step 5: Commit Commit + push all changed repos
85
- Step 6: Report Summary: synced targets, platform, changed files, deploy status, multi-agent-toolkit version
57
+ Step 6: Report Synced targets, changed files, deploy status, multi-agent-toolkit version
86
58
  ```
87
59
 
88
60
  If nothing is stale → report "All targets up to date" and stop.
@@ -93,104 +65,30 @@ Step 0 gate rules and why: `features/doctor.md`.
93
65
 
94
66
  ## Sync rules
95
67
 
96
- 1. **Read first** - understand every target's current state before making any change
97
- 2. **Preserve file structure** - each target has its own format:
98
- - `commands/multi-agent/` SKILL tree + `multi-agent-refs/phases/`: detailed pipeline spec (frontmatter, phases, routing)
99
- - `copilot-instructions.md`: general development instructions + pipeline summary section
100
- - `multi-agent-pipeline/pipeline/`: generic open-source version (NO personal data)
101
- 3. **Sync the shared sections** (Claude ↔ Copilot):
102
- - Pipeline entries table (base / :autopilot)
103
- - Project detection (URL-based + cwd-based)
104
- - Figma pipeline flow
105
- - Git conventions (author, branch, commit format)
106
- - Keychain management (registry, naming convention, multi-agent pattern)
107
- 4. **Do not duplicate** - summary in Copilot, full spec in Claude. Keep this distinction.
108
- 5. **Report** - show a short diff summary after sync
68
+ Read every target's current state before changing anything; keep each target's
69
+ own format; summary in Copilot, full spec in Claude, never duplicated; finish
70
+ with a short diff summary.
109
71
 
110
72
  ---
111
73
 
112
- ## Pipeline Repo Sync Rules (CRITICAL)
113
-
114
- 1. **Source**: `~/.claude/commands/multi-agent/` + `~/.claude/multi-agent-refs/` + `~/.claude/agents/` + `~/.claude/lib/`
115
- 2. **Target**: `~/multi-agent-pipeline/pipeline/`
116
- 3. **Genericization** (must be applied BEFORE writing to the target):
117
- - Jira project key (`prefs.global.defaultJiraKey`) -> `{JIRA_KEY}`, `PROJ` in examples
118
- - Personal names/emails -> generic placeholder
119
- - Branch names -> `develop`
120
- - Project names -> `my-app`
121
- - `{JIRA_HOST}`, `{BITBUCKET_HOST}`, `{CONFLUENCE_HOST}`, `{CORP_DOMAIN}` stay as-is
122
- - **Verify**: `grep` scan for personal/corporate data inside pipeline/ -> 0 results
123
- 4. **File mapping**:
124
- ```
125
- ~/.claude/commands/multi-agent/ -> pipeline/commands/multi-agent/
126
- ~/.claude/multi-agent-refs/ -> pipeline/multi-agent-refs/ (refs + pickers, non-command)
127
- ~/.claude/commands/sim-test.md -> pipeline/commands/sim-test.md
128
- ~/.claude/agents/*.md -> pipeline/agents/
129
- ```
130
- 5. **Files NOT synced** (local-only, may contain personal data):
131
- - `~/.claude/multi-agent-preferences.json`
132
- - `~/.claude/CLAUDE.md`, `~/.claude/rules/`, `~/.claude/knowledge/`
133
- - `~/.claude/scripts/` - EXCEPT `pre-commit-check.sh`, `agent-guard.sh`, `agent-guard.py`, and `build-stack-plugins.mjs` (generic, synced)
134
- - `~/.claude/settings.json`
135
- - `~/.claude/office/` - the office panel flows the other way: its source is the repo (`pipeline/office-src`, built by `office-build.mjs` into `pipeline/office`), and the installer copies it to each host. Never copy it from `~/.claude` into the repo; Step 3e checks it instead
136
- - `~/.claude/multi-agent-refs/registries/` - the installer copies gate registries there from `pipeline/skills/shared/external`; the repo already holds the source
137
- - **Any `~/.claude/commands/multi-agent/*/SKILL.md` whose frontmatter has `local-only: true`** - these are user/repo-specific alias wrappers that delegate to a private marketplace plugin's skills exposed as `multi-agent:<name>`. Syncing them would leak the private plugin/skill names into the public pipeline. Skip them at copy time; the backstop below proves none reached `pipeline/commands/`.
138
- ```bash
139
- grep -rl "^local-only: true" ~/multi-agent-pipeline/pipeline/commands/ 2>/dev/null \
140
- && { echo "ABORT: local-only wrapper leaked into pipeline/commands"; exit 1; } || true
141
- # backstop: corporate refs only (generic ai-ios-toolkit is fine)
142
- grep -rniE "ai-(ios-engineering|mobile)-toolkit:(create-ui-component|evolve-ui-component|fix-bug|branch-and-pr|backlog|code-connect|figma-utility|resource-utility|component-wiki|component-docs|figma-setup)" \
143
- ~/multi-agent-pipeline/pipeline/commands/ 2>/dev/null \
144
- && { echo "ABORT: corporate reference leaked into pipeline/commands"; exit 1; } || true
145
- ```
146
- - **Installed-tree artifacts.** Picker descriptions are Turkish with a
147
- `description-en:` sidecar when `outputLanguage=tr`, and fable-tier agents
148
- carry `model: opus` while `fableEnabled` is off. The repo always gets the
149
- English form and `model: fable`, so normalize after copying:
150
- ```bash
151
- # normalize: restore English descriptions, strip description-en sidecars
152
- node ~/multi-agent-pipeline/pipeline/scripts/localize-commands.mjs restore \
153
- --dir ~/multi-agent-pipeline/pipeline/commands/multi-agent
154
- grep -rl "^description-en:" ~/multi-agent-pipeline/pipeline/commands/ 2>/dev/null \
155
- && { echo "ABORT: description-en sidecar leaked into pipeline/commands"; exit 1; } || true
156
- # backstop: repo description lines must be English (Turkish-diacritics proxy)
157
- grep -rn '^description:.*[çğıöşüÇĞİÖŞÜ]' ~/multi-agent-pipeline/pipeline/commands/ 2>/dev/null \
158
- && { echo "ABORT: localized description leaked into pipeline/commands"; exit 1; } || true
159
- node ~/multi-agent-pipeline/pipeline/lib/agent-model-sync.mjs --dir ~/multi-agent-pipeline/pipeline/agents --fable-on
160
- ```
161
-
162
- 6. **Cross-platform smoke gate** (final step of the REPO sync, before push):
163
- ```bash
164
- # bash -n: parse-level syntax check on every shell script
165
- find ~/multi-agent-pipeline/pipeline/lib ~/multi-agent-pipeline/pipeline/scripts \
166
- -name "*.sh" -type f -exec bash -n {} \;
167
- # Should print nothing - any output is a portability regression.
168
-
169
- # Portability grep: flag known non-portable constructs introduced post-sync.
170
- grep -rnE "stat -f[^[:space:]]+[^|]|sed -i[^[:space:]'\"]" \
171
- ~/multi-agent-pipeline/pipeline/lib ~/multi-agent-pipeline/pipeline/scripts || true
172
- # Each hit needs an explicit GNU/BSD fallback per the Platform Support contract.
173
- ```
174
- Gate failure -> abort push, surface the file + line, fix in the `~/.claude/` source first, re-sync.
74
+ ## Step procedures (read each file before its step)
175
75
 
176
- ---
177
-
178
- ## Codex Sync (Step 2b)
179
-
180
- Full procedure: `$HOME/.claude/multi-agent-refs/sync/codex.md`. Read it before Step 2b; it runs after Step 3.
181
-
182
- ## Stack-Plugin Sync (Step 3c)
183
-
184
- Full procedure: `$HOME/.claude/multi-agent-refs/sync/stack-plugins.md`. Read it before Step 3c.
76
+ | Step | Procedure |
77
+ |---|---|
78
+ | 2b CODEX (runs after Step 3) | `$HOME/.claude/multi-agent-refs/sync/codex.md` |
79
+ | 3 REPO | `$HOME/.claude/multi-agent-refs/sync/repo.md` |
80
+ | 3c PLUGINS | `$HOME/.claude/multi-agent-refs/sync/stack-plugins.md` |
81
+ | 3d DEV-TOOLKIT (and `multi-agent-toolkit` arg) | `$HOME/.claude/multi-agent-refs/sync/dev-toolkit.md` |
82
+ | 3e OFFICE (also release step 9c) | `$HOME/.claude/multi-agent-refs/sync/office.md` |
185
83
 
186
- ## Dev-Toolkit Sync (Step 3d)
84
+ Hard rules for Step 3, whatever `repo.md` adds:
187
85
 
188
- Full procedure: `$HOME/.claude/multi-agent-refs/sync/dev-toolkit.md`. Read it before Step 3d, and for `/multi-agent:sync multi-agent-toolkit`.
86
+ - Genericize BEFORE writing to `~/multi-agent-pipeline/pipeline/`; the personal/corporate data scan must return 0 results.
87
+ - Never sync a `local-only: true` SKILL.md, local config, or `~/.claude/office/`. A leaked wrapper, sidecar or localized description aborts the sync.
88
+ - Synced shell follows the BSD / bash 3.2 contract in `repo.md` (`grep -P` banned, keychain I/O only via `credential-store.sh`). A failed smoke gate aborts the push; fix the `~/.claude/` source, re-sync.
189
89
 
190
90
  ## Website Sync (Step 4)
191
91
 
192
- Propagate version, phase and model counts and feature descriptions to the website.
193
-
194
92
  ```bash
195
93
  gh auth switch --user {owner}
196
94
  WEBSITE_DIR="$HOME/{website-host}"
@@ -198,14 +96,10 @@ WEBSITE_DIR="$HOME/{website-host}"
198
96
  cd "$WEBSITE_DIR" && git pull origin main
199
97
  ```
200
98
 
201
- | File | What to sync |
202
- |-------|--------------|
203
- | `src/lib/i18n.tsx` | Phase count, model count, feature descriptions (EN + TR) |
204
- | `src/data/projects.ts` | Version number, tagline, description, feature list |
99
+ Files: `src/lib/i18n.tsx` (counts, feature copy EN + TR) and `src/data/projects.ts` (version, features); detail in `overview.md`.
205
100
 
206
101
  ```bash
207
- # A commit the platform does not recognise is pushed fine and never built, so the site
208
- # keeps the old version. {identity} is the one routed to {owner}, not the run's own.
102
+ # {identity} is the one routed to {owner}, not the run's own.
209
103
  # Why, signature, recovery: `$HOME/.claude/multi-agent-refs/website-deploy.md`.
210
104
  bash "$HOME/.claude/scripts/website-deploy-commit.sh" "{identity.name}" "{identity.email}" "{VERSION}" "$WEBSITE_DIR"
211
105
  ```
@@ -219,8 +113,7 @@ When invoked with the `release` argument:
219
113
  ```
220
114
  1. REPO Claude Code -> pipeline repo (genericized)
221
115
  2. VERIFY Personal data scan -> 0 results; config-hygiene scan (scan-agent-config.sh) -> 0 HIGH
222
- 3. LINT + TEST ESLint + smoke tests (stale .skill-manifest.json fails here; re-sign
223
- it with sign-skills.sh whenever a SKILL.md moved)
116
+ 3. LINT + TEST ESLint + smoke tests (re-sign .skill-manifest.json with sign-skills.sh when a SKILL.md moved)
224
117
  4. VERSION package.json version bump (patch/minor/major)
225
118
  5. Commit + TAG git commit + git tag v{VERSION}
226
119
  6. PUSH git push --tags; publish is local (release.yml off)
@@ -232,26 +125,13 @@ When invoked with the `release` argument:
232
125
  10. Report Summary: version, touched repos, deploy status
233
126
  ```
234
127
 
235
- ### Step 3e: OFFICE (every sync, and step 9c of a release)
236
-
237
- The office panel ships with the pipeline, so a sync carries it by checking it, not by copying it:
238
-
239
- 1. `node ~/multi-agent-pipeline/pipeline/scripts/office-build.mjs --check`: the committed page is what `pipeline/office-src` builds to, and `office/toolkit.json` carries the toolkit version in `docs/facts.json`. Either stale fails the sync until it is rebuilt and committed; a release that regenerates facts rebuilds the office right after.
240
- 2. After the install steps, compare `pipeline/office/index.html` with the installed copies (`~/.claude/office/`, and the Copilot and Codex trees when installed), byte for byte, plus the asset list. A difference means the install is behind: run `node install.js --installed` and compare again.
241
- 3. Report the toolkit version the installed `office/toolkit.json` carries: it is what the office Tools window starts, and it moves forward with every release.
242
- 4. An office server that is already running picks the update up by itself: the open page shows a reload banner, and `/multi-agent:office-on` replaces a server whose code changed. Nothing to restart by hand.
243
-
244
128
  ---
245
129
 
246
130
  ## Sub-Command Sync (Claude Code <-> Copilot CLI Skills)
247
131
 
248
- This runs on the Claude <-> Copilot axis. Codex is NOT synced here: it receives the
249
- same specs as reference files rather than as peer skills, via Step 2b - see
250
- `cross-cli-contract.md` 2.6 for why the parity axis differs per host.
132
+ Claude <-> Copilot axis only; Codex takes Step 2b (`cross-cli-contract.md` 2.6).
251
133
 
252
- | Claude Code | Copilot CLI |
253
- |-------------|-------------|
254
- | `~/.claude/commands/multi-agent/{cmd}/SKILL.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
134
+ `~/.claude/commands/multi-agent/{cmd}/SKILL.md` <-> `~/.copilot/skills/multi-agent-{cmd}/SKILL.md`.
255
135
 
256
136
  **70 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
257
137
 
@@ -268,20 +148,11 @@ testflight-validation, uninstall, update
268
148
 
269
149
  **NOT synced**: `$HOME/.claude/multi-agent-refs/*` - lazy-load references, Claude Code specific
270
150
 
271
- **Claude -> Copilot**: add SKILL.md frontmatter (`name`, `description`, `user-invocable: true`, `argument-hint`)
272
- **Copilot -> Claude**: simplify the frontmatter (`description` + `allowed-tools`), add `$ARGUMENTS`
151
+ Frontmatter conversion between the two forms: `overview.md`, "Sub-command paths".
273
152
 
274
153
  ---
275
154
 
276
155
  ## Keychain Token Access
277
156
 
278
- | Operation | Token Source |
279
- |-------|---------------|
280
- | `gh` CLI (personal) | `{owner}` gh auth (Keychain) |
281
- | `gh` CLI (work) | `{user}_<work-label>` gh auth (Keychain) - see `prefs.global.accounts[]` |
282
- | npm publish | `NODE_AUTH_TOKEN` - `GITHUB_TOKEN` in CI, Keychain PAT locally |
283
- | multi-agent-toolkit publish (Step 3d) | `npm` logical Keychain key -> throwaway `--userconfig`, registry from that repo's `publishConfig` |
284
-
285
- ```bash
286
- gh auth switch --user {owner} # for personal repos
287
- ```
157
+ Token sources per operation: `overview.md`. Personal repos run under
158
+ `gh auth switch --user {owner}`; tokens are read only through `credential-store.sh`.
@@ -75,10 +75,8 @@ Scripts: `test-gen-gate.mjs` (artefact, handle and write gates),
75
75
  (`tracker-contract.md`, "Call pattern").
76
76
  2. Toolkit: `test_results_classify`, `coverage_gap` and `ui_locator_codegen`
77
77
  need `@mmerterden/multi-agent-toolkit-mcp` >= v3.25.0. Check the tool list
78
- once. Each missing tool has a fallback in `stages.md` (classify from the
79
- repeats, the analyst matches coverage itself with every match `inferred`,
80
- locators written by hand from the handles); say which fallbacks are in use,
81
- once.
78
+ once. Each missing tool has a fallback in `stages.md` (stages 3, 5 and 7);
79
+ say which fallbacks are in use, once.
82
80
  3. Change base. `TG_STATE="$HOME/.claude/knowledge/<project>/test-gen-state.json"`:
83
81
 
84
82
  ```bash
@@ -14,9 +14,7 @@ confirm: none
14
14
  node "$HOME/.claude/scripts/doctor.mjs"
15
15
  ```
16
16
 
17
- An update is the moment the layout changes, so it is the moment a layout check is
18
- worth most: a script that moved, a host tree that did not get the copy, a version
19
- stamp that disagrees with the package. Report the result in `outputLanguage`.
17
+ Report the result in `outputLanguage`.
20
18
  Exit 2 means the update left the install in a state a run will fail from - say
21
19
  that, do not report "updated" and stop.
22
20
 
@@ -24,7 +22,10 @@ that, do not report "updated" and stop.
24
22
 
25
23
  Update the pipeline in one command. The npm registry is the single update channel: the latest published release is downloaded and installed. Existing preferences are preserved; only skill / script / schema files are refreshed.
26
24
 
27
- A git clone of the pipeline repo is a maintainer workspace, kept in sync by `/multi-agent:sync` - it is never consulted here. A fix that only exists on `main` reaches users when a release is published, not before.
25
+ Reasoning behind the steps, the step 6 summary format and a sample output:
26
+ `$HOME/.claude/multi-agent-refs/update/details.md`; read it before step 6.
27
+
28
+ A git clone of the pipeline repo is a maintainer workspace (`/multi-agent:sync`) and is never consulted here.
28
29
 
29
30
  ## Steps
30
31
 
@@ -40,7 +41,7 @@ and every later block that needs them starts by sourcing it.
40
41
  UPD_DIR="${TMPDIR:-/tmp}/multi-agent-update"
41
42
  CUR=$(tr -d '[:space:]' < "$HOME/.claude/.pipeline-version" 2>/dev/null)
42
43
  [ -n "$CUR" ] || CUR="unknown"
43
- # Read the registry directly - `npm view` can answer from a stale local cache.
44
+ # Read the registry directly, never `npm view`.
44
45
  LATEST=$(curl -fsS "$REG/$(printf '%s' "$PKG" | sed 's|/|%2F|')/latest" \
45
46
  | node -pe 'JSON.parse(require("fs").readFileSync(0,"utf8")).version' 2>/dev/null)
46
47
  if [ -z "$LATEST" ]; then
@@ -71,10 +72,7 @@ and every later block that needs them starts by sourcing it.
71
72
  ```bash
72
73
  . "${TMPDIR:-/tmp}/multi-agent-update.env" || { echo "Run step 1 first."; exit 1; }
73
74
  rm -rf "$UPD_DIR" && mkdir -p "$UPD_DIR"
74
- # `--registry` does NOT override a scope mapping. A user-level .npmrc line
75
- # like `@scope:registry=https://npm.pkg.github.com` wins over it, so the
76
- # download hits the wrong registry, fails with `notarget`, and `--silent`
77
- # hides why. Pin the SCOPE, which is the setting that actually loses.
75
+ # Pin the SCOPE: `--registry` alone loses to an .npmrc scope mapping.
78
76
  SCOPE=$(printf '%s' "$PKG" | sed -n 's|^@\([^/]*\)/.*|\1|p')
79
77
  PACK_OUT=$(npm pack "$PKG@$LATEST" ${SCOPE:+"--@${SCOPE}:registry=$REG"} \
80
78
  --registry "$REG" --pack-destination "$UPD_DIR" 2>&1) || {
@@ -83,20 +81,16 @@ and every later block that needs them starts by sourcing it.
83
81
  echo " npm config get @${SCOPE}:registry"
84
82
  exit 1
85
83
  }
86
- # Never glob into tar: an older tarball left in $UPD_DIR would be extracted
87
- # instead, and the run would install the version it was trying to leave.
84
+ # Never glob into tar: take the path npm pack printed.
88
85
  TGZ="$UPD_DIR/$(printf '%s' "$PACK_OUT" | tail -1 | tr -d '[:space:]')"
89
86
  [ -f "$TGZ" ] || { echo "npm pack reported no tarball; aborting."; exit 1; }
90
87
  tar -xzf "$TGZ" -C "$UPD_DIR"
91
88
  node "$UPD_DIR/package/install.js" --installed
92
89
  ```
93
90
 
94
- `--installed` refreshes exactly the CLI targets that already carry a version
95
- stamp (`$HOME/.claude/.pipeline-version`, `$HOME/.copilot/.pipeline-version`,
96
- `$HOME/.codex/.pipeline-version`) and adds none: an update never installs
97
- Copilot CLI or Codex CLI on a machine that only had Claude Code. With no stamp
98
- at all it installs Claude Code. Each refreshed target gets the new version
99
- stamp.
91
+ `--installed` refreshes only the CLI targets that already carry a version
92
+ stamp and adds none: an update never installs a CLI target the machine did
93
+ not have.
100
94
 
101
95
  4b. **Update the stack plugins** (catalog refresh, then every installed plugin in its own scope):
102
96
  ```bash
@@ -108,10 +102,8 @@ and every later block that needs them starts by sourcing it.
108
102
  ```
109
103
  A non-zero exit means a step failed and the CLI's own error is already on screen. Report it to the user; do not retry silently. The log feeds step 6, which tells the user what each updated plugin brought.
110
104
 
111
- 4c. **Prune retired adapter files** (Cursor / Antigravity / Copilot Chat were removed in v10.7.0 - the pipeline targets Claude Code, Copilot CLI and Codex CLI):
105
+ 4c. **Prune retired adapter files** (per-project adapter files are left untouched; see `details.md`):
112
106
  ```bash
113
- # Per-project adapter files (.cursor/, .agent/, .github/copilot-instructions.md)
114
- # live in your repos and are left untouched - remove them manually if you like.
115
107
  echo " -> no global adapter files to prune"
116
108
  ```
117
109
 
@@ -156,27 +148,11 @@ and every later block that needs them starts by sourcing it.
156
148
  --plugin-refresh-log "${TMPDIR:-/tmp}/multi-agent-plugin-refresh.log"
157
149
  ```
158
150
 
159
- The JSON holds every release between the old and the new version (not only
160
- the last one) and, for each plugin the refresh moved, that plugin's releases.
161
- Turn it into a short note in `outputLanguage`, written for the person using
162
- the pipeline, not for its maintainers:
163
-
164
- - First line: `✓ Updated: v<CUR> → v<NEW>`, then one line per updated plugin
165
- (`ai-ios-toolkit 0.20.0 → 0.21.0`).
166
- - Then up to four groups, each only when it has entries: **New** (added),
167
- **Fixed**, **Changed**, **Removed** (Turkish: Yeni, Düzeltilen, Değişen,
168
- Kaldırılan). Put security entries first under Fixed.
169
- - One plain sentence per item about what the user notices or can now do.
170
- Merge items that say the same thing; leave out internal-only entries
171
- (smoke tests, CI, refactors, budgets, docs) unless they change what a user
172
- sees. At most about eight items per group; when more were dropped, say how
173
- many and that the full list is in the CHANGELOG.
174
- - Use only what the JSON says. Never invent a feature or a fix, and never
175
- guess why something changed.
176
- - Last line, when anything needs action: what to do (restart Claude Code for
177
- plugin changes, run a command a release asks for).
178
-
179
- With empty notes and no plugin updates, print only the version line.
151
+ Turn the JSON into a short note in `outputLanguage` for the person using the
152
+ pipeline, in the format of `details.md`, "Writing the step 6 summary" (version
153
+ line, plugin lines, New / Fixed / Changed / Removed groups). Use only what the
154
+ JSON says. Never invent a feature or a fix, and never guess why something
155
+ changed. With empty notes and no plugin updates, print only the version line.
180
156
 
181
157
  7. **Smoke test (optional)** - the release tarball ships exactly two smokes for this purpose:
182
158
  ```bash
@@ -190,22 +166,4 @@ and every later block that needs them starts by sourcing it.
190
166
 
191
167
  ## Output
192
168
 
193
- ```
194
- Current: v15.6.0 Latest: v15.7.0
195
- -> npm pack @{npm-scope}/multi-agent-pipeline@15.7.0
196
- -> node install.js --installed (Claude Code; no Copilot CLI or Codex CLI stamp, not installed)
197
- -> migrate-prefs.mjs (0 changes - already v2.6.0)
198
-
199
- ✓ Updated: v15.6.0 → v15.7.0
200
- ai-ios-toolkit 0.19.0 → 0.20.0
201
-
202
- New
203
- - iOS design review: critiques a screen against the HIG from screenshots.
204
- Fixed
205
- - The usage report reads the tracker as it is written.
206
- Restart Claude Code to load the updated plugins.
207
-
208
- Verification:
209
- schema-validation: 27/27 pass
210
- cross-cli-behavior: 14/14 pass
211
- ```
169
+ See the sample in `details.md`.
@@ -3,6 +3,15 @@
3
3
  Versions of the client contract (`manifest.json` `contractVersion`), separate
4
4
  from the package version. See `README.md` for what counts as minor and major.
5
5
 
6
+ ## 1.8.0
7
+
8
+ Added. Nothing existing changes shape.
9
+
10
+ - `runs-index` 1.4.0 (`GET /v1/runs`, `/v1/runs/{id}`, `/v1/phone/runs`): `group`
11
+ can be `done`, for a run whose status is complete, completed, done, abandoned
12
+ or cancelled. Such a run was grouped by phase before, so a finished run could
13
+ read as waiting. A client that does not know a group shows it neutrally.
14
+
6
15
  ## 1.7.0
7
16
 
8
17
  Added. Nothing existing changes shape.
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractVersion": "1.7.0",
2
+ "contractVersion": "1.8.0",
3
3
  "error": "invalid-request",
4
4
  "message": "the launch request was refused",
5
5
  "errors": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractVersion": "1.7.0",
2
+ "contractVersion": "1.8.0",
3
3
  "error": "unauthorized",
4
4
  "message": "a bearer token is required"
5
5
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractVersion": "1.7.0",
2
+ "contractVersion": "1.8.0",
3
3
  "error": "unsigned",
4
4
  "message": "a device signature is required"
5
5
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractVersion": "1.3.0",
2
+ "contractVersion": "1.4.0",
3
3
  "logsRoot": "/Users/example/.claude/logs/multi-agent",
4
4
  "count": 1,
5
5
  "runs": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractVersion": "1.3.0",
2
+ "contractVersion": "1.4.0",
3
3
  "logsRoot": "/Users/example/.claude/logs/multi-agent",
4
4
  "count": 0,
5
5
  "runs": []
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractVersion": "1.3.0",
2
+ "contractVersion": "1.4.0",
3
3
  "logsRoot": "/Users/example/.claude/logs/multi-agent",
4
4
  "count": 1,
5
5
  "runs": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractVersion": "1.3.0",
2
+ "contractVersion": "1.4.0",
3
3
  "count": 1,
4
4
  "runs": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractVersion": "1.3.0",
2
+ "contractVersion": "1.4.0",
3
3
  "logsRoot": "/Users/example/.claude/logs/multi-agent",
4
4
  "count": 1,
5
5
  "runs": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractVersion": "1.3.0",
2
+ "contractVersion": "1.4.0",
3
3
  "logsRoot": "/Users/example/.claude/logs/multi-agent",
4
4
  "count": 1,
5
5
  "runs": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "contractVersion": "1.7.0",
2
+ "contractVersion": "1.8.0",
3
3
  "supportedMajors": [1],
4
4
  "description": "The pipeline's client contract: every surface a client reads or writes, the CLI invocation and the HTTP route that carry it, and the schema its JSON follows. Schemas are not copied here; schemasDir points at the one tree the producers validate against. Paths in cli are relative to the pipeline directory (installed: ~/.claude).",
5
5
  "schemasDir": "../schemas",
@@ -120,7 +120,7 @@
120
120
  "query": ["group", "redact"],
121
121
  "cli": ["node", "scripts/runs-index.mjs", "--json", "[--group <group>]", "[--redact]"],
122
122
  "schema": "runs-index.schema.json",
123
- "version": "1.3.0",
123
+ "version": "1.4.0",
124
124
  "remote": "read",
125
125
  "risk": "read"
126
126
  },
@@ -131,7 +131,7 @@
131
131
  "query": ["redact"],
132
132
  "cli": ["node", "scripts/runs-index.mjs", "--json", "--task-id", "{id}", "[--redact]"],
133
133
  "schema": "runs-index.schema.json",
134
- "version": "1.3.0",
134
+ "version": "1.4.0",
135
135
  "remote": "read",
136
136
  "risk": "read"
137
137
  },
@@ -378,7 +378,7 @@
378
378
  "scope": "read",
379
379
  "cli": ["node", "scripts/runs-index.mjs", "--json", "[--group <group>]", "--redact"],
380
380
  "schema": "runs-index.schema.json",
381
- "version": "1.3.0",
381
+ "version": "1.4.0",
382
382
  "note": "Always redacted; redact=0 is refused.",
383
383
  "risk": "read"
384
384
  },
@@ -391,7 +391,7 @@
391
391
  "scope": "read",
392
392
  "cli": ["node", "scripts/runs-index.mjs", "--json", "--task-id", "{id}", "--redact"],
393
393
  "schema": "runs-index.schema.json",
394
- "version": "1.3.0",
394
+ "version": "1.4.0",
395
395
  "note": "Always redacted; redact=0 is refused.",
396
396
  "risk": "read"
397
397
  },
@@ -1,7 +1,7 @@
1
1
  // Generated by pipeline/contract/build.mjs from pipeline/schemas/*.schema.json.
2
2
  // Do not edit: change the schema and run `node pipeline/contract/build.mjs --write`.
3
3
 
4
- export type ContractVersion = "1.7.0";
4
+ export type ContractVersion = "1.8.0";
5
5
  export type SurfaceId = "runs" | "run" | "commands" | "questions" | "issues" | "worktrees" | "launch-spec" | "repos" | "repo-add" | "repo-remove" | "launch" | "answer" | "run-log" | "resume" | "kill" | "gc" | "autopilot" | "autopilot-off" | "phone-runs" | "phone-run" | "phone-answer" | "phone-launch" | "autopilot-on" | "steer" | "activity" | "activity-stream" | "agent-chat" | "routines" | "routine-delete" | "jobs" | "job-start" | "stack" | "stack-set" | "ledger" | "system" | "prune-logs" | "settings" | "settings-set" | "credentials" | "memory" | "run-results" | "run-evidence" | "review-verdict" | "issue-maturity" | "prs" | "prs-reach" | "tools" | "tool-call" | "service-confluence" | "service-crashlytics" | "service-figma" | "permissions";
6
6
 
7
7
  /** What `runs-index.mjs --json` prints: every run under the log root and the unattended log root (one record per task id), grouped per status/SKILL.md 3b. Fields are only ever added - a decoder ignores keys it does not know. `--redact` drops every x-sensitivity local field (and `logsRoot`) and scrubs the free text in the title, `now`, sub-step names, task subjects and the pending question. */
@@ -42,7 +42,8 @@ export interface RunsIndexRun {
42
42
  waitingFor?: string | null;
43
43
  /** The question the run stopped on, present only with waitingFor question. Answer it with one of options[].id through `answer-question.mjs` or POST /v1/runs/{id}/answer. text and labels are scrubbed under --redact. Added in 1.1.0. */
44
44
  pendingQuestion?: null | RunsIndexQuestion;
45
- group: "waiting" | "stopped" | "question" | "unknown";
45
+ /** done (added in 1.4.0): the run's status is complete, completed, done, abandoned or cancelled; it is placed before every other test, so a finished run is never offered resume. */
46
+ group: "waiting" | "stopped" | "question" | "unknown" | "done";
46
47
  phases: Array<RunsIndexPhase>;
47
48
  tokens: {
48
49
  in: number;