@mmerterden/multi-agent-pipeline 12.5.0 → 12.7.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 (290) hide show
  1. package/CHANGELOG.md +213 -0
  2. package/README.md +19 -19
  3. package/docs/FIGMA_PIPELINE.md +34 -34
  4. package/docs/adr/0001-three-model-triage.md +12 -12
  5. package/docs/adr/0002-instruction-driven-flag.md +5 -5
  6. package/docs/adr/0003-unified-shared-skills.md +5 -5
  7. package/docs/adr/0004-zero-dependency-philosophy.md +5 -5
  8. package/docs/adr/0005-lazy-phase-docs.md +2 -2
  9. package/docs/adr/0006-skills-core-external-split.md +6 -6
  10. package/docs/adr/0007-multi-tool-adapter-framework.md +19 -19
  11. package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +19 -19
  12. package/docs/adr/README.md +1 -1
  13. package/docs/best-practices.md +3 -3
  14. package/docs/features.md +48 -28
  15. package/docs/performance.md +16 -16
  16. package/docs/recovery-guide.md +39 -39
  17. package/index.js +11 -5
  18. package/install/_common.mjs +5 -11
  19. package/install/_copilot-instructions.mjs +2 -2
  20. package/install/_dev-only-files.mjs +2 -1
  21. package/install/_platform-filter.mjs +1 -1
  22. package/install/_telemetry.mjs +1 -1
  23. package/install/claude.mjs +10 -9
  24. package/install/copilot.mjs +10 -19
  25. package/install/index.mjs +7 -15
  26. package/install/templates/copilot-instructions.md +54 -54
  27. package/install.js +1 -1
  28. package/package.json +15 -11
  29. package/pipeline/agents/security-auditor.md +1 -1
  30. package/pipeline/commands/archive-guard.md +5 -5
  31. package/pipeline/commands/multi-agent/SKILL.md +3 -1
  32. package/pipeline/commands/multi-agent/analysis/SKILL.md +1 -1
  33. package/pipeline/commands/multi-agent/analysis-resolve/SKILL.md +1 -1
  34. package/pipeline/commands/multi-agent/autopilot/SKILL.md +1 -1
  35. package/pipeline/commands/multi-agent/build-optimize/SKILL.md +1 -1
  36. package/pipeline/commands/multi-agent/create-jira/SKILL.md +1 -1
  37. package/pipeline/commands/multi-agent/design-check/SKILL.md +287 -0
  38. package/pipeline/commands/multi-agent/dev/SKILL.md +1 -1
  39. package/pipeline/commands/multi-agent/dev-autopilot/SKILL.md +1 -1
  40. package/pipeline/commands/multi-agent/dev-local/SKILL.md +1 -1
  41. package/pipeline/commands/multi-agent/dev-local-autopilot/SKILL.md +1 -1
  42. package/pipeline/commands/multi-agent/diff-explain/SKILL.md +1 -1
  43. package/pipeline/commands/multi-agent/finish/SKILL.md +6 -6
  44. package/pipeline/commands/multi-agent/forget/SKILL.md +1 -1
  45. package/pipeline/commands/multi-agent/garbage-collect/SKILL.md +1 -1
  46. package/pipeline/commands/multi-agent/help/SKILL.md +46 -6
  47. package/pipeline/commands/multi-agent/issue/SKILL.md +1 -1
  48. package/pipeline/commands/multi-agent/jira/SKILL.md +1 -1
  49. package/pipeline/commands/multi-agent/kill/SKILL.md +1 -1
  50. package/pipeline/commands/multi-agent/language/SKILL.md +1 -1
  51. package/pipeline/commands/multi-agent/local/SKILL.md +1 -1
  52. package/pipeline/commands/multi-agent/local-autopilot/SKILL.md +1 -1
  53. package/pipeline/commands/multi-agent/log/SKILL.md +1 -1
  54. package/pipeline/commands/multi-agent/manual-test/SKILL.md +1 -1
  55. package/pipeline/commands/multi-agent/prune-logs/SKILL.md +1 -1
  56. package/pipeline/commands/multi-agent/purge/SKILL.md +1 -1
  57. package/pipeline/commands/multi-agent/refactor/SKILL.md +107 -19
  58. package/pipeline/commands/multi-agent/resume/SKILL.md +2 -2
  59. package/pipeline/commands/multi-agent/review/SKILL.md +2 -2
  60. package/pipeline/commands/multi-agent/review-issue/SKILL.md +1 -1
  61. package/pipeline/commands/multi-agent/review-jira/SKILL.md +1 -1
  62. package/pipeline/commands/multi-agent/routines/SKILL.md +1 -1
  63. package/pipeline/commands/multi-agent/save/SKILL.md +1 -1
  64. package/pipeline/commands/multi-agent/scan/SKILL.md +1 -1
  65. package/pipeline/commands/multi-agent/search/SKILL.md +1 -1
  66. package/pipeline/commands/multi-agent/setup/SKILL.md +2 -2
  67. package/pipeline/commands/multi-agent/stack/SKILL.md +3 -3
  68. package/pipeline/commands/multi-agent/status/SKILL.md +1 -1
  69. package/pipeline/commands/multi-agent/sync/SKILL.md +123 -16
  70. package/pipeline/commands/multi-agent/test/SKILL.md +2 -2
  71. package/pipeline/commands/multi-agent/uninstall/SKILL.md +1 -1
  72. package/pipeline/commands/multi-agent/update/SKILL.md +3 -3
  73. package/pipeline/commands/sim-test.md +5 -5
  74. package/pipeline/eval/run-metrics-fixture.json +60 -13
  75. package/pipeline/lib/account-resolver.sh +1 -1
  76. package/pipeline/lib/channels-multi-repo.sh +1 -1
  77. package/pipeline/lib/context-link-extractor.sh +1 -1
  78. package/pipeline/lib/credential-store.sh +33 -1
  79. package/pipeline/lib/fetch-confluence.sh +1 -1
  80. package/pipeline/lib/fetch-crashlytics.sh +1 -1
  81. package/pipeline/lib/fetch-fortify.sh +1 -1
  82. package/pipeline/lib/fetch-graylog.sh +1 -1
  83. package/pipeline/lib/fetch-swagger.sh +1 -1
  84. package/pipeline/lib/issue-fetcher.sh +1 -1
  85. package/pipeline/lib/multi-repo-pipeline.sh +1 -1
  86. package/pipeline/lib/repo-cache.sh +1 -1
  87. package/pipeline/lib/submodule-detector.sh +1 -1
  88. package/pipeline/multi-agent-refs/component-dispatch.md +1 -1
  89. package/pipeline/multi-agent-refs/component-generation.md +121 -0
  90. package/pipeline/multi-agent-refs/cross-cli-contract.md +4 -4
  91. package/pipeline/multi-agent-refs/features/model-fallback.md +2 -2
  92. package/pipeline/multi-agent-refs/phases/phase-3-dev.md +2 -2
  93. package/pipeline/multi-agent-refs/phases/phase-4-review.md +1 -1
  94. package/pipeline/multi-agent-refs/phases/phase-5-test.md +4 -4
  95. package/pipeline/preferences-template.json +23 -12
  96. package/pipeline/schemas/agent-state.schema.json +125 -5
  97. package/pipeline/schemas/analysis-output.schema.json +18 -4
  98. package/pipeline/schemas/analysis-spec.schema.json +120 -32
  99. package/pipeline/schemas/clarify-output.schema.json +15 -5
  100. package/pipeline/schemas/design-check-config.schema.json +183 -0
  101. package/pipeline/schemas/dev-critic-output.schema.json +20 -5
  102. package/pipeline/schemas/figma-project-config.schema.json +42 -10
  103. package/pipeline/schemas/learnings-ledger.schema.json +10 -2
  104. package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +1 -4
  105. package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +24 -7
  106. package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +30 -12
  107. package/pipeline/schemas/plan-todos.schema.json +6 -3
  108. package/pipeline/schemas/planning-output.schema.json +5 -1
  109. package/pipeline/schemas/prefs.schema.json +215 -197
  110. package/pipeline/schemas/test-gap.schema.json +5 -5
  111. package/pipeline/schemas/token-budget.json +8 -8
  112. package/pipeline/schemas/triage-corpus.schema.json +1 -1
  113. package/pipeline/scripts/README.md +7 -5
  114. package/pipeline/scripts/aggregate-metrics.mjs +18 -6
  115. package/pipeline/scripts/build-skills-index.mjs +6 -2
  116. package/pipeline/scripts/build-stack-plugins.mjs +142 -39
  117. package/pipeline/scripts/check-derived-drift.mjs +196 -0
  118. package/pipeline/scripts/check-md-links.mjs +6 -2
  119. package/pipeline/scripts/classify-plan-safety.mjs +26 -8
  120. package/pipeline/scripts/cost-budget-check.mjs +11 -6
  121. package/pipeline/scripts/cost-table.json +1 -1
  122. package/pipeline/scripts/diff-explain.mjs +7 -3
  123. package/pipeline/scripts/diff-risk-score.mjs +13 -3
  124. package/pipeline/scripts/eval-golden-tasks-live.mjs +8 -3
  125. package/pipeline/scripts/eval-golden-tasks.mjs +21 -9
  126. package/pipeline/scripts/eval-intent.mjs +8 -4
  127. package/pipeline/scripts/eval-mine-corpus.mjs +14 -4
  128. package/pipeline/scripts/evidence-gate.mjs +7 -2
  129. package/pipeline/scripts/fixtures/install-layout.tsv +7 -7
  130. package/pipeline/scripts/gen-mode-dispatch.mjs +38 -21
  131. package/pipeline/scripts/gen-skills-index.mjs +18 -3
  132. package/pipeline/scripts/learning-curve.mjs +13 -3
  133. package/pipeline/scripts/learnings-ledger.mjs +119 -34
  134. package/pipeline/scripts/lint-mcp-refs.mjs +218 -0
  135. package/pipeline/scripts/lint-skills.mjs +20 -9
  136. package/pipeline/scripts/localize-commands.mjs +6 -1
  137. package/pipeline/scripts/match-skills.mjs +15 -4
  138. package/pipeline/scripts/memory-load.sh +5 -1
  139. package/pipeline/scripts/migrate-prefs.mjs +33 -16
  140. package/pipeline/scripts/phase-tracker.sh +3 -1
  141. package/pipeline/scripts/render-work-summary.sh +4 -1
  142. package/pipeline/scripts/repo-map.mjs +110 -64
  143. package/pipeline/scripts/review-scope.mjs +7 -1
  144. package/pipeline/scripts/routine-registry.mjs +4 -9
  145. package/pipeline/scripts/run-aggregator.mjs +11 -5
  146. package/pipeline/scripts/run-metrics.mjs +13 -8
  147. package/pipeline/scripts/run-smokes.mjs +57 -3
  148. package/pipeline/scripts/scorecard.mjs +258 -0
  149. package/pipeline/scripts/smoke-command-inventory.sh +81 -0
  150. package/pipeline/scripts/smoke-commands-skills-parity.sh +1 -1
  151. package/pipeline/scripts/smoke-compliance-skills.sh +4 -4
  152. package/pipeline/scripts/smoke-context-budget.sh +72 -0
  153. package/pipeline/scripts/smoke-cross-cli-behavior.sh +12 -2
  154. package/pipeline/scripts/smoke-generate-issue.sh +6 -5
  155. package/pipeline/scripts/smoke-model-fallback.sh +1 -1
  156. package/pipeline/scripts/smoke-no-mcp-in-dev-phases.sh +86 -7
  157. package/pipeline/scripts/smoke-own-punctuation.sh +103 -0
  158. package/pipeline/scripts/smoke-per-repo-memory.sh +2 -2
  159. package/pipeline/scripts/smoke-review-readiness.sh +3 -2
  160. package/pipeline/scripts/smoke-schema-validation.sh +19 -5
  161. package/pipeline/scripts/smoke-shadow-git.sh +4 -2
  162. package/pipeline/scripts/smoke-workflow-audit.sh +43 -11
  163. package/pipeline/scripts/smoke-write-state.sh +49 -5
  164. package/pipeline/scripts/test-gap-rules/android.json +11 -11
  165. package/pipeline/scripts/test-gap-rules/ios.json +16 -11
  166. package/pipeline/scripts/test-gap-rules/node.json +19 -7
  167. package/pipeline/scripts/test-gap-rules/python.json +10 -4
  168. package/pipeline/scripts/test-gap-scan.mjs +44 -12
  169. package/pipeline/scripts/test-integrity-gate.mjs +5 -1
  170. package/pipeline/scripts/token-budget-report.mjs +44 -21
  171. package/pipeline/scripts/triage-memory.mjs +142 -32
  172. package/pipeline/scripts/uninstall.mjs +75 -31
  173. package/pipeline/scripts/validate-analysis-doc.mjs +15 -5
  174. package/pipeline/scripts/validate-diff-risk.mjs +32 -18
  175. package/pipeline/scripts/validate-test-gap.mjs +17 -7
  176. package/pipeline/scripts/validate-triage.mjs +17 -5
  177. package/pipeline/scripts/write-state.mjs +32 -9
  178. package/pipeline/skills/.skill-manifest.json +24 -8
  179. package/pipeline/skills/.skills-index.json +125 -89
  180. package/pipeline/skills/shared/README.md +65 -61
  181. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +10 -8
  182. package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +1 -1
  183. package/pipeline/skills/shared/core/multi-agent/SKILL.md +26 -279
  184. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +1 -1
  185. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +1 -1
  186. package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +1 -1
  187. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  188. package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
  189. package/pipeline/skills/shared/core/multi-agent-design-check/SKILL.md +248 -0
  190. package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +1 -1
  191. package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +1 -1
  192. package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +1 -1
  193. package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +1 -1
  194. package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +1 -1
  195. package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
  196. package/pipeline/skills/shared/core/multi-agent-forget/SKILL.md +1 -1
  197. package/pipeline/skills/shared/core/multi-agent-garbage-collect/SKILL.md +1 -1
  198. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +23 -1
  199. package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +1 -1
  200. package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +1 -1
  201. package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +1 -1
  202. package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +1 -1
  203. package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +1 -1
  204. package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +1 -1
  205. package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +1 -1
  206. package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +1 -1
  207. package/pipeline/skills/shared/core/multi-agent-prune-logs/SKILL.md +1 -1
  208. package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +1 -1
  209. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +82 -18
  210. package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +1 -1
  211. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +2 -2
  212. package/pipeline/skills/shared/core/multi-agent-review-issue/SKILL.md +1 -1
  213. package/pipeline/skills/shared/core/multi-agent-review-jira/SKILL.md +1 -1
  214. package/pipeline/skills/shared/core/multi-agent-routines/SKILL.md +1 -1
  215. package/pipeline/skills/shared/core/multi-agent-save/SKILL.md +1 -1
  216. package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +1 -1
  217. package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +1 -1
  218. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +1 -1
  219. package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +3 -3
  220. package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +1 -1
  221. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +51 -9
  222. package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +2 -2
  223. package/pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md +1 -1
  224. package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +1 -1
  225. package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +1 -1
  226. package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +4 -4
  227. package/pipeline/skills/shared/external/agentflow/SKILL.md +1 -1
  228. package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +1 -1
  229. package/pipeline/skills/shared/external/android_ui_verification/SKILL.md +1 -1
  230. package/pipeline/skills/shared/external/api-patterns/SKILL.md +1 -1
  231. package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +1 -1
  232. package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +1 -1
  233. package/pipeline/skills/shared/external/backlog/BACKLOG.md +1 -1
  234. package/pipeline/skills/shared/external/backlog/SKILL.md +12 -12
  235. package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +1 -1
  236. package/pipeline/skills/shared/external/context-compression/SKILL.md +1 -1
  237. package/pipeline/skills/shared/external/council/SKILL.md +3 -3
  238. package/pipeline/skills/shared/external/css-modern/SKILL.md +1 -1
  239. package/pipeline/skills/shared/external/database-patterns/SKILL.md +1 -1
  240. package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +1 -1
  241. package/pipeline/skills/shared/external/docker-expert/SKILL.md +1 -1
  242. package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +1 -1
  243. package/pipeline/skills/shared/external/firebase/SKILL.md +1 -1
  244. package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +1 -1
  245. package/pipeline/skills/shared/external/help-skills/SKILL.md +1 -1
  246. package/pipeline/skills/shared/external/hig-components-content/SKILL.md +1 -1
  247. package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +1 -1
  248. package/pipeline/skills/shared/external/hig-components-status/SKILL.md +1 -1
  249. package/pipeline/skills/shared/external/hig-components-system/SKILL.md +1 -1
  250. package/pipeline/skills/shared/external/hig-foundations/SKILL.md +1 -1
  251. package/pipeline/skills/shared/external/hig-inputs/SKILL.md +1 -1
  252. package/pipeline/skills/shared/external/hig-patterns/SKILL.md +1 -1
  253. package/pipeline/skills/shared/external/hig-platforms/SKILL.md +1 -1
  254. package/pipeline/skills/shared/external/hig-technologies/SKILL.md +1 -1
  255. package/pipeline/skills/shared/external/html-semantic/SKILL.md +1 -1
  256. package/pipeline/skills/shared/external/humanizer/SKILL.md +1 -1
  257. package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +1 -1
  258. package/pipeline/skills/shared/external/ios-developer/SKILL.md +1 -1
  259. package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +1 -1
  260. package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +1 -1
  261. package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +1 -1
  262. package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +1 -1
  263. package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +1 -1
  264. package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +1 -1
  265. package/pipeline/skills/shared/external/observability-engineer/SKILL.md +1 -1
  266. package/pipeline/skills/shared/external/python-patterns/SKILL.md +1 -1
  267. package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -1
  268. package/pipeline/skills/shared/external/rest-api-design/SKILL.md +1 -1
  269. package/pipeline/skills/shared/external/search-first/SKILL.md +2 -2
  270. package/pipeline/skills/shared/external/skill-creator/SKILL.md +12 -12
  271. package/pipeline/skills/shared/external/skill-creator/audit.md +21 -21
  272. package/pipeline/skills/shared/external/skill-creator/checklist.md +3 -3
  273. package/pipeline/skills/shared/external/skill-creator/examples.md +10 -10
  274. package/pipeline/skills/shared/external/skill-creator/label-check.md +17 -17
  275. package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +86 -50
  276. package/pipeline/skills/shared/external/skill-creator/template.md +9 -9
  277. package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +1 -1
  278. package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +1 -1
  279. package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +1 -1
  280. package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +1 -1
  281. package/pipeline/skills/shared/external/tailwind-css/SKILL.md +1 -1
  282. package/pipeline/skills/shared/external/testing-backend/SKILL.md +1 -1
  283. package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +1 -1
  284. package/pipeline/skills/shared/external/vue-composition/SKILL.md +1 -1
  285. package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -1
  286. package/pipeline/skills/shared/external/web-performance/SKILL.md +1 -1
  287. package/pipeline/skills/shared/external/web-testing/SKILL.md +1 -1
  288. package/pipeline/skills/shared/external/xcode-build-benchmark/schemas/build-benchmark.schema.json +9 -49
  289. package/pipeline/skills/skills-index.md +63 -59
  290. package/pipeline/scripts/smoke-plugin-validate.sh +0 -64
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "Uninstall the pipeline from Claude Code + Copilot CLI. Keychain access tokens are always left untouched; --all-data also clears pipeline settings and logs. Asks for double confirmation."
2
+ description: "Uninstall the pipeline from Claude Code + Copilot CLI. Keychain access tokens are always left untouched; --all-data also clears pipeline settings and logs. Asks for double confirmation. Use when the pipeline should be removed from Claude Code and Copilot CLI."
3
3
  description-tr: "Pipeline'ı Claude Code + Copilot CLI'dan kaldırır. Keychain erişim token'larına asla dokunulmaz; --all-data ayrıca pipeline ayarlarını ve loglarını da siler. Çift onay ister."
