aiox-core 5.0.2 → 5.0.3

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 (547) hide show
  1. package/.aiox-core/data/entity-registry.yaml +748 -763
  2. package/.aiox-core/install-manifest.yaml +4 -4
  3. package/package.json +6 -1
  4. package/pro/feature-registry.yaml +223 -0
  5. package/pro/package.json +39 -0
  6. package/pro/pro-config.yaml +63 -0
  7. package/pro/squads/README.md +24 -0
  8. package/pro/squads/design/HEADLINE.md +3 -0
  9. package/pro/squads/design/README.md +109 -0
  10. package/pro/squads/design/agents/brad-frost.md +1097 -0
  11. package/pro/squads/design/agents/dan-mall.md +857 -0
  12. package/pro/squads/design/agents/dave-malouf.md +2272 -0
  13. package/pro/squads/design/agents/design-chief.md +114 -0
  14. package/pro/squads/design/agents/ds-foundations-lead.md +194 -0
  15. package/pro/squads/design/agents/ds-token-architect.md +361 -0
  16. package/pro/squads/design/agents/nano-banana-generator.md +162 -0
  17. package/pro/squads/design/agents/storybook-expert.md +809 -0
  18. package/pro/squads/design/checklists/atomic-refactor-checklist.md +299 -0
  19. package/pro/squads/design/checklists/component-adaptation-checklist.md +81 -0
  20. package/pro/squads/design/checklists/design-fidelity-checklist.md +283 -0
  21. package/pro/squads/design/checklists/design-handoff-checklist.md +55 -0
  22. package/pro/squads/design/checklists/design-team-health-checklist.md +454 -0
  23. package/pro/squads/design/checklists/designops-maturity-checklist.md +518 -0
  24. package/pro/squads/design/checklists/ds-a11y-release-gate-checklist.md +45 -0
  25. package/pro/squads/design/checklists/ds-accessibility-wcag-checklist.md +147 -0
  26. package/pro/squads/design/checklists/ds-component-quality-checklist.md +150 -0
  27. package/pro/squads/design/checklists/ds-critical-eye-review-checklist.md +147 -0
  28. package/pro/squads/design/checklists/ds-migration-readiness-checklist.md +99 -0
  29. package/pro/squads/design/checklists/ds-pattern-audit-checklist.md +164 -0
  30. package/pro/squads/design/checklists/reading-accessibility-checklist.md +275 -0
  31. package/pro/squads/design/checklists/token-mapping-checklist.md +107 -0
  32. package/pro/squads/design/config/coding-standards.md +286 -0
  33. package/pro/squads/design/config/source-tree.md +59 -0
  34. package/pro/squads/design/config/tech-stack.md +48 -0
  35. package/pro/squads/design/config.yaml +204 -0
  36. package/pro/squads/design/data/agentic-design-systems-guide.md +46 -0
  37. package/pro/squads/design/data/agentic-ds-principles.md +100 -0
  38. package/pro/squads/design/data/atomic-design-principles.md +108 -0
  39. package/pro/squads/design/data/atomic-refactor-rules.md +582 -0
  40. package/pro/squads/design/data/base-component-specs.md +972 -0
  41. package/pro/squads/design/data/brad-frost-analysis-extract-implicit.yaml +270 -0
  42. package/pro/squads/design/data/brad-frost-analysis-find-0.8.yaml +176 -0
  43. package/pro/squads/design/data/brad-frost-analysis-qa-report.yaml +168 -0
  44. package/pro/squads/design/data/brad-frost-dna.yaml +713 -0
  45. package/pro/squads/design/data/capability-tools.yaml +124 -0
  46. package/pro/squads/design/data/component-adaptation-changelog.md +318 -0
  47. package/pro/squads/design/data/consolidation-algorithms.md +168 -0
  48. package/pro/squads/design/data/critical-eye-scoring-rules.yaml +240 -0
  49. package/pro/squads/design/data/design-token-best-practices.md +107 -0
  50. package/pro/squads/design/data/design-tokens-spec.yaml +418 -0
  51. package/pro/squads/design/data/ds-reference-architectures.md +93 -0
  52. package/pro/squads/design/data/f2-qa-report.md +168 -0
  53. package/pro/squads/design/data/f3-derived-components-changelog.md +100 -0
  54. package/pro/squads/design/data/f3-qa-report.md +208 -0
  55. package/pro/squads/design/data/figma-base-components-raw.md +102 -0
  56. package/pro/squads/design/data/figma-tokens-raw.md +1549 -0
  57. package/pro/squads/design/data/fluent2-design-principles.md +114 -0
  58. package/pro/squads/design/data/high-retention-reading-guide.md +349 -0
  59. package/pro/squads/design/data/integration-patterns.md +207 -0
  60. package/pro/squads/design/data/internal-quality-chain.yaml +48 -0
  61. package/pro/squads/design/data/motion-tokens-guide.md +202 -0
  62. package/pro/squads/design/data/roi-calculation-guide.md +142 -0
  63. package/pro/squads/design/data/token-mapping-reference.md +213 -0
  64. package/pro/squads/design/data/w3c-dtcg-spec-reference.md +149 -0
  65. package/pro/squads/design/data/wcag-compliance-guide.md +267 -0
  66. package/pro/squads/design/docs/AUDIT_REPORT.md +97 -0
  67. package/pro/squads/design/docs/DS-CURATION-PIPELINE-PROPOSAL.md +577 -0
  68. package/pro/squads/design/docs/UPGRADE_PLAN.md +618 -0
  69. package/pro/squads/design/docs/brad-frost-research-validation.md +372 -0
  70. package/pro/squads/design/docs/dave-malouf-research-validation.md +391 -0
  71. package/pro/squads/design/docs/tool-discovery-report.md +87 -0
  72. package/pro/squads/design/docs/tool-integration-plan.md +44 -0
  73. package/pro/squads/design/protocols/ai-first-governance.md +56 -0
  74. package/pro/squads/design/protocols/governance-execution-boundary.md +59 -0
  75. package/pro/squads/design/protocols/handoff.md +60 -0
  76. package/pro/squads/design/rules/.claude-rules.md +88 -0
  77. package/pro/squads/design/scripts/design-system/curate_colors.cjs +447 -0
  78. package/pro/squads/design/scripts/design-system/curate_components.cjs +217 -0
  79. package/pro/squads/design/scripts/design-system/curate_radius.cjs +190 -0
  80. package/pro/squads/design/scripts/design-system/curate_shadows.cjs +208 -0
  81. package/pro/squads/design/scripts/design-system/curate_spacing.cjs +243 -0
  82. package/pro/squads/design/scripts/design-system/curate_typography.cjs +404 -0
  83. package/pro/squads/design/scripts/design-system/design-system-metadata.test.js +49 -0
  84. package/pro/squads/design/scripts/design-system/design_manifest_lib.cjs +142 -0
  85. package/pro/squads/design/scripts/design-system/fetch_page_images.cjs +195 -0
  86. package/pro/squads/design/scripts/design-system/generate_components_metadata.cjs +114 -0
  87. package/pro/squads/design/scripts/design-system/generate_curation_report.cjs +258 -0
  88. package/pro/squads/design/scripts/design-system/generate_tokens.cjs +342 -0
  89. package/pro/squads/design/scripts/design-system/sync_design_manifest.cjs +27 -0
  90. package/pro/squads/design/scripts/design-system/test_mcp_tools.cjs +232 -0
  91. package/pro/squads/design/scripts/design-system/validate_components_metadata.cjs +96 -0
  92. package/pro/squads/design/scripts/design-system/validate_curation.cjs +226 -0
  93. package/pro/squads/design/scripts/design-system/validate_design_manifest_drift.cjs +72 -0
  94. package/pro/squads/design/scripts/design-system/validate_mcp_skeleton.cjs +38 -0
  95. package/pro/squads/design/scripts/design-system/validate_registry.cjs +186 -0
  96. package/pro/squads/design/scripts/design-system/validate_task_checklist_bindings.cjs +78 -0
  97. package/pro/squads/design/scripts/dissect-artifact.cjs +806 -0
  98. package/pro/squads/design/scripts/validate-a11y-integration.cjs +40 -0
  99. package/pro/squads/design/scripts/validate-design-squad.py +411 -0
  100. package/pro/squads/design/squad.yaml +714 -0
  101. package/pro/squads/design/tasks/a11y-audit.md +340 -0
  102. package/pro/squads/design/tasks/aria-audit.md +525 -0
  103. package/pro/squads/design/tasks/atomic-refactor-execute.md +391 -0
  104. package/pro/squads/design/tasks/atomic-refactor-plan.md +262 -0
  105. package/pro/squads/design/tasks/audit-reading-experience.md +350 -0
  106. package/pro/squads/design/tasks/audit-tailwind-config.md +101 -0
  107. package/pro/squads/design/tasks/bootstrap-shadcn-library.md +96 -0
  108. package/pro/squads/design/tasks/bundle-audit.md +245 -0
  109. package/pro/squads/design/tasks/contrast-matrix.md +373 -0
  110. package/pro/squads/design/tasks/create-doc.md +135 -0
  111. package/pro/squads/design/tasks/dead-code-detection.md +329 -0
  112. package/pro/squads/design/tasks/design-compare.md +414 -0
  113. package/pro/squads/design/tasks/design-process-optimization.md +407 -0
  114. package/pro/squads/design/tasks/design-review-orchestration.md +99 -0
  115. package/pro/squads/design/tasks/design-team-scaling.md +407 -0
  116. package/pro/squads/design/tasks/design-tooling-audit.md +404 -0
  117. package/pro/squads/design/tasks/design-triage.md +89 -0
  118. package/pro/squads/design/tasks/designops-maturity-assessment.md +364 -0
  119. package/pro/squads/design/tasks/designops-metrics-setup.md +465 -0
  120. package/pro/squads/design/tasks/ds-agentic-audit.md +100 -0
  121. package/pro/squads/design/tasks/ds-agentic-setup.md +103 -0
  122. package/pro/squads/design/tasks/ds-audit-codebase.md +273 -0
  123. package/pro/squads/design/tasks/ds-build-component.md +349 -0
  124. package/pro/squads/design/tasks/ds-build-mcp-server.md +84 -0
  125. package/pro/squads/design/tasks/ds-calculate-roi.md +282 -0
  126. package/pro/squads/design/tasks/ds-compose-molecule.md +106 -0
  127. package/pro/squads/design/tasks/ds-consolidate-patterns.md +253 -0
  128. package/pro/squads/design/tasks/ds-context-contract.md +194 -0
  129. package/pro/squads/design/tasks/ds-critical-eye-compare.md +130 -0
  130. package/pro/squads/design/tasks/ds-critical-eye-decide.md +139 -0
  131. package/pro/squads/design/tasks/ds-critical-eye-inventory.md +111 -0
  132. package/pro/squads/design/tasks/ds-critical-eye-report.md +101 -0
  133. package/pro/squads/design/tasks/ds-critical-eye-score.md +109 -0
  134. package/pro/squads/design/tasks/ds-designops.md +99 -0
  135. package/pro/squads/design/tasks/ds-extend-pattern.md +91 -0
  136. package/pro/squads/design/tasks/ds-extract-tokens.md +312 -0
  137. package/pro/squads/design/tasks/ds-figma-pipeline.md +95 -0
  138. package/pro/squads/design/tasks/ds-fluent-audit.md +105 -0
  139. package/pro/squads/design/tasks/ds-fluent-build.md +110 -0
  140. package/pro/squads/design/tasks/ds-generate-ai-metadata.md +81 -0
  141. package/pro/squads/design/tasks/ds-generate-cursor-rules.md +74 -0
  142. package/pro/squads/design/tasks/ds-generate-documentation.md +101 -0
  143. package/pro/squads/design/tasks/ds-generate-migration-strategy.md +331 -0
  144. package/pro/squads/design/tasks/ds-generate-shock-report.md +323 -0
  145. package/pro/squads/design/tasks/ds-govern-a11y-compliance.md +93 -0
  146. package/pro/squads/design/tasks/ds-governance.md +187 -0
  147. package/pro/squads/design/tasks/ds-health-metrics.md +278 -0
  148. package/pro/squads/design/tasks/ds-integrate-squad.md +130 -0
  149. package/pro/squads/design/tasks/ds-integrate-workspace.md +100 -0
  150. package/pro/squads/design/tasks/ds-legacy-modernization.md +302 -0
  151. package/pro/squads/design/tasks/ds-mcp-status.md +65 -0
  152. package/pro/squads/design/tasks/ds-motion-audit.md +118 -0
  153. package/pro/squads/design/tasks/ds-multi-framework.md +96 -0
  154. package/pro/squads/design/tasks/ds-parallelization-gate.md +246 -0
  155. package/pro/squads/design/tasks/ds-query.md +90 -0
  156. package/pro/squads/design/tasks/ds-rebuild-artifact.md +369 -0
  157. package/pro/squads/design/tasks/ds-reverse-engineer.md +194 -0
  158. package/pro/squads/design/tasks/ds-scan-artifact.md +131 -0
  159. package/pro/squads/design/tasks/ds-setup-design-system.md +297 -0
  160. package/pro/squads/design/tasks/ds-sync-registry.md +287 -0
  161. package/pro/squads/design/tasks/ds-theme-multi-brand.md +90 -0
  162. package/pro/squads/design/tasks/ds-token-modes.md +108 -0
  163. package/pro/squads/design/tasks/ds-token-w3c-extract.md +105 -0
  164. package/pro/squads/design/tasks/ds-validate-ai-readiness.md +69 -0
  165. package/pro/squads/design/tasks/ds-visual-regression.md +130 -0
  166. package/pro/squads/design/tasks/execute-checklist.md +141 -0
  167. package/pro/squads/design/tasks/export-design-tokens-dtcg.md +97 -0
  168. package/pro/squads/design/tasks/f1-apply-foundations.md +154 -0
  169. package/pro/squads/design/tasks/f1-ingest-figma-tokens.md +130 -0
  170. package/pro/squads/design/tasks/f1-map-tokens-to-shadcn.md +145 -0
  171. package/pro/squads/design/tasks/f1-qa-foundations.md +95 -0
  172. package/pro/squads/design/tasks/f2-adapt-shadcn-components.md +155 -0
  173. package/pro/squads/design/tasks/f2-ingest-base-components.md +148 -0
  174. package/pro/squads/design/tasks/f2-qa-base-components.md +98 -0
  175. package/pro/squads/design/tasks/f3-derive-components.md +145 -0
  176. package/pro/squads/design/tasks/f3-qa-derived-components.md +101 -0
  177. package/pro/squads/design/tasks/focus-order-audit.md +450 -0
  178. package/pro/squads/design/tasks/sb-brownfield-migrate.md +367 -0
  179. package/pro/squads/design/tasks/sb-brownfield-scan.md +318 -0
  180. package/pro/squads/design/tasks/sb-configure.md +230 -0
  181. package/pro/squads/design/tasks/sb-expand-shadcn.md +213 -0
  182. package/pro/squads/design/tasks/sb-generate-all-stories.md +288 -0
  183. package/pro/squads/design/tasks/sb-install.md +152 -0
  184. package/pro/squads/design/tasks/sb-sync-workspace.md +239 -0
  185. package/pro/squads/design/tasks/sb-verify.md +203 -0
  186. package/pro/squads/design/tasks/tailwind-upgrade.md +117 -0
  187. package/pro/squads/design/tasks/token-usage-analytics.md +262 -0
  188. package/pro/squads/design/tasks/ux-rewrite-sixth-grade.md +82 -0
  189. package/pro/squads/design/tasks/validate-design-fidelity.md +222 -0
  190. package/pro/squads/design/templates/agent-template.yaml +46 -0
  191. package/pro/squads/design/templates/clone-mind-template.md +352 -0
  192. package/pro/squads/design/templates/component-prompt-injection-tmpl.md +236 -0
  193. package/pro/squads/design/templates/component-visual-spec-tmpl.md +378 -0
  194. package/pro/squads/design/templates/critical-eye-cycle-report-tmpl.md +165 -0
  195. package/pro/squads/design/templates/design-fidelity-report-tmpl.md +155 -0
  196. package/pro/squads/design/templates/ds-ai-component-metadata-schema-tmpl.json +138 -0
  197. package/pro/squads/design/templates/ds-artifact-analysis.md +70 -0
  198. package/pro/squads/design/templates/ds-health-report-tmpl.md +236 -0
  199. package/pro/squads/design/templates/ds-migration-strategy-tmpl.md +524 -0
  200. package/pro/squads/design/templates/ds-state-persistence-tmpl.yaml +194 -0
  201. package/pro/squads/design/templates/ds-tokens-schema-tmpl.yaml +139 -0
  202. package/pro/squads/design/templates/migration-strategy-tmpl.md +524 -0
  203. package/pro/squads/design/templates/reading-design-tokens.css +26 -0
  204. package/pro/squads/design/templates/state-persistence-tmpl.yaml +219 -0
  205. package/pro/squads/design/templates/tokens-schema-tmpl.yaml +305 -0
  206. package/pro/squads/design/workflows/agentic-readiness.yaml +83 -0
  207. package/pro/squads/design/workflows/audit-only.yaml +198 -0
  208. package/pro/squads/design/workflows/brownfield-complete.yaml +257 -0
  209. package/pro/squads/design/workflows/critical-eye.yaml +184 -0
  210. package/pro/squads/design/workflows/dtcg-tokens-governance.yaml +64 -0
  211. package/pro/squads/design/workflows/foundations-pipeline.yaml +192 -0
  212. package/pro/squads/design/workflows/greenfield-new.yaml +192 -0
  213. package/pro/squads/design/workflows/motion-quality.yaml +65 -0
  214. package/pro/squads/design/workflows/self-healing-workflow.yaml +237 -0
  215. package/pro/squads/design/workflows/storybook-brownfield-migration.yaml +400 -0
  216. package/pro/squads/design/workflows/storybook-full-setup.yaml +280 -0
  217. package/pro/squads/index.js +145 -0
  218. package/pro/squads/squad-creator-pro/.state.json +32 -0
  219. package/pro/squads/squad-creator-pro/CHANGELOG.md +275 -0
  220. package/pro/squads/squad-creator-pro/HEADLINE.md +3 -0
  221. package/pro/squads/squad-creator-pro/README.md +1059 -0
  222. package/pro/squads/squad-creator-pro/agents/oalanicolas.md +438 -0
  223. package/pro/squads/squad-creator-pro/agents/pedro-valerio.md +449 -0
  224. package/pro/squads/squad-creator-pro/agents/squad-chief.md +1651 -0
  225. package/pro/squads/squad-creator-pro/agents/thiago_finch.md +976 -0
  226. package/pro/squads/squad-creator-pro/assessments/axioma-assessment-wf-create-squad.yaml +325 -0
  227. package/pro/squads/squad-creator-pro/checklists/.gitkeep +1 -0
  228. package/pro/squads/squad-creator-pro/checklists/agent-depth-checklist.md +244 -0
  229. package/pro/squads/squad-creator-pro/checklists/agent-quality-gate.md +434 -0
  230. package/pro/squads/squad-creator-pro/checklists/create-agent-checklist.md +184 -0
  231. package/pro/squads/squad-creator-pro/checklists/create-squad-checklist.md +219 -0
  232. package/pro/squads/squad-creator-pro/checklists/create-workflow-checklist.md +224 -0
  233. package/pro/squads/squad-creator-pro/checklists/deep-research-quality.md +506 -0
  234. package/pro/squads/squad-creator-pro/checklists/executor-matrix-checklist.md +260 -0
  235. package/pro/squads/squad-creator-pro/checklists/mental-model-integration-checklist.md +95 -0
  236. package/pro/squads/squad-creator-pro/checklists/mind-validation.md +374 -0
  237. package/pro/squads/squad-creator-pro/checklists/quality-gate-checklist.md +385 -0
  238. package/pro/squads/squad-creator-pro/checklists/smoke-test-agent.md +313 -0
  239. package/pro/squads/squad-creator-pro/checklists/sop-validation.md +250 -0
  240. package/pro/squads/squad-creator-pro/checklists/squad-checklist.md +1014 -0
  241. package/pro/squads/squad-creator-pro/checklists/squad-overview-checklist.md +393 -0
  242. package/pro/squads/squad-creator-pro/checklists/task-anatomy-checklist.md +626 -0
  243. package/pro/squads/squad-creator-pro/config/.gitkeep +1 -0
  244. package/pro/squads/squad-creator-pro/config/axioma-validator.yaml +371 -0
  245. package/pro/squads/squad-creator-pro/config/heuristics.yaml +753 -0
  246. package/pro/squads/squad-creator-pro/config/model-routing.yaml +693 -0
  247. package/pro/squads/squad-creator-pro/config/quality-gates.yaml +415 -0
  248. package/pro/squads/squad-creator-pro/config/scoring-rubric.yaml +199 -0
  249. package/pro/squads/squad-creator-pro/config/squad-config.yaml +165 -0
  250. package/pro/squads/squad-creator-pro/config/task-anatomy.yaml +263 -0
  251. package/pro/squads/squad-creator-pro/config/veto-conditions.yaml +455 -0
  252. package/pro/squads/squad-creator-pro/config.yaml +35 -0
  253. package/pro/squads/squad-creator-pro/data/.gitkeep +1 -0
  254. package/pro/squads/squad-creator-pro/data/an-anchor-words.yaml +78 -0
  255. package/pro/squads/squad-creator-pro/data/an-clone-anti-patterns.yaml +148 -0
  256. package/pro/squads/squad-creator-pro/data/an-clone-validation.yaml +190 -0
  257. package/pro/squads/squad-creator-pro/data/an-diagnostic-framework.yaml +164 -0
  258. package/pro/squads/squad-creator-pro/data/an-output-examples.yaml +102 -0
  259. package/pro/squads/squad-creator-pro/data/an-source-signals.yaml +98 -0
  260. package/pro/squads/squad-creator-pro/data/an-source-tiers.yaml +119 -0
  261. package/pro/squads/squad-creator-pro/data/best-practices.md +986 -0
  262. package/pro/squads/squad-creator-pro/data/core-heuristics.md +510 -0
  263. package/pro/squads/squad-creator-pro/data/decision-heuristics-framework.md +620 -0
  264. package/pro/squads/squad-creator-pro/data/executor-decision-tree.md +774 -0
  265. package/pro/squads/squad-creator-pro/data/executor-matrix-framework.md +441 -0
  266. package/pro/squads/squad-creator-pro/data/fusion-decision-points-analysis.md +397 -0
  267. package/pro/squads/squad-creator-pro/data/fusion-executor-analysis.md +677 -0
  268. package/pro/squads/squad-creator-pro/data/hybridops-patterns.md +1351 -0
  269. package/pro/squads/squad-creator-pro/data/internal-infrastructure-library.yaml +99 -0
  270. package/pro/squads/squad-creator-pro/data/mental-model-task-matrix.yaml +692 -0
  271. package/pro/squads/squad-creator-pro/data/pipeline-patterns.md +352 -0
  272. package/pro/squads/squad-creator-pro/data/pm-best-practices.md +440 -0
  273. package/pro/squads/squad-creator-pro/data/pv-anchor-words.yaml +64 -0
  274. package/pro/squads/squad-creator-pro/data/pv-authenticity-markers.yaml +200 -0
  275. package/pro/squads/squad-creator-pro/data/pv-meta-axiomas.yaml +162 -0
  276. package/pro/squads/squad-creator-pro/data/pv-output-examples.yaml +342 -0
  277. package/pro/squads/squad-creator-pro/data/pv-workflow-validation.yaml +318 -0
  278. package/pro/squads/squad-creator-pro/data/quality-dimensions-framework.md +405 -0
  279. package/pro/squads/squad-creator-pro/data/squad-analytics-guide.md +252 -0
  280. package/pro/squads/squad-creator-pro/data/squad-kb.md +987 -0
  281. package/pro/squads/squad-creator-pro/data/squad-registry.yaml +841 -0
  282. package/pro/squads/squad-creator-pro/data/squad-type-definitions.yaml +578 -0
  283. package/pro/squads/squad-creator-pro/data/tier-system-framework.md +475 -0
  284. package/pro/squads/squad-creator-pro/data/tool-evaluation-framework.md +847 -0
  285. package/pro/squads/squad-creator-pro/data/tool-registry.yaml +700 -0
  286. package/pro/squads/squad-creator-pro/docs/ADR-001-model-tier-qualification.md +344 -0
  287. package/pro/squads/squad-creator-pro/docs/AGENT-COLLABORATION.md +609 -0
  288. package/pro/squads/squad-creator-pro/docs/ARCHITECTURE-DIAGRAMS.md +1466 -0
  289. package/pro/squads/squad-creator-pro/docs/COMMANDS.md +544 -0
  290. package/pro/squads/squad-creator-pro/docs/CONCEPTS.md +584 -0
  291. package/pro/squads/squad-creator-pro/docs/FAQ.md +731 -0
  292. package/pro/squads/squad-creator-pro/docs/HITL-FLOW.md +255 -0
  293. package/pro/squads/squad-creator-pro/docs/MIGRATION-PLAN-AGENT-CONFORMITY.md +861 -0
  294. package/pro/squads/squad-creator-pro/docs/MIGRATION-ROADMAP-HYBRIDOPS.md +1161 -0
  295. package/pro/squads/squad-creator-pro/docs/MODEL-TIER-QUALIFICATION.md +337 -0
  296. package/pro/squads/squad-creator-pro/docs/PATTERN-LIBRARY.md +333 -0
  297. package/pro/squads/squad-creator-pro/docs/PEDRO-VALERIO-ARCHITECTURE.md +456 -0
  298. package/pro/squads/squad-creator-pro/docs/POR-ONDE-COMECAR.md +210 -0
  299. package/pro/squads/squad-creator-pro/docs/QUICK-START.md +205 -0
  300. package/pro/squads/squad-creator-pro/docs/RFC-001-deterministic-refactoring.md +463 -0
  301. package/pro/squads/squad-creator-pro/docs/TOOL-RECOMMENDATIONS.md +379 -0
  302. package/pro/squads/squad-creator-pro/docs/TROUBLESHOOTING.md +412 -0
  303. package/pro/squads/squad-creator-pro/docs/TUTORIAL-COMPLETO.md +458 -0
  304. package/pro/squads/squad-creator-pro/docs/optimize-v4-proposal.md +354 -0
  305. package/pro/squads/squad-creator-pro/docs/session-report-2026-02-01.md +411 -0
  306. package/pro/squads/squad-creator-pro/docs/sop-extraction-process.md +674 -0
  307. package/pro/squads/squad-creator-pro/docs/squad-chief-agent-flow.md +981 -0
  308. package/pro/squads/squad-creator-pro/docs/squad-creation-pipeline-workflow.md +937 -0
  309. package/pro/squads/squad-creator-pro/docs/task-optimization-framework.md +229 -0
  310. package/pro/squads/squad-creator-pro/docs/validation-report-2026-02-01.md +439 -0
  311. package/pro/squads/squad-creator-pro/minds/oalanicolas/artifacts/HANDOFF_PROTOCOL.md +269 -0
  312. package/pro/squads/squad-creator-pro/minds/oalanicolas/artifacts/SOURCE_CLASSIFICATION.md +258 -0
  313. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_001.md +166 -0
  314. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_002.md +206 -0
  315. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_003.md +239 -0
  316. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_004.md +153 -0
  317. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_005.md +161 -0
  318. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_006.md +166 -0
  319. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_007.md +190 -0
  320. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_008.md +191 -0
  321. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_009.md +234 -0
  322. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_010.md +240 -0
  323. package/pro/squads/squad-creator-pro/minds/pedro_valerio/artifacts/Assinatura_Linguistica.md +355 -0
  324. package/pro/squads/squad-creator-pro/minds/pedro_valerio/artifacts/META_AXIOMAS.md +277 -0
  325. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_BS_001.md +144 -0
  326. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_001.md +174 -0
  327. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PM_001.md +191 -0
  328. package/pro/squads/squad-creator-pro/package.json +26 -0
  329. package/pro/squads/squad-creator-pro/protocols/ai-first-governance.md +63 -0
  330. package/pro/squads/squad-creator-pro/scripts/README.md +246 -0
  331. package/pro/squads/squad-creator-pro/scripts/__pycache__/dependency_check.cpython-314.pyc +0 -0
  332. package/pro/squads/squad-creator-pro/scripts/__pycache__/inventory.cpython-314.pyc +0 -0
  333. package/pro/squads/squad-creator-pro/scripts/__pycache__/naming_validator.cpython-314.pyc +0 -0
  334. package/pro/squads/squad-creator-pro/scripts/__pycache__/quality_gate.cpython-314.pyc +0 -0
  335. package/pro/squads/squad-creator-pro/scripts/__pycache__/scoring.cpython-314.pyc +0 -0
  336. package/pro/squads/squad-creator-pro/scripts/__pycache__/yaml_validator.cpython-314.pyc +0 -0
  337. package/pro/squads/squad-creator-pro/scripts/assess-sources.sh +443 -0
  338. package/pro/squads/squad-creator-pro/scripts/checklist_validator.py +451 -0
  339. package/pro/squads/squad-creator-pro/scripts/clone-review.sh +394 -0
  340. package/pro/squads/squad-creator-pro/scripts/coherence-validator.py +836 -0
  341. package/pro/squads/squad-creator-pro/scripts/create-agent-preflight.py +243 -0
  342. package/pro/squads/squad-creator-pro/scripts/cross-provider/compare-results.js +281 -0
  343. package/pro/squads/squad-creator-pro/scripts/cross-provider/cross-provider-runner.js +462 -0
  344. package/pro/squads/squad-creator-pro/scripts/dependency_check.py +333 -0
  345. package/pro/squads/squad-creator-pro/scripts/fidelity-score.sh +519 -0
  346. package/pro/squads/squad-creator-pro/scripts/generate-squad-greeting.js +426 -0
  347. package/pro/squads/squad-creator-pro/scripts/generate-squad-guide.js +558 -0
  348. package/pro/squads/squad-creator-pro/scripts/inventory.py +269 -0
  349. package/pro/squads/squad-creator-pro/scripts/lib/config-loader.js +151 -0
  350. package/pro/squads/squad-creator-pro/scripts/model-tier-validator.cjs +369 -0
  351. package/pro/squads/squad-creator-pro/scripts/model-usage-logger.cjs +245 -0
  352. package/pro/squads/squad-creator-pro/scripts/modernization-score.sh +308 -0
  353. package/pro/squads/squad-creator-pro/scripts/naming_validator.py +299 -0
  354. package/pro/squads/squad-creator-pro/scripts/on-specialist-complete.py +98 -0
  355. package/pro/squads/squad-creator-pro/scripts/quality_gate.py +413 -0
  356. package/pro/squads/squad-creator-pro/scripts/refresh-registry.py +270 -0
  357. package/pro/squads/squad-creator-pro/scripts/save-session-metrics.py +136 -0
  358. package/pro/squads/squad-creator-pro/scripts/scaffold-squad.cjs +281 -0
  359. package/pro/squads/squad-creator-pro/scripts/scoring.py +395 -0
  360. package/pro/squads/squad-creator-pro/scripts/security_scanner.py +378 -0
  361. package/pro/squads/squad-creator-pro/scripts/squad-analytics.py +585 -0
  362. package/pro/squads/squad-creator-pro/scripts/squad-context-loader.cjs +205 -0
  363. package/pro/squads/squad-creator-pro/scripts/squad-state-manager.cjs +451 -0
  364. package/pro/squads/squad-creator-pro/scripts/squad-workflow-runner.cjs +471 -0
  365. package/pro/squads/squad-creator-pro/scripts/squad_utils.py +261 -0
  366. package/pro/squads/squad-creator-pro/scripts/sync-ide-command.py +590 -0
  367. package/pro/squads/squad-creator-pro/scripts/tests/__init__.py +1 -0
  368. package/pro/squads/squad-creator-pro/scripts/tests/conftest.py +309 -0
  369. package/pro/squads/squad-creator-pro/scripts/tests/run_bash_tests.sh +29 -0
  370. package/pro/squads/squad-creator-pro/scripts/tests/test_assess_sources.sh +216 -0
  371. package/pro/squads/squad-creator-pro/scripts/tests/test_checklist_validator.py +396 -0
  372. package/pro/squads/squad-creator-pro/scripts/tests/test_clone_review.sh +239 -0
  373. package/pro/squads/squad-creator-pro/scripts/tests/test_coherence_validator.py +212 -0
  374. package/pro/squads/squad-creator-pro/scripts/tests/test_dependency_check.py +361 -0
  375. package/pro/squads/squad-creator-pro/scripts/tests/test_fidelity_score.sh +298 -0
  376. package/pro/squads/squad-creator-pro/scripts/tests/test_inventory.py +307 -0
  377. package/pro/squads/squad-creator-pro/scripts/tests/test_modernization_score.sh +211 -0
  378. package/pro/squads/squad-creator-pro/scripts/tests/test_naming_validator.py +373 -0
  379. package/pro/squads/squad-creator-pro/scripts/tests/test_quality_gate.py +280 -0
  380. package/pro/squads/squad-creator-pro/scripts/tests/test_refresh_registry.py +338 -0
  381. package/pro/squads/squad-creator-pro/scripts/tests/test_scoring.py +366 -0
  382. package/pro/squads/squad-creator-pro/scripts/tests/test_security_scanner.py +354 -0
  383. package/pro/squads/squad-creator-pro/scripts/tests/test_squad_analytics.py +450 -0
  384. package/pro/squads/squad-creator-pro/scripts/tests/test_validate_clone.sh +252 -0
  385. package/pro/squads/squad-creator-pro/scripts/tests/test_yaml_validator.py +412 -0
  386. package/pro/squads/squad-creator-pro/scripts/validate-agent-output.py +115 -0
  387. package/pro/squads/squad-creator-pro/scripts/validate-all.sh +49 -0
  388. package/pro/squads/squad-creator-pro/scripts/validate-squad-structure.py +535 -0
  389. package/pro/squads/squad-creator-pro/scripts/validate-squad.sh +944 -0
  390. package/pro/squads/squad-creator-pro/scripts/yaml_validator.py +528 -0
  391. package/pro/squads/squad-creator-pro/skills/squad.md +301 -0
  392. package/pro/squads/squad-creator-pro/squad.yaml +36 -0
  393. package/pro/squads/squad-creator-pro/tasks/CHANGELOG.md +80 -0
  394. package/pro/squads/squad-creator-pro/tasks/an-assess-sources.md +78 -0
  395. package/pro/squads/squad-creator-pro/tasks/an-clone-review.md +104 -0
  396. package/pro/squads/squad-creator-pro/tasks/an-compare-outputs.md +354 -0
  397. package/pro/squads/squad-creator-pro/tasks/an-design-clone.md +79 -0
  398. package/pro/squads/squad-creator-pro/tasks/an-diagnose-clone.md +87 -0
  399. package/pro/squads/squad-creator-pro/tasks/an-extract-dna.md +90 -0
  400. package/pro/squads/squad-creator-pro/tasks/an-extract-framework.md +100 -0
  401. package/pro/squads/squad-creator-pro/tasks/an-fidelity-score.md +108 -0
  402. package/pro/squads/squad-creator-pro/tasks/an-validate-clone.md +96 -0
  403. package/pro/squads/squad-creator-pro/tasks/auto-acquire-sources.md +349 -0
  404. package/pro/squads/squad-creator-pro/tasks/collect-sources.md +533 -0
  405. package/pro/squads/squad-creator-pro/tasks/create-agent.md +768 -0
  406. package/pro/squads/squad-creator-pro/tasks/create-documentation.md +258 -0
  407. package/pro/squads/squad-creator-pro/tasks/create-pipeline.md +296 -0
  408. package/pro/squads/squad-creator-pro/tasks/create-squad.md +933 -0
  409. package/pro/squads/squad-creator-pro/tasks/create-task.md +1148 -0
  410. package/pro/squads/squad-creator-pro/tasks/create-template.md +474 -0
  411. package/pro/squads/squad-creator-pro/tasks/create-workflow.md +720 -0
  412. package/pro/squads/squad-creator-pro/tasks/deconstruct.md +167 -0
  413. package/pro/squads/squad-creator-pro/tasks/deep-research-pre-agent.md +566 -0
  414. package/pro/squads/squad-creator-pro/tasks/detect-squad-context.md +81 -0
  415. package/pro/squads/squad-creator-pro/tasks/discover-tools.md +944 -0
  416. package/pro/squads/squad-creator-pro/tasks/extract-implicit.md +352 -0
  417. package/pro/squads/squad-creator-pro/tasks/extract-knowledge.md +577 -0
  418. package/pro/squads/squad-creator-pro/tasks/extract-sop.md +320 -0
  419. package/pro/squads/squad-creator-pro/tasks/extract-thinking-dna.md +653 -0
  420. package/pro/squads/squad-creator-pro/tasks/extract-voice-dna.md +619 -0
  421. package/pro/squads/squad-creator-pro/tasks/find-0.8.md +222 -0
  422. package/pro/squads/squad-creator-pro/tasks/install-commands.md +373 -0
  423. package/pro/squads/squad-creator-pro/tasks/lookup-model.md +78 -0
  424. package/pro/squads/squad-creator-pro/tasks/migrate-workflows-to-yaml.md +259 -0
  425. package/pro/squads/squad-creator-pro/tasks/next-squad.md +487 -0
  426. package/pro/squads/squad-creator-pro/tasks/optimize-workflow.md +851 -0
  427. package/pro/squads/squad-creator-pro/tasks/optimize.md +1082 -0
  428. package/pro/squads/squad-creator-pro/tasks/parallel-discovery.md +58 -0
  429. package/pro/squads/squad-creator-pro/tasks/pv-audit.md +244 -0
  430. package/pro/squads/squad-creator-pro/tasks/pv-axioma-assessment-wf-clone-mind.yaml +256 -0
  431. package/pro/squads/squad-creator-pro/tasks/pv-axioma-assessment.md +83 -0
  432. package/pro/squads/squad-creator-pro/tasks/pv-modernization-score.md +83 -0
  433. package/pro/squads/squad-creator-pro/tasks/qa-after-creation.md +475 -0
  434. package/pro/squads/squad-creator-pro/tasks/qualify-task.md +265 -0
  435. package/pro/squads/squad-creator-pro/tasks/reexecute-squad-phase.md +64 -0
  436. package/pro/squads/squad-creator-pro/tasks/refresh-registry.md +403 -0
  437. package/pro/squads/squad-creator-pro/tasks/smoke-test-model-routing.md +167 -0
  438. package/pro/squads/squad-creator-pro/tasks/squad-analytics.md +265 -0
  439. package/pro/squads/squad-creator-pro/tasks/squad-fusion.md +817 -0
  440. package/pro/squads/squad-creator-pro/tasks/squad-overview.md +683 -0
  441. package/pro/squads/squad-creator-pro/tasks/sync-ide-command.md +392 -0
  442. package/pro/squads/squad-creator-pro/tasks/update-mind.md +428 -0
  443. package/pro/squads/squad-creator-pro/tasks/upgrade-squad.md +919 -0
  444. package/pro/squads/squad-creator-pro/tasks/validate-extraction.md +209 -0
  445. package/pro/squads/squad-creator-pro/tasks/validate-final-artifacts.md +80 -0
  446. package/pro/squads/squad-creator-pro/tasks/validate-squad.md +1385 -0
  447. package/pro/squads/squad-creator-pro/templates/.gitkeep +1 -0
  448. package/pro/squads/squad-creator-pro/templates/agent-flow-doc-tmpl.md +512 -0
  449. package/pro/squads/squad-creator-pro/templates/agent-tmpl.md +697 -0
  450. package/pro/squads/squad-creator-pro/templates/config-tmpl.yaml +352 -0
  451. package/pro/squads/squad-creator-pro/templates/handoff-insumos-tmpl.yaml +112 -0
  452. package/pro/squads/squad-creator-pro/templates/orchestrator-tmpl.md +74 -0
  453. package/pro/squads/squad-creator-pro/templates/pipeline-progress-tmpl.py +373 -0
  454. package/pro/squads/squad-creator-pro/templates/pipeline-runner-tmpl.py +444 -0
  455. package/pro/squads/squad-creator-pro/templates/pipeline-state-tmpl.py +413 -0
  456. package/pro/squads/squad-creator-pro/templates/pop-extractor-prompt.md +549 -0
  457. package/pro/squads/squad-creator-pro/templates/quality-dashboard-tmpl.md +286 -0
  458. package/pro/squads/squad-creator-pro/templates/quality-gate-tmpl.yaml +589 -0
  459. package/pro/squads/squad-creator-pro/templates/readme-tmpl.md +231 -0
  460. package/pro/squads/squad-creator-pro/templates/research-output-tmpl.md +625 -0
  461. package/pro/squads/squad-creator-pro/templates/research-prompt-tmpl.md +479 -0
  462. package/pro/squads/squad-creator-pro/templates/squad-prd-tmpl.md +464 -0
  463. package/pro/squads/squad-creator-pro/templates/squad-readme-tmpl.md +170 -0
  464. package/pro/squads/squad-creator-pro/templates/story-create-agent-tmpl.md +284 -0
  465. package/pro/squads/squad-creator-pro/templates/task-tmpl.md +461 -0
  466. package/pro/squads/squad-creator-pro/templates/template-tmpl.yaml +227 -0
  467. package/pro/squads/squad-creator-pro/templates/workflow-doc-tmpl.md +860 -0
  468. package/pro/squads/squad-creator-pro/templates/workflow-tmpl.yaml +394 -0
  469. package/pro/squads/squad-creator-pro/test-cases/BATCH-PROGRESS.md +268 -0
  470. package/pro/squads/squad-creator-pro/test-cases/QUALIFICATION-DASHBOARD.yaml +13 -0
  471. package/pro/squads/squad-creator-pro/test-cases/_template.yaml +147 -0
  472. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/ASSESSMENT-SUMMARY.md +275 -0
  473. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/ASSESSMENT_SUMMARY.md +140 -0
  474. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/CHECKPOINT_MATRIX.md +202 -0
  475. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/EXECUTION-REPORT.md +413 -0
  476. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/EXECUTION_NOTES.md +358 -0
  477. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/README-v2.2.2.md +299 -0
  478. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/README.md +320 -0
  479. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/TEST-REPORT-v2.1.md +351 -0
  480. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/VERIFICATION-CHECKLIST.txt +247 -0
  481. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/formal-qualification-report.yaml +389 -0
  482. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-output.yaml +366 -0
  483. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.1-output.yaml +452 -0
  484. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.2.1-output.yaml +281 -0
  485. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/haiku-v2.2.2-output.yaml +332 -0
  486. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/opus-baseline.yaml +517 -0
  487. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/qualification-report.yaml +213 -0
  488. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/test-case.yaml +69 -0
  489. package/pro/squads/squad-creator-pro/test-cases/an-clone-review/haiku-round-1.yaml +213 -0
  490. package/pro/squads/squad-creator-pro/test-cases/an-clone-review/opus-baseline.yaml +566 -0
  491. package/pro/squads/squad-creator-pro/test-cases/an-clone-review/qualification-report.yaml +82 -0
  492. package/pro/squads/squad-creator-pro/test-cases/an-design-clone/test-case.yaml +102 -0
  493. package/pro/squads/squad-creator-pro/test-cases/an-extract-dna/test-case.yaml +105 -0
  494. package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/haiku-round-1.yaml +262 -0
  495. package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/opus-baseline.yaml +266 -0
  496. package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/qualification-report.yaml +94 -0
  497. package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/haiku-round-1.yaml +282 -0
  498. package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/opus-baseline.yaml +470 -0
  499. package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/qualification-report.yaml +106 -0
  500. package/pro/squads/squad-creator-pro/test-cases/collect-sources/test-case.yaml +105 -0
  501. package/pro/squads/squad-creator-pro/test-cases/create-task/test-case.yaml +104 -0
  502. package/pro/squads/squad-creator-pro/test-cases/cross-provider/DASHBOARD.yaml +11 -0
  503. package/pro/squads/squad-creator-pro/test-cases/pv-audit/test-case.yaml +106 -0
  504. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/haiku-output.yaml +209 -0
  505. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/opus-baseline.yaml +96 -0
  506. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/sonnet-output.yaml +30 -0
  507. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/test-case.yaml +129 -0
  508. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/comparison-round-1.yaml +242 -0
  509. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/haiku-round-1.yaml +393 -0
  510. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/opus-baseline.yaml +488 -0
  511. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/qualification-report.yaml +74 -0
  512. package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/haiku-round-1.yaml +292 -0
  513. package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/opus-baseline.yaml +603 -0
  514. package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/qualification-report.yaml +97 -0
  515. package/pro/squads/squad-creator-pro/test-cases/smoke-test-model-routing/test-case.yaml +100 -0
  516. package/pro/squads/squad-creator-pro/test-cases/upgrade-squad/test-case.yaml +106 -0
  517. package/pro/squads/squad-creator-pro/test-cases/validate-squad/comparison-round-1.yaml +223 -0
  518. package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-1-MINE.yaml +36 -0
  519. package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-1.yaml +193 -0
  520. package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-2.yaml +303 -0
  521. package/pro/squads/squad-creator-pro/test-cases/validate-squad/haiku-round-3-v4-task.yaml +149 -0
  522. package/pro/squads/squad-creator-pro/test-cases/validate-squad/opus-baseline.yaml +529 -0
  523. package/pro/squads/squad-creator-pro/test-cases/validate-squad/opus-round-3-v4-task.yaml +132 -0
  524. package/pro/squads/squad-creator-pro/test-cases/validate-squad/qualification-report.yaml +104 -0
  525. package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/haiku-output-v2-calibrated.yaml +200 -0
  526. package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/haiku-output.yaml +183 -0
  527. package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/opus-baseline.yaml +112 -0
  528. package/pro/squads/squad-creator-pro/utils/.gitkeep +1 -0
  529. package/pro/squads/squad-creator-pro/workflows/.gitkeep +1 -0
  530. package/pro/squads/squad-creator-pro/workflows/create-squad.yaml +348 -0
  531. package/pro/squads/squad-creator-pro/workflows/modules/module-discovery.yaml +16 -0
  532. package/pro/squads/squad-creator-pro/workflows/modules/module-integration.yaml +16 -0
  533. package/pro/squads/squad-creator-pro/workflows/modules/module-quality-gates.yaml +15 -0
  534. package/pro/squads/squad-creator-pro/workflows/validate-squad.yaml +582 -0
  535. package/pro/squads/squad-creator-pro/workflows/wf-auto-acquire-sources.yaml +518 -0
  536. package/pro/squads/squad-creator-pro/workflows/wf-brownfield-upgrade-squad.yaml +46 -0
  537. package/pro/squads/squad-creator-pro/workflows/wf-clone-mind.yaml +521 -0
  538. package/pro/squads/squad-creator-pro/workflows/wf-context-aware-create-squad.yaml +47 -0
  539. package/pro/squads/squad-creator-pro/workflows/wf-create-squad.yaml +1619 -0
  540. package/pro/squads/squad-creator-pro/workflows/wf-cross-provider-qualification.yaml +711 -0
  541. package/pro/squads/squad-creator-pro/workflows/wf-discover-tools.yaml +1439 -0
  542. package/pro/squads/squad-creator-pro/workflows/wf-extraction-pipeline.yaml +486 -0
  543. package/pro/squads/squad-creator-pro/workflows/wf-mind-research-loop.yaml +668 -0
  544. package/pro/squads/squad-creator-pro/workflows/wf-model-tier-qualification.yaml +800 -0
  545. package/pro/squads/squad-creator-pro/workflows/wf-optimize-squad.yaml +684 -0
  546. package/pro/squads/squad-creator-pro/workflows/wf-research-then-create-agent.yaml +921 -0
  547. package/pro/squads/squad-creator-pro/workflows/wf-squad-fusion.yaml +1684 -0
