@mmerterden/multi-agent-pipeline 11.2.0 → 11.3.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 (331) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +2 -2
  3. package/docs/FIGMA_PIPELINE.md +12 -25
  4. package/docs/architecture.md +3 -5
  5. package/docs/features.md +8 -8
  6. package/install/_dev-only-files.mjs +0 -6
  7. package/install/claude.mjs +33 -15
  8. package/install/copilot.mjs +16 -14
  9. package/install/templates/copilot-instructions.md +3 -3
  10. package/package.json +1 -1
  11. package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
  12. package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
  13. package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
  14. package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
  15. package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
  16. package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
  17. package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
  18. package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
  19. package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
  20. package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
  21. package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
  22. package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
  23. package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
  24. package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
  25. package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
  26. package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
  27. package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
  28. package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
  29. package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
  30. package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
  31. package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
  32. package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
  33. package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
  34. package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
  35. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
  36. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
  37. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
  38. package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
  39. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
  40. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
  41. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
  42. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
  43. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
  44. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
  45. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
  46. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
  47. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
  48. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
  49. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
  50. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
  51. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
  52. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
  53. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
  54. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
  55. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
  56. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
  57. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
  58. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
  59. package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
  60. package/pipeline/preferences-template.json +17 -1
  61. package/pipeline/rules/figma-pipeline.md +2 -2
  62. package/pipeline/schemas/prefs.schema.json +0 -34
  63. package/pipeline/scripts/README.md +1 -3
  64. package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
  65. package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
  66. package/pipeline/scripts/phase-banner.sh +2 -2
  67. package/pipeline/scripts/review-scope.mjs +94 -0
  68. package/pipeline/scripts/scan-agent-config.sh +2 -2
  69. package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
  70. package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
  71. package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
  72. package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
  73. package/pipeline/scripts/smoke-channels-flow.sh +5 -5
  74. package/pipeline/scripts/smoke-clarify.sh +1 -1
  75. package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
  76. package/pipeline/scripts/smoke-community-gates.sh +1 -1
  77. package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
  78. package/pipeline/scripts/smoke-cost-summary.sh +1 -1
  79. package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
  80. package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
  81. package/pipeline/scripts/smoke-dev-critic.sh +1 -1
  82. package/pipeline/scripts/smoke-diff-explain.sh +1 -1
  83. package/pipeline/scripts/smoke-diff-risk.sh +1 -1
  84. package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
  85. package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
  86. package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
  87. package/pipeline/scripts/smoke-generate-issue.sh +8 -8
  88. package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
  89. package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
  90. package/pipeline/scripts/smoke-intent-guard.sh +1 -1
  91. package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
  92. package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
  93. package/pipeline/scripts/smoke-language-axis.sh +6 -6
  94. package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
  95. package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
  96. package/pipeline/scripts/smoke-model-fallback.sh +3 -3
  97. package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
  98. package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
  99. package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
  100. package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
  101. package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
  102. package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
  103. package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
  104. package/pipeline/scripts/smoke-plan-todos.sh +3 -3
  105. package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
  106. package/pipeline/scripts/smoke-prefs-language.sh +1 -1
  107. package/pipeline/scripts/smoke-progress-contract.sh +2 -2
  108. package/pipeline/scripts/smoke-push-retry.sh +1 -1
  109. package/pipeline/scripts/smoke-repo-map.sh +2 -2
  110. package/pipeline/scripts/smoke-shadow-git.sh +1 -1
  111. package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
  112. package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
  113. package/pipeline/scripts/smoke-test-gap.sh +1 -1
  114. package/pipeline/scripts/smoke-token-budget.sh +1 -1
  115. package/pipeline/scripts/smoke-token-preflight.sh +2 -2
  116. package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
  117. package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
  118. package/pipeline/scripts/smoke-triage-memory.sh +2 -2
  119. package/pipeline/scripts/smoke-update-check.sh +1 -1
  120. package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
  121. package/pipeline/scripts/smoke-validator-gates.sh +1 -1
  122. package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
  123. package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
  124. package/pipeline/scripts/smoke-work-summary.sh +1 -1
  125. package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
  126. package/pipeline/scripts/test-integrity-gate.mjs +83 -0
  127. package/pipeline/scripts/uninstall.mjs +2 -2
  128. package/pipeline/skills/.skill-manifest.json +40 -160
  129. package/pipeline/skills/.skills-index.json +3 -372
  130. package/pipeline/skills/shared/README.md +1 -1
  131. package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
  132. package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
  133. package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
  134. package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
  135. package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
  136. package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
  137. package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
  138. package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
  139. package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
  140. package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
  141. package/pipeline/skills/skills-index.md +2 -43
  142. package/pipeline/commands/multi-agent/refactor.md +0 -188
  143. package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
  144. package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
  145. package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
  146. package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
  147. package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
  148. package/pipeline/scripts/smoke-figma-sync.sh +0 -149
  149. package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
  150. package/pipeline/skills/figma-android/README.md +0 -38
  151. package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
  152. package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
  153. package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
  154. package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
  155. package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
  156. package/pipeline/skills/figma-common/README.md +0 -64
  157. package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
  158. package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
  159. package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
  160. package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
  161. package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
  162. package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
  163. package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
  164. package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
  165. package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
  166. package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
  167. package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
  168. package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
  169. package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
  170. package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
  171. package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
  172. package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
  173. package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
  174. package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
  175. package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
  176. package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
  177. package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
  178. package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
  179. package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
  180. package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
  181. package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
  182. package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
  183. package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
  184. package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
  185. package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
  186. package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
  187. package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
  188. package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
  189. package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
  190. package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
  191. package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
  192. package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
  193. package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
  194. package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
  195. package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
  196. package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
  197. package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
  198. package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
  199. package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
  200. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
  201. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
  202. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
  203. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
  204. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
  205. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
  206. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
  207. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
  208. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
  209. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
  210. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
  211. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
  212. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
  213. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
  214. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
  215. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
  216. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
  217. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
  218. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
  219. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
  220. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
  221. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
  222. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
  223. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
  224. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
  225. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
  226. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
  227. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
  228. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
  229. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
  230. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
  231. package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
  232. package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
  233. package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
  234. package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
  235. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
  236. package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
  237. package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
  238. package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
  239. package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
  240. package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
  241. package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
  242. package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
  243. package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
  244. package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
  245. package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
  246. package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
  247. package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
  248. package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
  249. package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
  250. package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
  251. package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
  252. package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
  253. package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
  254. package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
  255. package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
  256. package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
  257. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
  258. package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
  259. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
  260. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
  261. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
  262. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
  263. package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
  264. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
  265. package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
  266. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
  267. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
  268. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
  269. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
  270. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
  271. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
  272. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
  273. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
  274. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
  275. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
  276. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
  277. package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
  278. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
  279. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
  280. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
  281. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
  282. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
  283. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
  284. package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
  285. package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
  286. package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
  287. package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
  288. package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
  289. package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
  290. package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
  291. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
  292. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
  293. package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
  294. /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
  295. /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
  296. /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
  297. /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
  298. /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
  299. /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
  300. /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
  301. /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
  302. /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
  303. /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
  304. /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
  305. /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
  306. /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
  307. /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
  308. /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
  309. /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
  310. /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
  311. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
  312. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
  313. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
  314. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
  315. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
  316. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
  317. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
  318. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
  319. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
  320. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
  321. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
  322. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
  323. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
  324. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
  325. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
  326. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
  327. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
  328. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
  329. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
  330. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
  331. /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