4
4
  argument-hint: "[--dry-run] [--all-data] [--claude] [--copilot] [--target=<path>]"
5
5
  ---
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "Update the pipeline to the latest version: git pull, install, migrate."
2
+ description: "Update the pipeline to the latest version: git pull, install, migrate. Use when the installed pipeline is behind and should be brought to the latest version."
3
3
  description-tr: "Pipeline'ı son sürüme günceller: git pull, install, migrate."
4
4
  allowed-tools: Bash, Read, Write, AskUserQuestion
5
5
  ---
@@ -52,13 +52,13 @@ Update the pipeline in one command. Existing preferences are preserved; only ski
52
52
  fi
53
53
  ```
54
54
 
55
- 4c. **Prune retired adapter files** (Cursor / Antigravity / Codex / Copilot Chat were removed in v10.7.0 the pipeline now targets Claude Code + Copilot CLI only):
55
+ 4c. **Prune retired adapter files** (Cursor / Antigravity / Codex / Copilot Chat were removed in v10.7.0 - the pipeline now targets Claude Code + Copilot CLI only):
56
56
  ```bash
57
57
  # Global Codex adapter prompt is safe to remove (no longer produced).
58
58
  rm -f "$HOME/.codex/prompts/multi-agent.md"
59
59
  echo " -> pruned retired global Codex adapter prompt (if present)"
