@mmerterden/multi-agent-pipeline 8.6.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 (817) hide show
  1. package/CHANGELOG.md +2623 -0
  2. package/LICENSE +21 -0
  3. package/README.md +852 -0
  4. package/docs/FIGMA_PIPELINE.md +138 -0
  5. package/docs/GENERICITY-REVIEW.md +277 -0
  6. package/docs/STABILITY-FIX-PLAN.md +168 -0
  7. package/docs/adr/0001-three-model-triage.md +81 -0
  8. package/docs/adr/0002-instruction-driven-flag.md +62 -0
  9. package/docs/adr/0003-unified-shared-skills.md +55 -0
  10. package/docs/adr/0004-zero-dependency-philosophy.md +60 -0
  11. package/docs/adr/0005-lazy-phase-docs.md +68 -0
  12. package/docs/adr/0006-skills-core-external-split.md +52 -0
  13. package/docs/adr/0007-multi-tool-adapter-framework.md +110 -0
  14. package/docs/adr/0008-installer-modularization-and-secret-leak-defense.md +98 -0
  15. package/docs/adr/README.md +33 -0
  16. package/docs/architecture.md +181 -0
  17. package/docs/best-practices.md +93 -0
  18. package/docs/features.md +274 -0
  19. package/docs/performance.md +116 -0
  20. package/docs/recovery-guide.md +479 -0
  21. package/index.js +76 -0
  22. package/install/_adapters.mjs +69 -0
  23. package/install/_common.mjs +150 -0
  24. package/install/_copilot-instructions.mjs +32 -0
  25. package/install/_dev-only-files.mjs +23 -0
  26. package/install/_platform-filter.mjs +132 -0
  27. package/install/_telemetry.mjs +79 -0
  28. package/install/claude.mjs +332 -0
  29. package/install/copilot.mjs +254 -0
  30. package/install/index.mjs +179 -0
  31. package/install/templates/copilot-instructions.md +319 -0
  32. package/install.js +24 -0
  33. package/package.json +78 -0
  34. package/pipeline/adapters/_base.mjs +288 -0
  35. package/pipeline/adapters/copilot-chat.mjs +158 -0
  36. package/pipeline/adapters/cursor.mjs +187 -0
  37. package/pipeline/agents/android-architect.md +42 -0
  38. package/pipeline/agents/backend-architect.md +43 -0
  39. package/pipeline/agents/code-reviewer.md +57 -0
  40. package/pipeline/agents/dev-critic.md +148 -0
  41. package/pipeline/agents/explorer.md +34 -0
  42. package/pipeline/agents/ios-architect.md +41 -0
  43. package/pipeline/agents/security-auditor.md +98 -0
  44. package/pipeline/agents/task-clarifier.md +113 -0
  45. package/pipeline/claude-md-template.md +55 -0
  46. package/pipeline/commands/archive-guard.md +45 -0
  47. package/pipeline/commands/deploy.md +54 -0
  48. package/pipeline/commands/figma-to-swiftui.md +295 -0
  49. package/pipeline/commands/multi-agent/_account-picker.md +90 -0
  50. package/pipeline/commands/multi-agent/_dev-context.md +111 -0
  51. package/pipeline/commands/multi-agent/_input-parser.md +43 -0
  52. package/pipeline/commands/multi-agent/_repo-picker.md +76 -0
  53. package/pipeline/commands/multi-agent/autopilot.md +116 -0
  54. package/pipeline/commands/multi-agent/channels.md +465 -0
  55. package/pipeline/commands/multi-agent/delete.md +66 -0
  56. package/pipeline/commands/multi-agent/dev-autopilot.md +120 -0
  57. package/pipeline/commands/multi-agent/dev-local-autopilot.md +110 -0
  58. package/pipeline/commands/multi-agent/dev-local.md +105 -0
  59. package/pipeline/commands/multi-agent/dev.md +246 -0
  60. package/pipeline/commands/multi-agent/diff-explain.md +68 -0
  61. package/pipeline/commands/multi-agent/help.md +422 -0
  62. package/pipeline/commands/multi-agent/issue.md +79 -0
  63. package/pipeline/commands/multi-agent/jira.md +132 -0
  64. package/pipeline/commands/multi-agent/kill.md +38 -0
  65. package/pipeline/commands/multi-agent/language.md +94 -0
  66. package/pipeline/commands/multi-agent/local-autopilot.md +139 -0
  67. package/pipeline/commands/multi-agent/local.md +117 -0
  68. package/pipeline/commands/multi-agent/log.md +25 -0
  69. package/pipeline/commands/multi-agent/manual-test.md +43 -0
  70. package/pipeline/commands/multi-agent/purge.md +39 -0
  71. package/pipeline/commands/multi-agent/refactor.md +188 -0
  72. package/pipeline/commands/multi-agent/refs/android-guide.md +250 -0
  73. package/pipeline/commands/multi-agent/refs/audit-guide.md +240 -0
  74. package/pipeline/commands/multi-agent/refs/backend-guide.md +135 -0
  75. package/pipeline/commands/multi-agent/refs/channels/confluence.md +153 -0
  76. package/pipeline/commands/multi-agent/refs/channels/issue-comment.md +141 -0
  77. package/pipeline/commands/multi-agent/refs/channels/jira.md +127 -0
  78. package/pipeline/commands/multi-agent/refs/channels/pr-review-actions.md +135 -0
  79. package/pipeline/commands/multi-agent/refs/channels/pr.md +139 -0
  80. package/pipeline/commands/multi-agent/refs/channels/wiki.md +66 -0
  81. package/pipeline/commands/multi-agent/refs/component-dispatch.md +92 -0
  82. package/pipeline/commands/multi-agent/refs/cross-cli-contract.md +326 -0
  83. package/pipeline/commands/multi-agent/refs/frontend-guide.md +136 -0
  84. package/pipeline/commands/multi-agent/refs/issue-jira-triad.md +104 -0
  85. package/pipeline/commands/multi-agent/refs/keychain.md +80 -0
  86. package/pipeline/commands/multi-agent/refs/knowledge.md +112 -0
  87. package/pipeline/commands/multi-agent/refs/multi-repo-integration-build.md +207 -0
  88. package/pipeline/commands/multi-agent/refs/phases/log-format.md +89 -0
  89. package/pipeline/commands/multi-agent/refs/phases/modes.md +156 -0
  90. package/pipeline/commands/multi-agent/refs/phases/operations.md +91 -0
  91. package/pipeline/commands/multi-agent/refs/phases/phase-0-init.md +481 -0
  92. package/pipeline/commands/multi-agent/refs/phases/phase-1-analysis.md +264 -0
  93. package/pipeline/commands/multi-agent/refs/phases/phase-2-planning.md +278 -0
  94. package/pipeline/commands/multi-agent/refs/phases/phase-3-dev.md +364 -0
  95. package/pipeline/commands/multi-agent/refs/phases/phase-4-review.md +378 -0
  96. package/pipeline/commands/multi-agent/refs/phases/phase-5-test.md +129 -0
  97. package/pipeline/commands/multi-agent/refs/phases/phase-6-commit.md +339 -0
  98. package/pipeline/commands/multi-agent/refs/phases/phase-7-report.md +361 -0
  99. package/pipeline/commands/multi-agent/refs/phases.md +187 -0
  100. package/pipeline/commands/multi-agent/refs/progress-contract.md +155 -0
  101. package/pipeline/commands/multi-agent/refs/rules.md +189 -0
  102. package/pipeline/commands/multi-agent/refs/swiftui-guide.md +254 -0
  103. package/pipeline/commands/multi-agent/refs/tracker-contract.md +256 -0
  104. package/pipeline/commands/multi-agent/refs/wiki-capture.md +109 -0
  105. package/pipeline/commands/multi-agent/resume.md +28 -0
  106. package/pipeline/commands/multi-agent/review.md +228 -0
  107. package/pipeline/commands/multi-agent/scan.md +74 -0
  108. package/pipeline/commands/multi-agent/search.md +97 -0
  109. package/pipeline/commands/multi-agent/setup.md +767 -0
  110. package/pipeline/commands/multi-agent/stack.md +48 -0
  111. package/pipeline/commands/multi-agent/status.md +38 -0
  112. package/pipeline/commands/multi-agent/sync.md +319 -0
  113. package/pipeline/commands/multi-agent/test.md +39 -0
  114. package/pipeline/commands/multi-agent/update.md +88 -0
  115. package/pipeline/commands/multi-agent.md +293 -0
  116. package/pipeline/commands/security-review.md +6 -0
  117. package/pipeline/commands/sim-test.md +256 -0
  118. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-1-analysis.json +25 -0
  119. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-2-plan.json +30 -0
  120. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-review.json +20 -0
  121. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/expected/phase-4-triage.json +15 -0
  122. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/metadata.json +14 -0
  123. package/pipeline/eval/golden-tasks/01-ios-bugfix-darkmode/task.json +12 -0
  124. package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-1-analysis.json +29 -0
  125. package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-2-plan.json +43 -0
  126. package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-review.json +35 -0
  127. package/pipeline/eval/golden-tasks/02-android-feature-compose/expected/phase-4-triage.json +35 -0
  128. package/pipeline/eval/golden-tasks/02-android-feature-compose/metadata.json +14 -0
  129. package/pipeline/eval/golden-tasks/02-android-feature-compose/task.json +12 -0
  130. package/pipeline/eval/golden-tasks/README.md +65 -0
  131. package/pipeline/eval/triage/01-empty-findings/expected.json +6 -0
  132. package/pipeline/eval/triage/01-empty-findings/input.json +5 -0
  133. package/pipeline/eval/triage/01-empty-findings/notes.md +7 -0
  134. package/pipeline/eval/triage/02-real-blocker/expected.json +15 -0
  135. package/pipeline/eval/triage/02-real-blocker/input.json +14 -0
  136. package/pipeline/eval/triage/02-real-blocker/notes.md +7 -0
  137. package/pipeline/eval/triage/03-out-of-scope-defer/expected.json +18 -0
  138. package/pipeline/eval/triage/03-out-of-scope-defer/input.json +14 -0
  139. package/pipeline/eval/triage/03-out-of-scope-defer/notes.md +10 -0
  140. package/pipeline/eval/triage/04-false-positive-reject/expected.json +18 -0
  141. package/pipeline/eval/triage/04-false-positive-reject/input.json +14 -0
  142. package/pipeline/eval/triage/04-false-positive-reject/notes.md +10 -0
  143. package/pipeline/eval/triage/05-mixed-classification/expected.json +43 -0
  144. package/pipeline/eval/triage/05-mixed-classification/input.json +38 -0
  145. package/pipeline/eval/triage/05-mixed-classification/notes.md +17 -0
  146. package/pipeline/eval/triage/06-severity-mismatch/expected.json +15 -0
  147. package/pipeline/eval/triage/06-severity-mismatch/input.json +14 -0
  148. package/pipeline/eval/triage/06-severity-mismatch/notes.md +9 -0
  149. package/pipeline/eval/triage/07-duplicate-reviewers/expected.json +27 -0
  150. package/pipeline/eval/triage/07-duplicate-reviewers/input.json +22 -0
  151. package/pipeline/eval/triage/07-duplicate-reviewers/notes.md +9 -0
  152. package/pipeline/eval/triage/08-style-misclassified/expected.json +18 -0
  153. package/pipeline/eval/triage/08-style-misclassified/input.json +14 -0
  154. package/pipeline/eval/triage/08-style-misclassified/notes.md +9 -0
  155. package/pipeline/eval/triage/09-cascading-finding/expected.json +23 -0
  156. package/pipeline/eval/triage/09-cascading-finding/input.json +22 -0
  157. package/pipeline/eval/triage/09-cascading-finding/notes.md +9 -0
  158. package/pipeline/eval/triage/10-deferred-crossref/expected.json +18 -0
  159. package/pipeline/eval/triage/10-deferred-crossref/input.json +14 -0
  160. package/pipeline/eval/triage/10-deferred-crossref/notes.md +9 -0
  161. package/pipeline/eval/triage/11-vercel-token-leak-blocker/expected.json +27 -0
  162. package/pipeline/eval/triage/11-vercel-token-leak-blocker/input.json +22 -0
  163. package/pipeline/eval/triage/11-vercel-token-leak-blocker/notes.md +14 -0
  164. package/pipeline/eval/triage/README.md +54 -0
  165. package/pipeline/lib/account-resolver.sh +204 -0
  166. package/pipeline/lib/channels-multi-repo.sh +218 -0
  167. package/pipeline/lib/context-link-extractor.sh +192 -0
  168. package/pipeline/lib/credential-store-resolver.sh +57 -0
  169. package/pipeline/lib/credential-store.sh +226 -0
  170. package/pipeline/lib/fetch-confluence.sh +358 -0
  171. package/pipeline/lib/fetch-crashlytics.sh +314 -0
  172. package/pipeline/lib/fetch-fortify.sh +321 -0
  173. package/pipeline/lib/fetch-swagger.sh +270 -0
  174. package/pipeline/lib/issue-fetcher.sh +333 -0
  175. package/pipeline/lib/multi-repo-pipeline.sh +252 -0
  176. package/pipeline/lib/plan-todos.sh +284 -0
  177. package/pipeline/lib/post-pr-review.sh +374 -0
  178. package/pipeline/lib/repo-cache.sh +231 -0
  179. package/pipeline/lib/review-watch.sh +244 -0
  180. package/pipeline/lib/shadow-git.sh +222 -0
  181. package/pipeline/lib/submodule-detector.sh +177 -0
  182. package/pipeline/lib/vercel-deploy.sh +170 -0
  183. package/pipeline/preferences-template.json +132 -0
  184. package/pipeline/rules/app-store-guidelines.md +59 -0
  185. package/pipeline/rules/code-review.md +27 -0
  186. package/pipeline/rules/code-style.md +37 -0
  187. package/pipeline/rules/debugging.md +24 -0
  188. package/pipeline/rules/figma-pipeline.md +190 -0
  189. package/pipeline/rules/git-conventions.md +29 -0
  190. package/pipeline/rules/kotlin-android.md +92 -0
  191. package/pipeline/rules/performance.md +23 -0
  192. package/pipeline/rules/security.md +39 -0
  193. package/pipeline/rules/swiftui-qa.md +32 -0
  194. package/pipeline/rules/tdd.md +25 -0
  195. package/pipeline/rules/testing.md +37 -0
  196. package/pipeline/schemas/agent-state.schema.json +273 -0
  197. package/pipeline/schemas/analysis-output.schema.json +59 -0
  198. package/pipeline/schemas/clarify-output.schema.json +74 -0
  199. package/pipeline/schemas/dev-critic-output.schema.json +104 -0
  200. package/pipeline/schemas/diff-risk.schema.json +78 -0
  201. package/pipeline/schemas/figma-project-config.schema.json +372 -0
  202. package/pipeline/schemas/migrations/README.md +73 -0
  203. package/pipeline/schemas/migrations/figma-config-1.0.0-to-2.0.0.mjs +112 -0
  204. package/pipeline/schemas/migrations/prefs-2.0.0-to-2.1.0.mjs +75 -0
  205. package/pipeline/schemas/migrations/prefs-2.1.0-to-2.2.0.mjs +64 -0
  206. package/pipeline/schemas/migrations/prefs-2.2.0-to-2.3.0.mjs +36 -0
  207. package/pipeline/schemas/migrations/state-2.0.0-to-2.1.0.mjs +34 -0
  208. package/pipeline/schemas/plan-todos.schema.json +62 -0
  209. package/pipeline/schemas/planning-output.schema.json +57 -0
  210. package/pipeline/schemas/prefs.schema.json +1137 -0
  211. package/pipeline/schemas/reviewer-output.schema.json +55 -0
  212. package/pipeline/schemas/test-gap.schema.json +64 -0
  213. package/pipeline/schemas/token-budget.json +17 -0
  214. package/pipeline/schemas/triage-corpus.schema.json +31 -0
  215. package/pipeline/schemas/triage-output.schema.json +115 -0
  216. package/pipeline/scripts/.last-figma-sync-plan.json +23 -0
  217. package/pipeline/scripts/README-figma-smokes.md +34 -0
  218. package/pipeline/scripts/README.md +104 -0
  219. package/pipeline/scripts/aggregate-metrics.mjs +310 -0
  220. package/pipeline/scripts/audit-log-rotate.sh +61 -0
  221. package/pipeline/scripts/audit-log.sh +69 -0
  222. package/pipeline/scripts/benchmark-phase-0.sh +128 -0
  223. package/pipeline/scripts/build-skills-index.mjs +139 -0
  224. package/pipeline/scripts/classify-plan-safety.mjs +177 -0
  225. package/pipeline/scripts/cost-table.json +27 -0
  226. package/pipeline/scripts/diff-explain.mjs +276 -0
  227. package/pipeline/scripts/diff-risk-score.mjs +328 -0
  228. package/pipeline/scripts/eval-golden-tasks-live.mjs +294 -0
  229. package/pipeline/scripts/eval-golden-tasks.mjs +223 -0
  230. package/pipeline/scripts/eval-triage.mjs +171 -0
  231. package/pipeline/scripts/figma-placeholder-map.json +191 -0
  232. package/pipeline/scripts/fixtures/diff-risk-android.diff +40 -0
  233. package/pipeline/scripts/fixtures/diff-risk-ios.diff +48 -0
  234. package/pipeline/scripts/fixtures/install-layout.tsv +16 -0
  235. package/pipeline/scripts/fixtures/test-gap-node.diff +30 -0
  236. package/pipeline/scripts/fixtures/test-gap-python.diff +32 -0
  237. package/pipeline/scripts/gen-mode-dispatch.mjs +170 -0
  238. package/pipeline/scripts/gen-skills-index.mjs +90 -0
  239. package/pipeline/scripts/github-ssh-setup.sh +103 -0
  240. package/pipeline/scripts/import-figma-skills.sh +253 -0
  241. package/pipeline/scripts/keychain-save.sh +74 -0
  242. package/pipeline/scripts/keychain.py +294 -0
  243. package/pipeline/scripts/log-metric.sh +98 -0
  244. package/pipeline/scripts/match-skills.mjs +167 -0
  245. package/pipeline/scripts/memory-load.sh +46 -0
  246. package/pipeline/scripts/memory-save.sh +76 -0
  247. package/pipeline/scripts/migrate-prefs.mjs +390 -0
  248. package/pipeline/scripts/migrate-state.mjs +215 -0
  249. package/pipeline/scripts/output-quality-check.sh +125 -0
  250. package/pipeline/scripts/phase-banner.sh +158 -0
  251. package/pipeline/scripts/phase-tracker.sh +548 -0
  252. package/pipeline/scripts/pre-commit-check.sh +69 -0
  253. package/pipeline/scripts/pre-push-check.sh +77 -0
  254. package/pipeline/scripts/render-agent-log-cost.sh +149 -0
  255. package/pipeline/scripts/render-cost-summary.sh +137 -0
  256. package/pipeline/scripts/render-work-summary.sh +195 -0
  257. package/pipeline/scripts/repo-map.mjs +367 -0
  258. package/pipeline/scripts/run-aggregator.mjs +298 -0
  259. package/pipeline/scripts/scan-skills.sh +332 -0
  260. package/pipeline/scripts/search-logs.sh +291 -0
  261. package/pipeline/scripts/sign-skills.sh +67 -0
  262. package/pipeline/scripts/smoke-adapters.sh +207 -0
  263. package/pipeline/scripts/smoke-add-detail.sh +137 -0
  264. package/pipeline/scripts/smoke-agent-log-cost.sh +183 -0
  265. package/pipeline/scripts/smoke-agent-model-routing.sh +87 -0
  266. package/pipeline/scripts/smoke-bitbucket-contract.sh +223 -0
  267. package/pipeline/scripts/smoke-channels-flow.sh +130 -0
  268. package/pipeline/scripts/smoke-ci-workflows.sh +88 -0
  269. package/pipeline/scripts/smoke-clarify.sh +148 -0
  270. package/pipeline/scripts/smoke-commands-skills-parity.sh +87 -0
  271. package/pipeline/scripts/smoke-compliance-skills.sh +119 -0
  272. package/pipeline/scripts/smoke-cost-summary.sh +139 -0
  273. package/pipeline/scripts/smoke-cross-cli-behavior.sh +198 -0
  274. package/pipeline/scripts/smoke-cross-phase-cohesion.sh +128 -0
  275. package/pipeline/scripts/smoke-delete-flow.sh +151 -0
  276. package/pipeline/scripts/smoke-dev-critic.sh +144 -0
  277. package/pipeline/scripts/smoke-diff-explain.sh +128 -0
  278. package/pipeline/scripts/smoke-diff-risk.sh +161 -0
  279. package/pipeline/scripts/smoke-dynamic-skill-loading.sh +160 -0
  280. package/pipeline/scripts/smoke-eval-live.sh +136 -0
  281. package/pipeline/scripts/smoke-existing-discovery-gate.sh +71 -0
  282. package/pipeline/scripts/smoke-figma-android-parity.sh +148 -0
  283. package/pipeline/scripts/smoke-figma-config-schema.sh +144 -0
  284. package/pipeline/scripts/smoke-figma-credential-store.sh +105 -0
  285. package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +177 -0
  286. package/pipeline/scripts/smoke-figma-dispatch.sh +123 -0
  287. package/pipeline/scripts/smoke-figma-skill-import.sh +174 -0
  288. package/pipeline/scripts/smoke-figma-sync.sh +149 -0
  289. package/pipeline/scripts/smoke-identity-isolation.sh +70 -0
  290. package/pipeline/scripts/smoke-install-layout.sh +241 -0
  291. package/pipeline/scripts/smoke-install-leak-gate.sh +125 -0
  292. package/pipeline/scripts/smoke-issue-comment-template.sh +86 -0
  293. package/pipeline/scripts/smoke-issue-jira-triad.sh +120 -0
  294. package/pipeline/scripts/smoke-keychain.sh +158 -0
  295. package/pipeline/scripts/smoke-language-axis.sh +109 -0
  296. package/pipeline/scripts/smoke-lib-scripts.sh +395 -0
  297. package/pipeline/scripts/smoke-migrate-state.sh +102 -0
  298. package/pipeline/scripts/smoke-mode-dispatch-drift.sh +158 -0
  299. package/pipeline/scripts/smoke-multi-repo-integration.sh +116 -0
  300. package/pipeline/scripts/smoke-multi-repo-worktree.sh +61 -0
  301. package/pipeline/scripts/smoke-no-token-prompt.sh +69 -0
  302. package/pipeline/scripts/smoke-pat-audit.sh +107 -0
  303. package/pipeline/scripts/smoke-per-repo-memory.sh +156 -0
  304. package/pipeline/scripts/smoke-personal-data.sh +82 -0
  305. package/pipeline/scripts/smoke-phase-0-multi-repo.sh +170 -0
  306. package/pipeline/scripts/smoke-phase-6-multi.sh +79 -0
  307. package/pipeline/scripts/smoke-phase-banner.sh +101 -0
  308. package/pipeline/scripts/smoke-phase-tracker.sh +255 -0
  309. package/pipeline/scripts/smoke-phase0-bridge-contract.sh +241 -0
  310. package/pipeline/scripts/smoke-phase4-triage.sh +142 -0
  311. package/pipeline/scripts/smoke-plan-approval-gate.sh +71 -0
  312. package/pipeline/scripts/smoke-plan-safety.sh +139 -0
  313. package/pipeline/scripts/smoke-plan-todos.sh +193 -0
  314. package/pipeline/scripts/smoke-pr-review-actions.sh +152 -0
  315. package/pipeline/scripts/smoke-pre-commit.sh +138 -0
  316. package/pipeline/scripts/smoke-pref-migration.sh +224 -0
  317. package/pipeline/scripts/smoke-prefs-language.sh +134 -0
  318. package/pipeline/scripts/smoke-progress-contract.sh +118 -0
  319. package/pipeline/scripts/smoke-push-retry.sh +75 -0
  320. package/pipeline/scripts/smoke-readme-counts.sh +120 -0
  321. package/pipeline/scripts/smoke-repo-map.sh +300 -0
  322. package/pipeline/scripts/smoke-review-watch.sh +134 -0
  323. package/pipeline/scripts/smoke-run-aggregator.sh +216 -0
  324. package/pipeline/scripts/smoke-schema-validation.sh +173 -0
  325. package/pipeline/scripts/smoke-search.sh +187 -0
  326. package/pipeline/scripts/smoke-shadow-git.sh +175 -0
  327. package/pipeline/scripts/smoke-skill-authoring.sh +142 -0
  328. package/pipeline/scripts/smoke-skill-language.sh +83 -0
  329. package/pipeline/scripts/smoke-skill-manifest.sh +138 -0
  330. package/pipeline/scripts/smoke-skill-scan.sh +198 -0
  331. package/pipeline/scripts/smoke-stack-swap.sh +132 -0
  332. package/pipeline/scripts/smoke-subagent-validators.sh +105 -0
  333. package/pipeline/scripts/smoke-sync-delegation.sh +74 -0
  334. package/pipeline/scripts/smoke-sync-parity.sh +92 -0
  335. package/pipeline/scripts/smoke-tasklist-ordering.sh +111 -0
  336. package/pipeline/scripts/smoke-telemetry.sh +147 -0
  337. package/pipeline/scripts/smoke-test-gap.sh +183 -0
  338. package/pipeline/scripts/smoke-token-budget.sh +67 -0
  339. package/pipeline/scripts/smoke-tracker-contract.sh +129 -0
  340. package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +65 -0
  341. package/pipeline/scripts/smoke-triage-memory.sh +174 -0
  342. package/pipeline/scripts/smoke-url-enrichment.sh +70 -0
  343. package/pipeline/scripts/smoke-validator-contradiction.sh +67 -0
  344. package/pipeline/scripts/smoke-vercel-deploy-redact.sh +129 -0
  345. package/pipeline/scripts/smoke-wiki-integration.sh +146 -0
  346. package/pipeline/scripts/smoke-work-summary.sh +163 -0
  347. package/pipeline/scripts/smoke-worktree-path-convention.sh +86 -0
  348. package/pipeline/scripts/smoke-write-state.sh +115 -0
  349. package/pipeline/scripts/stack-swap.sh +182 -0
  350. package/pipeline/scripts/sync-figma-source.sh +228 -0
  351. package/pipeline/scripts/sync-parity-check.sh +135 -0
  352. package/pipeline/scripts/test-gap-rules/android.json +25 -0
  353. package/pipeline/scripts/test-gap-rules/ios.json +29 -0
  354. package/pipeline/scripts/test-gap-rules/node.json +17 -0
  355. package/pipeline/scripts/test-gap-rules/python.json +19 -0
  356. package/pipeline/scripts/test-gap-scan.mjs +343 -0
  357. package/pipeline/scripts/token-budget-report.mjs +145 -0
  358. package/pipeline/scripts/triage-memory.mjs +258 -0
  359. package/pipeline/scripts/ui-tree-dumper.swift +122 -0
  360. package/pipeline/scripts/uninstall.mjs +331 -0
  361. package/pipeline/scripts/update-issue-progress.sh +146 -0
  362. package/pipeline/scripts/validate-analysis.mjs +132 -0
  363. package/pipeline/scripts/validate-diff-risk.mjs +117 -0
  364. package/pipeline/scripts/validate-planning.mjs +180 -0
  365. package/pipeline/scripts/validate-reviewer.mjs +131 -0
  366. package/pipeline/scripts/validate-schemas.mjs +88 -0
  367. package/pipeline/scripts/validate-test-gap.mjs +90 -0
  368. package/pipeline/scripts/validate-triage.mjs +175 -0
  369. package/pipeline/scripts/verify-skills.sh +126 -0
  370. package/pipeline/scripts/write-state.mjs +175 -0
  371. package/pipeline/skills/.skill-manifest.json +779 -0
  372. package/pipeline/skills/.skills-index.json +1771 -0
  373. package/pipeline/skills/figma-android/README.md +36 -0
  374. package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +62 -0
  375. package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +158 -0
  376. package/pipeline/skills/figma-android/figma-component-test/SKILL.md +120 -0
  377. package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +35 -0
  378. package/pipeline/skills/figma-android/figma-to-component/SKILL.md +124 -0
  379. package/pipeline/skills/figma-common/README.md +57 -0
  380. package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +277 -0
  381. package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +498 -0
  382. package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +283 -0
  383. package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +362 -0
  384. package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +206 -0
  385. package/pipeline/skills/figma-common/figma-commit/REVIEW.md +337 -0
  386. package/pipeline/skills/figma-common/figma-commit/SKILL.md +211 -0
  387. package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +218 -0
  388. package/pipeline/skills/figma-common/figma-component-start/SKILL.md +246 -0
  389. package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +73 -0
  390. package/pipeline/skills/figma-common/figma-fix/SKILL.md +316 -0
  391. package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +542 -0
  392. package/pipeline/skills/figma-common/figma-issue/SKILL.md +745 -0
  393. package/pipeline/skills/figma-common/figma-iterate/SKILL.md +203 -0
  394. package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +1015 -0
  395. package/pipeline/skills/figma-common/figma-mend/SKILL.md +331 -0
  396. package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +398 -0
  397. package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +104 -0
  398. package/pipeline/skills/figma-common/figma-review/SKILL.md +395 -0
  399. package/pipeline/skills/figma-common/figma-setup/SKILL.md +514 -0
  400. package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +592 -0
  401. package/pipeline/skills/figma-common/figma-skip/SKILL.md +129 -0
  402. package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +104 -0
  403. package/pipeline/skills/figma-common/figma-utility/SKILL.md +274 -0
  404. package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +808 -0
  405. package/pipeline/skills/figma-common/figma-validate/SKILL.md +633 -0
  406. package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +711 -0
  407. package/pipeline/skills/figma-common/performance-review-next/SKILL.md +233 -0
  408. package/pipeline/skills/figma-common/performance-start/SKILL.md +425 -0
  409. package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +706 -0
  410. package/pipeline/skills/figma-common/performance-tour/SKILL.md +418 -0
  411. package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +67 -0
  412. package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +178 -0
  413. package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +184 -0
  414. package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +219 -0
  415. package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +274 -0
  416. package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +401 -0
  417. package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +57 -0
  418. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +307 -0
  419. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +119 -0
  420. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +174 -0
  421. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +333 -0
  422. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +368 -0
  423. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +393 -0
  424. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +617 -0
  425. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +352 -0
  426. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +337 -0
  427. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +206 -0
  428. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +235 -0
  429. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +214 -0
  430. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +871 -0
  431. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +156 -0
  432. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +175 -0
  433. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +176 -0
  434. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +333 -0
  435. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +412 -0
  436. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +336 -0
  437. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +695 -0
  438. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +332 -0
  439. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +380 -0
  440. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +262 -0
  441. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +482 -0
  442. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +274 -0
  443. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +636 -0
  444. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +142 -0
  445. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +547 -0
  446. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +39 -0
  447. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +659 -0
  448. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +580 -0
  449. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +51 -0
  450. package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +129 -0
  451. package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +64 -0
  452. package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +531 -0
  453. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +89 -0
  454. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +155 -0
  455. package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +196 -0
  456. package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +57 -0
  457. package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +89 -0
  458. package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +227 -0
  459. package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +157 -0
  460. package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +90 -0
  461. package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +116 -0
  462. package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +153 -0
  463. package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +130 -0
  464. package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +218 -0
  465. package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +188 -0
  466. package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +93 -0
  467. package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +98 -0
  468. package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +261 -0
  469. package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +147 -0
  470. package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +182 -0
  471. package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +185 -0
  472. package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +609 -0
  473. package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +332 -0
  474. package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +261 -0
  475. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +184 -0
  476. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +188 -0
  477. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +768 -0
  478. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +191 -0
  479. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +420 -0
  480. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.json +94 -0
  481. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +336 -0
  482. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +391 -0
  483. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +292 -0
  484. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +1 -0
  485. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +93 -0
  486. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +299 -0
  487. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +343 -0
  488. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +206 -0
  489. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +149 -0
  490. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +281 -0
  491. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +332 -0
  492. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +176 -0
  493. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +98 -0
  494. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +298 -0
  495. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +195 -0
  496. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +1298 -0
  497. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +228 -0
  498. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +1089 -0
  499. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +141 -0
  500. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +106 -0
  501. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +162 -0
  502. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +105 -0
  503. package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +179 -0
  504. package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +260 -0
  505. package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +260 -0
  506. package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +86 -0
  507. package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +321 -0
  508. package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +1470 -0
  509. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +176 -0
  510. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +147 -0
  511. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +629 -0
  512. package/pipeline/skills/shared/README.md +212 -0
  513. package/pipeline/skills/shared/core/apple-archive-compliance/SKILL.md +315 -0
  514. package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +348 -0
  515. package/pipeline/skills/shared/core/multi-agent/SKILL.md +944 -0
  516. package/pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md +51 -0
  517. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +300 -0
  518. package/pipeline/skills/shared/core/multi-agent-delete/SKILL.md +63 -0
  519. package/pipeline/skills/shared/core/multi-agent-dev/SKILL.md +64 -0
  520. package/pipeline/skills/shared/core/multi-agent-dev-autopilot/SKILL.md +56 -0
  521. package/pipeline/skills/shared/core/multi-agent-dev-local/SKILL.md +36 -0
  522. package/pipeline/skills/shared/core/multi-agent-dev-local-autopilot/SKILL.md +42 -0
  523. package/pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md +66 -0
  524. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +292 -0
  525. package/pipeline/skills/shared/core/multi-agent-issue/SKILL.md +35 -0
  526. package/pipeline/skills/shared/core/multi-agent-jira/SKILL.md +38 -0
  527. package/pipeline/skills/shared/core/multi-agent-kill/SKILL.md +41 -0
  528. package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +87 -0
  529. package/pipeline/skills/shared/core/multi-agent-local/SKILL.md +37 -0
  530. package/pipeline/skills/shared/core/multi-agent-local-autopilot/SKILL.md +53 -0
  531. package/pipeline/skills/shared/core/multi-agent-log/SKILL.md +28 -0
  532. package/pipeline/skills/shared/core/multi-agent-manual-test/SKILL.md +47 -0
  533. package/pipeline/skills/shared/core/multi-agent-purge/SKILL.md +42 -0
  534. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +191 -0
  535. package/pipeline/skills/shared/core/multi-agent-resume/SKILL.md +31 -0
  536. package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +61 -0
  537. package/pipeline/skills/shared/core/multi-agent-scan/SKILL.md +61 -0
  538. package/pipeline/skills/shared/core/multi-agent-search/SKILL.md +62 -0
  539. package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +309 -0
  540. package/pipeline/skills/shared/core/multi-agent-stack/SKILL.md +55 -0
  541. package/pipeline/skills/shared/core/multi-agent-status/SKILL.md +41 -0
  542. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +184 -0
  543. package/pipeline/skills/shared/core/multi-agent-test/SKILL.md +44 -0
  544. package/pipeline/skills/shared/core/multi-agent-update/SKILL.md +34 -0
  545. package/pipeline/skills/shared/external/accessibility-compliance-accessibility-audit/SKILL.md +45 -0
  546. package/pipeline/skills/shared/external/agentflow/SKILL.md +199 -0
  547. package/pipeline/skills/shared/external/alarmkit/SKILL.md +438 -0
  548. package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +584 -0
  549. package/pipeline/skills/shared/external/android-architecture/SKILL.md +407 -0
  550. package/pipeline/skills/shared/external/android-jetpack-compose-expert/SKILL.md +153 -0
  551. package/pipeline/skills/shared/external/android-performance/SKILL.md +736 -0
  552. package/pipeline/skills/shared/external/android-security/SKILL.md +577 -0
  553. package/pipeline/skills/shared/external/android_ui_verification/SKILL.md +66 -0
  554. package/pipeline/skills/shared/external/api-patterns/SKILL.md +85 -0
  555. package/pipeline/skills/shared/external/api-security-best-practices/SKILL.md +910 -0
  556. package/pipeline/skills/shared/external/app-clips/SKILL.md +436 -0
  557. package/pipeline/skills/shared/external/app-intents/SKILL.md +489 -0
  558. package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +1076 -0
  559. package/pipeline/skills/shared/external/app-store-changelog/SKILL.md +75 -0
  560. package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +409 -0
  561. package/pipeline/skills/shared/external/app-store-review/SKILL.md +411 -0
  562. package/pipeline/skills/shared/external/app-store-review/references/code-signing.md +259 -0
  563. package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +90 -0
  564. package/pipeline/skills/shared/external/app-store-review/references/rejection-patterns.md +152 -0
  565. package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +118 -0
  566. package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +500 -0
  567. package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +425 -0
  568. package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +344 -0
  569. package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +508 -0
  570. package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +285 -0
  571. package/pipeline/skills/shared/external/architecture/SKILL.md +60 -0
  572. package/pipeline/skills/shared/external/authentication/SKILL.md +496 -0
  573. package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +211 -0
  574. package/pipeline/skills/shared/external/background-processing/SKILL.md +499 -0
  575. package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +390 -0
  576. package/pipeline/skills/shared/external/callkit-voip/SKILL.md +461 -0
  577. package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +425 -0
  578. package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +462 -0
  579. package/pipeline/skills/shared/external/clean-code/SKILL.md +94 -0
  580. package/pipeline/skills/shared/external/closed-loop-delivery/SKILL.md +116 -0
  581. package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +492 -0
  582. package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +461 -0
  583. package/pipeline/skills/shared/external/compose-components/SKILL.md +441 -0
  584. package/pipeline/skills/shared/external/compose-navigation/SKILL.md +436 -0
  585. package/pipeline/skills/shared/external/compose-testing/SKILL.md +527 -0
  586. package/pipeline/skills/shared/external/contacts-framework/SKILL.md +425 -0
  587. package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +409 -0
  588. package/pipeline/skills/shared/external/context-compression/SKILL.md +266 -0
  589. package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +491 -0
  590. package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +435 -0
  591. package/pipeline/skills/shared/external/core-motion/SKILL.md +388 -0
  592. package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +405 -0
  593. package/pipeline/skills/shared/external/core-nfc/SKILL.md +495 -0
  594. package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +420 -0
  595. package/pipeline/skills/shared/external/coreml/SKILL.md +458 -0
  596. package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +765 -0
  597. package/pipeline/skills/shared/external/css-modern/SKILL.md +467 -0
  598. package/pipeline/skills/shared/external/database-patterns/SKILL.md +335 -0
  599. package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +422 -0
  600. package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +387 -0
  601. package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +298 -0
  602. package/pipeline/skills/shared/external/debugging-strategies/SKILL.md +37 -0
  603. package/pipeline/skills/shared/external/device-integrity/SKILL.md +477 -0
  604. package/pipeline/skills/shared/external/docker-expert/SKILL.md +413 -0
  605. package/pipeline/skills/shared/external/energykit/SKILL.md +460 -0
  606. package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +541 -0
  607. package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +483 -0
  608. package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +326 -0
  609. package/pipeline/skills/shared/external/fastapi-pro/SKILL.md +190 -0
  610. package/pipeline/skills/shared/external/firebase/SKILL.md +61 -0
  611. package/pipeline/skills/shared/external/github-actions-templates/SKILL.md +348 -0
  612. package/pipeline/skills/shared/external/gradle-kotlin-dsl/SKILL.md +552 -0
  613. package/pipeline/skills/shared/external/healthkit/SKILL.md +498 -0
  614. package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +602 -0
  615. package/pipeline/skills/shared/external/help-skills/SKILL.md +166 -0
  616. package/pipeline/skills/shared/external/hig-components-content/SKILL.md +81 -0
  617. package/pipeline/skills/shared/external/hig-components-layout/SKILL.md +95 -0
  618. package/pipeline/skills/shared/external/hig-components-status/SKILL.md +82 -0
  619. package/pipeline/skills/shared/external/hig-components-system/SKILL.md +101 -0
  620. package/pipeline/skills/shared/external/hig-foundations/SKILL.md +94 -0
  621. package/pipeline/skills/shared/external/hig-inputs/SKILL.md +110 -0
  622. package/pipeline/skills/shared/external/hig-patterns/SKILL.md +99 -0
  623. package/pipeline/skills/shared/external/hig-platforms/SKILL.md +81 -0
  624. package/pipeline/skills/shared/external/hig-technologies/SKILL.md +125 -0
  625. package/pipeline/skills/shared/external/homekit-matter/SKILL.md +496 -0
  626. package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +455 -0
  627. package/pipeline/skills/shared/external/html-semantic/SKILL.md +301 -0
  628. package/pipeline/skills/shared/external/humanizer/SKILL.md +118 -0
  629. package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +301 -0
  630. package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +140 -0
  631. package/pipeline/skills/shared/external/ios-debugger-agent/SKILL.md +59 -0
  632. package/pipeline/skills/shared/external/ios-developer/SKILL.md +217 -0
  633. package/pipeline/skills/shared/external/ios-localization/SKILL.md +418 -0
  634. package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +627 -0
  635. package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +462 -0
  636. package/pipeline/skills/shared/external/ios-networking/SKILL.md +441 -0
  637. package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +862 -0
  638. package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -0
  639. package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +563 -0
  640. package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +1116 -0
  641. package/pipeline/skills/shared/external/ios-security/SKILL.md +496 -0
  642. package/pipeline/skills/shared/external/ios-security/references/app-review-guidelines.md +174 -0
  643. package/pipeline/skills/shared/external/ios-security/references/cryptokit-advanced.md +297 -0
  644. package/pipeline/skills/shared/external/ios-security/references/file-storage-patterns.md +354 -0
  645. package/pipeline/skills/shared/external/ios-security/references/privacy-manifest.md +117 -0
  646. package/pipeline/skills/shared/external/kotlin-coroutines-expert/SKILL.md +101 -0
  647. package/pipeline/skills/shared/external/live-activities/SKILL.md +500 -0
  648. package/pipeline/skills/shared/external/live-activities/references/live-activity-patterns.md +868 -0
  649. package/pipeline/skills/shared/external/macos-menubar-tuist-app/SKILL.md +109 -0
  650. package/pipeline/skills/shared/external/macos-spm-app-packaging/SKILL.md +110 -0
  651. package/pipeline/skills/shared/external/mapkit-location/SKILL.md +485 -0
  652. package/pipeline/skills/shared/external/mapkit-location/references/corelocation-patterns.md +730 -0
  653. package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +748 -0
  654. package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +479 -0
  655. package/pipeline/skills/shared/external/monorepo-architect/SKILL.md +64 -0
  656. package/pipeline/skills/shared/external/musickit-audio/SKILL.md +395 -0
  657. package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +363 -0
  658. package/pipeline/skills/shared/external/natural-language/SKILL.md +412 -0
  659. package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +311 -0
  660. package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +418 -0
  661. package/pipeline/skills/shared/external/nodejs-backend-patterns/SKILL.md +38 -0
  662. package/pipeline/skills/shared/external/observability-engineer/SKILL.md +235 -0
  663. package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +398 -0
  664. package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +254 -0
  665. package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +387 -0
  666. package/pipeline/skills/shared/external/pencilkit-drawing/references/paperkit-integration.md +376 -0
  667. package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +302 -0
  668. package/pipeline/skills/shared/external/permissionkit/SKILL.md +446 -0
  669. package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +435 -0
  670. package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +501 -0
  671. package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +701 -0
  672. package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +774 -0
  673. package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +869 -0
  674. package/pipeline/skills/shared/external/photos-camera-media/references/photospicker-patterns.md +597 -0
  675. package/pipeline/skills/shared/external/play-store-review/SKILL.md +350 -0
  676. package/pipeline/skills/shared/external/push-notifications/SKILL.md +501 -0
  677. package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +677 -0
  678. package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +745 -0
  679. package/pipeline/skills/shared/external/python-patterns/SKILL.md +383 -0
  680. package/pipeline/skills/shared/external/react-best-practices/SKILL.md +290 -0
  681. package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +479 -0
  682. package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +480 -0
  683. package/pipeline/skills/shared/external/rest-api-design/SKILL.md +386 -0
  684. package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +506 -0
  685. package/pipeline/skills/shared/external/room-database/SKILL.md +564 -0
  686. package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +483 -0
  687. package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +544 -0
  688. package/pipeline/skills/shared/external/speech-recognition/SKILL.md +485 -0
  689. package/pipeline/skills/shared/external/storekit/SKILL.md +478 -0
  690. package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +58 -0
  691. package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +755 -0
  692. package/pipeline/skills/shared/external/swift-charts/SKILL.md +487 -0
  693. package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +895 -0
  694. package/pipeline/skills/shared/external/swift-codable/SKILL.md +467 -0
  695. package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +408 -0
  696. package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +80 -0
  697. package/pipeline/skills/shared/external/swift-concurrency/references/swift-6-2-concurrency.md +233 -0
  698. package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +187 -0
  699. package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +341 -0
  700. package/pipeline/skills/shared/external/swift-concurrency-expert/SKILL.md +113 -0
  701. package/pipeline/skills/shared/external/swift-concurrency-pro/SKILL.md +124 -0
  702. package/pipeline/skills/shared/external/swift-concurrency-pro/references/actors.md +155 -0
  703. package/pipeline/skills/shared/external/swift-concurrency-pro/references/async-streams.md +67 -0
  704. package/pipeline/skills/shared/external/swift-concurrency-pro/references/bridging.md +52 -0
  705. package/pipeline/skills/shared/external/swift-concurrency-pro/references/bug-patterns.md +100 -0
  706. package/pipeline/skills/shared/external/swift-concurrency-pro/references/cancellation.md +107 -0
  707. package/pipeline/skills/shared/external/swift-concurrency-pro/references/diagnostics.md +70 -0
  708. package/pipeline/skills/shared/external/swift-concurrency-pro/references/hotspots.md +47 -0
  709. package/pipeline/skills/shared/external/swift-concurrency-pro/references/interop.md +129 -0
  710. package/pipeline/skills/shared/external/swift-concurrency-pro/references/new-features.md +224 -0
  711. package/pipeline/skills/shared/external/swift-concurrency-pro/references/structured.md +101 -0
  712. package/pipeline/skills/shared/external/swift-concurrency-pro/references/testing.md +218 -0
  713. package/pipeline/skills/shared/external/swift-concurrency-pro/references/unstructured.md +61 -0
  714. package/pipeline/skills/shared/external/swift-language/SKILL.md +498 -0
  715. package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +505 -0
  716. package/pipeline/skills/shared/external/swift-testing/SKILL.md +462 -0
  717. package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +504 -0
  718. package/pipeline/skills/shared/external/swift-testing-pro/SKILL.md +97 -0
  719. package/pipeline/skills/shared/external/swift-testing-pro/references/async-tests.md +252 -0
  720. package/pipeline/skills/shared/external/swift-testing-pro/references/core-rules.md +52 -0
  721. package/pipeline/skills/shared/external/swift-testing-pro/references/migrating-from-xctest.md +34 -0
  722. package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +318 -0
  723. package/pipeline/skills/shared/external/swift-testing-pro/references/writing-better-tests.md +254 -0
  724. package/pipeline/skills/shared/external/swiftdata/SKILL.md +334 -0
  725. package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +504 -0
  726. package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +975 -0
  727. package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +675 -0
  728. package/pipeline/skills/shared/external/swiftdata-pro/SKILL.md +102 -0
  729. package/pipeline/skills/shared/external/swiftdata-pro/references/class-inheritance.md +104 -0
  730. package/pipeline/skills/shared/external/swiftdata-pro/references/cloudkit.md +10 -0
  731. package/pipeline/skills/shared/external/swiftdata-pro/references/core-rules.md +20 -0
  732. package/pipeline/skills/shared/external/swiftdata-pro/references/indexing.md +27 -0
  733. package/pipeline/skills/shared/external/swiftdata-pro/references/predicates.md +73 -0
  734. package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +503 -0
  735. package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +821 -0
  736. package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +553 -0
  737. package/pipeline/skills/shared/external/swiftui-expert-skill/SKILL.md +102 -0
  738. package/pipeline/skills/shared/external/swiftui-expert-skill/references/accessibility-patterns.md +215 -0
  739. package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-advanced.md +403 -0
  740. package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-basics.md +284 -0
  741. package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-transitions.md +326 -0
  742. package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts-accessibility.md +135 -0
  743. package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts.md +602 -0
  744. package/pipeline/skills/shared/external/swiftui-expert-skill/references/image-optimization.md +203 -0
  745. package/pipeline/skills/shared/external/swiftui-expert-skill/references/latest-apis.md +464 -0
  746. package/pipeline/skills/shared/external/swiftui-expert-skill/references/layout-best-practices.md +266 -0
  747. package/pipeline/skills/shared/external/swiftui-expert-skill/references/liquid-glass.md +416 -0
  748. package/pipeline/skills/shared/external/swiftui-expert-skill/references/list-patterns.md +394 -0
  749. package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-scenes.md +318 -0
  750. package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-views.md +357 -0
  751. package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-window-styling.md +303 -0
  752. package/pipeline/skills/shared/external/swiftui-expert-skill/references/performance-patterns.md +403 -0
  753. package/pipeline/skills/shared/external/swiftui-expert-skill/references/scroll-patterns.md +293 -0
  754. package/pipeline/skills/shared/external/swiftui-expert-skill/references/sheet-navigation-patterns.md +363 -0
  755. package/pipeline/skills/shared/external/swiftui-expert-skill/references/state-management.md +417 -0
  756. package/pipeline/skills/shared/external/swiftui-expert-skill/references/view-structure.md +389 -0
  757. package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +450 -0
  758. package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +425 -0
  759. package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +336 -0
  760. package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +97 -0
  761. package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +69 -0
  762. package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +99 -0
  763. package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +147 -0
  764. package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +98 -0
  765. package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +262 -0
  766. package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +207 -0
  767. package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +177 -0
  768. package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +169 -0
  769. package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +178 -0
  770. package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +371 -0
  771. package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +486 -0
  772. package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +1097 -0
  773. package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +780 -0
  774. package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +696 -0
  775. package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +487 -0
  776. package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +46 -0
  777. package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +29 -0
  778. package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +33 -0
  779. package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +52 -0
  780. package/pipeline/skills/shared/external/swiftui-performance-audit/SKILL.md +114 -0
  781. package/pipeline/skills/shared/external/swiftui-pro/SKILL.md +108 -0
  782. package/pipeline/skills/shared/external/swiftui-pro/references/accessibility.md +13 -0
  783. package/pipeline/skills/shared/external/swiftui-pro/references/api.md +39 -0
  784. package/pipeline/skills/shared/external/swiftui-pro/references/data.md +43 -0
  785. package/pipeline/skills/shared/external/swiftui-pro/references/design.md +31 -0
  786. package/pipeline/skills/shared/external/swiftui-pro/references/hygiene.md +9 -0
  787. package/pipeline/skills/shared/external/swiftui-pro/references/navigation.md +14 -0
  788. package/pipeline/skills/shared/external/swiftui-pro/references/performance.md +46 -0
  789. package/pipeline/skills/shared/external/swiftui-pro/references/swift.md +56 -0
  790. package/pipeline/skills/shared/external/swiftui-pro/references/views.md +35 -0
  791. package/pipeline/skills/shared/external/swiftui-ui-patterns/SKILL.md +103 -0
  792. package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +428 -0
  793. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +534 -0
  794. package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +948 -0
  795. package/pipeline/skills/shared/external/swiftui-view-refactor/SKILL.md +210 -0
  796. package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +273 -0
  797. package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +151 -0
  798. package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +95 -0
  799. package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +51 -0
  800. package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +111 -0
  801. package/pipeline/skills/shared/external/tailwind-css/SKILL.md +309 -0
  802. package/pipeline/skills/shared/external/testing-backend/SKILL.md +393 -0
  803. package/pipeline/skills/shared/external/tipkit/SKILL.md +494 -0
  804. package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +782 -0
  805. package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +336 -0
  806. package/pipeline/skills/shared/external/vision-framework/SKILL.md +475 -0
  807. package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +736 -0
  808. package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +738 -0
  809. package/pipeline/skills/shared/external/vue-composition/SKILL.md +371 -0
  810. package/pipeline/skills/shared/external/weatherkit/SKILL.md +410 -0
  811. package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +567 -0
  812. package/pipeline/skills/shared/external/web-accessibility/SKILL.md +373 -0
  813. package/pipeline/skills/shared/external/web-performance/SKILL.md +345 -0
  814. package/pipeline/skills/shared/external/web-testing/SKILL.md +385 -0
  815. package/pipeline/skills/shared/external/widgetkit/SKILL.md +497 -0
  816. package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +871 -0
  817. package/pipeline/skills/skills-index.md +205 -0