@@ -0,0 +1,243 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * GCD Base Unit + Harmonic Scale — Spacing Curation Pipeline
4
+ *
5
+ * Algorithm (from DS-CURATION-PIPELINE-PROPOSAL.md §4.2):
6
+ * 1. Normalize units (rem → px)
7
+ * 2. Calculate GCD of all values
8
+ * 3. Default to 4px grid if GCD is anomalous
9
+ * 4. Generate harmonic scale (0-96px, 13 steps)
10
+ * 5. Map each value to nearest scale step
11
+ * 6. Document unmapped values as overrides
12
+ */
13
+
14
+ const fs = require('fs');
15
+ const path = require('path');
16
+
17
+ const ROOT = process.cwd();
18
+ const EXTRACTION_DIR = path.join(ROOT, 'workspace', 'domains', 'design-system', 'extraction');
19
+ const MERGED_PATH = path.join(EXTRACTION_DIR, 'all-pages-merged.json');
20
+ const OUTPUT_DIR = path.join(EXTRACTION_DIR, 'curated');
21
+ const OUTPUT_PATH = path.join(OUTPUT_DIR, 'curated-spacing.json');
22
+
23
+ // ── Math helpers ───────────────────────────────────────────────────────────
24
+
25
+ function gcd(a, b) {
26
+ a = Math.abs(Math.round(a));
27
+ b = Math.abs(Math.round(b));
28
+ while (b) {
29
+ [a, b] = [b, a % b];
30
+ }
31
+ return a;
32
+ }
33
+
34
+ function gcdArray(arr) {
35
+ return arr.reduce((acc, val) => gcd(acc, val), arr[0]);
36
+ }
37
+
38
+ // ── Harmonic Scale ─────────────────────────────────────────────────────────
39
+
40
+ // Standard 4px grid scale (Tailwind-compatible)
41
+ const SCALE = [
42
+ { name: '0', px: 0 },
43
+ { name: '0.5', px: 2 },
44
+ { name: '1', px: 4 },
45
+ { name: '1.5', px: 6 },
46
+ { name: '2', px: 8 },
47
+ { name: '2.5', px: 10 },
48
+ { name: '3', px: 12 },
49
+ { name: '3.5', px: 14 },
50
+ { name: '4', px: 16 },
51
+ { name: '5', px: 20 },
52
+ { name: '6', px: 24 },
53
+ { name: '7', px: 28 },
54
+ { name: '8', px: 32 },
55
+ { name: '9', px: 36 },
56
+ { name: '10', px: 40 },
57
+ { name: '11', px: 44 },
58
+ { name: '12', px: 48 },
59
+ { name: '14', px: 56 },
60
+ { name: '16', px: 64 },
61
+ { name: '20', px: 80 },
62
+ { name: '24', px: 96 },
63
+ { name: '28', px: 112 },
64
+ { name: '32', px: 128 },
65
+ { name: '36', px: 144 },
66
+ { name: '40', px: 160 },
67
+ { name: '44', px: 176 },
68
+ { name: '48', px: 192 },
69
+ { name: '52', px: 208 },
70
+ { name: '56', px: 224 },
71
+ { name: '60', px: 240 },
72
+ { name: '64', px: 256 },
73
+ { name: '72', px: 288 },
74
+ { name: '80', px: 320 },
75
+ { name: '96', px: 384 },
76
+ ];
77
+
78
+ function findNearestStep(px) {
79
+ let best = SCALE[0];
80
+ let bestDist = Math.abs(px - best.px);
81
+
82
+ for (const step of SCALE) {
83
+ const dist = Math.abs(px - step.px);
84
+ if (dist < bestDist) {
85
+ bestDist = dist;
86
+ best = step;
87
+ }
88
+ }
89
+
90
+ return { step: best, distance: bestDist };
91
+ }
92
+
93
+ // ── Main ───────────────────────────────────────────────────────────────────
94
+
95
+ function main() {
96
+ console.log('=== SPACING CURATION PIPELINE ===\n');
97
+
98
+ const merged = JSON.parse(fs.readFileSync(MERGED_PATH, 'utf8'));
99
+ const rawSpacings = merged.spacings || [];
100
+
101
+ console.log(`Input: ${rawSpacings.length} unique spacing values from ${merged.meta.pagesIncluded} pages`);
102
+
103
+ // Extract unique px values with usage counts
104
+ const valueMap = new Map(); // px → { count, types[], contexts[] }
105
+ for (const sp of rawSpacings) {
106
+ const px = Math.round(sp.value);
107
+ if (px < 0) continue; // Skip negative values
108
+ const entry = valueMap.get(px) || { px, count: 0, types: new Set(), contexts: new Set() };
109
+ entry.count += sp.count || 0;
110
+ entry.types.add(sp.type || 'unknown');
111
+ if (sp.contexts) sp.contexts.forEach((c) => entry.contexts.add(c));
112
+ valueMap.set(px, entry);
113
+ }
114
+
115
+ const uniqueValues = [...valueMap.values()].sort((a, b) => a.px - b.px);
116
+ console.log(` Unique pixel values: ${uniqueValues.length}`);
117
+
118
+ // Calculate GCD
119
+ const positiveValues = uniqueValues.filter((v) => v.px > 0).map((v) => v.px);
120
+ let detectedGcd = positiveValues.length > 0 ? gcdArray(positiveValues) : 4;
121
+
122
+ // Validate GCD
123
+ let baseUnit = detectedGcd;
124
+ let gcdStatus = 'auto';
125
+ if (detectedGcd !== 4 && detectedGcd !== 8 && detectedGcd !== 2) {
126
+ baseUnit = 4; // Default to 4px (Workshop rule)
127
+ gcdStatus = 'override';
128
+ console.log(` GCD detected: ${detectedGcd}px → Overriding to 4px (market standard)`);
129
+ } else {
130
+ console.log(` GCD detected: ${detectedGcd}px → Using as base unit`);
131
+ }
132
+
133
+ // Map each value to nearest scale step
134
+ const MAX_DISTANCE = 2; // Values > 2px from scale step → override
135
+ const decisions = [];
136
+ const mapped = [];
137
+ const overrides = [];
138
+ const usedSteps = new Map(); // step name → accumulated count
139
+
140
+ const totalUsage = uniqueValues.reduce((sum, v) => sum + v.count, 0);
141
+ let mappedUsage = 0;
142
+
143
+ for (const val of uniqueValues) {
144
+ const { step, distance } = findNearestStep(val.px);
145
+
146
+ if (distance <= MAX_DISTANCE) {
147
+ mapped.push({
148
+ originalPx: val.px,
149
+ mappedTo: step.name,
150
+ mappedPx: step.px,
151
+ distance,
152
+ count: val.count,
153
+ types: [...val.types],
154
+ });
155
+ mappedUsage += val.count;
156
+
157
+ const acc = usedSteps.get(step.name) || { step: step.name, px: step.px, count: 0 };
158
+ acc.count += val.count;
159
+ usedSteps.set(step.name, acc);
160
+
161
+ if (distance > 0) {
162
+ decisions.push({
163
+ category: 'spacing',
164
+ action: 'MAP',
165
+ items: [`${val.px}px`],
166
+ result: `${step.px}px (step ${step.name})`,
167
+ reason: `Distance ${distance}px <= ${MAX_DISTANCE}px threshold, mapped to nearest scale step`,
168
+ authority: 'Workshop 2026-02-16 — 4px grid market standard',
169
+ });
170
+ }
171
+ } else {
172
+ overrides.push({
173
+ originalPx: val.px,
174
+ nearestStep: step.name,
175
+ nearestPx: step.px,
176
+ distance,
177
+ count: val.count,
178
+ types: [...val.types],
179
+ contexts: [...val.contexts].slice(0, 3),
180
+ });
181
+ }
182
+ }
183
+
184
+ // Build final scale (only steps that are actually used + essential ones)
185
+ const essentialSteps = ['0', '1', '2', '3', '4', '6', '8', '10', '12', '16', '20', '24'];
186
+ const finalScale = SCALE.filter(
187
+ (s) => usedSteps.has(s.name) || essentialSteps.includes(s.name)
188
+ ).map((s) => ({
189
+ name: s.name,
190
+ px: s.px,
191
+ rem: Math.round((s.px / 16) * 10000) / 10000,
192
+ cssVar: `--spacing-${s.name.replace('.', '_')}`,
193
+ usage: usedSteps.get(s.name)?.count || 0,
194
+ }));
195
+
196
+ // Stats
197
+ const coverage = (mappedUsage / totalUsage) * 100;
198
+ const reduction = ((uniqueValues.length - finalScale.length) / uniqueValues.length) * 100;
199
+
200
+ const scores = {
201
+ before: uniqueValues.length,
202
+ after: finalScale.length,
203
+ reduction: `${Math.round(reduction * 10) / 10}%`,
204
+ target: '60%',
205
+ status: reduction >= 60 ? 'PASS' : reduction >= 40 ? 'CONDITIONAL' : 'FAIL',
206
+ base_unit: `${baseUnit}px`,
207
+ base_unit_status: gcdStatus === 'auto' ? 'PASS' : 'CONDITIONAL',
208
+ coverage: `${Math.round(coverage * 10) / 10}%`,
209
+ coverage_status: coverage >= 95 ? 'PASS' : coverage >= 85 ? 'CONDITIONAL' : 'FAIL',
210
+ overrides_count: overrides.length,
211
+ };
212
+
213
+ const output = {
214
+ meta: {
215
+ source: 'all-pages-merged.json',
216
+ pagesIncluded: merged.meta.pagesIncluded,
217
+ curatedAt: new Date().toISOString(),
218
+ algorithm: 'GCD base unit + harmonic scale mapping',
219
+ baseUnit: baseUnit,
220
+ detectedGcd: detectedGcd,
221
+ },
222
+ scores,
223
+ scale: finalScale,
224
+ overrides: overrides.sort((a, b) => b.count - a.count),
225
+ decisions,
226
+ };
227
+
228
+ fs.mkdirSync(OUTPUT_DIR, { recursive: true });
229
+ fs.writeFileSync(OUTPUT_PATH, JSON.stringify(output, null, 2));
230
+
231
+ console.log(`\n--- RESULTS ---`);
232
+ console.log(` Before: ${scores.before} unique values`);
233
+ console.log(` After: ${scores.after} scale steps`);
234
+ console.log(` Reduction: ${scores.reduction} (target: ${scores.target}) → ${scores.status}`);
235
+ console.log(` Base unit: ${scores.base_unit} (${scores.base_unit_status})`);
236
+ console.log(` Coverage: ${scores.coverage} → ${scores.coverage_status}`);
237
+ console.log(` Overrides: ${scores.overrides_count}`);
238
+ console.log(` Decisions logged: ${decisions.length}`);
239
+ console.log(`\nOutput: ${OUTPUT_PATH}`);
240
+ console.log('=== DONE ===');
241
+ }
242
+
243
+ main();
@@ -0,0 +1,404 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Modular Scale + Font Consolidation — Typography Curation Pipeline
4
+ *
5
+ * Algorithm (from DS-CURATION-PIPELINE-PROPOSAL.md §4.3):
6
+ * 1. Count frequency of each font family → pick top 2 + 1 mono
7
+ * 2. Detect modular scale multiplier, generate size scale
8
+ * 3. Consolidate weights (max 5)
9
+ * 4. Calculate ideal line-height ratios
10
+ * 5. Consolidate letter-spacing
11
+ */
12
+
13
+ const fs = require('fs');
14
+ const path = require('path');
15
+
16
+ const ROOT = process.cwd();
17
+ const EXTRACTION_DIR = path.join(ROOT, 'workspace', 'domains', 'design-system', 'extraction');
18
+ const MERGED_PATH = path.join(EXTRACTION_DIR, 'all-pages-merged.json');
19
+ const STYLES_PATH = path.join(EXTRACTION_DIR, 'figma-styles.json');
20
+ const OUTPUT_DIR = path.join(EXTRACTION_DIR, 'curated');
21
+ const OUTPUT_PATH = path.join(OUTPUT_DIR, 'curated-typography.json');
22
+
23
+ // ── Size Scale (Tailwind-compatible) ───────────────────────────────────────
24
+
25
+ const SIZE_SCALE = [
26
+ { name: 'xs', px: 12 },
27
+ { name: 'sm', px: 14 },
28
+ { name: 'base', px: 16 },
29
+ { name: 'lg', px: 18 },
30
+ { name: 'xl', px: 20 },
31
+ { name: '2xl', px: 24 },
32
+ { name: '3xl', px: 30 },
33
+ { name: '4xl', px: 36 },
34
+ { name: '5xl', px: 48 },
35
+ { name: '6xl', px: 60 },
36
+ { name: '7xl', px: 72 },
37
+ { name: '8xl', px: 96 },
38
+ { name: '9xl', px: 128 },
39
+ ];
40
+
41
+ // ── Weight consolidation ───────────────────────────────────────────────────
42
+
43
+ const CANONICAL_WEIGHTS = [
44
+ { name: 'light', value: 300 },
45
+ { name: 'normal', value: 400 },
46
+ { name: 'medium', value: 500 },
47
+ { name: 'semibold', value: 600 },
48
+ { name: 'bold', value: 700 },
49
+ ];
50
+
51
+ function findNearestWeight(w) {
52
+ let best = CANONICAL_WEIGHTS[0];
53
+ let bestDist = Math.abs(w - best.value);
54
+ for (const cw of CANONICAL_WEIGHTS) {
55
+ const dist = Math.abs(w - cw.value);
56
+ if (dist < bestDist) {
57
+ bestDist = dist;
58
+ best = cw;
59
+ }
60
+ }
61
+ return { canonical: best, distance: bestDist };
62
+ }
63
+
64
+ // ── Line-height ratios ────────────────────────────────────────────────────
65
+
66
+ const LH_RATIOS = [
67
+ { name: 'none', value: 1.0 },
68
+ { name: 'tight', value: 1.25 },
69
+ { name: 'snug', value: 1.375 },
70
+ { name: 'normal', value: 1.5 },
71
+ { name: 'relaxed', value: 1.625 },
72
+ { name: 'loose', value: 2.0 },
73
+ ];
74
+
75
+ function findNearestLineHeight(ratio) {
76
+ let best = LH_RATIOS[0];
77
+ let bestDist = Math.abs(ratio - best.value);
78
+ for (const lh of LH_RATIOS) {
79
+ const dist = Math.abs(ratio - lh.value);
80
+ if (dist < bestDist) {
81
+ bestDist = dist;
82
+ best = lh;
83
+ }
84
+ }
85
+ return best;
86
+ }
87
+
88
+ // ── Letter-spacing ─────────────────────────────────────────────────────────
89
+
90
+ const LS_SCALE = [
91
+ { name: 'tighter', em: -0.05 },
92
+ { name: 'tight', em: -0.025 },
93
+ { name: 'normal', em: 0 },
94
+ { name: 'wide', em: 0.025 },
95
+ { name: 'wider', em: 0.05 },
96
+ { name: 'widest', em: 0.1 },
97
+ ];
98
+
99
+ // ── Mono font detection ───────────────────────────────────────────────────
100
+
101
+ const MONO_PATTERNS = /mono|code|console|courier|fira\s*code|jet\s*brains|source\s*code|menlo|hack|inconsolata/i;
102
+
103
+ // ── Main ───────────────────────────────────────────────────────────────────
104
+
105
+ function main() {
106
+ console.log('=== TYPOGRAPHY CURATION PIPELINE ===\n');
107
+
108
+ const merged = JSON.parse(fs.readFileSync(MERGED_PATH, 'utf8'));
109
+ const rawFonts = merged.fonts || [];
110
+ const rawTextStyles = merged.textStyles || [];
111
+
112
+ // Load Figma styles for enrichment
113
+ let figmaStyles = [];
114
+ try { figmaStyles = JSON.parse(fs.readFileSync(STYLES_PATH, 'utf8')); } catch (_) { /* optional */ }
115
+ const textFigmaStyles = figmaStyles.filter((s) => s.style_type === 'TEXT');
116
+ console.log(` Figma text styles: ${textFigmaStyles.length}`);
117
+
118
+ // Analyze text decoration and text case usage from enriched textStyles
119
+ const decorationMap = new Map();
120
+ const textCaseMap = new Map();
121
+ for (const ts of rawTextStyles) {
122
+ const dec = ts.textDecoration || 'NONE';
123
+ decorationMap.set(dec, (decorationMap.get(dec) || 0) + (ts.count || 0));
124
+ const tc = ts.textCase || 'ORIGINAL';
125
+ textCaseMap.set(tc, (textCaseMap.get(tc) || 0) + (ts.count || 0));
126
+ }
127
+
128
+ console.log(`Input: ${rawFonts.length} font entries, ${rawTextStyles.length} text styles`);
129
+
130
+ // 1. Font families — count frequency
131
+ const familyMap = new Map(); // family → total count
132
+ for (const font of rawFonts) {
133
+ const family = (font.family || '').trim();
134
+ if (!family) continue;
135
+ familyMap.set(family, (familyMap.get(family) || 0) + (font.count || 0));
136
+ }
137
+
138
+ const sortedFamilies = [...familyMap.entries()]
139
+ .sort((a, b) => b[1] - a[1])
140
+ .map(([name, count]) => ({ name, count, isMono: MONO_PATTERNS.test(name) }));
141
+
142
+ console.log(` Unique families: ${sortedFamilies.length}`);
143
+
144
+ // Select top 2 display/body + 1 mono
145
+ const monoFamilies = sortedFamilies.filter((f) => f.isMono);
146
+ const nonMonoFamilies = sortedFamilies.filter((f) => !f.isMono);
147
+
148
+ const selectedFamilies = [];
149
+ if (nonMonoFamilies.length >= 1) selectedFamilies.push({ ...nonMonoFamilies[0], role: 'primary' });
150
+ if (nonMonoFamilies.length >= 2) selectedFamilies.push({ ...nonMonoFamilies[1], role: 'secondary' });
151
+ if (monoFamilies.length >= 1) selectedFamilies.push({ ...monoFamilies[0], role: 'mono' });
152
+
153
+ // Rejected families (< 5% usage)
154
+ const totalFontUsage = sortedFamilies.reduce((sum, f) => sum + f.count, 0);
155
+ const rejectedFamilies = sortedFamilies
156
+ .filter((f) => !selectedFamilies.some((s) => s.name === f.name))
157
+ .filter((f) => (f.count / totalFontUsage) < 0.05)
158
+ .map((f) => ({
159
+ name: f.name,
160
+ count: f.count,
161
+ percentage: `${Math.round((f.count / totalFontUsage) * 1000) / 10}%`,
162
+ }));
163
+
164
+ console.log(` Selected families: ${selectedFamilies.map((f) => f.name).join(', ')}`);
165
+ console.log(` Rejected families: ${rejectedFamilies.length}`);
166
+
167
+ // 2. Font sizes — map to scale
168
+ const sizeMap = new Map(); // px → count
169
+ for (const ts of rawTextStyles) {
170
+ const size = Math.round(ts.fontSize || 0);
171
+ if (size <= 0) continue;
172
+ sizeMap.set(size, (sizeMap.get(size) || 0) + (ts.count || 0));
173
+ }
174
+
175
+ const uniqueSizes = [...sizeMap.entries()]
176
+ .sort((a, b) => a[0] - b[0])
177
+ .map(([px, count]) => ({ px, count }));
178
+
179
+ console.log(` Unique sizes: ${uniqueSizes.length}`);
180
+
181
+ // Map each size to nearest scale step
182
+ const sizeMappings = [];
183
+ const usedSizeSteps = new Map();
184
+
185
+ for (const { px, count } of uniqueSizes) {
186
+ let bestStep = SIZE_SCALE[0];
187
+ let bestDist = Math.abs(px - bestStep.px);
188
+
189
+ for (const step of SIZE_SCALE) {
190
+ const dist = Math.abs(px - step.px);
191
+ if (dist < bestDist) {
192
+ bestDist = dist;
193
+ bestStep = step;
194
+ }
195
+ }
196
+
197
+ sizeMappings.push({
198
+ originalPx: px,
199
+ mappedTo: bestStep.name,
200
+ mappedPx: bestStep.px,
201
+ distance: bestDist,
202
+ count,
203
+ });
204
+
205
+ const acc = usedSizeSteps.get(bestStep.name) || { ...bestStep, count: 0, rem: bestStep.px / 16 };
206
+ acc.count += count;
207
+ usedSizeSteps.set(bestStep.name, acc);
208
+ }
209
+
210
+ // Final size scale (used + essential)
211
+ const essentialSizes = ['xs', 'sm', 'base', 'lg', 'xl', '2xl', '3xl', '4xl', '5xl'];
212
+ const finalSizeScale = SIZE_SCALE
213
+ .filter((s) => usedSizeSteps.has(s.name) || essentialSizes.includes(s.name))
214
+ .map((s) => ({
215
+ name: s.name,
216
+ px: s.px,
217
+ rem: s.px / 16,
218
+ cssVar: `--font-size-${s.name}`,
219
+ usage: usedSizeSteps.get(s.name)?.count || 0,
220
+ }));
221
+
222
+ // 3. Weights — consolidate
223
+ const weightMap = new Map();
224
+ for (const ts of rawTextStyles) {
225
+ const w = ts.fontWeight || 400;
226
+ weightMap.set(w, (weightMap.get(w) || 0) + (ts.count || 0));
227
+ }
228
+
229
+ const decisions = [];
230
+ const weightMappings = [];
231
+ const usedWeights = new Map();
232
+
233
+ for (const [w, count] of weightMap) {
234
+ const { canonical, distance } = findNearestWeight(w);
235
+ weightMappings.push({
236
+ original: w,
237
+ mappedTo: canonical.name,
238
+ mappedValue: canonical.value,
239
+ distance,
240
+ count,
241
+ });
242
+
243
+ const acc = usedWeights.get(canonical.name) || { ...canonical, count: 0 };
244
+ acc.count += count;
245
+ usedWeights.set(canonical.name, acc);
246
+
247
+ if (distance > 0) {
248
+ decisions.push({
249
+ category: 'typography',
250
+ action: 'MAP_WEIGHT',
251
+ items: [`weight ${w}`],
252
+ result: `${canonical.name} (${canonical.value})`,
253
+ reason: `Distance ${distance} < 50 threshold`,
254
+ authority: 'DS-CURATION-PIPELINE-PROPOSAL §4.3',
255
+ });
256
+ }
257
+ }
258
+
259
+ const finalWeights = CANONICAL_WEIGHTS
260
+ .filter((w) => usedWeights.has(w.name))
261
+ .map((w) => ({
262
+ name: w.name,
263
+ value: w.value,
264
+ cssVar: `--font-weight-${w.name}`,
265
+ usage: usedWeights.get(w.name)?.count || 0,
266
+ }));
267
+
268
+ // 4. Line heights
269
+ const lhMap = new Map();
270
+ for (const ts of rawTextStyles) {
271
+ if (!ts.fontSize || !ts.lineHeight) continue;
272
+ const ratio = Math.round((ts.lineHeight / ts.fontSize) * 100) / 100;
273
+ lhMap.set(ratio, (lhMap.get(ratio) || 0) + (ts.count || 0));
274
+ }
275
+
276
+ const usedLineHeights = new Map();
277
+ for (const [ratio, count] of lhMap) {
278
+ const nearest = findNearestLineHeight(ratio);
279
+ const acc = usedLineHeights.get(nearest.name) || { ...nearest, count: 0 };
280
+ acc.count += count;
281
+ usedLineHeights.set(nearest.name, acc);
282
+ }
283
+
284
+ const finalLineHeights = LH_RATIOS
285
+ .filter((lh) => usedLineHeights.has(lh.name))
286
+ .map((lh) => ({
287
+ name: lh.name,
288
+ value: lh.value,
289
+ cssVar: `--line-height-${lh.name}`,
290
+ usage: usedLineHeights.get(lh.name)?.count || 0,
291
+ }));
292
+
293
+ // 5. Letter spacing
294
+ const lsMap = new Map();
295
+ for (const ts of rawTextStyles) {
296
+ const ls = ts.letterSpacing || 0;
297
+ const em = ts.fontSize ? Math.round((ls / ts.fontSize) * 1000) / 1000 : 0;
298
+ const key = Math.round(em * 100) / 100;
299
+ lsMap.set(key, (lsMap.get(key) || 0) + (ts.count || 0));
300
+ }
301
+
302
+ const finalLetterSpacing = LS_SCALE.map((ls) => ({
303
+ name: ls.name,
304
+ em: ls.em,
305
+ cssVar: `--letter-spacing-${ls.name}`,
306
+ }));
307
+
308
+ // Stats
309
+ const totalBefore = {
310
+ families: sortedFamilies.length,
311
+ sizes: uniqueSizes.length,
312
+ weights: weightMap.size,
313
+ };
314
+ const totalAfter = {
315
+ families: selectedFamilies.length,
316
+ sizes: finalSizeScale.length,
317
+ weights: finalWeights.length,
318
+ };
319
+
320
+ const reductionPct =
321
+ (1 -
322
+ (totalAfter.families + totalAfter.sizes + totalAfter.weights) /
323
+ (totalBefore.families + totalBefore.sizes + totalBefore.weights)) *
324
+ 100;
325
+
326
+ const scores = {
327
+ before: totalBefore,
328
+ after: totalAfter,
329
+ reduction: `${Math.round(reductionPct * 10) / 10}%`,
330
+ target: '50%',
331
+ status: reductionPct >= 50 ? 'PASS' : reductionPct >= 35 ? 'CONDITIONAL' : 'FAIL',
332
+ families_status: totalAfter.families <= 3 ? 'PASS' : totalAfter.families === 4 ? 'CONDITIONAL' : 'FAIL',
333
+ weights_status: totalAfter.weights <= 5 ? 'PASS' : totalAfter.weights === 6 ? 'CONDITIONAL' : 'FAIL',
334
+ };
335
+
336
+ // Text decoration analysis
337
+ const textDecorations = [...decorationMap.entries()]
338
+ .filter(([k]) => k !== 'NONE')
339
+ .map(([name, count]) => ({ name, count }))
340
+ .sort((a, b) => b.count - a.count);
341
+
342
+ // Text case analysis
343
+ const textCases = [...textCaseMap.entries()]
344
+ .filter(([k]) => k !== 'ORIGINAL')
345
+ .map(([name, count]) => ({ name, count }))
346
+ .sort((a, b) => b.count - a.count);
347
+
348
+ // Paragraph spacing analysis
349
+ const paragraphSpacingMap = new Map();
350
+ for (const ts of rawTextStyles) {
351
+ const ps = ts.paragraphSpacing || 0;
352
+ if (ps > 0) {
353
+ paragraphSpacingMap.set(ps, (paragraphSpacingMap.get(ps) || 0) + (ts.count || 0));
354
+ }
355
+ }
356
+ const paragraphSpacings = [...paragraphSpacingMap.entries()]
357
+ .map(([value, count]) => ({ value, count }))
358
+ .sort((a, b) => b.count - a.count);
359
+
360
+ const output = {
361
+ meta: {
362
+ source: 'all-pages-merged.json',
363
+ pagesIncluded: merged.meta.pagesIncluded,
364
+ curatedAt: new Date().toISOString(),
365
+ algorithm: 'Modular scale + font consolidation',
366
+ figmaTextStylesCount: textFigmaStyles.length,
367
+ },
368
+ scores,
369
+ families: selectedFamilies.map((f) => ({
370
+ name: f.name,
371
+ role: f.role,
372
+ count: f.count,
373
+ percentage: `${Math.round((f.count / totalFontUsage) * 1000) / 10}%`,
374
+ cssVar: `--font-family-${f.role}`,
375
+ })),
376
+ rejectedFamilies,
377
+ sizeScale: finalSizeScale,
378
+ weights: finalWeights,
379
+ lineHeights: finalLineHeights,
380
+ letterSpacing: finalLetterSpacing,
381
+ textDecorations,
382
+ textCases,
383
+ paragraphSpacings,
384
+ decisions,
385
+ };
386
+
387
+ fs.mkdirSync(OUTPUT_DIR, { recursive: true });
388
+ fs.writeFileSync(OUTPUT_PATH, JSON.stringify(output, null, 2));
389
+
390
+ console.log(`\n--- RESULTS ---`);
391
+ console.log(` Families: ${totalBefore.families} → ${totalAfter.families} (${scores.families_status})`);
392
+ console.log(` Sizes: ${totalBefore.sizes} → ${totalAfter.sizes}`);
393
+ console.log(` Weights: ${totalBefore.weights} → ${totalAfter.weights} (${scores.weights_status})`);
394
+ console.log(` Line heights: ${lhMap.size} → ${finalLineHeights.length}`);
395
+ console.log(` Text decorations: ${textDecorations.length} non-default`);
396
+ console.log(` Text cases: ${textCases.length} non-default`);
397
+ console.log(` Paragraph spacings: ${paragraphSpacings.length} distinct values`);
398
+ console.log(` Overall reduction: ${scores.reduction} (target: ${scores.target}) → ${scores.status}`);
399
+ console.log(` Decisions logged: ${decisions.length}`);
400
+ console.log(`\nOutput: ${OUTPUT_PATH}`);
401
+ console.log('=== DONE ===');
402
+ }
403
+
404
+ main();
@@ -0,0 +1,49 @@
1
+ import { spawnSync } from 'node:child_process';
2
+ import { existsSync } from 'node:fs';
3
+
4
+ describe('design system metadata pipeline', () => {
5
+ test('generates metadata/components.json', () => {
6
+ const result = spawnSync('node', ['squads/design/scripts/design-system/generate_components_metadata.cjs'], {
7
+ encoding: 'utf8'
8
+ });
9
+
10
+ expect(result.status).toBe(0);
11
+ expect(existsSync('workspace/domains/design-system/metadata/components.json')).toBe(true);
12
+ });
13
+
14
+ test('validates metadata/components.json', () => {
15
+ const result = spawnSync('node', ['squads/design/scripts/design-system/validate_components_metadata.cjs'], {
16
+ encoding: 'utf8'
17
+ });
18
+
19
+ expect(result.status).toBe(0);
20
+ expect(result.stdout).toContain('PASS: validated');
21
+ });
22
+
23
+ test('validates MCP skeleton', () => {
24
+ const result = spawnSync('node', ['squads/design/scripts/design-system/validate_mcp_skeleton.cjs'], {
25
+ encoding: 'utf8'
26
+ });
27
+
28
+ expect(result.status).toBe(0);
29
+ expect(result.stdout).toContain('PASS: MCP skeleton');
30
+ });
31
+
32
+ test('syncs design manifest from squad.yaml', () => {
33
+ const result = spawnSync('node', ['squads/design/scripts/design-system/sync_design_manifest.cjs'], {
34
+ encoding: 'utf8'
35
+ });
36
+
37
+ expect(result.status).toBe(0);
38
+ expect(result.stdout).toContain('PASS: synced');
39
+ });
40
+
41
+ test('validates design manifest drift', () => {
42
+ const result = spawnSync('node', ['squads/design/scripts/design-system/validate_design_manifest_drift.cjs'], {
43
+ encoding: 'utf8'
44
+ });
45
+
46
+ expect(result.status).toBe(0);
47
+ expect(result.stdout).toContain('PASS: design manifest is synchronized');
48
+ });
49
+ });