60
60
  # Per-project adapter files (.cursor/, .agent/, .github/copilot-instructions.md)
61
- # live in your repos and are left untouched remove them manually if you like.
61
+ # live in your repos and are left untouched - remove them manually if you like.
62
62
  ```
63
63
 
64
64
  5. **Migrate preferences** (if there is an old schema):
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  description: "Mobile UI Bug Hunter - iOS Simulator (simctl) + Android Emulator (adb) - auto-detects platform"
3
- allowed-tools: Agent, Bash, Read, Write, Edit, TaskCreate, TaskUpdate, TaskList, TaskGet, mcp__dev_toolkit__ios_list_devices, mcp__dev_toolkit__ios_boot_device, mcp__dev_toolkit__ios_screenshot, mcp__dev_toolkit__ios_tap, mcp__dev_toolkit__ios_swipe, mcp__dev_toolkit__ios_type_text, mcp__dev_toolkit__ios_launch_app, mcp__dev_toolkit__ios_terminate_app, mcp__dev_toolkit__ios_list_apps, mcp__dev_toolkit__ios_go_home, mcp__dev_toolkit__ios_set_appearance, mcp__dev_toolkit__ios_set_content_size, mcp__dev_toolkit__ios_set_locale, mcp__dev_toolkit__ios_open_url, mcp__dev_toolkit__ios_status_bar, mcp__dev_toolkit__ios_push_notification, mcp__dev_toolkit__ios_grant_permission, mcp__dev_toolkit__ios_revoke_permission, mcp__dev_toolkit__ios_reset_permissions, mcp__dev_toolkit__ios_set_location, mcp__dev_toolkit__ios_clear_location, mcp__dev_toolkit__ios_set_increase_contrast, mcp__dev_toolkit__ios_record_video, mcp__dev_toolkit__ios_add_media, mcp__dev_toolkit__ios_keychain_reset, mcp__dev_toolkit__ios_get_app_container, mcp__dev_toolkit__ios_erase_device, mcp__dev_toolkit__ios_get_ui_tree, mcp__dev_toolkit__android_list_devices, mcp__dev_toolkit__android_screenshot, mcp__dev_toolkit__android_tap, mcp__dev_toolkit__android_swipe, mcp__dev_toolkit__android_type_text, mcp__dev_toolkit__android_key_event, mcp__dev_toolkit__android_launch_app, mcp__dev_toolkit__android_stop_app, mcp__dev_toolkit__android_list_packages, mcp__dev_toolkit__android_go_home, mcp__dev_toolkit__android_go_back, mcp__dev_toolkit__android_get_ui_tree, mcp__dev_toolkit__android_set_dark_mode, mcp__dev_toolkit__android_set_font_scale, mcp__dev_toolkit__android_set_locale, mcp__dev_toolkit__android_set_location, mcp__dev_toolkit__android_grant_permission, mcp__dev_toolkit__android_revoke_permission, mcp__dev_toolkit__android_record_screen, mcp__dev_toolkit__android_install_apk, mcp__dev_toolkit__android_uninstall_app, mcp__dev_toolkit__android_logcat, mcp__dev_toolkit__android_get_screen_size, mcp__dev_toolkit__android_open_url, mcp__dev_toolkit__android_clear_app_data
3
+ allowed-tools: Agent, Bash, Read, Write, Edit, TaskCreate, TaskUpdate, TaskList, TaskGet, mcp__dev-toolkit__ios_list_devices, mcp__dev-toolkit__ios_boot_device, mcp__dev-toolkit__ios_screenshot, mcp__dev-toolkit__ios_tap, mcp__dev-toolkit__ios_swipe, mcp__dev-toolkit__ios_type_text, mcp__dev-toolkit__ios_launch_app, mcp__dev-toolkit__ios_terminate_app, mcp__dev-toolkit__ios_list_apps, mcp__dev-toolkit__ios_go_home, mcp__dev-toolkit__ios_set_appearance, mcp__dev-toolkit__ios_set_content_size, mcp__dev-toolkit__ios_set_locale, mcp__dev-toolkit__ios_open_url, mcp__dev-toolkit__ios_status_bar, mcp__dev-toolkit__ios_push_notification, mcp__dev-toolkit__ios_grant_permission, mcp__dev-toolkit__ios_revoke_permission, mcp__dev-toolkit__ios_reset_permissions, mcp__dev-toolkit__ios_set_location, mcp__dev-toolkit__ios_clear_location, mcp__dev-toolkit__ios_set_increase_contrast, mcp__dev-toolkit__ios_record_video, mcp__dev-toolkit__ios_add_media, mcp__dev-toolkit__ios_keychain_reset, mcp__dev-toolkit__ios_get_app_container, mcp__dev-toolkit__ios_erase_device, mcp__dev-toolkit__ios_get_ui_tree, mcp__dev-toolkit__android_list_devices, mcp__dev-toolkit__android_screenshot, mcp__dev-toolkit__android_tap, mcp__dev-toolkit__android_swipe, mcp__dev-toolkit__android_type_text, mcp__dev-toolkit__android_key_event, mcp__dev-toolkit__android_launch_app, mcp__dev-toolkit__android_stop_app, mcp__dev-toolkit__android_list_packages, mcp__dev-toolkit__android_go_home, mcp__dev-toolkit__android_go_back, mcp__dev-toolkit__android_get_ui_tree, mcp__dev-toolkit__android_set_dark_mode, mcp__dev-toolkit__android_set_font_scale, mcp__dev-toolkit__android_set_locale, mcp__dev-toolkit__android_set_location, mcp__dev-toolkit__android_grant_permission, mcp__dev-toolkit__android_revoke_permission, mcp__dev-toolkit__android_record_screen, mcp__dev-toolkit__android_install_apk, mcp__dev-toolkit__android_uninstall_app, mcp__dev-toolkit__android_logcat, mcp__dev-toolkit__android_get_screen_size, mcp__dev-toolkit__android_open_url, mcp__dev-toolkit__android_clear_app_data
4
4
  ---
5
5
 
6
6
  # Mobile UI Bug Hunter
@@ -22,8 +22,8 @@ Auto-detects platform: iOS (simctl) or Android (adb). No external apps needed.
22
22
  5. If argument contains "android" or "ios" -> use that
23
23
  ```