@@ -0,0 +1,1137 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/mmerterden/multi-agent-pipeline/pipeline/schemas/prefs.schema.json",
4
+ "title": "Multi-Agent Pipeline \u2014 multi-agent-preferences.json",
5
+ "description": "User-level preferences. Written to $HOME/.claude/multi-agent-preferences.json. Never committed. Never synced to the open-source repo \u2014 may contain personal data.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schemaVersion",
10
+ "global",
11
+ "projects"
12
+ ],
13
+ "properties": {
14
+ "schemaVersion": {
15
+ "type": "string",
16
+ "enum": [
17
+ "2.0.0",
18
+ "2.1.0",
19
+ "2.2.0",
20
+ "2.3.0"
21
+ ],
22
+ "description": "v2.0.0: pre-v3.7. v2.1.0: v3.7+ adds identities[].servicePatMap, platformIdentityRouting, recentGroups, recentBranches, serviceStatus, settings, expanded keychainMapping. v2.2.0: v6.0.0 formalizes v5.7 / v5.8 additions (reportChannels, reportContent with technicalAnalysis, wikiScope, autopilotReportTimeoutSeconds) that had been running as 2.1.0 sub-migrations without a proper version bump."
23
+ },
24
+ "global": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "properties": {
28
+ "identities": {
29
+ "type": "array",
30
+ "description": "Git identities the user can pick from in Phase 0. v2.1.0+: each identity may own per-service PAT keys via servicePatMap.",
31
+ "items": {
32
+ "type": "object",
33
+ "additionalProperties": false,
34
+ "required": [
35
+ "name",
36
+ "email"
37
+ ],
38
+ "properties": {
39
+ "name": {
40
+ "type": "string"
41
+ },
42
+ "email": {
43
+ "type": "string",
44
+ "format": "email"
45
+ },
46
+ "username": {
47
+ "type": "string",
48
+ "description": "SCM username (optional)."
49
+ },
50
+ "isDefault": {
51
+ "type": "boolean"
52
+ },
53
+ "servicePatMap": {
54
+ "type": "object",
55
+ "additionalProperties": false,
56
+ "description": "v2.1.0+. Maps a service name to the Keychain key name this identity owns for that service. Enables cross-identity isolation \u2014 corporate identity's Jira PAT is not accidentally used for personal repos.",
57
+ "properties": {
58
+ "jira": {
59
+ "type": "string"
60
+ },
61
+ "bitbucket": {
62
+ "type": "string"
63
+ },
64
+ "github": {
65
+ "type": "string"
66
+ },
67
+ "confluence": {
68
+ "type": "string"
69
+ },
70
+ "figma": {
71
+ "type": "string"
72
+ },
73
+ "figma_mcp": {
74
+ "type": "string"
75
+ },
76
+ "firebase": {
77
+ "type": "string",
78
+ "description": "Firebase JSON (base64-encoded). project_id is parsed from the decoded JSON \u2014 no separate firebase_project entry."
79
+ },
80
+ "fortify": {
81
+ "type": "string"
82
+ },
83
+ "jenkins": {
84
+ "type": "string"
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }
90
+ },
91
+ "gitIdentities": {
92
+ "type": "array",
93
+ "deprecated": true,
94
+ "description": "DEPRECATED in v2.1.0 \u2014 renamed to 'identities'. Migration script converts automatically. Kept in schema temporarily for migration compatibility.",
95
+ "items": {
96
+ "type": "object",
97
+ "additionalProperties": true
98
+ }
99
+ },
100
+ "keychainMapping": {
101
+ "type": "object",
102
+ "additionalProperties": false,
103
+ "description": "Maps logical token names to actual Keychain item names. Pipeline looks up tokens via `security find-generic-password -s <mapped-name>` (or `pipeline/lib/credential-store.sh get` cross-platform). 12 services covered: jira, bitbucket, bitbucket_token, bitbucket_user, github, confluence, figma, figma_mcp, fortify, firebase, jenkins, npm.",
104
+ "properties": {
105
+ "jira": {
106
+ "type": [
107
+ "string",
108
+ "null"
109
+ ]
110
+ },
111
+ "bitbucket": {
112
+ "type": [
113
+ "string",
114
+ "null"
115
+ ],
116
+ "description": "Legacy alias for bitbucket_token."
117
+ },
118
+ "bitbucket_token": {
119
+ "type": [
120
+ "string",
121
+ "null"
122
+ ]
123
+ },
124
+ "bitbucket_user": {
125
+ "type": [
126
+ "string",
127
+ "null"
128
+ ]
129
+ },
130
+ "github": {
131
+ "type": [
132
+ "string",
133
+ "null"
134
+ ]
135
+ },
136
+ "confluence": {
137
+ "type": [
138
+ "string",
139
+ "null"
140
+ ]
141
+ },
142
+ "figma": {
143
+ "type": [
144
+ "string",
145
+ "null"
146
+ ]
147
+ },
148
+ "figma_mcp": {
149
+ "type": [
150
+ "string",
151
+ "null"
152
+ ]
153
+ },
154
+ "fortify": {
155
+ "type": [
156
+ "string",
157
+ "null"
158
+ ]
159
+ },
160
+ "firebase": {
161
+ "type": [
162
+ "string",
163
+ "null"
164
+ ],
165
+ "description": "Firebase JSON (base64-encoded). project_id is parsed from the decoded JSON."
166
+ },
167
+ "jenkins": {
168
+ "type": [
169
+ "string",
170
+ "null"
171
+ ]
172
+ },
173
+ "npm": {
174
+ "type": [
175
+ "string",
176
+ "null"
177
+ ],
178
+ "description": "NPM registry token (npm.pkg.github.com or npmjs.com). Used by package publish flow."
179
+ }
180
+ }
181
+ },
182
+ "platformIdentityRouting": {
183
+ "type": "object",
184
+ "description": "v2.1.0+. Maps repo URL glob patterns to identity names. Used in Phase 0 to auto-select git identity + PAT based on repo origin. Prevents corporate identity leaking into personal repos and vice versa.",
185
+ "additionalProperties": {
186
+ "type": "string",
187
+ "description": "An identity name present in identities[]."
188
+ },
189
+ "examples": [
190
+ {
191
+ "bitbucket.company.com/*": "work",
192
+ "github.com/mmerterden/*": "personal"
193
+ }
194
+ ]
195
+ },
196
+ "recentProjects": {
197
+ "type": "array",
198
+ "description": "v2.1.0+ structured form. Last-used-first LRU of project slugs.",
199
+ "items": {
200
+ "oneOf": [
201
+ {
202
+ "type": "string"
203
+ },
204
+ {
205
+ "type": "object",
206
+ "additionalProperties": false,
207
+ "required": [
208
+ "path"
209
+ ],
210
+ "properties": {
211
+ "path": {
212
+ "type": "string"
213
+ },
214
+ "label": {
215
+ "type": "string"
216
+ },
217
+ "count": {
218
+ "type": "integer",
219
+ "minimum": 0
220
+ },
221
+ "lastUsed": {
222
+ "type": "string",
223
+ "format": "date-time"
224
+ }
225
+ }
226
+ }
227
+ ]
228
+ },
229
+ "maxItems": 20
230
+ },
231
+ "recentBranches": {
232
+ "type": "object",
233
+ "description": "v2.1.0+. Per-project recent branch LRU. Keys are project paths or slugs. TTL 15 days (settings.branchTtlDays).",
234
+ "additionalProperties": {
235
+ "type": "array",
236
+ "items": {
237
+ "type": "object",
238
+ "additionalProperties": false,
239
+ "required": [
240
+ "branch"
241
+ ],
242
+ "properties": {
243
+ "branch": {
244
+ "type": "string"
245
+ },
246
+ "count": {
247
+ "type": "integer",
248
+ "minimum": 0
249
+ },
250
+ "lastUsed": {
251
+ "type": "string",
252
+ "format": "date-time"
253
+ }
254
+ }
255
+ },
256
+ "maxItems": 10
257
+ }
258
+ },
259
+ "recentGroups": {
260
+ "type": "array",
261
+ "description": "v2.1.0+. LRU of multi-repo selection groups. Each group is a set of repo paths chosen together for multi-repo tasks. Max 10.",
262
+ "items": {
263
+ "type": "object",
264
+ "additionalProperties": false,
265
+ "required": [
266
+ "repos"
267
+ ],
268
+ "properties": {
269
+ "label": {
270
+ "type": "string",
271
+ "description": "Optional human-readable name."
272
+ },
273
+ "repos": {
274
+ "type": "array",
275
+ "items": {
276
+ "type": "string"
277
+ },
278
+ "minItems": 2,
279
+ "maxItems": 10
280
+ },
281
+ "count": {
282
+ "type": "integer",
283
+ "minimum": 0
284
+ },
285
+ "lastUsed": {
286
+ "type": "string",
287
+ "format": "date-time"
288
+ }
289
+ }
290
+ },
291
+ "maxItems": 10
292
+ },
293
+ "multiRepoIntegrationHosts": {
294
+ "type": "array",
295
+ "description": "v5.6.0+. Learn-once registry of host projects that build together with a multi-repo combo (codegen producer \u2192 consumer + host integration project). Pipeline checks this registry in Phase 6 before commit; on match, auto-runs the host build. On miss for a \u22652-repo task, prompts the user once and persists the answer. See refs/multi-repo-integration-build.md for the full contract.",
296
+ "items": {
297
+ "type": "object",
298
+ "additionalProperties": false,
299
+ "required": [
300
+ "repoSet"
301
+ ],
302
+ "properties": {
303
+ "repoSet": {
304
+ "type": "array",
305
+ "description": "Sorted array of repo names (just the basenames, not full paths) that trigger this host build when touched together.",
306
+ "items": {
307
+ "type": "string"
308
+ },
309
+ "minItems": 2
310
+ },
311
+ "noHost": {
312
+ "type": "boolean",
313
+ "description": "True if the user explicitly said this combo has no host project. Presence of this field with true skips the build step entirely; other fields may be omitted."
314
+ },
315
+ "hostPath": {
316
+ "type": "string",
317
+ "description": "Absolute path to the host project that integrates the repoSet via submodules or package dependencies."
318
+ },
319
+ "platform": {
320
+ "type": "string",
321
+ "enum": [
322
+ "ios",
323
+ "android",
324
+ "mixed"
325
+ ]
326
+ },
327
+ "hostScheme": {
328
+ "type": "string",
329
+ "description": "iOS: xcodebuild scheme. Android: gradle module."
330
+ },
331
+ "submodulePaths": {
332
+ "type": "array",
333
+ "description": "Relative submodule paths inside hostPath that must be refreshed before building.",
334
+ "items": {
335
+ "type": "string"
336
+ }
337
+ },
338
+ "resolveCommand": {
339
+ "type": "string",
340
+ "description": "Shell command run inside hostPath to flush package-manager caches (e.g. xcodebuild -resolvePackageDependencies)."
341
+ },
342
+ "buildCommand": {
343
+ "type": "string",
344
+ "description": "Shell command run inside hostPath to build the integration scheme/module. Pipeline greps stderr for 'error:' / 'FAILURE:' lines."
345
+ },
346
+ "lastUsed": {
347
+ "type": "string",
348
+ "format": "date-time"
349
+ },
350
+ "count": {
351
+ "type": "integer",
352
+ "minimum": 0,
353
+ "description": "How many times this entry has fired. Used by autopilot to decide confidence level."
354
+ },
355
+ "lastResult": {
356
+ "type": "string",
357
+ "enum": [
358
+ "success",
359
+ "failed",
360
+ "skipped"
361
+ ]
362
+ }
363
+ }
364
+ },
365
+ "maxItems": 20
366
+ },
367
+ "serviceStatus": {
368
+ "type": "object",
369
+ "description": "v2.1.0+. Ephemeral per-service reachability cache. TTL 5 minutes (settings.serviceStatusCacheSeconds). Each service is independent \u2014 Jira may be reachable while Bitbucket is not.",
370
+ "additionalProperties": {
371
+ "type": "object",
372
+ "additionalProperties": false,
373
+ "required": [
374
+ "ok",
375
+ "checkedAt"
376
+ ],
377
+ "properties": {
378
+ "ok": {
379
+ "type": "boolean"
380
+ },
381
+ "checkedAt": {
382
+ "type": "string",
383
+ "format": "date-time"
384
+ },
385
+ "error": {
386
+ "type": "string",
387
+ "description": "Optional last-error message if ok=false."
388
+ }
389
+ }
390
+ }
391
+ },
392
+ "settings": {
393
+ "type": "object",
394
+ "additionalProperties": false,
395
+ "description": "v2.1.0+. Tunable behavior knobs. Defaults are used when missing.",
396
+ "properties": {
397
+ "branchTtlDays": {
398
+ "type": "integer",
399
+ "minimum": 1,
400
+ "maximum": 365,
401
+ "default": 15,
402
+ "description": "How many days a branch stays visible in recentBranches picker before being filtered."
403
+ },
404
+ "pushRetryMax": {
405
+ "type": "integer",
406
+ "minimum": 1,
407
+ "maximum": 20,
408
+ "default": 5,
409
+ "description": "Phase 6 push-must-succeed rebase-retry count before prompting user."
410
+ },
411
+ "buildRetryMax": {
412
+ "type": "integer",
413
+ "minimum": 1,
414
+ "maximum": 10,
415
+ "default": 3,
416
+ "description": "Phase 3 build retry count before prompting user."
417
+ },
418
+ "serviceStatusCacheSeconds": {
419
+ "type": "integer",
420
+ "minimum": 60,
421
+ "maximum": 3600,
422
+ "default": 300,
423
+ "description": "Per-service reachability cache TTL (seconds)."
424
+ },
425
+ "repoScanDays": {
426
+ "type": "integer",
427
+ "minimum": 7,
428
+ "maximum": 365,
429
+ "default": 90,
430
+ "description": "Bitbucket/GitHub API repo-discovery filter: show repos active in the last N days."
431
+ },
432
+ "identityRoutingEnabled": {
433
+ "type": "boolean",
434
+ "default": false,
435
+ "description": "When true, Phase 0 uses platformIdentityRouting to auto-select identity. When false, shows the identity picker."
436
+ },
437
+ "multiRepoEnabled": {
438
+ "type": "boolean",
439
+ "default": false,
440
+ "description": "When true, Phase 0 project picker allows multi-select. When false, single-select only."
441
+ },
442
+ "pushMustSucceed": {
443
+ "type": "boolean",
444
+ "default": true,
445
+ "description": "Phase 6 policy. When true, commit + push with rebase-retry up to pushRetryMax. When false, single push attempt, pause on fail."
446
+ }
447
+ }
448
+ },
449
+ "defaultJiraKey": {
450
+ "type": "string",
451
+ "description": "Default Jira project key used for placeholder replacement."
452
+ },
453
+ "hosts": {
454
+ "type": "object",
455
+ "additionalProperties": false,
456
+ "description": "Corporate service hosts used by Jira / Confluence / Bitbucket / email-domain placeholders. Collected inline during Token Save Flow (Step 3.5) when a hosted-service token is added for the first time. Per-user, never committed \u2014 lives in ~/.claude/multi-agent-preferences.json only.",
457
+ "properties": {
458
+ "jira": {
459
+ "type": "string",
460
+ "description": "Jira host without scheme, e.g. jira.example.com. Resolves {JIRA_HOST}."
461
+ },
462
+ "confluence": {
463
+ "type": "string",
464
+ "description": "Confluence host without scheme, e.g. confluence.example.com. Resolves {CONFLUENCE_HOST}."
465
+ },
466
+ "bitbucket": {
467
+ "type": "string",
468
+ "description": "Bitbucket Server host without scheme, e.g. bitbucket.example.com. Resolves {BITBUCKET_HOST}."
469
+ },
470
+ "fortify": {
471
+ "type": "string",
472
+ "description": "Fortify SSC host without scheme, e.g. ssc.example.com. Used by Phase 0 Step 1b URL enrichment to validate pasted Fortify URLs and for direct SSC REST API calls. Resolves {FORTIFY_HOST}."
473
+ },
474
+ "corpDomain": {
475
+ "type": "string",
476
+ "description": "Corporate email / cookie domain, e.g. example.com. Resolves {CORP_DOMAIN}."
477
+ }
478
+ }
479
+ },
480
+ "reportChannels": {
481
+ "type": "object",
482
+ "additionalProperties": false,
483
+ "description": "v5.7+ \u2014 Phase 7 / /multi-agent:channels kanal se\u00e7imi default'lar\u0131. Multi-select men\u00fcde tick'li gelecek kanallar. Her kanal ba\u011f\u0131ms\u0131z boolean. Autopilot Phase 7'de ALWAYS pauses (30-min timeout) \u2014 bu de\u011ferler sadece men\u00fcn\u00fcn \u00f6nceden se\u00e7ili halini belirler.",
484
+ "properties": {
485
+ "pr": {
486
+ "type": "boolean",
487
+ "default": true,
488
+ "description": "PR description update (replace/append). Default ON \u2014 en yayg\u0131n kanal."
489
+ },
490
+ "jira": {
491
+ "type": "boolean",
492
+ "default": true,
493
+ "description": "Jira comment on linked issue. Default ON \u2014 task'a jiraId varsa tick'li gelir."
494
+ },
495
+ "confluence": {
496
+ "type": "boolean",
497
+ "default": false,
498
+ "description": "Confluence page creation. Default OFF \u2014 bir kez parent page se\u00e7ince LRU'dan \u00f6ner."
499
+ },
500
+ "wiki": {
501
+ "type": "boolean",
502
+ "default": false,
503
+ "description": "Component wiki pages (Case A scope multi-select). Default OFF \u2014 taskType=component + figmaConfig.wiki.enabled gerekli, yoksa men\u00fcde greyed out."
504
+ }
505
+ },
506
+ "default": {
507
+ "pr": true,
508
+ "jira": true,
509
+ "confluence": false,
510
+ "wiki": false
511
+ }
512
+ },
513
+ "reportContent": {
514
+ "type": "object",
515
+ "additionalProperties": false,
516
+ "description": "v5.7+ \u2014 Phase 7 / /multi-agent:channels i\u00e7erik se\u00e7imi default'lar\u0131. Multi-select men\u00fcde tick'li gelecek content source'lar\u0131.",
517
+ "properties": {
518
+ "normalAnalysis": {
519
+ "type": "boolean",
520
+ "default": true,
521
+ "description": "Phase 1+2+4 pipeline log'undan impact summary + risks + architectural decisions (y\u00fcksek seviye). Greyed out post-hoc \u00e7a\u011fr\u0131da pipeline log yoksa."
522
+ },
523
+ "technicalAnalysis": {
524
+ "type": "boolean",
525
+ "default": false,
526
+ "description": "Changes (de\u011fi\u015fen dosyalar gruplan\u0131p ne/neden), Architecture (structural decisions), Dependencies (yeni import/framework/paket). PR body'deki 'Technical Details' b\u00f6l\u00fcm\u00fcn\u00fcn \u00f6zeti; user'\u0131n kanal se\u00e7imi PR i\u00e7ermedi\u011fi durumlarda (\u00f6r. sadece Jira/Confluence) teknik i\u00e7erik aktarmak istiyorsa devreye girer. Source: Phase 2 planning + Phase 3 dev log + PR diff stat."
527
+ },
528
+ "testScenarios": {
529
+ "type": "boolean",
530
+ "default": true,
531
+ "description": "Precondition / steps / expected tablosu (4-8 sat\u0131r, user perspective). Pipeline log source."
532
+ },
533
+ "autoDiff": {
534
+ "type": "boolean",
535
+ "default": false,
536
+ "description": "PR diff'ten auto-generate \u00f6zet (eski enrich behavior \u2014 root cause / solution / changed files / test scenarios). PR linked de\u011filse greyed out."
537
+ },
538
+ "manualNote": {
539
+ "type": "boolean",
540
+ "default": false,
541
+ "description": "Serbest metin paragraf (--message / --message-file). Her durumda se\u00e7ilebilir."
542
+ },
543
+ "costSummary": {
544
+ "type": "boolean",
545
+ "default": false,
546
+ "description": "v6.1.0+ \u2014 Per-phase token cost summary (phase name, tokens_in, tokens_out, est. USD). Source: phase-tracker.sh token tallies + optional OTel spans (MULTI_AGENT_OTEL_SPANS=1). Greyed out if tracker has no token data for the task. Opt-in \u2014 off by default so baseline PR body stays unchanged."
547
+ },
548
+ "workSummary": {
549
+ "type": "boolean",
550
+ "default": false,
551
+ "description": "v7.1.0+ \u2014 Executive 'Work Done' summary block. Distills the whole pipeline run into a single-screen section: task + branch + base + PR number, scope delivered (\u2705/\u23f3 per Phase 2 task), changed files with +/- counts (capped at 20 rows), review outcome (accepted/deferred/rejected counts + approved flag), and a one-line phase tick strip (0 Init \u2705 \u00b7 1 Analysis \u2705 \u00b7 \u2026). Source: `agent-state.json` + `phase-tracker.json` + `git diff --numstat` between `baseBranch`\u2026HEAD. Consumed by `render-work-summary.sh`. Greyed out if no state file exists for the task. Opt-in \u2014 off by default so baseline PR body stays unchanged."
552
+ }
553
+ },
554
+ "default": {
555
+ "normalAnalysis": true,
556
+ "technicalAnalysis": false,
557
+ "testScenarios": true,
558
+ "autoDiff": false,
559
+ "manualNote": false,
560
+ "costSummary": false,
561
+ "workSummary": false
562
+ }
563
+ },
564
+ "autopilotReportTimeoutSeconds": {
565
+ "type": "integer",
566
+ "default": 1800,
567
+ "minimum": 60,
568
+ "maximum": 7200,
569
+ "description": "v5.7+ \u2014 Phase 7'de autopilot always-pause men\u00fcs\u00fcnde kullan\u0131c\u0131 cevap vermezse session'\u0131 sonland\u0131rma s\u00fcresi (saniye). Default 1800 (30 dk). Timeout'ta external delivery aborted, internal capture (agent-log, telemetry, knowledge) yine \u00e7al\u0131\u015f\u0131r, session /multi-agent:resume ile devam ettirilebilir."
570
+ },
571
+ "wikiScope": {
572
+ "type": "array",
573
+ "items": {
574
+ "type": "string",
575
+ "enum": [
576
+ "main",
577
+ "ios",
578
+ "screenshots",
579
+ "index"
580
+ ]
581
+ },
582
+ "default": [
583
+ "main",
584
+ "ios",
585
+ "screenshots",
586
+ "index"
587
+ ],
588
+ "description": "v5.7+ \u2014 Wiki Case A scope multi-select default'u. Component wiki dispatch'inde hangi artifact'lar yaz\u0131lacak: main (ana component sayfas\u0131), ios (iOS sub-page), screenshots (assets/ klas\u00f6r\u00fc), index (_Sidebar.md + ComponentImplementationStatus.md). Legacy wikiDefault=true \u2192 [main,ios,screenshots,index] migration; wikiDefault=false \u2192 [] (empty array = Wiki adapter Case B men\u00fcs\u00fcne d\u00fc\u015fer)."
589
+ },
590
+ "autoJiraFromGithubIssue": {
591
+ "type": "string",
592
+ "enum": [
593
+ "ask",
594
+ "always",
595
+ "never"
596
+ ],
597
+ "default": "ask",
598
+ "description": "Policy for the GitHub-issue Jira auto-create (WS-6 triad, Phase 0 Step 1). `ask` prompts the user when a GitHub issue has no Jira ID. `always` auto-creates silently (and patches the GitHub issue body with the link). `never` skips and uses the `feature/GH{issueNo}-kebab` branch. Autopilot treats `ask` as `always` \u2014 there is no interactive fallback when running unattended."
599
+ },
600
+ "wikiToJiraComment": {
601
+ "type": "boolean",
602
+ "default": true,
603
+ "description": "When the Wiki channel produces component wiki content AND a Jira issue is linked (`state.jiraId` set), also post a humanizer-passed summary of the wiki content as a Jira comment so QA + PMs see the component docs inline. Independent of `reportChannels.jira` (which controls whether the main Jira comment runs). Set `false` to suppress only the wiki-summary comment."
604
+ },
605
+ "figmaSource": {
606
+ "type": [
607
+ "object",
608
+ "null"
609
+ ],
610
+ "additionalProperties": false,
611
+ "description": "Upstream figma-to-component source for incremental sync (WS-9). Set manually by users who maintain a separate source project and want `/multi-agent:sync` to keep `pipeline/skills/figma-ios/` in step. Null = no sync, import was one-shot.",
612
+ "properties": {
613
+ "path": {
614
+ "type": "string",
615
+ "description": "Absolute path to the source project root (expects `.instructions/figma/` and `.claude/skills/` subtrees)."
616
+ },
617
+ "branch": {
618
+ "type": "string",
619
+ "default": "develop",
620
+ "description": "Source branch to pull from."
621
+ },
622
+ "lastSyncedAt": {
623
+ "type": [
624
+ "string",
625
+ "null"
626
+ ],
627
+ "format": "date-time",
628
+ "description": "ISO timestamp of the most recent successful sync."
629
+ },
630
+ "lastCommit": {
631
+ "type": [
632
+ "string",
633
+ "null"
634
+ ],
635
+ "description": "Source commit SHA captured at the most recent successful sync. Used as the floor for incremental diff."
636
+ }
637
+ }
638
+ },
639
+ "promptLanguage": {
640
+ "type": "string",
641
+ "enum": [
642
+ "en",
643
+ "tr"
644
+ ],
645
+ "default": "en",
646
+ "description": "Language used for user-facing INTERACTIVE pipeline copy: pickers (account, project, dev-context, base branch, branch name, maturity ack, channels), Phase 5 test prompt, Phase 6 local-checkout prompt, Phase 6 commit/PR confirmations, TaskCreate card subjects, and phase-banner.sh headers (`PHASE_LANG` resolves from this field via the `auto` sentinel). Canonical label table lives in `pipeline/skills/shared/multi-agent/SKILL.md`. External payloads stay English regardless of this setting: reviewer/triage system prompts, commit messages, PR titles/bodies, Jira comments, wiki content, agent-log.md payloads. Set via `/multi-agent:language prompt <en|tr>` or answered on first run by `/multi-agent:setup`."
647
+ },
648
+ "outputLanguage": {
649
+ "type": "string",
650
+ "enum": [
651
+ "en",
652
+ "tr"
653
+ ],
654
+ "default": "en",
655
+ "description": "Language used for the assistant's NON-INTERACTIVE explanations, status updates, error messages, and pipeline-generated reports rendered to the user (e.g. `/multi-agent:help` body, `/multi-agent:status` table headers, summary blocks at the end of a run). Independent of `promptLanguage` so a user can have Turkish pickers but English summaries (or vice versa). External payloads (commits, PR/Jira/wiki) and skill-picker / confirmation / error UI exposed by the CLI host stay English regardless of this setting. Set via `/multi-agent:language output <en|tr>` or answered on first run by `/multi-agent:setup`."
656
+ },
657
+ "progressVerbosity": {
658
+ "type": "string",
659
+ "enum": [
660
+ "quiet",
661
+ "normal",
662
+ "verbose"
663
+ ],
664
+ "default": "normal",
665
+ "description": "Verbosity of the live progress-line contract (`refs/progress-contract.md`). `quiet` shows only phase banners and user prompts (CI-friendly). `normal` shows banners + the canonical action set per phase \u2014 recommended for interactive use. `verbose` shows sub-agent internal actions, file-level reads, schema validations, retry internals \u2014 forced automatically when `mode: autopilot` is set in agent state so the run remains audit-grade when the user isn't watching live."
666
+ },
667
+ "triageCrossCheck": {
668
+ "type": "object",
669
+ "additionalProperties": false,
670
+ "description": "Optional second-opinion check on Phase 4 triage decisions. When enabled, a configurable percentage of triage outputs are re-classified by Sonnet and the diff vs. Opus's verdict is logged for audit. Mitigates the single-point-of-failure risk that Opus triage hallucinates or drifts. Adds latency + cost; default off.",
671
+ "properties": {
672
+ "enabled": {
673
+ "type": "boolean",
674
+ "default": false,
675
+ "description": "Master switch."
676
+ },
677
+ "samplePct": {
678
+ "type": "integer",
679
+ "minimum": 1,
680
+ "maximum": 100,
681
+ "default": 10,
682
+ "description": "Percentage of triage runs to spot-check (1-100). 10 = roughly 1 in 10."
683
+ },
684
+ "model": {
685
+ "type": "string",
686
+ "enum": [
687
+ "sonnet"
688
+ ],
689
+ "default": "sonnet",
690
+ "description": "Cross-check model. Locked to Sonnet \u2014 Opus would just agree with Opus."
691
+ },
692
+ "blockOnDisagreement": {
693
+ "type": "boolean",
694
+ "default": false,
695
+ "description": "If true, a cross-check disagreement pauses Phase 5/6 for human review. If false (default), the disagreement is logged to metrics.jsonl as `triage.cross_check_diff` and the pipeline proceeds with Opus's original verdict."
696
+ }
697
+ }
698
+ },
699
+ "reviewDisagreementRound": {
700
+ "type": "boolean",
701
+ "default": false,
702
+ "description": "v6.1.0+ \u2014 Phase 4 Step 2.5 rebuttal round. When reviewers disagree (mixed blocker/approved verdict), each reviewer is re-prompted with the others' opposing arguments for one additional round before triage. Lifts signal quality on ambiguous findings at ~1\u00d7 Step 2 token cost. Off by default \u2014 flip for security-critical or release-branch reviews."
703
+ },
704
+ "review": {
705
+ "type": "object",
706
+ "additionalProperties": false,
707
+ "description": "v8.6+ — Standalone /multi-agent:review knobs. Only affects the post-pr-review.sh path (PR-mode comment posting); does not change Phase 4 reviewer dispatch inside the full pipeline.",
708
+ "properties": {
709
+ "dedupeInlineComments": {
710
+ "type": "boolean",
711
+ "default": true,
712
+ "description": "Bugbot/Devin Review behaviour: before posting an inline comment, scan existing PR comments for a stable fingerprint marker (sha-16 of path|line|issue). If a comment with the same marker exists, skip — preserves audit trail without flooding the PR on re-runs. Provider-agnostic: GitHub /pulls/{n}/comments + /issues/{n}/comments and Bitbucket Server /pull-requests/{id}/activities?fromType=COMMENT are both checked. Set to false to restore the pre-v8.6 behavior (every run posts fresh comments, original spec)."
713
+ }
714
+ }
715
+ },
716
+ "shadowGit": {
717
+ "type": "object",
718
+ "additionalProperties": false,
719
+ "description": "v8.6+ — Cline-style per-tool-call shadow Git checkpoints. A separate git repo under ~/.claude/state/shadow-git/<task-id>/.git/ snapshots the worktree at each Phase 3 step boundary (per Plan Todo) and optionally after each Edit/Write/MultiEdit/Bash mutation. The shadow lives outside the project's real .git so semantic commits stay clean. Pattern source: Cline checkpoints (https://docs.cline.bot/features/checkpoints). Off by default — adds a per-step git commit on top of the existing TDD loop; flip on for risky refactors where sub-phase rollback is worth ~50ms per snapshot.",
720
+ "properties": {
721
+ "enabled": {
722
+ "type": "boolean",
723
+ "default": false,
724
+ "description": "Master switch."
725
+ },
726
+ "mode": {
727
+ "type": "string",
728
+ "enum": ["per-tool-call", "per-todo-step", "off"],
729
+ "default": "per-todo-step",
730
+ "description": "Snapshot frequency. per-tool-call mirrors Cline (one snapshot after each Edit/Write/Bash mutation); per-todo-step snapshots once per plan-todos.sh step boundary (cheaper, recommended). off is equivalent to enabled=false."
731
+ },
732
+ "pruneAfterDays": {
733
+ "type": "integer",
734
+ "minimum": 1,
735
+ "maximum": 90,
736
+ "default": 14,
737
+ "description": "Shadow snapshots older than N days are garbage-collected on the next /multi-agent:purge or by an explicit shadow-git.sh prune --older-than-days call."
738
+ }
739
+ }
740
+ },
741
+ "planTodos": {
742
+ "type": "object",
743
+ "additionalProperties": false,
744
+ "description": "v8.6+ — Plan-as-live-Todo-list. Phase 2 emits agent-state.plan.todos[] conforming to pipeline/schemas/plan-todos.schema.json; Phase 3 iterates step-by-step via pipeline/lib/plan-todos.sh next/start/complete; Phase 7 renders the rollup into agent-log.md and the PR body. Pattern source: Windsurf Cascade (https://docs.windsurf.com/windsurf/cascade) Todo list inside the conversation; Cursor Plan Mode (https://cursor.com/docs/agent/planning) reviewable plan. Off by default — opt in to add status-transition writes per Phase 3 step in exchange for sub-step visibility + per-step notes.",
745
+ "properties": {
746
+ "enabled": {
747
+ "type": "boolean",
748
+ "default": false,
749
+ "description": "Master switch. When true, Phase 2 Step 4.5 emits plan.todos[] and Phase 3 / 7 read from it."
750
+ }
751
+ }
752
+ },
753
+ "clarifyAmbiguous": {
754
+ "type": "object",
755
+ "additionalProperties": false,
756
+ "description": "v8.6+ — Phase 0 Step 9 clarifying-question loop. Before Phase 1 starts, a cheap Haiku classifier scores task ambiguity (0-10) and emits up to N questions if score < threshold. Pattern source: Devin Knowledge / Ask Devin (https://docs.devin.ai/work-with-devin/devin-review) and Cursor Plan Mode clarifying questions (https://cursor.com/docs/agent/planning). Cost: ~$0.0025 per Haiku call. Off by default — flip on for teams burned by ambiguity-driven rework or when working on cross-team issues where the spec lives in someone else's head.",
757
+ "properties": {
758
+ "enabled": {
759
+ "type": "boolean",
760
+ "default": false,
761
+ "description": "Master switch. When true, Phase 0 dispatches task-clarifier after maturity check and before Phase 1."
762
+ },
763
+ "model": {
764
+ "type": "string",
765
+ "enum": ["haiku", "sonnet"],
766
+ "default": "haiku",
767
+ "description": "Classifier model. Haiku is the cost default; Sonnet override for regulated domains where ambiguity nuance matters."
768
+ },
769
+ "minScoreToProceed": {
770
+ "type": "integer",
771
+ "minimum": 0,
772
+ "maximum": 10,
773
+ "default": 6,
774
+ "description": "Clarity threshold. Score ≥ threshold → proceed silently. Below → questions fire. 6 is the borderline 'the what is clear but the how is fuzzy' line."
775
+ },
776
+ "maxQuestions": {
777
+ "type": "integer",
778
+ "minimum": 1,
779
+ "maximum": 5,
780
+ "default": 3,
781
+ "description": "Hard cap on questions per round. Clarifier picks the highest-leverage N even if more ambiguity exists."
782
+ },
783
+ "autopilotMode": {
784
+ "type": "string",
785
+ "enum": ["skip", "log", "abort"],
786
+ "default": "log",
787
+ "description": "What to do when stopAndAsk fires in autopilot. skip = drop questions and proceed (most aggressive); log = append to agent-log.md and proceed (default, preserves signal); abort = pause Phase 0 and require multi-agent:resume."
788
+ }
789
+ }
790
+ },
791
+ "reviewWatch": {
792
+ "type": "object",
793
+ "additionalProperties": false,
794
+ "description": "v8.6+ — Auto-review incoming PRs via gh CLI polling. Inspired by Cursor Bugbot (https://cursor.com/docs/bugbot) and Devin Review (https://docs.devin.ai/work-with-devin/devin-review): trigger /multi-agent:review on PRs the user did NOT author. Disabled by default. Configure repos via .repos[] then either run pipeline/lib/review-watch.sh --watch as a background process or schedule it via cron.",
795
+ "properties": {
796
+ "enabled": {
797
+ "type": "boolean",
798
+ "default": false,
799
+ "description": "Master switch."
800
+ },
801
+ "repos": {
802
+ "type": "array",
803
+ "items": { "type": "string", "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" },
804
+ "default": [],
805
+ "description": "owner/repo entries to watch. The watcher only considers PRs not authored by the current gh user."
806
+ },
807
+ "intervalSeconds": {
808
+ "type": "integer",
809
+ "minimum": 30,
810
+ "maximum": 86400,
811
+ "default": 300,
812
+ "description": "Polling interval for --watch loop. Clamped to ≥30s to stay polite with GitHub rate limits."
813
+ },
814
+ "labelFilter": {
815
+ "type": "string",
816
+ "description": "Optional GitHub label. When set, only PRs carrying this label are considered."
817
+ }
818
+ }
819
+ },
820
+ "repoMap": {
821
+ "type": "object",
822
+ "additionalProperties": false,
823
+ "description": "v8.6+ — Aider-style token-budgeted repo map injection. When enabled, the orchestrator runs pipeline/scripts/repo-map.mjs BEFORE Phase 1 (Analysis) and BEFORE Phase 4 (Review) and injects the resulting markdown as ${REPO_MAP} into the reviewer/analyser prompts. Deterministic — no embeddings, no network. Pattern source: https://aider.chat/docs/repomap.html. Off by default (introduces a ~150-300ms repo scan + repo-shaped prompt growth); flip on to lower per-call token cost on follow-up exploration phases.",
824
+ "properties": {
825
+ "enabled": {
826
+ "type": "boolean",
827
+ "default": false,
828
+ "description": "Master switch. When true, Phase 1 and Phase 4 receive ${REPO_MAP} as additional context. When false, both phases run with only the diff + their normal prompt shell."
829
+ },
830
+ "tokenBudget": {
831
+ "type": "integer",
832
+ "minimum": 200,
833
+ "maximum": 6000,
834
+ "default": 1500,
835
+ "description": "Soft token cap on the rendered map. The renderer fills greedily until the budget is hit, then truncates with a footer note. 1500 tokens ~ top 15-25 files with their top declarations."
836
+ },
837
+ "topFiles": {
838
+ "type": "integer",
839
+ "minimum": 5,
840
+ "maximum": 100,
841
+ "default": 25,
842
+ "description": "Maximum number of ranked files to consider for inclusion. The token budget further trims this list — topFiles is an upper bound, not a guarantee."
843
+ },
844
+ "include": {
845
+ "type": "string",
846
+ "description": "Comma-separated path substrings — files NOT containing any of these are skipped. Empty/unset = include all supported sources. Use to scope the map to a sub-tree on monorepos (e.g. 'Sources/,Tests/')."
847
+ },
848
+ "exclude": {
849
+ "type": "string",
850
+ "description": "Comma-separated path substrings — files containing ANY of these are skipped. Stacks with their own caches (e.g. 'Generated/,.pb.swift,_mocks.kt') benefit from this."
851
+ }
852
+ }
853
+ },
854
+ "devCritic": {
855
+ "type": "object",
856
+ "additionalProperties": false,
857
+ "description": "v8.6+ \u2014 Phase 3.5 evaluator-optimizer. After the Dev generator's last edit and BEFORE Phase 4 reviewers, dispatch agents/dev-critic.md (Sonnet by default) to run deterministic gates (build/lint/test/secrets) + the platform checklist (rules/*.md). Max 2 critic iterations, then escalate. Catches gate failures and checklist violations that would otherwise burn 2\u20133 Phase 4 reviewer calls + Opus triage. Off by default \u2014 introduces 1\u00d7 Sonnet call per Dev iteration; flip on for feature work, security-touching paths, or multi-file refactors. Source: Anthropic 'Building Effective Agents' (Dec 2024) evaluator-optimizer pattern.",
858
+ "properties": {
859
+ "enabled": {
860
+ "type": "boolean",
861
+ "default": false,
862
+ "description": "Master switch. When true, Phase 3 dispatches dev-critic after the generator's last edit; when false, Phase 3 hands off directly to Phase 4."
863
+ },
864
+ "maxIterations": {
865
+ "type": "integer",
866
+ "minimum": 1,
867
+ "maximum": 3,
868
+ "default": 2,
869
+ "description": "Critic loop cap. Round 1 = full pass. Round 2 = re-check round 1 failures only. Round 3 NOT recommended \u2014 escalate to user (interactive) or proceed with logged failure (autopilot)."
870
+ },
871
+ "model": {
872
+ "type": "string",
873
+ "enum": ["sonnet", "opus", "haiku"],
874
+ "default": "sonnet",
875
+ "description": "Critic model. Sonnet is the cost/quality default. Opus override only when diff > 500 LOC or touches security-critical paths. Haiku is too brittle for checklist reasoning \u2014 use only for trivial verification tasks."
876
+ },
877
+ "minDiffLoc": {
878
+ "type": "integer",
879
+ "minimum": 0,
880
+ "default": 0,
881
+ "description": "Skip dev-critic when diff LOC is below this threshold (avoid the overhead on trivial typo/copy fixes). 0 = always run when enabled. 200 = a common 'feature work' threshold."
882
+ }
883
+ }
884
+ },
885
+ "diffRiskAdvisory": {
886
+ "type": "boolean",
887
+ "default": true,
888
+ "description": "v8.3+ \u2014 Phase 4 Step 1.75 advisory diff risk scoring. When enabled, `pipeline/scripts/diff-risk-score.mjs` runs before reviewer dispatch and the top-N risk-ranked files are injected into each reviewer's prompt as a priority hint (security paths, public API surfaces, untested source changes, schema migrations). Heuristic, deterministic, no LLM cost. Default ON \u2014 the run is sub-second and never gates the pipeline. Flip to false to skip the script and the prompt injection entirely."
889
+ },
890
+ "priorArtEnrichment": {
891
+ "type": "object",
892
+ "additionalProperties": false,
893
+ "description": "v8.3+ — Per-repo triage memory layer. When enabled, Phase 7 ingests every triage output's accepted/deferred/rejected rows into ~/.claude/memory/multi-agent/<repo-slug>/triage-corpus.jsonl (idempotent), and Phase 4 triage queries the corpus for similar past findings to inject as context. Per-repo isolation — never cross-leaks between projects.",
894
+ "properties": {
895
+ "enabled": {
896
+ "type": "boolean",
897
+ "default": true,
898
+ "description": "Master switch for the lookup side. When false, Phase 4 triage runs without prior-art injection. Ingest still runs unless ingestOnComplete is also flipped."
899
+ },
900
+ "ingestOnComplete": {
901
+ "type": "boolean",
902
+ "default": true,
903
+ "description": "When false, Phase 7 skips the corpus append. Use to keep an existing corpus frozen while still benefiting from lookups against it."
904
+ },
905
+ "topN": {
906
+ "type": "integer",
907
+ "minimum": 1,
908
+ "maximum": 10,
909
+ "default": 3,
910
+ "description": "Number of prior-art entries to attach per current finding."
911
+ }
912
+ },
913
+ "default": {
914
+ "enabled": true,
915
+ "ingestOnComplete": true,
916
+ "topN": 3
917
+ }
918
+ },
919
+ "testGap": {
920
+ "type": "object",
921
+ "additionalProperties": false,
922
+ "description": "v8.3+ \u2014 Phase 5 Step 0 advisory test-gap detector. Walks the diff for newly added public symbols and reports those without a paired test (or test method covering them). Heuristic, deterministic, no LLM cost.",
923
+ "properties": {
924
+ "enabled": {
925
+ "type": "boolean",
926
+ "default": true,
927
+ "description": "Master switch. Default ON \u2014 the scan is sub-second."
928
+ },
929
+ "scanTree": {
930
+ "type": "boolean",
931
+ "default": false,
932
+ "description": "When true, also scan the repo tree (not just the diff) for existing tests that already mention the symbol \u2014 catches gaps that are technically covered by older tests outside the current diff. Slower but more accurate. Off by default \u2014 diff-only scan is sufficient for the common case."
933
+ },
934
+ "blockingThreshold": {
935
+ "type": ["integer", "null"],
936
+ "minimum": 1,
937
+ "default": null,
938
+ "description": "If set, gaps where `important + blocking` count exceeds the threshold are treated as a Phase 4 rework finding (loops back to Phase 3). null = advisory only \u2014 Phase 5 prints the report but never gates."
939
+ },
940
+ "promoteSeverity": {
941
+ "type": "boolean",
942
+ "default": false,
943
+ "description": "When true, the scan runs with --severity-promote, forcing every gap to 'important'. Useful for release branches and audit mode."
944
+ }
945
+ },
946
+ "default": {
947
+ "enabled": true,
948
+ "scanTree": false,
949
+ "blockingThreshold": null,
950
+ "promoteSeverity": false
951
+ }
952
+ },
953
+ "perRepoMemory": {
954
+ "type": "boolean",
955
+ "default": false,
956
+ "description": "v6.2.0+ \u2014 Per-repo file-system memory layer. When enabled, Phase 0 reads `$PROJECT_ROOT/.multi-agent/memory/MEMORY.md` (if present) and injects it into the pipeline context, and Phase 7 dispatches a scoped synthesis subagent that may write new memory files to the same directory. Categories: user / feedback / project / reference (same taxonomy as the conversation-level auto-memory). Memory is local to each repo \u2014 never synced to remote, never committed to git (pipeline installer adds `.multi-agent/memory/` to `.gitignore`). Off by default \u2014 flip when working on a repo long enough that accumulated project context starts paying for itself."
957
+ },
958
+ "autopilotSafetyGate": {
959
+ "type": "boolean",
960
+ "default": true,
961
+ "description": "v7.0.0+ \u2014 Phase 2 autopilot safety classifier. Before autopilot mode consumes the user's approval skip, run `classify-plan-safety.mjs` over the approved plan. If the heuristic score \u2265 50 (e.g. >15 files touched, or security-path touch, or delete-without-test, or schema migration) inject a ONE-TIME pause asking for explicit manual approval \u2014 even in autopilot. Default ON because the risk of skipping this gate is asymmetric: a pause on a high-blast-radius plan costs seconds; a silent auto-merge of a bad one costs hours of rollback. Flip to `false` only for tightly-scoped autopilot workflows (e.g. batch figma component iteration) where the task class is known-safe."
962
+ },
963
+ "dynamicSkillLoading": {
964
+ "type": "boolean",
965
+ "default": false,
966
+ "description": "v7.0.0+ \u2014 Dynamic trigger-based skill loading. When enabled, the orchestrator reads `~/.claude/skills/.skills-index.json` after Phase 1 analysis and injects only the top-N matched skills into subagent prompts (via `match-skills.mjs`), instead of relying on eager-loaded SKILL.md bodies. Large token win on small tasks; no visible behavior change on big ones where many skills match. Requires either a full install (index is always shipped) or the `install.js --index-only` mode for users who want skill bodies fetched on demand. Off by default in v7.0 \u2014 flip to `true` to opt in; a future v7.x may flip the default once enough telemetry confirms no regression."
967
+ },
968
+ "recentAccounts": {
969
+ "type": "array",
970
+ "description": "v7.3.0+. Last-used-first LRU of account ids (from account-resolver.sh). Used by autopilot to pick the most recent account when multiple are configured.",
971
+ "items": {
972
+ "type": "object",
973
+ "additionalProperties": false,
974
+ "required": [
975
+ "id"
976
+ ],
977
+ "properties": {
978
+ "id": {
979
+ "type": "string",
980
+ "description": "Short id from account-resolver, e.g. m-erden3"
981
+ },
982
+ "prefix": {
983
+ "type": "string",
984
+ "description": "Original keychain prefix, e.g. ${USER}"
985
+ },
986
+ "lastUsed": {
987
+ "type": "string",
988
+ "format": "date-time"
989
+ },
990
+ "count": {
991
+ "type": "integer",
992
+ "minimum": 0
993
+ }
994
+ }
995
+ },
996
+ "maxItems": 10
997
+ },
998
+ "accounts": {
999
+ "type": "array",
1000
+ "description": "v7.4.0+. Per-account overrides \u2014 host, label, default platform. Resolved by account-resolver.sh by matching `id` (e.g. m-erden3). When unset, hosts fall back to global.hosts.{jira,bitbucket}.",
1001
+ "items": {
1002
+ "type": "object",
1003
+ "additionalProperties": false,
1004
+ "required": [
1005
+ "id"
1006
+ ],
1007
+ "properties": {
1008
+ "id": {
1009
+ "type": "string",
1010
+ "description": "Short id matching account-resolver output (lowercase, dashes)."
1011
+ },
1012
+ "label": {
1013
+ "type": "string",
1014
+ "description": "Display label override; otherwise the resolver's auto-generated label is used."
1015
+ },
1016
+ "jiraHost": {
1017
+ "type": "string",
1018
+ "description": "Per-account Jira host override (no scheme). Wins over global.hosts.jira."
1019
+ },
1020
+ "bitbucketHost": {
1021
+ "type": "string",
1022
+ "description": "Per-account Bitbucket host override (no scheme). Wins over global.hosts.bitbucket."
1023
+ },
1024
+ "confluenceHost": {
1025
+ "type": "string"
1026
+ },
1027
+ "defaultProvider": {
1028
+ "type": "string",
1029
+ "enum": [
1030
+ "github",
1031
+ "bitbucket",
1032
+ "gitlab",
1033
+ "generic-git"
1034
+ ]
1035
+ }
1036
+ }
1037
+ },
1038
+ "maxItems": 20
1039
+ }
1040
+ }
1041
+ },
1042
+ "projects": {
1043
+ "type": "object",
1044
+ "description": "Per-project overrides. Key = project slug.",
1045
+ "patternProperties": {
1046
+ "^[a-z0-9][a-z0-9\\-_]*$": {
1047
+ "type": "object",
1048
+ "additionalProperties": false,
1049
+ "properties": {
1050
+ "defaultReviewers": {
1051
+ "type": "array",
1052
+ "items": {
1053
+ "type": "string"
1054
+ },
1055
+ "maxItems": 10,
1056
+ "description": "Bitbucket/generic default reviewers (usernames)."
1057
+ },
1058
+ "githubDefaultReviewers": {
1059
+ "type": "array",
1060
+ "items": {
1061
+ "type": "string"
1062
+ },
1063
+ "maxItems": 10,
1064
+ "description": "GitHub fallback reviewers \u2014 @user or org/team slug. Used only when no CODEOWNERS / branch protection surfaces reviewers."
1065
+ },
1066
+ "defaultPrMode": {
1067
+ "type": "string",
1068
+ "enum": [
1069
+ "draft",
1070
+ "ready"
1071
+ ],
1072
+ "description": "Last-used draft/ready choice, shown as the default on next prompt."
1073
+ },
1074
+ "baseBranch": {
1075
+ "type": "string",
1076
+ "description": "Project default base branch. Falls back to repo HEAD."
1077
+ },
1078
+ "confluenceUrls": {
1079
+ "type": "array",
1080
+ "items": {
1081
+ "type": "string",
1082
+ "format": "uri"
1083
+ },
1084
+ "maxItems": 5,
1085
+ "description": "Recent parent page URLs, most recent first."
1086
+ },
1087
+ "branches": {
1088
+ "type": "array",
1089
+ "items": {
1090
+ "type": "string"
1091
+ },
1092
+ "maxItems": 10,
1093
+ "description": "Legacy field. Recent branches for this project (pre-v2.1.0). v2.1.0+ prefers global.recentBranches[projectPath]."
1094
+ },
1095
+ "lastIdentity": {
1096
+ "type": "integer",
1097
+ "minimum": 0,
1098
+ "description": "Legacy field. Index into global.gitIdentities (v2.0.0). v2.1.0+ uses platformIdentityRouting."
1099
+ },
1100
+ "jiraProjectKeys": {
1101
+ "type": "array",
1102
+ "items": {
1103
+ "type": "string"
1104
+ },
1105
+ "maxItems": 10,
1106
+ "description": "Per-project Jira project keys (can override global.defaultJiraKey)."
1107
+ },
1108
+ "remoteType": {
1109
+ "type": "string",
1110
+ "enum": [
1111
+ "bitbucket",
1112
+ "github",
1113
+ "gitlab",
1114
+ "generic-git"
1115
+ ],
1116
+ "description": "Hint used when repo URL doesn't make platform obvious."
1117
+ },
1118
+ "taskCount": {
1119
+ "type": "integer",
1120
+ "minimum": 0,
1121
+ "description": "How many times this project has been used."
1122
+ },
1123
+ "lastUsed": {
1124
+ "type": "string",
1125
+ "format": "date-time",
1126
+ "description": "Timestamp of last task start against this project."
1127
+ },
1128
+ "figmaConfigPath": {
1129
+ "type": "string",
1130
+ "description": "Path to per-project figma-config.json (for Figma pipeline projects)."
1131
+ }
1132
+ }
1133
+ }
1134
+ }
1135
+ }
1136
+ }
1137
+ }