@mmerterden/multi-agent-pipeline 16.31.1 → 17.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/README.md +148 -103
  3. package/README.tr.md +149 -103
  4. package/docs/adr/0011-dormant-ci.md +10 -1
  5. package/docs/adr/0012-macos-only.md +98 -0
  6. package/docs/adr/README.md +1 -0
  7. package/docs/architecture.md +3 -3
  8. package/docs/ecosystem.md +5 -5
  9. package/docs/engineering.md +1 -1
  10. package/index.js +26 -0
  11. package/install/_dev-only-files.mjs +0 -1
  12. package/install/index.mjs +10 -0
  13. package/install/templates/multi-agent-autopilot.plist.template +79 -0
  14. package/package.json +5 -3
  15. package/pipeline/commands/multi-agent/autopilot-off/SKILL.md +64 -0
  16. package/pipeline/commands/multi-agent/autopilot-on/SKILL.md +173 -0
  17. package/pipeline/commands/multi-agent/autopilot-status/SKILL.md +74 -0
  18. package/pipeline/commands/multi-agent/channels/SKILL.md +41 -12
  19. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +40 -3
  20. package/pipeline/commands/multi-agent/help/SKILL.md +43 -37
  21. package/pipeline/commands/multi-agent/manual-test/SKILL.md +1 -1
  22. package/pipeline/commands/multi-agent/setup/SKILL.md +15 -7
  23. package/pipeline/commands/multi-agent/stack/SKILL.md +31 -32
  24. package/pipeline/commands/multi-agent/status/SKILL.md +17 -1
  25. package/pipeline/commands/multi-agent/sync/SKILL.md +34 -28
  26. package/pipeline/commands/multi-agent/update/SKILL.md +1 -1
  27. package/pipeline/lib/autopilot-activation.sh +117 -0
  28. package/pipeline/lib/autopilot-state.sh +150 -0
  29. package/pipeline/lib/issue-fetcher.sh +18 -1
  30. package/pipeline/lib/plan-todos.sh +18 -0
  31. package/pipeline/lib/stack-detect.sh +200 -0
  32. package/pipeline/multi-agent-refs/channels/jira.md +80 -20
  33. package/pipeline/multi-agent-refs/channels/pr.md +65 -19
  34. package/pipeline/multi-agent-refs/cross-cli-contract.md +35 -15
  35. package/pipeline/multi-agent-refs/features/doctor.md +15 -3
  36. package/pipeline/multi-agent-refs/features/visual-evidence.md +61 -1
  37. package/pipeline/multi-agent-refs/phases/phase-0-init.md +14 -5
  38. package/pipeline/multi-agent-refs/phases/phase-1-analysis.md +26 -12
  39. package/pipeline/multi-agent-refs/phases/phase-2-planning.md +17 -15
  40. package/pipeline/multi-agent-refs/phases/phase-3-dev.md +7 -5
  41. package/pipeline/multi-agent-refs/phases/phase-6-commit.md +1 -1
  42. package/pipeline/multi-agent-refs/phases/phase-7-report.md +2 -3
  43. package/pipeline/multi-agent-refs/readiness-review.md +7 -1
  44. package/pipeline/multi-agent-refs/rules.md +3 -11
  45. package/pipeline/multi-agent-refs/tracker-contract.md +32 -0
  46. package/pipeline/schemas/agent-state.schema.json +99 -25
  47. package/pipeline/schemas/autopilot-config.schema.json +149 -0
  48. package/pipeline/schemas/token-budget.json +4 -4
  49. package/pipeline/scripts/_stack-routing.mjs +91 -0
  50. package/pipeline/scripts/autopilot-arming.mjs +147 -0
  51. package/pipeline/scripts/autopilot-intake.mjs +383 -0
  52. package/pipeline/scripts/autopilot-menubar.swift +361 -0
  53. package/pipeline/scripts/autopilot-runner.mjs +349 -0
  54. package/pipeline/scripts/autopilot-status.sh +212 -0
  55. package/pipeline/scripts/capture-resume.sh +76 -14
  56. package/pipeline/scripts/doctor.mjs +26 -3
  57. package/pipeline/scripts/gc-abandoned.sh +352 -0
  58. package/pipeline/scripts/jira-search.sh +70 -0
  59. package/pipeline/scripts/phase-tracker.sh +134 -12
  60. package/pipeline/scripts/probe-evidence-capability.sh +27 -3
  61. package/pipeline/scripts/run-ui-tests.sh +113 -4
  62. package/pipeline/scripts/usage-report.mjs +5 -5
  63. package/pipeline/skills/.skill-manifest.json +16 -4
  64. package/pipeline/skills/shared/core/multi-agent-autopilot-off/SKILL.md +67 -0
  65. package/pipeline/skills/shared/core/multi-agent-autopilot-on/SKILL.md +146 -0
  66. package/pipeline/skills/shared/core/multi-agent-autopilot-status/SKILL.md +64 -0
  67. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +62 -11
  68. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +9 -8
  69. package/pipeline/scripts/gate-linux.sh +0 -62
package/README.tr.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  **Claude Code**, **Copilot CLI** ve **Codex CLI** için 8 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
- Claude Code, Copilot CLI ve Codex CLI üzerinde native çalışır. macOS / Linux / Windows. Sıfır runtime dependency.
13
+ Claude Code, Copilot CLI ve Codex CLI üzerinde native çalışır. Yalnızca macOS. Sıfır runtime dependency.
14
14
 
15
15
  📐 **[Mimari diyagramları](./docs/architecture.md)** - 8 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
 
@@ -46,7 +46,7 @@ Bir görev çalıştır - girdi tipi otomatik algılanır:
46
46
  /multi-agent:issue # atanmamış GitHub issue'larını gez → seç