24
24
 
25
- For iOS: use `mcp__dev_toolkit__ios_*` tools
26
- For Android: use `mcp__dev_toolkit__android_*` tools
25
+ For iOS: use `mcp__dev-toolkit__ios_*` tools
26
+ For Android: use `mcp__dev-toolkit__android_*` tools
27
27
 
28
28
  **Android extras**: `get_ui_tree` returns XML with bounds/text/resource-id (uiautomator dump), `logcat` for crash detection, `go_back` button.
29
29
 
@@ -134,11 +134,11 @@ Step A - run the standard visual + accessibility sweep (light + dark + large t
134
134
  Step B - dispatch compliance skill:
135
135
  iOS:
136
136
  Load pipeline/skills/shared/core/apple-archive-compliance/SKILL.md
137
- Prereq: @mmerterden/dev-toolkit-mcp ≥ v2.4 (provides ios_app_store_audit MCP tool)
137
+ Prereq: @mmerterden/dev-toolkit-mcp ≥ v2.9.0 (provides ios_app_store_audit MCP tool)
138
138
  - installable via npm; standalone ArchiveGuard binary deprecated in v8.4.0
139
139
  Artifact: pick newest .xcarchive under ~/Library/Developer/Xcode/Archives/**
140
140
  OR accept explicit path argument after "store-ready"
141
- Invoke: mcp__dev_toolkit__ios_app_store_audit({ archive_path: <path>, rules: "all" })
141
+ Invoke: mcp__dev-toolkit__ios_app_store_audit({ archive_path: <path>, rules: "all" })
142
142
  OR (Node fallback): node -e "import('@mmerterden/dev-toolkit-mcp/tools/ios-app-store-audit/index.js').then(m => m.runAudit({ archivePath: '<path>', rules: 'all' }).then(r => console.log(JSON.stringify(r))))"
143
143
  Humanize via --lang en (promptLanguage is locked to "en"; pass --lang=tr explicitly to opt into Turkish)
144
144
  Android:
@@ -2,29 +2,76 @@
2
2
  "taskId": "PROJ-101",
3
3
  "status": "complete",
4
4
  "currentPhase": 7,
5
- "projects": [
6
- { "project": "my-ios-app", "buildStatus": { "ok": true, "attempts": 1 } }
7
- ],
5
+ "projects": [{ "project": "my-ios-app", "buildStatus": { "ok": true, "attempts": 1 } }],
8
6
  "reviewIterations": [
9
7
  {
10
8
  "reviewers": [
11
- { "reviewer": "opus", "findings": [
12
- { "severity": "blocking", "file": "Auth/Session.swift", "line": 54, "issue": "token logged in plaintext", "fix": "redact" },
13
- { "severity": "suggestion", "file": "Auth/Session.swift", "line": 12, "issue": "rename helper", "fix": "rename" }
14
- ], "approved": false },
15
- { "reviewer": "sonnet", "findings": [
16
- { "severity": "important", "file": "Auth/Session.swift", "line": 70, "issue": "no migration for legacy token", "fix": "add migration" }
17
- ], "approved": false }
9
+ {
10
+ "reviewer": "opus",
11
+ "findings": [
12
+ {
13
+ "severity": "blocking",
14
+ "file": "Auth/Session.swift",
15
+ "line": 54,
16
+ "issue": "token logged in plaintext",
17
+ "fix": "redact"
18
+ },
19
+ {
20
+ "severity": "suggestion",
21
+ "file": "Auth/Session.swift",
22
+ "line": 12,
23
+ "issue": "rename helper",
24
+ "fix": "rename"
25
+ }
26
+ ],
27
+ "approved": false
28
+ },
29
+ {
30
+ "reviewer": "sonnet",
31
+ "findings": [
32
+ {
33
+ "severity": "important",
34
+ "file": "Auth/Session.swift",
35
+ "line": 70,
36
+ "issue": "no migration for legacy token",
37
+ "fix": "add migration"
38
+ }
39
+ ],
40
+ "approved": false
41
+ }
18
42
  ],
19
43
  "triage": {
20
44
  "accepted": [
21
- { "severity": "blocking", "file": "Auth/Session.swift", "line": 54, "issue": "token logged in plaintext", "fix": "redact the token in the log", "reviewer": "opus" }
45
+ {
46
+ "severity": "blocking",
47
+ "file": "Auth/Session.swift",
48
+ "line": 54,
49
+ "issue": "token logged in plaintext",
50
+ "fix": "redact the token in the log",
51
+ "reviewer": "opus"
52
+ }
22
53
  ],
23
54
  "deferred": [
24
- { "finding": { "severity": "important", "file": "Auth/Session.swift", "line": 70, "issue": "no migration for legacy token" }, "reason": "follow-up PR" }
55
+ {
56
+ "finding": {
57
+ "severity": "important",
58
+ "file": "Auth/Session.swift",
59
+ "line": 70,
60
+ "issue": "no migration for legacy token"
61
+ },
62
+ "reason": "follow-up PR"
63
+ }
25
64
  ],
26
65
  "rejected": [
27
- { "finding": { "severity": "suggestion", "file": "Auth/Session.swift", "line": 12, "issue": "rename helper" }, "reason": "style only" }
66
+ {
67
+ "finding": {
68
+ "severity": "suggestion",
69
+ "file": "Auth/Session.swift",
70
+ "line": 12,
71
+ "issue": "rename helper"
72
+ },
73
+ "reason": "style only"
74
+ }
28
75
  ],
29
76
  "approved": false
30
77
  }
@@ -18,7 +18,7 @@
18
18
  # Output schema (per account):
19
19
  # { id, label, prefix, providers[], tokens{}, jiraHost, bitbucketHost, isWork }
20
20
 
21
- set -eu
21
+ set -euo pipefail
22
22
 
23
23
  PRETTY=0
24
24
  FILTER=""
@@ -15,7 +15,7 @@
15
15
  # Single-repo tasks: every subcommand falls through to the single PR / single
16
16
  # body - `targets` returns one entry, render-* leaves the body unchanged.
17
17
 
18
- set -eu
18
+ set -euo pipefail
19
19
 
20
20
  CMD="${1:-}"
21
21
  STATE="${2:-}"
@@ -41,7 +41,7 @@
41
41
  # 0 always - emits "[]" when no input or no matches; downstream readers
42
42
  # must tolerate an empty array.
43
43
 
44
- set -eu
44
+ set -euo pipefail
45
45
 
46
46
  CONTEXT_LINK_INPUT=$(cat)
47
47
  export CONTEXT_LINK_INPUT
@@ -25,7 +25,7 @@
25
25
  # Returns 0 on success, 1 on missing/empty value, 2 on backend missing,
26
26
  # 3 on usage error.
27
27
 
28
- set -eu
28
+ set -euo pipefail
29
29
 
30
30
  detect_platform() {
31
31
  case "$(uname -s 2>/dev/null)" in
@@ -84,10 +84,39 @@ require_cmd() {
84
84
  fi
85
85
  }
86
86
 
87
+ # --- Logical key -> backend key --------------------------------------------
88
+ # Callers pass a LOGICAL key ("github", "jira", "figma_pat"). The actual
89
+ # Keychain / libsecret / Credential Manager entry is named by
90
+ # prefs.global.keychainMapping, so a lookup that uses the logical key verbatim
91
+ # finds nothing whenever the two differ - silently, because a missing entry and
92
+ # a missing mapping look identical from here. Resolve the mapping first and fall
93
+ # back to the logical key when no mapping exists (backward compatible with
94
+ # entries whose name already equals the logical key).
95
+ PREFS_FILE="${MULTI_AGENT_PREFS:-$HOME/.claude/multi-agent-preferences.json}"
96
+
97
+ resolve_key() {
98
+ local logical="$1" mapped=""
99
+ if [ -f "$PREFS_FILE" ] && command -v python3 >/dev/null 2>&1; then
100
+ mapped=$(python3 -c '
101
+ import json, sys
102
+ try:
103
+ with open(sys.argv[1], encoding="utf-8") as fh:
104
+ prefs = json.load(fh)
105
+ except Exception:
106
+ sys.exit(0)
107
+ name = prefs.get("global", {}).get("keychainMapping", {}).get(sys.argv[2])
108
+ if isinstance(name, str) and name.strip():
109
+ sys.stdout.write(name.strip())
110
+ ' "$PREFS_FILE" "$logical" 2>/dev/null || true)
111
+ fi
112
+ printf '%s' "${mapped:-$logical}"
113
+ }
114
+
87
115
  # --- Subcommands ------------------------------------------------------------
88
116
  do_get() {
89
117
  local key="${1:-}"
90
118
  [ -z "$key" ] && { echo "usage: $0 get <key>" >&2; exit 3; }
119
+ key=$(resolve_key "$key")
91
120
  if delegate_to_python; then
92
121
  local val rc
93
122
  val=$(python3 "$KEYCHAIN_PY" get "$key" 2>/dev/null) || rc=$?
@@ -128,6 +157,8 @@ if (\$c) { \$c.GetNetworkCredential().Password }
128
157
  do_set() {
129
158
  local key="${1:-}" val="${2:-}"
130
159
  [ -z "$key" ] && { echo "usage: $0 set <key> <value|->" >&2; exit 3; }
160
+ # Resolve through the same mapping as do_get so set/get stay symmetric.
161
+ key=$(resolve_key "$key")
131
162
  # "-" means: read the secret from stdin (keeps it off argv).
132
163
  if [ "$val" = "-" ]; then
133
164
  val=$(cat)
@@ -173,6 +204,7 @@ New-StoredCredential -Target '$key_esc' -UserName '${USER:-${USERNAME:-claude}}'
173
204
  do_delete() {
174
205
  local key="${1:-}"
175
206
  [ -z "$key" ] && { echo "usage: $0 delete <key>" >&2; exit 3; }
207
+ key=$(resolve_key "$key")
176
208
  if delegate_to_python; then
177
209
  python3 "$KEYCHAIN_PY" delete "$key" >/dev/null 2>&1 || true
178
210
  return 0
@@ -41,7 +41,7 @@
41
41
  # and exits 2 - the orchestrator handles the Save Flow + retry. The script
42
42
  # itself never prompts.
43
43
 
44
- set -eu
44
+ set -euo pipefail
45
45
 
46
46
  URL=""
47
47
  HOST_OVERRIDE="${CONFLUENCE_HOST_OVERRIDE:-}"
@@ -45,7 +45,7 @@
45
45
  # orchestrator surfaces this as "fetcher unavailable, advisory only" to
46
46
  # keep the pipeline moving.
47
47
 
48
- set -eu
48
+ set -euo pipefail
49
49
 
50
50
  URL=""
51
51
  PROJECT_ID=""
@@ -46,7 +46,7 @@
46
46
  # High > 0 → blocking=false, reason="high-findings-warning"
47
47
  # else → blocking=false, reason="clean"
48
48
 
49
- set -eu
49
+ set -euo pipefail
50
50
 
51
51
  URL=""
52
52
  VERSION_ID=""
@@ -47,7 +47,7 @@
47
47
  # 4 bad usage
48
48
  # 6 host not configured (prefs.global.hosts.graylog is empty)
49
49
 
50
- set -eu
50
+ set -euo pipefail
51
51
 
52
52
  TRX_ID=""
53
53
  CONV_ID=""
@@ -42,7 +42,7 @@
42
42
  # 3 payload too large or malformed
43
43
  # 4 bad usage
44
44
 
45
- set -eu
45
+ set -euo pipefail
46
46
 
47
47
  URL="${1:-}"
48
48
  [ -z "$URL" ] && { echo "usage: $0 <openapi-url>" >&2; exit 4; }
@@ -34,7 +34,7 @@
34
34
  # ACCOUNT_DEFAULT_REPO fallback GitHub repo (optional)
35
35
  # PROMPT_LANG tr|en - controls maturity.summary language (default: tr)
36
36
 
37
- set -eu
37
+ set -euo pipefail
38
38
 
39
39
  INPUT="${1:-}"
40
40
  [ -z "$INPUT" ] && { echo '{"error":"input required"}'; exit 1; }
@@ -28,7 +28,7 @@
28
28
  # `bridge` writes agent-state.json v2.1.0 with projects[] populated - Phase 0
29
29
  # consumes this and skips its own picker steps.
30
30
 
31
- set -eu
31
+ set -euo pipefail
32
32
 
33
33
  CMD="${1:-}"
34
34
  STATE="${2:-}"
@@ -25,7 +25,7 @@
25
25
  # LOCAL_SCAN_ROOTS env can override the default root list.
26
26
  # LOCAL_SCAN_MAXDEPTH env (default 4) bounds traversal cost.
27
27
 
28
- set -eu
28
+ set -euo pipefail
29
29
 
30
30
  PROVIDER="${1:-}"
31
31
  SCOPE="${2:-}"
@@ -24,7 +24,7 @@
24
24
  # ]
25
25
  #
26
26
 
27
- set -eu
27
+ set -euo pipefail
28
28
 
29
29
  MODE="local"
30
30
  TARGET="${1:-}"
@@ -84,7 +84,7 @@ Phase 4 reviewer-skipping is **not** Phase 3's concern - Phase 4 decides based
84
84
 
85
85
  ## Cross-CLI behaviour (intentional divergence)
86
86
 
87
- Component dispatch is **no longer byte-identical across CLIs** and that is by design (see `cross-cli-contract.md` §1.1):
87
+ Component dispatch is **no longer byte-identical across CLIs** and that is by design (see `cross-cli-contract.md` section 1.1):
88
88
 
89
89
  - **Claude Code**: dispatches to the enabled `ai-<platform>-engineering-toolkit` marketplace plugin via the Skill tool (this doc).
90
90
  - **Copilot CLI**: has no plugin loader; it continues to use its standalone `~/.copilot/skills/figma-*` skill copies (frozen fallback). Copilot's resolution + progress lines follow those local skills.
@@ -0,0 +1,121 @@
1
+ # Component Generation Guide (generic)
2
+
3
+ > Lifted out of `core/multi-agent/SKILL.md`, where it was loaded on every
4
+ > run of every mode. It applies only to a task that generates a UI
5
+ > component from a design, so it now loads when that path is taken.
6
+ > Component dispatch itself is in `component-dispatch.md`.
7
+
8
+ When the task involves creating a SwiftUI component (any project, not just figma), follow this architecture:
9
+
10
+ ### Component Architecture: Configuration / View / Modifiers
11
+
12
+ Every component produces up to 5 files:
13
+
14
+ | File | When | Content |
15
+ |------|------|---------|
16
+ | `{Name}Configuration.swift` | Complex (>3 props) | Pure value type, all declarative properties |
17
+ | `{Name}View.swift` | Always | SwiftUI view, renders Configuration |
18
+ | `{Name}+Modifiers.swift` | Complex | Fluent modifier API chain |
19
+ | `{Name}Preview.swift` | Always | All meaningful variant previews |
20
+ | `{Name}Tests.swift` | Always | ViewInspector + Unit tests |
21
+
22
+ ### Configuration Purity Rule
23
+
24
+ Configuration structs hold ONLY declarative, value-type properties:
25
+
26
+ ```swift
27
+ // ✅ CORRECT - pure value type
28
+ struct ButtonConfiguration {
29
+ var title: String = ""
30
+ var style: ButtonStyle = .primary
31
+ var isEnabled: Bool = true
32
+ var icon: Image? = nil
33
+ }
34
+
35
+ // ❌ WRONG - these do NOT belong in Configuration
36
+ // Closures → View property
37
+ // @Binding → View property
38
+ // @State → View property
39
+ // AnyView / @ViewBuilder → View generic parameter
40
+ ```
41
+
42
+ ### View Implementation
43
+
44
+ ```swift
45
+ struct ButtonView: View {
46
+ let configuration: ButtonConfiguration
47
+ private var action: (() -> Void)? // closure lives in View, not Config
48
+
49
+ var body: some View {
50
+ Button(action: { action?() }) {
51
+ HStack(spacing: .Spacing.spacing8) {
52
+ if let icon = configuration.icon { icon }
53
+ Text(configuration.title)
54
+ .typographyStyle(.body1)
55
+ }
56
+ }
57
+ .disabled(!configuration.isEnabled)
58
+ }
59
+ }
60
+ ```
61
+
62
+ ### Modifier Pattern
63
+
64
+ ```swift
65
+ extension ButtonView {
66
+ func title(_ value: String) -> ButtonView {
67
+ var config = configuration
68
+ config.title = value
69
+ return ButtonView(configuration: config)
70
+ }
71
+ func style(_ value: ButtonStyle) -> ButtonView {
72
+ var config = configuration
73
+ config.style = value
74
+ return ButtonView(configuration: config)
75
+ }
76
+ func onTap(_ action: @escaping () -> Void) -> ButtonView {
77
+ var view = self
78
+ view.action = action
79
+ return view
80
+ }
81
+ }
82
+ ```
83
+
84
+ ### Simple vs Complex Decision
85
+
86
+ | Criteria | Simple | Complex |
87
+ |----------|--------|---------|
88
+ | Properties | ≤3 | >3 |
89
+ | Configuration file | No - props in View directly | Yes - separate struct |
90
+ | +Modifiers file | No | Yes |
91
+ | View file | All-in-one | Renders Configuration |
92
+
93
+ ### 3-Layer Test Strategy
94
+
95
+ | Layer | Tool | What It Validates |
96
+ |-------|------|-------------------|
97
+ | Structural | ViewInspector | Hierarchy, subview existence, applied modifiers |
98
+ | Visual | Snapshot Tests | Pixel-correct render: light/dark, RTL/LTR |
99
+ | Behavioral | Unit Tests | State changes, closures, configuration mutations |
100
+
101
+ ### Component Checklist (Before Commit)
102
+
103
+ 1. No magic numbers - all values are design tokens or named constants
104
+ 2. Configuration purity - no side-effects or view logic in Config
105
+ 3. Modifier correctness - fluent API valid, paired modifiers live in the View
106
+ 4. Accessibility - accessibility label/trait on every interactive element
107
+ 5. Preview - all meaningful variants in the preview
108
+ 6. Test - structural + unit tests written
109
+ 7. Dark mode - renders correctly in both color schemes
110
+ 8. Dynamic Type - text scales at large sizes without breaking the layout
111
+
112
+ ### When a Figma URL Is Provided
113
+
114
+ If the user provides a Figma URL:
115
+ 1. Fetch the design data with Figma MCP tools (get_design_context, get_screenshot)
116
+ 2. Map the design's colors, spacing, and typography onto the project's token system
117
+ 3. Apply the Configuration/View/Modifiers pattern above
118
+ 4. Use the screenshot as a reference, do not copy it - adapt to the project's existing components
119
+
120
+ ---
121
+
@@ -6,10 +6,10 @@
6
6
 
7
7
  ---
8
8
 
9
- ## 1. Command Inventory (41 commands)
9
+ ## 1. Command Inventory (42 commands)
10
10
 
11
11
  ```
12
- analysis, analysis-resolve, autopilot, build-optimize, channels, create-jira, dev,
12
+ analysis, analysis-resolve, autopilot, build-optimize, channels, create-jira, design-check, dev,
13
13
  dev-autopilot, dev-local, dev-local-autopilot, diff-explain, finish, forget, garbage-collect,
14
14
  help, issue, jira, kill, language, local,
15
15
  local-autopilot, log, manual-test, prune-logs, purge, refactor, resume, review, review-issue, review-jira,
@@ -43,14 +43,14 @@ Two parallel shared/core skills under `pipeline/skills/shared/core/` wrap extern
43
43
 
44
44
  | Skill | Path | Tool wrapper | Rules |
45
45
  |---|---|---|---|
46
- | `apple-archive-compliance` | `pipeline/skills/shared/core/apple-archive-compliance/` | `ios_app_store_audit` MCP tool (in `@mmerterden/dev-toolkit-mcp` ≥ v2.4) | 17 (Apple ITMS + App Store Review Guidelines) |
46
+ | `apple-archive-compliance` | `pipeline/skills/shared/core/apple-archive-compliance/` | `ios_app_store_audit` MCP tool (in `@mmerterden/dev-toolkit-mcp` ≥ v2.9.0) | 18 (Apple ITMS + App Store Review Guidelines) |
47
47
  | `google-play-compliance` | `pipeline/skills/shared/core/google-play-compliance/` | bundletool + aapt2 + apksigner | 21 (4 categories: Technical / Security / Privacy / Hygiene) |
48
48
 
49
49
  Both skills are wired to 4 consumers: `/multi-agent:test "store-ready"` (primary), Phase 4 Security Auditor (`pipeline/agents/security-auditor.md`), `/multi-agent:review` + SKILL.md counterpart, `/multi-agent:channels` PR-body auto-augmentation. Contract enforced by `smoke-compliance-skills.sh` (46 assertions).
50
50
 
51
51
  ### 1.3 Figma-skill routing from multi-agent (superseded)
52
52
 
53
- Superseded by §1.1: Claude Code resolves component dispatch to the marketplace plugin (dual-name `create-component`/`create-ui-component`; full contract in `$HOME/.claude/multi-agent-refs/component-dispatch.md`); Copilot CLI uses its local `~/.copilot/skills/figma-*` copies. No shared filesystem-path routing table or figma-skill frontmatter/inventory parity remains under enforcement.
53
+ Superseded by section 1.1: Claude Code resolves component dispatch to the marketplace plugin (dual-name `create-component`/`create-ui-component`; full contract in `$HOME/.claude/multi-agent-refs/component-dispatch.md`); Copilot CLI uses its local `~/.copilot/skills/figma-*` copies. No shared filesystem-path routing table or figma-skill frontmatter/inventory parity remains under enforcement.
54
54
 
55
55
  ---
56
56
 
@@ -9,7 +9,7 @@ without ever editing persona files at runtime.
9
9
 
10
10
  > **Fable 5 available again (2026-07).** `claude-fable-5` is the top tier once
11
11
  > more. Architect (`ios/android/backend-architect`), Reviewer-1 (`code-reviewer`),
12
- > and triage personas declare `preferredModel: fable` the deepest-reasoning
12
+ > and triage personas declare `preferredModel: fable` - the deepest-reasoning
13
13
  > roles. **If Fable 5 is unavailable, the first fallback is opus (`claude-opus-4-8`).**
14
14
  > Security and other `preferredModel: opus` personas keep opus as their top tier.
15
15
  > The `premiumTierUntil` date gate stays in the contract as a generic mechanism
@@ -98,6 +98,6 @@ per-phase `model` field already carries the override).
98
98
  - No edits to `pipeline/agents/*.md` at runtime; frontmatter is install-time
99
99
  configuration only.
100
100
  - Copilot CLI reviewer set is out of scope: Copilot CLI pins its own three
101
- reviewer models (GPT-5.4 + Opus + Sonnet Fable 5 is not offered there) and
101
+ reviewer models (GPT-5.4 + Opus + Sonnet - Fable 5 is not offered there) and
102
102
  does not use this persona ladder. Only Claude Code dispatches Reviewer-1 on
103
103
  Fable.
@@ -164,7 +164,7 @@ For each task (respecting dependency order):
164
164
  **Preferred - MCP tool (token-efficient, dev-toolkit-mcp ≥ 2.3.0):**
165
165
  ```
166
166
  acquire_build_lock "$TASK_ID"
167
- mcp__dev_toolkit__ios_xcodebuild({
167
+ mcp__dev-toolkit__ios_xcodebuild({
168
168
  project: "{projectPath}", // or workspace
169
169
  scheme: "{scheme}",
170
170
  configuration: "Release",
@@ -173,7 +173,7 @@ For each task (respecting dependency order):
173
173
  })
174
174
  release_build_lock
175
175
  ```
176
- Returns one line: `Build: SUCCESS|FAILURE (E errors, W warnings) [xcresult-<id>]`. On failure, drill in only when needed via `mcp__dev_toolkit__ios_xcresult({id, mode: "errors"})`. Saves thousands of tokens per build cycle vs. raw xcodebuild output.
176
+ Returns one line: `Build: SUCCESS|FAILURE (E errors, W warnings) [xcresult-<id>]`. On failure, drill in only when needed via `mcp__dev-toolkit__ios_xcresult({id, mode: "errors"})`. Saves thousands of tokens per build cycle vs. raw xcodebuild output.
177
177
 
178
178
  **Fallback - raw xcodebuild** (when MCP server is unavailable):
179
179
  ```bash
@@ -1,6 +1,6 @@
1
1
  ### Phase 4: Review (deterministic gates + parallel + triage)
2
2
 
3
- > **TLDR** - Three-stage review. Stage 1: deterministic gates (build + lint + test + secret scan) that MUST pass. Stage 2: AI models in parallel - reviewer set is **CLI-aware**: Claude Code dispatches 2 reviewers (Fable + Sonnet); Copilot CLI dispatches 3 reviewers (GPT-5.4 + Opus + Sonnet Fable 5 is not offered on Copilot CLI). Stage 3: Fable triage (Opus on Copilot CLI) - evaluates raw findings, filters false-positives/out-of-scope, keeps only actionable items. Only triage-accepted blocking items loop back to Phase 3.
3
+ > **TLDR** - Three-stage review. Stage 1: deterministic gates (build + lint + test + secret scan) that MUST pass. Stage 2: AI models in parallel - reviewer set is **CLI-aware**: Claude Code dispatches 2 reviewers (Fable + Sonnet); Copilot CLI dispatches 3 reviewers (GPT-5.4 + Opus + Sonnet - Fable 5 is not offered on Copilot CLI). Stage 3: Fable triage (Opus on Copilot CLI) - evaluates raw findings, filters false-positives/out-of-scope, keeps only actionable items. Only triage-accepted blocking items loop back to Phase 3.
4
4
 
5
5
  <!-- progress-contract: applied -->
6
6
  Progress emission per `$HOME/.claude/multi-agent-refs/progress-contract.md` - lines for each gate, each reviewer dispatch + finish, triage start, triage verdict, fix dispatch.
@@ -126,12 +126,12 @@ Before or during user testing, run device-level audits via Bash if user requests
126
126
 
127
127
  | Check | When | Command |
128
128
  | ------------------- | ----------------- | ----------------------------------------- |
129
- | Accessibility audit | UI changes | `mcp__dev_toolkit__ios_accessibility_audit` (or `swift ui-tree-dumper.swift`) |
130
- | Biometric test | Auth flow changes | `mcp__dev_toolkit__ios_biometric` (or `xcrun simctl keychain biometric-match`) |
129
+ | Accessibility audit | UI changes | `mcp__dev-toolkit__ios_accessibility_audit` (or `swift ui-tree-dumper.swift`) |
130
+ | Biometric test | Auth flow changes | `mcp__dev-toolkit__ios_biometric` (or `xcrun simctl keychain biometric-match`) |
131
131
  | Launch time | Android project | `adb shell am start -W` |
132
132
  | Visual test | Any UI changes | `/multi-agent test` (sim-test) |
133
- | Snapshot regression | Component / pixel-stable UI changes | `mcp__dev_toolkit__ios_visual_diff` (dev-toolkit-mcp ≥ 2.3.0) |
134
- | App Store screenshots | `taskType === screenshot` | `mcp__dev_toolkit__ios_status_bar({preset: "clean"})` before each capture |
133
+ | Snapshot regression | Component / pixel-stable UI changes | `mcp__dev-toolkit__ios_visual_diff` (dev-toolkit-mcp ≥ 2.3.0) |
134
+ | App Store screenshots | `taskType === screenshot` | `mcp__dev-toolkit__ios_status_bar({preset: "clean"})` before each capture |
135
135
 
136
136
  Results included in Phase 7 report. MCP tools preferred when available - concise structured output, lower token cost.
137
137
 
@@ -45,12 +45,7 @@
45
45
  "autoDiff": false,
46
46
  "manualNote": false
47
47
  },
48
- "wikiScope": [
49
- "main",
50
- "ios",
51
- "screenshots",
52
- "index"
53
- ],
48
+ "wikiScope": ["main", "ios", "screenshots", "index"],
54
49
  "autopilotReportTimeoutSeconds": 1800,
55
50
  "promptLanguage": "en",
56
51
  "outputLanguage": "en",
@@ -73,7 +68,12 @@
73
68
  "onExceed": "warn",
74
69
  "pricingModel": "opus"
75
70
  },
76
- "derivedSkillSources": []
71
+ "derivedSkillSources": [],
72
+ "devToolkit": {
73
+ "enabled": true,
74
+ "mcpServerName": "dev-toolkit",
75
+ "registry": "github-packages"
76
+ }
77
77
  },
78
78
  "projects": {},
79
79
  "_figmaConfigTemplate": {
@@ -157,18 +157,29 @@
157
157
  }
158
158
  },
159
159
  "_derivedSkillSourcesTemplate": {
160
- "_comment": "Optional. Populate global.derivedSkillSources[] to let /multi-agent:refactor check whether skills you derived from an upstream marketplace plugin have been updated. Kept in your LOCAL prefs only (never synced), so it may reference private sources. Copy an entry like the one below.",
160
+ "_comment": "Optional. Populate global.derivedSkillSources[] to let /multi-agent:refactor check whether skills you derived from an upstream marketplace plugin have been updated. Kept in your LOCAL prefs only (never synced), so it may reference private sources. Copy an entry like the one below. Set upstreamLocalClone when you have a working copy: the installed plugin cache is only as fresh as your last marketplace update, and a stale cache makes the drift check answer 'up to date' when it is four releases behind.",
161
161
  "_example": {
162
162
  "label": "Component toolkit skills",
163
163
  "localPath": "plugins/<my-plugin>/skills/workflow",
164
164
  "upstreamMarketplace": "<installed-marketplace-name>",
165
165
  "upstreamPlugin": "<upstream-plugin-name>",
166
- "upstreamSkills": [
167
- "<skill-a>",
168
- "<skill-b>"
169
- ],
166
+ "upstreamSkills": ["<skill-a>", "<skill-b>"],
170
167
  "derivedFromVersion": "0.0.0",
168
+ "upstreamVersionSource": "marketplace.json",
169
+ "upstreamLocalClone": "$HOME/<upstream-repo-working-copy>",
171
170
  "upstreamRepoUrl": "https://github.com/<org>/<repo>"
172
171
  }
172
+ },
173
+ "_devToolkitTemplate": {
174
+ "_comment": "Optional. global.devToolkit points at the companion MCP server that serves the pipeline's device and browser tools. /multi-agent:refactor Step 0c researches current MCP practice and audits that repo against it (plan band E); /multi-agent:sync Step 3d ships it when it moved (gates, commit, publish). Leave localPath out and both commands auto-detect the repo from your mcpServers registration; set enabled:false to skip both.",
175
+ "_example": {
176
+ "enabled": true,
177
+ "label": "dev-toolkit MCP server",
178
+ "localPath": "$HOME/<repo-dir>",
179
+ "mcpServerName": "dev-toolkit",
180
+ "packageName": "@<scope>/<package>",
181
+ "registry": "github-packages",
182
+ "repoUrl": "https://github.com/<owner>/<repo>"
183
+ }
173
184
  }
174
185
  }