@@ -1,93 +0,0 @@
1
- """Post-finalize propagation: invoke update-issue-from-registry.py for one node.
2
-
3
- Called at the end of each phase{4,5,6,7}-finalize.py so that completing a
4
- phase flips the matching Projects V2 Status column immediately, instead of
5
- waiting for the next figma-iteration-commit. Failures here are *logged
6
- but not fatal* - the registry write is the single source of truth; the
7
- issue sync is propagation, not a prerequisite.
8
- """
9
-
10
- from __future__ import annotations
11
-
12
- import json
13
- import os
14
- import subprocess
15
- import sys
16
- from pathlib import Path
17
- from typing import Optional
18
-
19
- SYNC_TIMEOUT_SECONDS = 120 # per-node upper bound on the full sync (4 flag + status + review writes)
20
-
21
-
22
- def _script_path() -> Path:
23
- here = Path(__file__).resolve().parent
24
- return here.parent / "update-issue-from-registry.py"
25
-
26
-
27
- def propagate_to_issue(
28
- node_id: str,
29
- platform: str = "ios",
30
- registry_dir: Optional[Path] = None,
31
- dry_run: bool = False,
32
- timeout: int = SYNC_TIMEOUT_SECONDS,
33
- ) -> dict:
34
- """Run update-issue-from-registry.py for a single node.
35
-
36
- Returns:
37
- {"status": "ok", "result": <parsed json>} on success
38
- {"status": "skip", "reason": <str>} on skip_marked_skip / skip_icon
39
- {"status": "error", "reason": <str>, "stderr": <str>} on failure
40
-
41
- The finalize caller should include the returned dict in its own JSON
42
- output under a key like "issue_sync" for visibility but should NOT
43
- change its own exit code based on this result.
44
- """
45
- script = _script_path()
46
- if not script.exists():
47
- return {"status": "error", "reason": f"script not found: {script}"}
48
-
49
- cmd = [sys.executable, str(script), "--node-id", node_id, "--platform", platform]
50
- if registry_dir is not None:
51
- cmd.extend(["--registry-dir", str(registry_dir)])
52
- if dry_run:
53
- cmd.append("--dry-run")
54
-
55
- try:
56
- proc = subprocess.run(
57
- cmd,
58
- capture_output=True,
59
- text=True,
60
- timeout=timeout,
61
- )
62
- except subprocess.TimeoutExpired:
63
- return {"status": "error", "reason": f"timeout after {timeout}s"}
64
- except OSError as e:
65
- return {"status": "error", "reason": f"{type(e).__name__}: {e}"}
66
-
67
- if proc.returncode != 0:
68
- return {
69
- "status": "error",
70
- "reason": f"exit {proc.returncode}",
71
- "stderr": (proc.stderr or "")[:400],
72
- }
73
-
74
- # Parse the JSON the sync script prints so the caller can see what happened.
75
- stdout = proc.stdout.strip()
76
- try:
77
- result = json.loads(stdout)
78
- except json.JSONDecodeError:
79
- return {"status": "error", "reason": "non-json stdout", "stderr": stdout[:400]}
80
-
81
- action = result.get("action") if isinstance(result, dict) else None
82
- if action in ("skip_marked_skip", "skip_icon"):
83
- return {"status": "skip", "reason": action}
84
- return {"status": "ok", "result": result}
85
-
86
-
87
- def should_skip_sync(env_override: Optional[str] = None) -> bool:
88
- """Check the FIGMA_SKIP_ISSUE_SYNC env var (for CI / tests).
89
-
90
- Returns True if the env var is set to a truthy value ("1", "true", "yes").
91
- """
92
- val = env_override if env_override is not None else os.environ.get("FIGMA_SKIP_ISSUE_SYNC", "")
93
- return val.strip().lower() in ("1", "true", "yes", "on")
@@ -1,299 +0,0 @@
1
- """registry_writer.py - single writer for component registry JSON files.
2
-
3
- All phase finalize scripts (phase4/5/6/7) and the figma-update script MUST go
4
- through this module. No script writes to registry JSONs directly.
5
-
6
- Schema extension (additive, does not touch existing fields):
7
-
8
- "figmaUpdatedAt": "2026-04-08T09:12:00Z",
9
- "status": {
10
- "ios": {
11
- "stale": false,
12
- "implemented": { "value": true, "version": 3, "hash": "sha256:...", "at": "..." },
13
- "tested": { "value": true, "against": 3, "at": "..." },
14
- "codeConnect": { "value": true, "against": 3, "at": "..." },
15
- "wiki": { "value": true, "against": 3, "at": "..." }
16
- },
17
- "android": { ...same shape... }
18
- }
19
-
20
- Yellow rule (enforced in get_flag_state):
21
- A flag is YELLOW when its `against` value is less than
22
- `implemented.version`. That means the implementation changed after this
23
- flag was last validated, so the flag needs re-validation.
24
-
25
- Version bump rule (enforced in set_implemented):
26
- - If source_file is provided, the file is hashed and compared to the
27
- stored hash. Byte-identical content does NOT bump the version.
28
- - If source_file is omitted, version always bumps on each call (caller
29
- explicitly wants to record a change).
30
-
31
- Legacy compatibility:
32
- The top-level `codeConnect: { ios, android }` field is mirrored whenever
33
- set_flag(flag="codeConnect") is called, so existing readers
34
- (register-icons-codeconnect.py, confluence-component-status.py) keep
35
- working unchanged during the transition.
36
- """
37
-
38
- import hashlib
39
- import json
40
- from datetime import datetime, timezone
41
- from pathlib import Path
42
- from typing import Optional
43
-
44
- FLAGS = ("tested", "codeConnect", "wiki")
45
- PLATFORMS = ("ios", "android")
46
-
47
-
48
- def now_iso() -> str:
49
- """ISO 8601 UTC timestamp with Z suffix."""
50
- return datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
51
-
52
-
53
- def _hash_file(path: Path) -> str:
54
- """SHA-256 hex digest of a file, truncated to 16 chars for readability."""
55
- h = hashlib.sha256()
56
- h.update(path.read_bytes())
57
- return "sha256:" + h.hexdigest()[:16]
58
-
59
-
60
- def _blank_platform_status() -> dict:
61
- return {
62
- "stale": False,
63
- "implemented": {"value": False, "version": 0, "hash": None, "at": None},
64
- "tested": {"value": False, "against": 0, "at": None},
65
- "codeConnect": {"value": False, "against": 0, "at": None},
66
- "wiki": {"value": False, "against": 0, "at": None},
67
- }
68
-
69
-
70
- def _registry_file(registry_dir: Path, node_id: str) -> Path:
71
- return Path(registry_dir) / f"{node_id.replace(':', '-')}.json"
72
-
73
-
74
- def _load(path: Path) -> dict:
75
- if path.exists():
76
- return json.loads(path.read_text(encoding="utf-8"))
77
- return {}
78
-
79
-
80
- def _save(path: Path, data: dict) -> None:
81
- path.parent.mkdir(parents=True, exist_ok=True)
82
- path.write_text(
83
- json.dumps(data, indent=2, ensure_ascii=False) + "\n",
84
- encoding="utf-8",
85
- )
86
-
87
-
88
- def _ensure_status_block(data: dict, platform: str) -> dict:
89
- if platform not in PLATFORMS:
90
- raise ValueError(f"platform must be one of {PLATFORMS}, got {platform!r}")
91
- status = data.setdefault("status", {})
92
- for p in PLATFORMS:
93
- if p not in status:
94
- status[p] = _blank_platform_status()
95
- return status[platform]
96
-
97
-
98
- def set_implemented(
99
- registry_dir: Path,
100
- node_id: str,
101
- platform: str,
102
- updater: str = "phase-4-view",
103
- source_file: Optional[Path] = None,
104
- ) -> dict:
105
- """Phase 4 finalize entry point. Bumps implemented.version iff content changed.
106
-
107
- Returns the updated `implemented` block so the caller can log the new version.
108
-
109
- Side effects:
110
- - Creates the registry file if missing (with nodeId set).
111
- - Adds a `status` block if missing (both ios + android blank).
112
- - Clears `status.<platform>.stale` (re-impl acknowledges Figma update).
113
- - Updates `lastUpdated` and `updatedBy` top-level fields.
114
- """
115
- path = _registry_file(registry_dir, node_id)
116
- data = _load(path)
117
- data.setdefault("nodeId", node_id)
118
-
119
- ps = _ensure_status_block(data, platform)
120
- current = ps["implemented"]
121
- current_version = current.get("version", 0)
122
- current_hash = current.get("hash")
123
-
124
- new_hash = _hash_file(source_file) if source_file else None
125
-
126
- # Byte-identical re-run with prior recording: no-op
127
- if source_file and new_hash == current_hash and current.get("value"):
128
- return current
129
-
130
- # Bump: version increments by 1, or starts at 1 if first time
131
- new_version = current_version + 1 if current.get("value") else max(current_version, 0) + 1
132
-
133
- ps["implemented"] = {
134
- "value": True,
135
- "version": new_version,
136
- "hash": new_hash,
137
- "at": now_iso(),
138
- }
139
- ps["stale"] = False # re-impl clears stale on this platform
140
-
141
- data["lastUpdated"] = now_iso()
142
- data["updatedBy"] = updater
143
- _save(path, data)
144
-
145
- return ps["implemented"]
146
-
147
-
148
- def set_flag(
149
- registry_dir: Path,
150
- node_id: str,
151
- platform: str,
152
- flag: str,
153
- updater: str,
154
- ) -> dict:
155
- """Phase 5/6/7 finalize entry point. Records flag as validated against current impl.version.
156
-
157
- flag must be one of: tested | codeConnect | wiki
158
-
159
- Side effects:
160
- - Writes `status.<platform>.<flag> = { value: true, against: <impl.version>, at }`
161
- - For flag='codeConnect', mirrors to legacy `codeConnect.<platform> = true`
162
- - Updates `lastUpdated` and `updatedBy`
163
-
164
- Returns the updated flag block.
165
- """
166
- if flag not in FLAGS:
167
- raise ValueError(f"flag must be one of {FLAGS}, got {flag!r}")
168
-
169
- path = _registry_file(registry_dir, node_id)
170
- data = _load(path)
171
- data.setdefault("nodeId", node_id)
172
-
173
- ps = _ensure_status_block(data, platform)
174
- impl_version = ps["implemented"].get("version", 0)
175
-
176
- ps[flag] = {
177
- "value": True,
178
- "against": impl_version,
179
- "at": now_iso(),
180
- }
181
-
182
- # Legacy mirror for codeConnect
183
- if flag == "codeConnect":
184
- data.setdefault("codeConnect", {"ios": False, "android": False})
185
- data["codeConnect"][platform] = True
186
-
187
- data["lastUpdated"] = now_iso()
188
- data["updatedBy"] = updater
189
- _save(path, data)
190
-
191
- return ps[flag]
192
-
193
-
194
- def set_implemented_by(
195
- registry_dir: Path,
196
- node_id: str,
197
- platform: str,
198
- author: str,
199
- updater: str = "backfill-status",
200
- ) -> None:
201
- """Record who implemented a component (git author, most-commits-wins).
202
-
203
- Writes `status.<platform>.implementedBy = <author_name>`. This is
204
- metadata for issue assignment - does NOT affect any version or
205
- flag-state computation.
206
- """
207
- if not isinstance(platform, str) or platform not in PLATFORMS:
208
- raise ValueError(f"platform must be one of {PLATFORMS}, got {platform!r}")
209
- if not author or not isinstance(author, str):
210
- return
211
-
212
- path = _registry_file(registry_dir, node_id)
213
- data = _load(path)
214
- data.setdefault("nodeId", node_id)
215
-
216
- ps = _ensure_status_block(data, platform)
217
- ps["implementedBy"] = author
218
-
219
- data["lastUpdated"] = now_iso()
220
- data["updatedBy"] = updater
221
- _save(path, data)
222
-
223
-
224
- def mark_stale(
225
- registry_dir: Path,
226
- node_id: str,
227
- figma_updated_at: str,
228
- ) -> bool:
229
- """figma-update script entry point.
230
-
231
- If `figma_updated_at` is newer than the stored `figmaUpdatedAt`, sets
232
- `status.<platform>.stale=true` for any platform that has been implemented.
233
-
234
- Does NOT create new registry files - only updates existing ones.
235
-
236
- Returns True if the registry was modified, False otherwise.
237
- """
238
- path = _registry_file(registry_dir, node_id)
239
- if not path.exists():
240
- return False
241
-
242
- data = _load(path)
243
-
244
- prev = data.get("figmaUpdatedAt")
245
- if prev and prev >= figma_updated_at:
246
- return False
247
-
248
- data["figmaUpdatedAt"] = figma_updated_at
249
- for platform in PLATFORMS:
250
- ps = _ensure_status_block(data, platform)
251
- # Only mark a platform stale if something was actually implemented there
252
- if ps["implemented"].get("value"):
253
- ps["stale"] = True
254
-
255
- data["lastUpdated"] = now_iso()
256
- data["updatedBy"] = "figma-update-script"
257
- _save(path, data)
258
- return True
259
-
260
-
261
- def get_flag_state(
262
- registry_dir: Path,
263
- node_id: str,
264
- platform: str,
265
- flag: str,
266
- ) -> str:
267
- """Returns 'gray' | 'yellow' | 'green' for dashboard/reader consumption.
268
-
269
- Rules:
270
- implemented:
271
- value == False → 'gray'
272
- value == True → 'green' (baseline, never yellow)
273
-
274
- tested | codeConnect | wiki:
275
- value == False → 'gray'
276
- value == True, against < impl.ver → 'yellow'
277
- value == True, against >= impl.ver → 'green'
278
-
279
- The `stale` flag is intentionally orthogonal - it signals "Figma changed"
280
- and is surfaced separately to dashboards, not folded into the flag state.
281
- """
282
- path = _registry_file(registry_dir, node_id)
283
- if not path.exists():
284
- return "gray"
285
-
286
- data = _load(path)
287
- status = data.get("status", {}).get(platform, {})
288
- f = status.get(flag, {"value": False})
289
-
290
- if not f.get("value"):
291
- return "gray"
292
-
293
- if flag == "implemented":
294
- return "green"
295
-
296
- impl_version = status.get("implemented", {}).get("version", 0)
297
- if f.get("against", 0) < impl_version:
298
- return "yellow"
299
- return "green"