47
47
  ```
48
48
 
49
- Her girdi aynı kısa intake'ten geçer - **hesap → (repo) → maturity kontrolü → dev-context** - sonra Phase 0'a girer. Bir Jira id'si veya GitHub URL'i hiçbir kod yazılmadan *önce* çekilir ve maturity-kontrol edilir; serbest-metin bu çekimi atlayıp doğrudan planlamaya geçer. Çoklu-repo görevleri dev-context adımında ekstra repo ekler.
49
+ Her girdi aynı kısa intake'ten geçer - **hesap → (repo) → maturity kontrolü → dev-context** - sonra Phase 0'a girer. Bir Jira id'si veya GitHub URL'i hiçbir kod yazılmadan _önce_ çekilir ve maturity-kontrol edilir; serbest-metin bu çekimi atlayıp doğrudan planlamaya geçer. Çoklu-repo görevleri dev-context adımında ekstra repo ekler.
50
50
 
51
51
  Onayları atlamak için `autopilot`, worktree olmadan mevcut branch'te çalışmak için `--local` ekle (örn. `/multi-agent:autopilot "PROJ-1234"`). Pipeline derinliği artık bayrak değil, koşunun sorduğu bir soru: `/multi-agent` ve `/multi-agent:local` Faz 0'da Tam mı Kısa mı diye sorar.
52
52
 
@@ -75,117 +75,117 @@ Bunun arkasındaki disiplin - sınırlı loop'lar, kanıt kapıları, token-büt
75
75
 
76
76
  ## Modlar
77
77
 
78
- | Mod | Komut | Akış |
79
- |---|---|---|
80
- | Full | `/multi-agent "task"` | Tüm 8 faz, interaktif |
81
- | Autopilot | `/multi-agent:autopilot "task"` | 7 faz (interaktif Test kapısı atlanır), onaysız |
82
- | Local | `/multi-agent:local "task"` | İnteraktif Test kapısı hariç tam pipeline, mevcut branch (worktree yok) |
83
- | Derinlik | Faz 0 Adım 7.5'te sorulur | Full (tüm fazlar) veya Short (Dev → Review → Test → Commit → Report). Komut adı değil - `/multi-agent` ve `:local` sorar, iki autopilot girişi de her zaman Full koşar |
84
- | Ship | `/multi-agent:resume-local` | Lokal iş üzerinde review→test→commit→report kuyruğunu çalıştır |
85
- | Audit | `/multi-agent:design-check` | Mock-mode vs Figma uygunluğu, yalnızca lokal |
86
- | Audit | `/multi-agent:testflight-validation` | TestFlight build için pre-submission kapıları: statik archive denetimi → Apple'ın `altool --validate-app`'i → Review-Guidelines kontrolü. Yalnızca doğrular, asla yüklemez |
78
+ | Mod | Komut | Akış |
79
+ | --------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
80
+ | Full | `/multi-agent "task"` | Tüm 8 faz, interaktif |
81
+ | Autopilot | `/multi-agent:autopilot "task"` | 7 faz (interaktif Test kapısı atlanır), onaysız |
82
+ | Local | `/multi-agent:local "task"` | İnteraktif Test kapısı hariç tam pipeline, mevcut branch (worktree yok) |
83
+ | Derinlik | Faz 0 Adım 7.5'te sorulur | Full (tüm fazlar) veya Short (Dev → Review → Test → Commit → Report). Komut adı değil - `/multi-agent` ve `:local` sorar, iki autopilot girişi de her zaman Full koşar |
84
+ | Ship | `/multi-agent:resume-local` | Lokal iş üzerinde review→test→commit→report kuyruğunu çalıştır |
85
+ | Audit | `/multi-agent:design-check` | Mock-mode vs Figma uygunluğu, yalnızca lokal |
86
+ | Audit | `/multi-agent:testflight-validation` | TestFlight build için pre-submission kapıları: statik archive denetimi → Apple'ın `altool --validate-app`'i → Review-Guidelines kontrolü. Yalnızca doğrular, asla yüklemez |
87
87
 
88
88
  Koşunun kendisinde ayarlanabilen tek şey derinlik, autopilot ve `--local`; geri kalan her şey kendi komutu. Tam katalog aşağıda.
89
89
 
90
90
  ## Komutlar
91
91
 
92
- `/multi-agent` ve 51 alt komut. `/multi-agent:help` aynı katalogu terminalde, `outputLanguage` ayarına göre gösterir.
92
+ `/multi-agent` ve 56 alt komut. `/multi-agent:help` aynı katalogu terminalde, `outputLanguage` ayarına göre gösterir.
93
93
 
94
94
  ### Pipeline girişleri
95
95
 
96
- | Komut | Ne yapar |
97
- |---|---|
98
- | `/multi-agent "task"` | Worktree'de tam pipeline. Faz 0'da Full mu Short mu diye sorar |
99
- | `/multi-agent:local "task"` | Aynı pipeline, mevcut branch üzerinde, worktree yok |
100
- | `/multi-agent:autopilot "task"` | Worktree, onay yok, her zaman Full |
101
- | `/multi-agent:local-autopilot "task"` | Mevcut branch, onay yok, her zaman Full |
102
- | `/multi-agent:resume-local` | Lokalde bitmiş iş için pipeline kuyruğu: Review → Build+Test → Commit/PR → Report. Dev fazı yok |
96
+ | Komut | Ne yapar |
97
+ | ------------------------------------- | ----------------------------------------------------------------------------------------------- |
98
+ | `/multi-agent "task"` | Worktree'de tam pipeline. Faz 0'da Full mu Short mu diye sorar |
99
+ | `/multi-agent:local "task"` | Aynı pipeline, mevcut branch üzerinde, worktree yok |
100
+ | `/multi-agent:autopilot "task"` | Worktree, onay yok, her zaman Full |
101
+ | `/multi-agent:local-autopilot "task"` | Mevcut branch, onay yok, her zaman Full |
102
+ | `/multi-agent:resume-local` | Lokalde bitmiş iş için pipeline kuyruğu: Review → Build+Test → Commit/PR → Report. Dev fazı yok |
103
103
 
104
104
  ### Görev kontrolü
105
105
 
106
- | Komut | Ne yapar |
107
- |---|---|
108
- | `/multi-agent:status` | Her görevin ID'si, fazı, branch'i ve durumu |
109
- | `/multi-agent:log [#N]` | Görevin `agent-log.md` dosyası (varsayılan: en son görev) |
110
- | `/multi-agent:resume [#N]` | Durmuş ya da hata almış görevi kaldığı fazdan sürdürür |
111
- | `/multi-agent:kill [#N]` | Görevi durdurur, worktree'sini ve branch'ini siler |
112
- | `/multi-agent:steer #N "<talimat>"` | Koşan bir görevi durdurmadan düzeltir; talimat bir sonraki faz sınırında uygulanır |
113
- | `/multi-agent:search` | Tüm görev loglarında sıralamalı arama; `--semantic` triyaj corpus'unu sorgular |
114
- | `/multi-agent:garbage-collect` | Artık scratch, sahipsiz worktree ve offload edilmiş payload'ları süpürür. Önce dry-run |
115
- | `/multi-agent:prune-logs` | Görev loglarını yaş / proje / görev filtresiyle siler. Denetim izi ve metrikler kalır |
116
- | `/multi-agent:purge` | Tüm worktree, branch, log ve state dosyalarını siler. Çift onay |
106
+ | Komut | Ne yapar |
107
+ | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
108
+ | `/multi-agent:status` | Her görevin ID'si, fazı, branch'i ve durumu |
109
+ | `/multi-agent:log [#N]` | Görevin `agent-log.md` dosyası (varsayılan: en son görev) |
110
+ | `/multi-agent:resume [#N]` | Durmuş ya da hata almış görevi kaldığı fazdan sürdürür |
111
+ | `/multi-agent:kill [#N]` | Görevi durdurur, worktree'sini ve branch'ini siler |
112
+ | `/multi-agent:steer #N "<talimat>"` | Koşan bir görevi durdurmadan düzeltir; talimat bir sonraki faz sınırında uygulanır |
113
+ | `/multi-agent:search` | Tüm görev loglarında sıralamalı arama; `--semantic` triyaj corpus'unu sorgular |
114
+ | `/multi-agent:garbage-collect` | Artık scratch, sahipsiz worktree ve offload edilmiş payload'ları süpürür. `--abandoned` ile durup bir daha dönülmemiş koşuları da toplar. Önce dry-run |
115
+ | `/multi-agent:prune-logs` | Görev loglarını yaş / proje / görev filtresiyle siler. Denetim izi ve metrikler kalır |
116
+ | `/multi-agent:purge` | Tüm worktree, branch, log ve state dosyalarını siler. Çift onay |
117
117
 
118
118
  ### Review
119
119
 
120
- | Komut | Ne yapar |
121
- |---|---|
122
- | `/multi-agent:review` | Branch diff'i veya PR üzerinde paralel review; PR girdisinde inline yorum + approve/needs-work |
123
- | `/multi-agent:review-jira` | Bir Jira issue'sunun geliştirmeye hazırlığını puanlar, eksikleri yorum olarak yazar |
124
- | `/multi-agent:review-issue` | Aynı puanlama, GitHub issue'su için |
125
- | `/multi-agent:review-analysis` | Yazılmış analiz dokümanını review eder; bulgular ihlal edilen Locked kuralını gösterir |
126
- | `/multi-agent:diff-explain` | Faz 4 triyaj bulgusunu onu doğuran diff satırlarına eşler |
127
- | `/multi-agent:refactor` | Best-practice çıkarımı + bug avı + türetilmiş skill drift'i + toolkit MCP araştırması → tek plan |
128
- | `/multi-agent:scan` | Yerel skill dizinlerini kademeli desen kataloğuna göre güvenlik taraması |
129
- | `/multi-agent:prune-prompts` | Sürekli yüklü talimat yükünün sıfır-tabanlı incelemesi; kural başına tut / dene / sil |
130
- | `/multi-agent:ios-coding-standard` | Bir iOS modülünü 99 kurallık registry'ye göre denetler, düzeltme planı çıkarır |
120
+ | Komut | Ne yapar |
121
+ | ---------------------------------- | ------------------------------------------------------------------------------------------------ |
122
+ | `/multi-agent:review` | Branch diff'i veya PR üzerinde paralel review; PR girdisinde inline yorum + approve/needs-work |
123
+ | `/multi-agent:review-jira` | Bir Jira issue'sunun geliştirmeye hazırlığını puanlar, eksikleri yorum olarak yazar |
124
+ | `/multi-agent:review-issue` | Aynı puanlama, GitHub issue'su için |
125
+ | `/multi-agent:review-analysis` | Yazılmış analiz dokümanını review eder; bulgular ihlal edilen Locked kuralını gösterir |
126
+ | `/multi-agent:diff-explain` | Faz 4 triyaj bulgusunu onu doğuran diff satırlarına eşler |
127
+ | `/multi-agent:refactor` | Best-practice çıkarımı + bug avı + türetilmiş skill drift'i + toolkit MCP araştırması → tek plan |
128
+ | `/multi-agent:scan` | Yerel skill dizinlerini kademeli desen kataloğuna göre güvenlik taraması |
129
+ | `/multi-agent:prune-prompts` | Sürekli yüklü talimat yükünün sıfır-tabanlı incelemesi; kural başına tut / dene / sil |
130
+ | `/multi-agent:ios-coding-standard` | Bir iOS modülünü 99 kurallık registry'ye göre denetler, düzeltme planı çıkarır |
131
131
 
132
132
  ### Analiz
133
133
 
134
- | Komut | Ne yapar |
135
- |---|---|
136
- | `/multi-agent:analysis` | Bağımsız özellik spesifikasyonu: global (23 bölümlük doküman) veya kurumsal (IG/UC/FG) profili |
137
- | `/multi-agent:analysis-resolve` | Analiz dokümanının Bölüm 20 açık sorularını satır satır cevaplar |
138
- | `/multi-agent:complaint-analysis` | Graylog kanıtıyla şikayet triyajı: client / bff kök neden ya da core'a yönlendirme |
134
+ | Komut | Ne yapar |
135
+ | --------------------------------- | ---------------------------------------------------------------------------------------------- |
136
+ | `/multi-agent:analysis` | Bağımsız özellik spesifikasyonu: global (23 bölümlük doküman) veya kurumsal (IG/UC/FG) profili |
137
+ | `/multi-agent:analysis-resolve` | Analiz dokümanının Bölüm 20 açık sorularını satır satır cevaplar |
138
+ | `/multi-agent:complaint-analysis` | Graylog kanıtıyla şikayet triyajı: client / bff kök neden ya da core'a yönlendirme |
139
139
 
140
140
  ### Cihaz üstü test
141
141
 
142
- | Komut | Ne yapar |
143
- |---|---|
144
- | `/multi-agent:test` | Açık simülatör veya emülatörde UI Bug Hunter: screenshot, tap, analiz |
145
- | `/multi-agent:test-dark-mode` | Her ekranı önce light sonra dark gezer, kontrast ve renk hatalarını raporlar |
146
- | `/multi-agent:test-accessibility` | VoiceOver etiketleri, 44pt altı dokunma alanları, kontrast, trait'ler |
147
- | `/multi-agent:test-dynamic-type` | Her ekranı XL'den accessibility-XL'e kadar yeniden gezer, kırpılmaları raporlar |
148
- | `/multi-agent:test-screenshots [dil]` | Bir dilde App Store screenshot seti (varsayılan `tr`) |
149
- | `/multi-agent:manual-test` | Faz 5'in bağımsız hali: görev branch'ine geçer, Xcode için hazırlar |
142
+ | Komut | Ne yapar |
143
+ | ------------------------------------- | ------------------------------------------------------------------------------- |
144
+ | `/multi-agent:test` | Açık simülatör veya emülatörde UI Bug Hunter: screenshot, tap, analiz |
145
+ | `/multi-agent:test-dark-mode` | Her ekranı önce light sonra dark gezer, kontrast ve renk hatalarını raporlar |
146
+ | `/multi-agent:test-accessibility` | VoiceOver etiketleri, 44pt altı dokunma alanları, kontrast, trait'ler |
147
+ | `/multi-agent:test-dynamic-type` | Her ekranı XL'den accessibility-XL'e kadar yeniden gezer, kırpılmaları raporlar |
148
+ | `/multi-agent:test-screenshots [dil]` | Bir dilde App Store screenshot seti (varsayılan `tr`) |
149
+ | `/multi-agent:manual-test` | Faz 5'in bağımsız hali: görev branch'ine geçer, Xcode için hazırlar |
150
150
 
151
151
  ### Tasarım, build ve store
152
152
 
153
- | Komut | Ne yapar |
154
- |---|---|
155
- | `/multi-agent:design-check` | Kapsam geçitli mock-mode vs Figma denetimi; annotasyonlu HTML + PDF rapor |
156
- | `/multi-agent:store-ready` | iOS ve Android için yayın öncesi kapılar: paket denetimi, store doğrulaması, politika incelemesi |
157
- | `/multi-agent:testflight-validation` | `store-ready`'nin iOS'a sabitlenmiş hali. Yalnızca doğrular, asla yüklemez |
158
- | `/multi-agent:build-optimize` | Xcode build'ini ölçer, analizörleri koşar, önce-öneri yaklaşımlı plan üretir |
153
+ | Komut | Ne yapar |
154
+ | ------------------------------------ | ------------------------------------------------------------------------------------------------ |
155
+ | `/multi-agent:design-check` | Kapsam geçitli mock-mode vs Figma denetimi; annotasyonlu HTML + PDF rapor |
156
+ | `/multi-agent:store-ready` | iOS ve Android için yayın öncesi kapılar: paket denetimi, store doğrulaması, politika incelemesi |
157
+ | `/multi-agent:testflight-validation` | `store-ready`'nin iOS'a sabitlenmiş hali. Yalnızca doğrular, asla yüklemez |
158
+ | `/multi-agent:build-optimize` | Xcode build'ini ölçer, analizörleri koşar, önce-öneri yaklaşımlı plan üretir |
159
159
 
160
160
  ### Ticket ve raporlama
161
161
 
162
- | Komut | Ne yapar |
163
- |---|---|
164
- | `/multi-agent:jira` | Açık Jira issue'larını gez → seç → branch → mod → başlat |
165
- | `/multi-agent:issue` | Atanmamış GitHub issue'larını gez → seç → otomatik ata → başlat |
162
+ | Komut | Ne yapar |
163
+ | -------------------------- | --------------------------------------------------------------------------------------------- |
164
+ | `/multi-agent:jira` | Açık Jira issue'larını gez → seç → branch → mod → başlat |
165
+ | `/multi-agent:issue` | Atanmamış GitHub issue'larını gez → seç → otomatik ata → başlat |
166
166
  | `/multi-agent:create-jira` | Projenin kendi konvansiyonlarına uygun Task / Bug / Story taslağı, oluşturmadan önce önizleme |
167
- | `/multi-agent:channels` | Çok kanallı raporu gönderir: Jira, Confluence, Wiki, PR açıklaması, board durumu |
168
- | `/multi-agent:feedback` | Bakımcıya tek mesaj. Yalnızca yazdığın metin gider, log ve yol gitmez |
167
+ | `/multi-agent:channels` | Çok kanallı raporu gönderir: Jira, Confluence, Wiki, PR açıklaması, board durumu |
168
+ | `/multi-agent:feedback` | Bakımcıya tek mesaj. Yalnızca yazdığın metin gider, log ve yol gitmez |
169
169
 
170
170
  ### Kendi rutinlerin
171
171
 
172
- | Komut | Ne yapar |
173
- |---|---|
174
- | `/multi-agent:save [ad]` | Tekrar eden bir işi `/multi-agent:<ad>` olarak kaydeder. Local-only, asla sync edilmez |
175
- | `/multi-agent:routines` | Kaydettiğin rutinleri ve ne yaptıklarını listeler |
176
- | `/multi-agent:forget [ad]` | Kayıtlı bir rutini ve registry kaydını siler |
172
+ | Komut | Ne yapar |
173
+ | -------------------------- | -------------------------------------------------------------------------------------- |
174
+ | `/multi-agent:save [ad]` | Tekrar eden bir işi `/multi-agent:<ad>` olarak kaydeder. Local-only, asla sync edilmez |
175
+ | `/multi-agent:routines` | Kaydettiğin rutinleri ve ne yaptıklarını listeler |
176
+ | `/multi-agent:forget [ad]` | Kayıtlı bir rutini ve registry kaydını siler |
177
177
 
178
178
  ### Kurulum ve bakım
179
179
 
180
- | Komut | Ne yapar |
181
- |---|---|
182
- | `/multi-agent:setup` | İlk kurulum sihirbazı: keychain token keşfi, git identity, pipeline hazırlığı |
183
- | `/multi-agent:stack [id]` | Bu repo için marketplace plugin'lerini etkinleştirir. Çoklu seçim |
184
- | `/multi-agent:language [en\|tr]` | `outputLanguage`'i gösterir veya değiştirir; `promptLanguage` İngilizce kalır |
185
- | `/multi-agent:sync` | Tek atımlık senkron: Claude Code, Copilot CLI, pipeline repo, website, toolkit MCP |
186
- | `/multi-agent:update` | npm'deki son yayına günceller ve migration'ları koşar |
187
- | `/multi-agent:uninstall` | Pipeline'ı her CLI'dan kaldırır. Keychain token'larına hiç dokunmaz |
188
- | `/multi-agent:help` | Bu katalog, terminalde, `outputLanguage`'ine göre |
180
+ | Komut | Ne yapar |
181
+ | -------------------------------- | ---------------------------------------------------------------------------------- |
182
+ | `/multi-agent:setup` | İlk kurulum sihirbazı: keychain token keşfi, git identity, pipeline hazırlığı |
183
+ | `/multi-agent:stack [id]` | Bu repo için marketplace plugin'lerini etkinleştirir. Çoklu seçim |
184
+ | `/multi-agent:language [en\|tr]` | `outputLanguage`'i gösterir veya değiştirir; `promptLanguage` İngilizce kalır |
185
+ | `/multi-agent:sync` | Tek atımlık senkron: Claude Code, Copilot CLI, pipeline repo, website, toolkit MCP |
186
+ | `/multi-agent:update` | npm'deki son yayına günceller ve migration'ları koşar |
187
+ | `/multi-agent:uninstall` | Pipeline'ı her CLI'dan kaldırır. Keychain token'larına hiç dokunmaz |
188
+ | `/multi-agent:help` | Bu katalog, terminalde, `outputLanguage`'ine göre |
189
189
 
190
190
  ### Alt agent'lar
191
191
 
@@ -195,6 +195,52 @@ Komutlarla birlikte sekiz agent kurulur ve fazlar bunları çağırır: `explore
195
195
 
196
196
  İki uyumluluk skill'i her host'a kurulur ve store kapılarını besler: `apple-archive-compliance` (ITMS kod eşlemeli 18 kurallı Apple review taraması) ve `google-play-compliance` (Console hata kodlu 21 kurallı Play politika kataloğu). Stack'e bağlı geri kalan her şey - SwiftUI, Compose, backend, frontend - aşağıda anlatılan marketplace plugin'lerinden gelir.
197
197
 
198
+ ## Sürekli mod
199
+
200
+ Yukarıdaki her şey sen başlattığında başlar. Sürekli mod, aynı pipeline'ın
201
+ **senin seçtiğin tek makinede**, **senin seçtiğin repolardan** işi kendi başına
202
+ alması.
203
+
204
+ | Komut | Ne yapar |
205
+ | --- | --- |
206
+ | `/multi-agent:autopilot-on` | Bu makinenin izleyeceği repoları seçersin. Etiketli GitHub issue'ları ve sana atanmış + etiketli Jira maddeleri worktree'de koşar, açık PR'da durur. Listeyi değiştirmek için tekrar çalıştır |
207
+ | `/multi-agent:autopilot-status` | Ne koşuyor hangi fazda, sırada ne var, ne cevap bekliyor, son bir günün PR'ları ve yuvarlanan harcama |
208
+ | `/multi-agent:autopilot-off` | Zamanlamayı kaldırır. Koşan iş biter; repo seçimi saklanır |
209
+
210
+ **Varsayılan olarak hiçbir şey açık değil ve hiçbir repo kendiliğinden eklenmez.**
211
+ Paketi kurmak ne durum yazar ne zamanlama kurar; bu bir gün değişirse
212
+ `smoke-autopilot-default-off.sh` derlemeyi düşürür. Etiket bir filtredir, kapı
213
+ değil - push yetkin olan bir repoda issue açabilen herkes etiket ekleyebilir -
214
+ o yüzden kapı picker'dır ve makine başınadır.
215
+
216
+ En büyük kazanç paralellik değil. Ölçüm: medyan koşu 44 dakika, ama 14:00'te
217
+ biten bir madde sen masaya oturana kadar bekler; gece boyunca bu 40 dakikaya
218
+ karşı **16 saat**. Sürekli mod işi değil, beklemeyi kaldırıyor.
219
+
220
+ **Yapmayacakları.** Merge etmez - koşucu açık PR'da durur, karar sende kalır.
221
+ Senin elle koşturduğun bir işe dokunmaz: repo başına eşzamanlılık her zaman 1,
222
+ yani kuyruk senin çalıştığın repoyu `.git/index.lock` için yarışmak yerine atlar.
223
+ PR sayısına tavan yok; sınırlar 24 saatlik yuvarlanan `costCeilingUsd` ve
224
+ makinenin kapasitesi.
225
+
226
+ **`swiftc` varsa menü çubuğu göstergesi** aynı `status.json`'ı sağ üstte çizer ve
227
+ kendi kendine tazelenir: madde başına tek satır - id, Full ya da Short, kesir
228
+ olarak faz, geçen süre, stack. Madde biter bitmez satır kaybolur ve PR'ıyla
229
+ Raporlar altında görünür. Yalnızca **çizer**; bir koşuyu başlatamaz, durduramaz,
230
+ değiştiremez. ActivityKit macOS'ta yok, o yüzden bu bir `NSStatusItem` ve
231
+ imzalanması gerekecek bir ikili olarak değil, yerinde kaynaktan derleniyor.
232
+
233
+ **Yeniden başlatmadan sonra çalıştırman gereken komut yok.** launchd işi
234
+ **girişte** yükler, boot'ta değil - ve bu bir eksiklik değil doğrusu: token'ları
235
+ açan şey login keychain'in açılması, giriş öncesi ateşlenen bir tick zaten ne
236
+ Jira'ya ne GitHub'a bağlanabilirdi. `autopilot-resume` diye bir komut yok -
237
+ hatırlanması gereken komut, unutulduğunda sessizce duran kuyruk demektir.
238
+ Bunun yerine `doctor` gerçek arızayı söyler: kurulu, ama launchd'de iş yok.
239
+
240
+ Uyku **yalnızca prizdeyken** engellenir. Prizde olmayan bir laptop'u boşaltan
241
+ kuyruk hatadır; bataryada assertion bırakılır ve prize takınca kaldığı yerden
242
+ devam eder.
243
+
198
244
  ## Stack'ler
199
245
 
200
246
  Stack skill'leri [`mmerterden/multi-agent-plugins`](https://github.com/mmerterden/multi-agent-plugins) marketplace'inde versiyonlu plugin'ler olarak gönderilir. Repo başına bir stack seç:
@@ -207,13 +253,13 @@ Bu, ilgili plugin'i (+ ortak `ai-common` plugin'ini) repo'nun `.claude/settings.
207
253
 
208
254
  ## Araç desteği
209
255
 
210
- Pipeline **Claude Code**, **Copilot CLI** ve **Codex CLI** üzerinde native çalışır - üçü de aynı `pipeline/` kaynağından kurulur ve aynı 53 komutu alır.
256
+ Pipeline **Claude Code**, **Copilot CLI** ve **Codex CLI** üzerinde native çalışır - üçü de aynı `pipeline/` kaynağından kurulur ve aynı 56 komutu alır.
211
257
 
212
- | Araç | Bayrak | Ne kurar |
213
- |---|---|---|
258
+ | Araç | Bayrak | Ne kurar |
259
+ | ----------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------- |
214
260
  | Claude Code | `--claude` (varsayılan) | slash komutları + skill'ler + agent'lar + üç `PreToolUse` hook'u (secret scan, agent-guard, okuma-boyutu geçidi) |
215
- | Copilot CLI | `--copilot` | talimatlar + 53 alt-komut skill'i + script'ler |
216
- | Codex CLI | `--codex` | bir router skill + ref olarak 53 spec + 8 agent TOML + `AGENTS.md` bloğu + `codex mcp add` |
261
+ | Copilot CLI | `--copilot` | talimatlar + 56 alt-komut skill'i + script'ler |
262
+ | Codex CLI | `--codex` | bir router skill + ref olarak 56 spec + 8 agent TOML + `AGENTS.md` bloğu + `codex mcp add` |
217
263
 
218
264
  Skill'leri stack'e göre filtrele: `--platform=ios\|android\|all`.
219
265
 
@@ -233,20 +279,20 @@ triage notu bunu belirtir.
233
279
 
234
280
  ## Token'lar ve entegrasyonlar
235
281
 
236
- `setup` OS keychain'ini tarar ve her token'ı **mantıksal bir isimle** (örn. `jira`) gerçek keychain girdisine eşler - pipeline token'ları bu eşleme üzerinden çözer (`credential-store.sh`), böylece literal keychain isimleri hiçbir sync edilen dosyada görünmez. Token'lar keychain'de kalır (macOS Keychain / Windows Credential Manager / Linux libsecret), **asla commit edilmez ya da loglanmaz**, ve hepsi **opsiyoneldir** - pipeline Phase 0'da ihtiyaç duyduğu herhangi birini sorar.
237
-
238
- | Token | Ne için kullanılır | Faz |
239
- |---|---|---|
240
- | `jira` | issue'yu çek · rapor yorumunu gönder | 0, 7 |
241
- | `github` | issue'lar · PR'lar · `gh` auth | 0, 6 |
242
- | `bitbucket` | PR create/update (reviewer koruyarak) · diff | 6 |
243
- | `confluence` | analiz / wiki sayfaları yayınla | 7 |
244
- | `figma` + `figma_mcp` | design context çek | yalnızca analiz |
245
- | `fortify` | security-scan bulgu kapısı | 4 |
246
- | `firebase` | Firebase projeleri için servis hesabı JSON'ı | gerektiğinde |
247
- | `jenkins` | CI tetikleme / durum | build / deploy |
248
- | `npm` | paket publish (çoğunlukla CI) | release |
249
- | `appstore_connect_*` | TestFlight / App Store pre-submission doğrulaması (opsiyonel, iOS) | `testflight-validation` |
282
+ `setup` OS keychain'ini tarar ve her token'ı **mantıksal bir isimle** (örn. `jira`) gerçek keychain girdisine eşler - pipeline token'ları bu eşleme üzerinden çözer (`credential-store.sh`), böylece literal keychain isimleri hiçbir sync edilen dosyada görünmez. Token'lar macOS Keychain'de kalır, **asla commit edilmez ya da loglanmaz**, ve hepsi **opsiyoneldir** - pipeline Phase 0'da ihtiyaç duyduğu herhangi birini sorar.
283
+
284
+ | Token | Ne için kullanılır | Faz |
285
+ | --------------------- | ------------------------------------------------------------------ | ----------------------- |
286
+ | `jira` | issue'yu çek · rapor yorumunu gönder | 0, 7 |
287
+ | `github` | issue'lar · PR'lar · `gh` auth | 0, 6 |
288
+ | `bitbucket` | PR create/update (reviewer koruyarak) · diff | 6 |
289
+ | `confluence` | analiz / wiki sayfaları yayınla | 7 |
290
+ | `figma` + `figma_mcp` | design context çek | yalnızca analiz |
291
+ | `fortify` | security-scan bulgu kapısı | 4 |
292
+ | `firebase` | Firebase projeleri için servis hesabı JSON'ı | gerektiğinde |
293
+ | `jenkins` | CI tetikleme / durum | build / deploy |
294
+ | `npm` | paket publish (çoğunlukla CI) | release |
295
+ | `appstore_connect_*` | TestFlight / App Store pre-submission doğrulaması (opsiyonel, iOS) | `testflight-validation` |
250
296
 
251
297
  **Secret scan**, Claude Code'da bir `PreToolUse` hook'u olarak (bulgu halinde commit'i sert-engeller) ve diğer yerlerde bir pre-push kontrolü olarak çalışır.
252
298
 
@@ -262,13 +308,13 @@ Uninstall bu katmanı korur: token'lar, onları açan okuyucu, adlarını tutan
262
308
 
263
309
  ## Platform desteği
264
310
 
265
- **macOS**, **Linux** ve **Windows** (Git Bash / WSL) üzerinde çalışır. Shell ve credential erişimi platform-agnostik bir katmandan geçer - keychain otomatik olarak **macOS Keychain**, **Linux libsecret** (`secret-tool`) veya **Windows Credential Manager**'a çözülür, ve script'ler BSD ile GNU araç varyantları arasında fallback yapar. Node.js 20.11+ (20 ve 22'de test edildi).
311
+ Yalnızca **macOS** üzerinde çalışır. Paket `os: ["darwin"]` beyan eder, yani `npm` başka bir platformda kurulumu reddeder - koşunun yarısında başarısız olmasındansa. Her credential okuması `security`, her iOS build'i `xcodebuild`, her ekran kaydı `simctl` çağırıyor. Node.js 20.11+ (20 ve 22'de test edildi). Gerekçe: [ADR-0012](docs/adr/0012-macos-only.md).
266
312
 
267
313
  ## Yan repolar
268
314
 
269
- | Repo | Ne olduğu |
270
- |---|---|
271
- | [`mmerterden/multi-agent-plugins`](https://github.com/mmerterden/multi-agent-plugins) | Stack-başına skill toolkit'lerinin marketplace'i (iOS / Android / Frontend / Backend + common). `/multi-agent:stack` ilgili plugin'i etkinleştirir. |
315
+ | Repo | Ne olduğu |
316
+ | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
317
+ | [`mmerterden/multi-agent-plugins`](https://github.com/mmerterden/multi-agent-plugins) | Stack-başına skill toolkit'lerinin marketplace'i (iOS / Android / Frontend / Backend + common). `/multi-agent:stack` ilgili plugin'i etkinleştirir. |
272
318
  | [`mmerterden/multi-agent-toolkit-mcp`](https://github.com/mmerterden/multi-agent-toolkit-mcp) | UI testing / simulator capture / xcodebuild için MCP sunucusu - Phase 5 UI Bug Hunter'ı güçlendirir. Public npm registry'de [`@mmerterden/multi-agent-toolkit-mcp`](https://www.npmjs.com/package/@mmerterden/multi-agent-toolkit-mcp) olarak yayınlanır; installer her CLI'a onu senin için register eder, böylece `npx` ekstra konfigürasyon olmadan onu çözer. |
273
319
 
274
320
  ## Lisans
@@ -1,6 +1,15 @@
1
1
  # 11. CI stays in the repository but dormant; the pre-push gate is primary
2
2
 
3
- **Status:** Accepted · 2026-08-31
3
+ **Status:** Accepted · 2026-08-31 · amended 2026-09-13
4
+
5
+ > **Amendment, 2026-09-13 (ADR-0012, macOS only).** Linux and Windows support
6
+ > was removed. `package.json` now declares `os: ["darwin"]`, which npm enforces
7
+ > on the root package, so no non-macOS runner can `npm ci` this tree at all.
8
+ > Every workflow moved to a macOS runner, `test.yml`'s matrix lost its Ubuntu
9
+ > leg and its `windows-test` job, and `npm run gate:linux` and
10
+ > `pipeline/scripts/gate-linux.sh` are gone. Where the body below says a leg is
11
+ > reachable through `act` on Ubuntu, read it as history: the gap it describes no
12
+ > longer exists because the platform no longer does.
4
13
 
5
14
  ## Context
6
15
 
@@ -0,0 +1,98 @@
1
+ # 12. macOS only; Linux and Windows support is removed, not deprecated
2
+
3
+ **Status:** Accepted · 2026-09-13
4
+
5
+ ## Context
6
+
7
+ The package advertised three platforms. `README.md` said "macOS / Linux /
8
+ Windows", `lib/credential-store.sh` carried a `secret-tool` backend for Linux
9
+ and a PowerShell Credential Manager backend for Windows, and `test.yml` ran a
10
+ matrix over Ubuntu and macOS plus a dedicated `windows-test` job.
11
+
12
+ None of it was verified. ADR-0011 records that CI has not executed since
13
+ 2026-07-02, and its own honest-status block already said the Linux path was
14
+ "coded, smoke-skipped (CI has no keyring agent)" and the Windows path "coded,
15
+ unverified this release". `docs/engineering.md` claimed "the CI matrix runs
16
+ macOS, Linux, and Windows", which stopped being true the day the runners went
17
+ away.
18
+
19
+ The rest of the pipeline never made the same promise. Every credential read
20
+ shells `security`. Every iOS build shells `xcodebuild`. Every piece of visual
21
+ evidence shells `simctl`. A run on another platform does not degrade into a
22
+ smaller run; it fails partway through, having already created a worktree and a
23
+ branch. Three advertised platforms, one that works.
24
+
25
+ ## Decision
26
+
27
+ macOS is the only supported platform, and the package says so where a machine
28
+ can act on it:
29
+
30
+ - `package.json` declares `os: ["darwin"]`. npm enforces this on the root
31
+ package - a non-macOS `npm ci` ends in `EBADPLATFORM` before a single file is
32
+ written. This one field does more than deleting every branch would.
33
+ - `index.js` and `install/index.mjs` refuse a non-darwin host with one line
34
+ naming the requirement. `uninstall`, `help` and `--version` are exempt:
35
+ somebody who installed before this gate must still be able to remove it, and
36
+ a person diagnosing a broken install needs the other two.
37
+ `MULTI_AGENT_ALLOW_NON_DARWIN=1` overrides, and says on stderr that nothing
38
+ on that path is tested.
39
+ - `doctor` gains `host-platform`, which runs first and blocks. It runs first so
40
+ a non-macOS host gets one honest line instead of a cascade whose common cause
41
+ is never stated.
42
+ - Every workflow runs on a macOS runner. `test.yml` loses its Ubuntu leg and
43
+ its `windows-test` job, `pipeline/scripts/gate-linux.sh` and the
44
+ `npm run gate:linux` script are deleted.
45
+
46
+ **The dead Linux and Windows code is removed separately, or not at all.** It
47
+ costs nothing at runtime - `detect_platform()` returns `macos` and the other
48
+ arms never execute - and removing it is where the real risk lives. Seven
49
+ constructs look like cross-platform scaffolding and are load-bearing on macOS:
50
+
51
+ 1. `smoke-shell-portability.sh`'s `grep -P` ban. BSD grep has no `-P`, exits 2,
52
+ and with `2>/dev/null` that reads as "found nothing". Two gates already
53
+ shipped green on macOS for exactly this reason. The rule is *more* relevant
54
+ after this ADR, not less; only its header changes, from "supports macOS,
55
+ Linux and Windows" to "the runtime is BSD userland and bash 3.2".
56
+ 2. The `sha256sum || shasum` ordering in seven scripts. The gate fails a file
57
+ that names either one alone, and macOS ships `shasum` while a mac with brew
58
+ coreutils has both. Net change: zero lines.
59
+ 3. `credential-store.sh`'s node reader for `keychainMapping`. Its comment
60
+ blames Windows; its condition is `command -v node`, so it fires on any host
61
+ without `python3`, macOS included.
62
+ 4. `delegate_to_python()` and `do_set`'s `[ "$PLATFORM" != "macos" ] &&` guard.
63
+ Together they are what keeps macOS writes on `security -i`, with the secret
64
+ on stdin and never on argv. Simplifying one without the other silently moves
65
+ the write onto the delegate.
66
+ 5. `github-ssh-setup.sh`'s Darwin arm. `UseKeychain yes` *is* the macOS
67
+ behaviour; the other arm is an empty string.
68
+ 6. The `stat -c ... || stat -f ...` chains. GNU-first ordering is required
69
+ because `stat -f` is a valid GNU flag (`--file-system`) that succeeds.
70
+ 7. `credential-store-resolver.sh`, which has no OS content at all - it resolves
71
+ Claude / Copilot / Codex install trees.
72
+
73
+ ## Consequences
74
+
75
+ - A Linux or Windows user cannot install. That is the point: the alternative
76
+ was letting them install and fail at Phase 3.
77
+ - `rollup.byOs` in the usage panel keeps its key. A row with the field missing
78
+ should read as "unknown host", not as "macOS".
79
+ - `test.yml` is still dormant per ADR-0011. What it would verify on waking is
80
+ now a clean macOS runner and a lockfile install, not a platform matrix.
81
+ - The `os` field is a hard stop with no per-file discipline required, which is
82
+ why it is listed first. Deleting 126 lines of unreachable branches buys no
83
+ behaviour and risks the seven items above; it is optional cleanup, gated
84
+ behind a green `npm test` on both sides of each removal.
85
+
86
+ ## Alternatives
87
+
88
+ **Deprecate rather than remove.** A deprecation window helps users who have a
89
+ working install. Nobody has one: the paths were never verified and CI has not
90
+ run since July.
91
+
92
+ **Keep the code, drop only the claim.** Tempting, and it is what the optional
93
+ part of this decision does. But leaving `secret-tool` in the tree with no
94
+ promise attached means the next reader has to work out whether it is supported,
95
+ which is the ambiguity the `os` field removes in one line.
96
+
97
+ **Self-hosted macOS runner.** Considered and rejected in ADR-0011 for a public
98
+ repository: a self-hosted runner executes code from any fork's pull request.
@@ -21,6 +21,7 @@ Format: lightly adapted from [Michael Nygard's ADR template](https://cognitect.c
21
21
  | [0009](./0009-claude-stack-skills-plugin-only.md) | Claude Code stack skills are plugin-only; local copy retired | Accepted (supersedes ADR-0006 install-destination clause) |
22
22
  | [0010](./0010-own-code-graph.md) | Own code graph, referenced from graphify, not forked | Accepted |
23
23
  | [0011](./0011-dormant-ci.md) | CI dormant in-repo; pre-push gate is primary | Accepted |
24
+ | [0012](./0012-macos-only.md) | macOS only; Linux and Windows support removed | Accepted |
24
25
 
25
26
  ## Writing a New ADR
26
27
 
@@ -117,7 +117,7 @@ graph TB
117
117
  end
118
118
 
119
119
  subgraph "Pipeline Specs"
120
- CMD[commands/<br/>53 command files]
120
+ CMD[commands/<br/>56 command files]
121
121
  AGT[agents/<br/>8 agent personas]
122
122
  RUL[rules/<br/>12 domain rules]
123
123
  PHS[multi-agent-refs/phases/<br/>phase specs + contracts]
@@ -169,8 +169,8 @@ revisions of this diagram - Codex CLI and the two independently-shipped repos
169
169
  ```mermaid
170
170
  graph TD
171
171
  CC["Claude Code<br/>(source of truth)"]
172
- COP["Copilot CLI<br/>(instructions + 53 skills)"]
173
- COD["Codex CLI<br/>(1 router skill + 53 refs)"]
172
+ COP["Copilot CLI<br/>(instructions + 56 skills)"]
173
+ COD["Codex CLI<br/>(1 router skill + 56 refs)"]
174
174
  REPO["Pipeline Repo<br/>(npm package)"]
175
175
  WEB["Website"]
176
176
  PLUGREPO["multi-agent-plugins<br/>(5 stack plugins, own repo)"]
package/docs/ecosystem.md CHANGED
@@ -5,7 +5,7 @@ separately, wired together at install time and at run time:
5
5
 
6
6
  | Repo | What it owns | Ships as |
7
7
  |---|---|---|
8
- | **`multi-agent-pipeline`** (this repo) | Orchestration: the 8-phase flow, the 53 slash commands, quality gates, review/triage, cross-CLI parity | npm package (`@mmerterden/multi-agent-pipeline`), installs itself onto Claude Code / Copilot CLI / Codex CLI |
8
+ | **`multi-agent-pipeline`** (this repo) | Orchestration: the 8-phase flow, the 56 slash commands, quality gates, review/triage, cross-CLI parity | npm package (`@mmerterden/multi-agent-pipeline`), installs itself onto Claude Code / Copilot CLI / Codex CLI |
9
9
  | **`multi-agent-plugins`** | Stack knowledge: per-platform component/lifecycle skills (iOS, Android, Frontend, Backend) + shared knowledge | Claude Code marketplace, 5 independently-versioned plugins |
10
10
  | **`multi-agent-toolkit-mcp`** | The pipeline's hands on devices and browsers: 80 MCP tools across 6 categories (simulator/emulator control, accessibility audit, store compliance, web automation, Figma-vs-mock design audit, an agent-DSL batch runner) | npm package, registered as a standard stdio MCP server on every host |
11
11
 
@@ -18,7 +18,7 @@ Either can be swapped or removed without touching the other two's source.
18
18
  graph LR
19
19
  subgraph PIPE ["multi-agent-pipeline (orchestrator)"]
20
20
  direction TB
21
- PHASES["8 phases · 53 commands"]
21
+ PHASES["8 phases · 56 commands"]
22
22
  GATES["deterministic gates + review triage"]
23
23
  end
24
24
 
@@ -64,8 +64,8 @@ only those:
64
64
  graph TD
65
65
  CC["Claude Code<br/>~/.claude/commands/multi-agent/<br/>(source of truth)"]
66
66
 
67
- CC -->|"Step 2: copy + reformat<br/>53 sub-command skills"| COP["Copilot CLI<br/>~/.copilot/skills/"]
68
- CC -->|"Step 2b: transform<br/>(install.js --codex)"| COD["Codex CLI<br/>1 router skill + 53 refs<br/>+ 8 agent TOML"]
67
+ CC -->|"Step 2: copy + reformat<br/>56 sub-command skills"| COP["Copilot CLI<br/>~/.copilot/skills/"]
68
+ CC -->|"Step 2b: transform<br/>(install.js --codex)"| COD["Codex CLI<br/>1 router skill + 56 refs<br/>+ 8 agent TOML"]
69
69
  CC -->|"Step 3: genericize<br/>(strip personal data)"| REPO["multi-agent-pipeline repo<br/>pipeline/"]
70
70
  CC -->|"Step 4: version + feature sync"| WEB["Website<br/>projects.ts / i18n.tsx"]
71
71
 
@@ -153,7 +153,7 @@ measurements behind this table):
153
153
 
154
154
  | | Claude Code | Copilot CLI | Codex CLI |
155
155
  |---|---|---|---|
156
- | **Pipeline commands** | 53 slash-command skills, native | 53 skills, `multi-agent-{cmd}` naming, copied in | 1 router skill (`multi-agent`) + 53 command specs as reference files - Codex silently truncates its skills block past a few dozen entries, so sub-commands are not peer skills here |
156
+ | **Pipeline commands** | 56 slash-command skills, native | 56 skills, `multi-agent-{cmd}` naming, copied in | 1 router skill (`multi-agent`) + 56 command specs as reference files - Codex silently truncates its skills block past a few dozen entries, so sub-commands are not peer skills here |
157
157
  | **Stack plugins** | Marketplace plugin, loaded natively, resolved by `.claude/settings.json` enabled-list | Enabled plugin's authored skills copied flat into `~/.copilot/skills/`; `knowledge/` **not** re-copied (already delivered via `shared/external`) | Copied as reference files under `~/.codex/multi-agent-refs/skills/`, plugin-prefixed on name clash (e.g. `architecture` → `ai-ios-toolkit-architecture`) |
158
158
  | **Component dispatch (Phase 3)** | Marketplace plugin's `create-component`/`create-screen` skill via the Skill tool | No plugin loader - the enabled stack plugin's authored skills (incl. `create-component`) are copied flat into `~/.copilot/skills/` at install time (the old frozen `figma-*` copies are pruned, they were never a fallback) | Not part of the enforced parity axis; classification + state-shape must match, skill *inventory* does not |
159
159
  | **multi-agent-toolkit-mcp** | `claude mcp add multi-agent-toolkit -- npx -y @mmerterden/multi-agent-toolkit-mcp` | `copilot mcp add multi-agent-toolkit -- npx -y @mmerterden/multi-agent-toolkit-mcp` | `codex mcp add multi-agent-toolkit -- npx -y @mmerterden/multi-agent-toolkit-mcp` (skipped with a warning if `codex` isn't on `PATH`) |
@@ -73,4 +73,4 @@ Every loop in the pipeline has a deterministic exit condition and a hard iterati
73
73
  ## Cross-CLI parity
74
74
 
75
75
  - **One source of truth, two runtimes**: Claude Code and Copilot CLI command surfaces are byte-identical where shared; a parity smoke fails on drift.
76
- - **Portability gates**: every shell script passes `bash -n` and a GNU/BSD portability grep; the CI matrix runs macOS, Linux, and Windows.
76
+ - **Portability gates**: every shell script passes `bash -n` and a BSD-userland portability grep. The target is macOS with bash 3.2, not a platform matrix - `grep -P` is banned because BSD grep lacks it and fails silently, and the `sha256sum || shasum` and `stat -c || stat -f` chains keep their ordering for the same reason.
package/index.js CHANGED
@@ -30,6 +30,32 @@ if (noColor) {
30
30
  process.env.NO_COLOR = "1";
31
31
  }
32
32
 
33
+ // macOS only, and the gate is here rather than in install.js so every entry
34
+ // point sees the same answer. Three commands are deliberately exempt:
35
+ // `uninstall` (someone who installed before this gate existed must still be
36
+ // able to remove it), `--version` and `help` (a person diagnosing a broken
37
+ // install needs both to work).
38
+ //
39
+ // The pipeline shells `security` for every credential, `xcodebuild` and
40
+ // `simctl` for every iOS build and every piece of visual evidence. On another
41
+ // platform a run does not degrade, it fails - so refusing here is the honest
42
+ // answer rather than letting the user discover it at Phase 3.
43
+ const PLATFORM_EXEMPT = new Set(["uninstall", "delete", "help", "--version", "-v", "version"]);
44
+ if (process.platform !== "darwin" && !PLATFORM_EXEMPT.has(command ?? "")) {
45
+ if (process.env.MULTI_AGENT_ALLOW_NON_DARWIN !== "1") {
46
+ console.error(
47
+ `multi-agent-pipeline supports macOS only. This host reports "${process.platform}".`,
48
+ );
49
+ console.error(
50
+ "Set MULTI_AGENT_ALLOW_NON_DARWIN=1 to proceed anyway; nothing on that path is tested.",
51
+ );
52
+ process.exit(3);
53
+ }
54
+ console.error(
55
+ `warning: MULTI_AGENT_ALLOW_NON_DARWIN=1 on "${process.platform}" - untested, unsupported.`,
56
+ );
57
+ }
58
+
33
59
  if (command === "--version" || command === "-v" || command === "version") {
34
60
  const pkg = JSON.parse(readFileSync(join(__dirname, "package.json"), "utf-8"));
35
61
  console.log(pkg.version);
@@ -65,7 +65,6 @@ const DEV_ONLY_TOOLING = Object.freeze([
65
65
  "validate-schemas.mjs", // validates the repo's own schema files, needs ajv
66
66
  "sync-parity-check.sh",
67
67
  "benchmark-phase-0.sh",
68
- "gate-linux.sh", // drives .github/workflows/ci-lite.yml through act; no consumer has either
69
68
  ]);
70
69
 
71
70
  /** Eval harnesses (`eval-*.mjs`) read `pipeline/eval/**`, which never ships. */
package/install/index.mjs CHANGED
@@ -33,6 +33,16 @@ const TOOL_FLAGS = ["--claude", "--copilot", "--codex"];
33
33
  * @param {string[]} argv
34
34
  */
35
35
  export async function runInstall(argv) {
36
+ // index.js gates the CLI path; this repeats the check for programmatic
37
+ // importers, since `./install` is its own exports entry and can be called
38
+ // without ever passing through index.js.
39
+ if (process.platform !== "darwin" && process.env.MULTI_AGENT_ALLOW_NON_DARWIN !== "1") {
40
+ console.error(
41
+ `multi-agent-pipeline supports macOS only. This host reports "${process.platform}".`,
42
+ );
43
+ process.exit(3);
44
+ }
45
+
36
46
  const HOME = process.env.HOME || process.env.USERPROFILE;
37
47
  if (!HOME) {
38
48
  console.error(