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,944 @@
1
+ #!/usr/bin/env bash
2
+ # ═══════════════════════════════════════════════════════════════════════════════
3
+ # VALIDATE-SQUAD.SH - Hybrid Squad Validation Script
4
+ # ═══════════════════════════════════════════════════════════════════════════════
5
+ # Version: 3.0.0 - Production Validation
6
+ # Compatibility: bash 3.2+ (macOS compatible)
7
+ # Purpose: Hybrid validation - bash for deterministic, Claude for qualitative
8
+ # Usage: ./validate-squad.sh <squad-name> [--verbose] [--quick] [--json]
9
+ #
10
+ # HYBRID APPROACH:
11
+ # BASH (deterministic):
12
+ # - File/directory existence
13
+ # - Security scan (grep patterns)
14
+ # - Cross-reference validation
15
+ # - Metrics collection (counts, ratios)
16
+ #
17
+ # CLAUDE CLI (qualitative):
18
+ # - Prompt quality analysis
19
+ # - Pipeline coherence evaluation
20
+ # - Voice consistency check
21
+ # - Overall assessment & recommendations
22
+ #
23
+ # Exit codes:
24
+ # 0 = PASS (score >= 7.0, no blocking issues)
25
+ # 1 = FAIL (score < 7.0 or blocking issues)
26
+ # 2 = ERROR (script error, invalid input)
27
+ # ═══════════════════════════════════════════════════════════════════════════════
28
+
29
+ set -uo pipefail
30
+
31
+ # ═══════════════════════════════════════════════════════════════════════════════
32
+ # CONFIGURATION
33
+ # ═══════════════════════════════════════════════════════════════════════════════
34
+
35
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
36
+ SQUAD_CREATOR_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
37
+ SQUADS_DIR="$(cd "$SCRIPT_DIR/../../.." && pwd)/squads"
38
+
39
+ # Model configuration
40
+ MODEL_DEFAULT="opus" # Best quality (default)
41
+ MODEL_FAST="haiku" # Quick & cheap
42
+ MODEL_QUALITY="$MODEL_DEFAULT"
43
+
44
+ # Colors
45
+ RED='\033[0;31m'
46
+ GREEN='\033[0;32m'
47
+ YELLOW='\033[0;33m'
48
+ BLUE='\033[0;34m'
49
+ CYAN='\033[0;36m'
50
+ MAGENTA='\033[0;35m'
51
+ NC='\033[0m'
52
+ BOLD='\033[1m'
53
+
54
+ # Counters
55
+ PASS_COUNT=0
56
+ FAIL_COUNT=0
57
+ WARN_COUNT=0
58
+
59
+ # Results arrays
60
+ BLOCKING_ISSUES=""
61
+ WARNINGS=""
62
+
63
+ # Metrics (simple variables for bash 3.x compatibility)
64
+ M_AGENT_COUNT=0
65
+ M_TASK_COUNT=0
66
+ M_CHECKLIST_COUNT=0
67
+ M_TEMPLATE_COUNT=0
68
+ M_DATA_COUNT=0
69
+ M_TOTAL_LINES=0
70
+ M_SECURITY_ISSUES=0
71
+ M_XREF_ISSUES=0
72
+ M_SQUAD_TYPE="unknown"
73
+ M_TYPE_CONFIDENCE=0
74
+ M_PROMPT_QUALITY=0
75
+ M_STRUCTURE_COHERENCE=0
76
+ M_COVERAGE_SCORE=0
77
+ M_DOCUMENTATION=0
78
+ M_QUALITY_SCORE="N/A"
79
+ M_IMPROVEMENTS=""
80
+ M_PROD_SCORE=0
81
+
82
+ # Phase results
83
+ TIER1_FAIL=0
84
+ SEC_FAIL=0
85
+ XREF_FAIL=0
86
+ PROD_SCORE=0
87
+ PROD_MAX=5
88
+ FINAL_SCORE=0
89
+ ENTRY_AGENT=""
90
+
91
+ # ═══════════════════════════════════════════════════════════════════════════════
92
+ # ARGUMENT PARSING
93
+ # ═══════════════════════════════════════════════════════════════════════════════
94
+
95
+ show_help() {
96
+ cat << 'EOF'
97
+ ╔══════════════════════════════════════════════════════════════╗
98
+ ║ 🔍 VALIDATE-SQUAD v2.0 - Hybrid Validation Tool ║
99
+ ╚══════════════════════════════════════════════════════════════╝
100
+
101
+ Usage: ./validate-squad.sh <squad-name> [options]
102
+
103
+ Arguments:
104
+ squad-name Name of squad to validate (e.g., "my-squad", "new-squad")
105
+
106
+ Options:
107
+ --verbose Show all checks and Claude analysis details
108
+ --quick Skip Claude analysis (deterministic only)
109
+ --fast Use Haiku instead of Opus (cheaper, faster)
110
+ --json Output results as JSON
111
+ --help Show this help message
112
+
113
+ Examples:
114
+ ./validate-squad.sh {squad-name} # Full validation with Opus
115
+ ./validate-squad.sh {squad-name} --verbose # Verbose output
116
+ ./validate-squad.sh {squad-name} --quick # Deterministic only (no Claude)
117
+ ./validate-squad.sh {squad-name} --fast # Quick validation with Haiku
118
+
119
+ Exit Codes:
120
+ 0 PASS Score >= 7.0, no blocking issues
121
+ 1 FAIL Score < 7.0 or blocking issues found
122
+ 2 ERROR Invalid input or script error
123
+
124
+ EOF
125
+ exit 0
126
+ }
127
+
128
+ SQUAD_NAME=""
129
+ VERBOSE=false
130
+ QUICK_MODE=false
131
+ JSON_OUTPUT=false
132
+ FAST_MODE=false
133
+
134
+ while [[ $# -gt 0 ]]; do
135
+ case $1 in
136
+ --help|-h)
137
+ show_help
138
+ ;;
139
+ --verbose|-v)
140
+ VERBOSE=true
141
+ shift
142
+ ;;
143
+ --quick|-q)
144
+ QUICK_MODE=true
145
+ shift
146
+ ;;
147
+ --fast|-f)
148
+ FAST_MODE=true
149
+ MODEL_QUALITY="$MODEL_FAST"
150
+ shift
151
+ ;;
152
+ --json|-j)
153
+ JSON_OUTPUT=true
154
+ shift
155
+ ;;
156
+ -*)
157
+ echo "Unknown option: $1"
158
+ exit 2
159
+ ;;
160
+ *)
161
+ SQUAD_NAME="$1"
162
+ shift
163
+ ;;
164
+ esac
165
+ done
166
+
167
+ if [[ -z "$SQUAD_NAME" ]]; then
168
+ echo "Error: Squad name required"
169
+ echo "Usage: ./validate-squad.sh <squad-name>"
170
+ exit 2
171
+ fi
172
+
173
+ SQUAD_DIR="$SQUADS_DIR/$SQUAD_NAME"
174
+
175
+ if [[ ! -d "$SQUAD_DIR" ]]; then
176
+ echo "Error: Squad not found: $SQUAD_DIR"
177
+ exit 2
178
+ fi
179
+
180
+ # ═══════════════════════════════════════════════════════════════════════════════
181
+ # LOGGING HELPERS
182
+ # ═══════════════════════════════════════════════════════════════════════════════
183
+
184
+ log_pass() {
185
+ PASS_COUNT=$((PASS_COUNT + 1))
186
+ if [[ "$VERBOSE" == "true" ]]; then
187
+ echo -e " ${GREEN}✓${NC} $1"
188
+ fi
189
+ }
190
+
191
+ log_fail() {
192
+ FAIL_COUNT=$((FAIL_COUNT + 1))
193
+ echo -e " ${RED}✗${NC} $1"
194
+ BLOCKING_ISSUES="${BLOCKING_ISSUES}${1}\n"
195
+ }
196
+
197
+ log_warn() {
198
+ WARN_COUNT=$((WARN_COUNT + 1))
199
+ echo -e " ${YELLOW}⚠${NC} $1"
200
+ WARNINGS="${WARNINGS}${1}\n"
201
+ }
202
+
203
+ log_info() {
204
+ if [[ "$VERBOSE" == "true" ]]; then
205
+ echo -e " ${CYAN}ℹ${NC} $1"
206
+ fi
207
+ }
208
+
209
+ log_section() {
210
+ echo ""
211
+ echo -e "${BOLD}${BLUE}═══ $1 ═══${NC}"
212
+ }
213
+
214
+ log_subsection() {
215
+ echo -e "${CYAN}--- $1 ---${NC}"
216
+ }
217
+
218
+ # ═══════════════════════════════════════════════════════════════════════════════
219
+ # PHASE 1: STRUCTURE (Deterministic - Bash)
220
+ # ═══════════════════════════════════════════════════════════════════════════════
221
+
222
+ check_structure() {
223
+ log_section "PHASE 1: Structure Validation (Bash)"
224
+ local tier1_fail=0
225
+
226
+ # 1.1 Config file
227
+ log_subsection "1.1 Configuration"
228
+ if [[ -f "$SQUAD_DIR/config.yaml" ]]; then
229
+ log_pass "config.yaml exists"
230
+
231
+ # Check for name (top-level or under pack:)
232
+ if grep -qE "^name:|^[[:space:]]+name:" "$SQUAD_DIR/config.yaml" 2>/dev/null; then
233
+ log_pass "config.yaml has 'name' field"
234
+ else
235
+ log_fail "config.yaml missing 'name' field"
236
+ tier1_fail=$((tier1_fail + 1))
237
+ fi
238
+
239
+ # Check for version (top-level or under pack:)
240
+ if grep -qE "^version:|^[[:space:]]+version:" "$SQUAD_DIR/config.yaml" 2>/dev/null; then
241
+ log_pass "config.yaml has 'version' field"
242
+ else
243
+ log_fail "config.yaml missing 'version' field"
244
+ tier1_fail=$((tier1_fail + 1))
245
+ fi
246
+
247
+ # Check for entry_agent (top-level, under pack:, or in agents list)
248
+ if grep -q "entry_agent:" "$SQUAD_DIR/config.yaml" 2>/dev/null; then
249
+ log_pass "config.yaml has 'entry_agent' field"
250
+ ENTRY_AGENT=$(grep "entry_agent:" "$SQUAD_DIR/config.yaml" | head -1 | sed 's/.*entry_agent:[[:space:]]*//' | tr -d '"' | tr -d "'" | xargs)
251
+ elif grep -qE "^[[:space:]]+- id:" "$SQUAD_DIR/config.yaml" 2>/dev/null; then
252
+ # Has agents list, extract first agent as entry point
253
+ ENTRY_AGENT=$(grep -E "^[[:space:]]+- id:" "$SQUAD_DIR/config.yaml" | head -1 | sed 's/.*- id:[[:space:]]*//' | tr -d '"' | tr -d "'" | xargs)
254
+ log_warn "No entry_agent defined, using first agent: $ENTRY_AGENT"
255
+ else
256
+ log_warn "config.yaml missing 'entry_agent' field (non-blocking)"
257
+ fi
258
+ else
259
+ log_fail "config.yaml not found"
260
+ tier1_fail=$((tier1_fail + 1))
261
+ fi
262
+
263
+ # 1.2 Entry agent
264
+ log_subsection "1.2 Entry Point"
265
+ if [[ -n "${ENTRY_AGENT:-}" ]]; then
266
+ if [[ -f "$SQUAD_DIR/agents/${ENTRY_AGENT}.md" ]]; then
267
+ log_pass "Entry agent exists: agents/${ENTRY_AGENT}.md"
268
+ else
269
+ log_fail "Entry agent not found: agents/${ENTRY_AGENT}.md"
270
+ tier1_fail=$((tier1_fail + 1))
271
+ fi
272
+ fi
273
+
274
+ # 1.3 Directory structure
275
+ log_subsection "1.3 Directory Structure"
276
+ local found_dirs=0
277
+ for dir in agents tasks checklists templates data; do
278
+ if [[ -d "$SQUAD_DIR/$dir" ]]; then
279
+ local count=$(find "$SQUAD_DIR/$dir" -type f \( -name "*.md" -o -name "*.yaml" -o -name "*.yml" \) 2>/dev/null | wc -l | tr -d ' ')
280
+ log_pass "$dir/ exists ($count files)"
281
+ found_dirs=$((found_dirs + 1))
282
+ else
283
+ log_info "$dir/ not found (optional)"
284
+ fi
285
+ done
286
+
287
+ # 1.4 Collect metrics
288
+ log_subsection "1.4 Metrics Collection"
289
+ M_AGENT_COUNT=$(find "$SQUAD_DIR/agents" -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
290
+ M_TASK_COUNT=$(find "$SQUAD_DIR/tasks" -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
291
+ M_CHECKLIST_COUNT=$(find "$SQUAD_DIR/checklists" -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
292
+ M_TEMPLATE_COUNT=$(find "$SQUAD_DIR/templates" -type f 2>/dev/null | wc -l | tr -d ' ')
293
+ M_DATA_COUNT=$(find "$SQUAD_DIR/data" -type f 2>/dev/null | wc -l | tr -d ' ')
294
+ M_TOTAL_LINES=$(find "$SQUAD_DIR" -type f \( -name "*.md" -o -name "*.yaml" \) -exec cat {} + 2>/dev/null | wc -l | tr -d ' ')
295
+
296
+ log_info "Agents: $M_AGENT_COUNT, Tasks: $M_TASK_COUNT, Checklists: $M_CHECKLIST_COUNT"
297
+ log_info "Total lines: $M_TOTAL_LINES"
298
+
299
+ TIER1_FAIL=$tier1_fail
300
+ }
301
+
302
+ # ═══════════════════════════════════════════════════════════════════════════════
303
+ # PHASE 2: SECURITY SCAN (Deterministic - Bash)
304
+ # ═══════════════════════════════════════════════════════════════════════════════
305
+
306
+ check_security() {
307
+ log_section "PHASE 2: Security Scan (Bash)"
308
+ local sec_fail=0
309
+
310
+ log_subsection "2.1 API Keys & Tokens"
311
+
312
+ # API Keys (excluding placeholders, examples, documentation, fake values)
313
+ local api_keys=$(grep -rE "(api[_-]?key|apikey)[[:space:]]*[:=][[:space:]]*['\"][^'\"\$\{]{8,}" "$SQUAD_DIR" 2>/dev/null | grep -vE "(\{\{|\\\$\{|process\.env|[Ee]xample|placeholder|grep|pattern|EXAMPLE|sk-1234|your-key|#.*api)" || true)
314
+ if [[ -n "$api_keys" ]]; then
315
+ log_fail "SEC-001: Potential API keys found"
316
+ sec_fail=$((sec_fail + 1))
317
+ else
318
+ log_pass "SEC-001: No hardcoded API keys"
319
+ fi
320
+
321
+ # Secrets (excluding examples, documentation, fake values, obvious test secrets)
322
+ local secrets=$(grep -rE "(secret|password)[[:space:]]*[:=][[:space:]]*['\"][^'\"\$\{]{8,}" "$SQUAD_DIR" 2>/dev/null | grep -vE "(\{\{|\\\$\{|process\.env|[Ee]xample|placeholder|grep|pattern|EXAMPLE|secret_key|your-secret|#.*secret|#.*password|mySecret|super-secret|-secret-|-here)" || true)
323
+ if [[ -n "$secrets" ]]; then
324
+ log_fail "SEC-002: Potential secrets found"
325
+ sec_fail=$((sec_fail + 1))
326
+ else
327
+ log_pass "SEC-002: No hardcoded secrets"
328
+ fi
329
+
330
+ log_subsection "2.2 Cloud Credentials"
331
+
332
+ # AWS Access Key (excluding examples, grep patterns, documentation)
333
+ local aws_access=$(grep -rE "AKIA[A-Z0-9]{16}" "$SQUAD_DIR" 2>/dev/null | grep -vE "(EXAMPLE|grep|pattern|\.sh:|\.md:.*grep)" || true)
334
+ if [[ -n "$aws_access" ]]; then
335
+ log_fail "SEC-003: AWS Access Key found"
336
+ sec_fail=$((sec_fail + 1))
337
+ else
338
+ log_pass "SEC-003: No AWS Access Keys"
339
+ fi
340
+
341
+ # GCP Service Account
342
+ local gcp_key=$(grep -rE '"type"[[:space:]]*:[[:space:]]*"service_account"' "$SQUAD_DIR" 2>/dev/null || true)
343
+ if [[ -n "$gcp_key" ]]; then
344
+ log_fail "SEC-004: GCP Service Account found"
345
+ sec_fail=$((sec_fail + 1))
346
+ else
347
+ log_pass "SEC-004: No GCP Service Accounts"
348
+ fi
349
+
350
+ log_subsection "2.3 Private Keys"
351
+
352
+ local priv_key=$(grep -rE "-----BEGIN.*(PRIVATE|RSA|DSA|EC).*KEY-----" "$SQUAD_DIR" 2>/dev/null || true)
353
+ if [[ -n "$priv_key" ]]; then
354
+ log_fail "SEC-005: Private key content found"
355
+ sec_fail=$((sec_fail + 1))
356
+ else
357
+ log_pass "SEC-005: No private key content"
358
+ fi
359
+
360
+ local key_files=$(find "$SQUAD_DIR" -name "*.pem" -o -name "*.key" -o -name "id_rsa*" 2>/dev/null || true)
361
+ if [[ -n "$key_files" ]]; then
362
+ log_fail "SEC-006: Private key files found"
363
+ sec_fail=$((sec_fail + 1))
364
+ else
365
+ log_pass "SEC-006: No private key files"
366
+ fi
367
+
368
+ log_subsection "2.4 Database & Sensitive Files"
369
+
370
+ # Exclude: placeholders, examples, documentation, localhost, generic passwords
371
+ local db_urls=$(grep -rE "(postgres|mysql|mongodb|redis)://[^:]+:[^@]+@" "$SQUAD_DIR" 2>/dev/null | grep -vE "(\{\{|\[PASSWORD\]|[Ee]xample|localhost|user:pass|:password@|:secret@|grep|pattern)" || true)
372
+ if [[ -n "$db_urls" ]]; then
373
+ log_fail "SEC-007: Database URL with password found"
374
+ sec_fail=$((sec_fail + 1))
375
+ else
376
+ log_pass "SEC-007: No database URLs with passwords"
377
+ fi
378
+
379
+ local env_files=$(find "$SQUAD_DIR" -name ".env*" -o -name "*.env" 2>/dev/null || true)
380
+ if [[ -n "$env_files" ]]; then
381
+ log_fail "SEC-008: .env files found"
382
+ sec_fail=$((sec_fail + 1))
383
+ else
384
+ log_pass "SEC-008: No .env files"
385
+ fi
386
+
387
+ SEC_FAIL=$sec_fail
388
+ M_SECURITY_ISSUES=$sec_fail
389
+
390
+ if [[ $sec_fail -gt 0 ]]; then
391
+ echo -e "\n${RED}⚠️ SECURITY: $sec_fail HIGH severity issues${NC}"
392
+ else
393
+ echo -e "\n${GREEN}✓ Security scan passed${NC}"
394
+ fi
395
+ }
396
+
397
+ # ═══════════════════════════════════════════════════════════════════════════════
398
+ # PHASE 3: CROSS-REFERENCE (Deterministic - Bash)
399
+ # ═══════════════════════════════════════════════════════════════════════════════
400
+
401
+ check_cross_references() {
402
+ log_section "PHASE 3: Cross-Reference Validation (Bash)"
403
+ local xref_fail=0
404
+
405
+ log_subsection "3.1 Handoff Targets"
406
+
407
+ if [[ -d "$SQUAD_DIR/agents" ]]; then
408
+ for agent_file in "$SQUAD_DIR/agents"/*.md; do
409
+ [[ -f "$agent_file" ]] || continue
410
+ local handoffs=$(grep -oE "handoff_to:[[:space:]]*@?[a-z0-9_-]+" "$agent_file" 2>/dev/null | sed 's/handoff_to:[[:space:]]*@*//' || true)
411
+ for handoff in $handoffs; do
412
+ if [[ ! -f "$SQUAD_DIR/agents/${handoff}.md" ]]; then
413
+ log_fail "XREF-001: Handoff target not found: $handoff (in $(basename "$agent_file"))"
414
+ xref_fail=$((xref_fail + 1))
415
+ else
416
+ log_pass "XREF-001: Handoff valid: $handoff"
417
+ fi
418
+ done
419
+ done
420
+ fi
421
+
422
+ log_subsection "3.2 Task References"
423
+ # Check if tasks referenced in agents exist
424
+ if [[ -d "$SQUAD_DIR/agents" ]]; then
425
+ for agent_file in "$SQUAD_DIR/agents"/*.md; do
426
+ [[ -f "$agent_file" ]] || continue
427
+ local task_refs=$(grep -oE "\*[a-z0-9_-]+" "$agent_file" 2>/dev/null | sed 's/\*//' || true)
428
+ for task_ref in $task_refs; do
429
+ if [[ -f "$SQUAD_DIR/tasks/${task_ref}.md" ]]; then
430
+ log_pass "XREF-002: Task exists: $task_ref"
431
+ fi
432
+ done
433
+ done
434
+ fi
435
+
436
+ XREF_FAIL=$xref_fail
437
+ M_XREF_ISSUES=$xref_fail
438
+
439
+ if [[ $xref_fail -gt 0 ]]; then
440
+ echo -e "\n${RED}⚠️ CROSS-REF: $xref_fail broken references${NC}"
441
+ else
442
+ echo -e "\n${GREEN}✓ Cross-references valid${NC}"
443
+ fi
444
+ }
445
+
446
+ # ═══════════════════════════════════════════════════════════════════════════════
447
+ # PHASE 4: SQUAD TYPE DETECTION (Deterministic - Bash)
448
+ # ═══════════════════════════════════════════════════════════════════════════════
449
+
450
+ detect_squad_type() {
451
+ log_section "PHASE 4: Squad Type Detection (Bash)"
452
+
453
+ local type="general"
454
+ local confidence=5
455
+
456
+ # Check for Expert indicators
457
+ local has_voice_dna=$(find "$SQUAD_DIR" -name "*voice*" -o -name "*dna*" 2>/dev/null | wc -l | tr -d ' ')
458
+ local has_clone=$(grep -ril "clone\|emulat\|mind\|persona" "$SQUAD_DIR/agents" 2>/dev/null | wc -l | tr -d ' ')
459
+
460
+ # Check for Pipeline indicators
461
+ local has_workflow=$(find "$SQUAD_DIR" -path "*/workflows/*.yaml" 2>/dev/null | wc -l | tr -d ' ')
462
+ local has_phases=$(grep -ril "phase\|stage\|step" "$SQUAD_DIR/tasks" 2>/dev/null | wc -l | tr -d ' ')
463
+
464
+ # Calculate task ratio
465
+ local agent_count=${M_AGENT_COUNT:-1}
466
+ [[ $agent_count -eq 0 ]] && agent_count=1
467
+ local task_ratio=$((M_TASK_COUNT / agent_count))
468
+
469
+ # Check for Hybrid indicators
470
+ local has_human_exec=$(grep -ril "human\|manual\|executor" "$SQUAD_DIR" 2>/dev/null | wc -l | tr -d ' ')
471
+
472
+ # Scoring
473
+ local expert_score=0
474
+ local pipeline_score=0
475
+ local hybrid_score=0
476
+
477
+ [[ $has_voice_dna -gt 0 ]] && expert_score=$((expert_score + 3))
478
+ [[ $has_clone -gt 2 ]] && expert_score=$((expert_score + 2))
479
+
480
+ [[ $has_workflow -gt 0 ]] && pipeline_score=$((pipeline_score + 3))
481
+ [[ $has_phases -gt 3 ]] && pipeline_score=$((pipeline_score + 2))
482
+ [[ $task_ratio -gt 3 ]] && pipeline_score=$((pipeline_score + 2))
483
+
484
+ [[ $has_human_exec -gt 2 ]] && hybrid_score=$((hybrid_score + 3))
485
+
486
+ # Determine type
487
+ if [[ $expert_score -ge 4 ]]; then
488
+ type="expert"
489
+ confidence=$expert_score
490
+ elif [[ $pipeline_score -ge 4 ]]; then
491
+ type="pipeline"
492
+ confidence=$pipeline_score
493
+ elif [[ $hybrid_score -ge 3 ]]; then
494
+ type="hybrid"
495
+ confidence=$hybrid_score
496
+ fi
497
+
498
+ M_SQUAD_TYPE="$type"
499
+ M_TYPE_CONFIDENCE="$confidence"
500
+
501
+ log_info "Detected type: $type (confidence: $confidence)"
502
+ log_info "Expert signals: voice_dna=$has_voice_dna, clone_refs=$has_clone"
503
+ log_info "Pipeline signals: workflows=$has_workflow, phases=$has_phases, task_ratio=$task_ratio"
504
+ log_info "Hybrid signals: human_exec=$has_human_exec"
505
+
506
+ echo -e "\n${CYAN}Squad Type: ${BOLD}$type${NC} (confidence: $confidence/7)"
507
+ }
508
+
509
+ # ═══════════════════════════════════════════════════════════════════════════════
510
+ # PHASE 5: PRODUCTION VALIDATION (Deterministic - Bash)
511
+ # ═══════════════════════════════════════════════════════════════════════════════
512
+
513
+ check_production() {
514
+ log_section "PHASE 5: Production Validation (Bash)"
515
+ local prod_score=0
516
+
517
+ log_subsection "5.1 Outputs Directory"
518
+ # Check for outputs/ in squad or in global outputs/
519
+ local has_outputs=false
520
+ if [ -d "$SQUAD_DIR/outputs" ]; then
521
+ local output_count=$(find "$SQUAD_DIR/outputs" -type f 2>/dev/null | wc -l | tr -d ' ')
522
+ if [ "$output_count" -gt 0 ]; then
523
+ log_pass "outputs/ exists with $output_count files"
524
+ has_outputs=true
525
+ prod_score=$((prod_score + 2))
526
+ else
527
+ log_warn "outputs/ exists but is empty"
528
+ fi
529
+ else
530
+ # Check global outputs directory for this squad (uses env var or relative path)
531
+ local global_outputs="${OUTPUTS_DIR:-./outputs}"
532
+ if [ -d "$global_outputs" ]; then
533
+ local squad_outputs=$(find "$global_outputs" -type d -name "*$SQUAD_NAME*" 2>/dev/null | head -1)
534
+ if [ -n "$squad_outputs" ] && [ -d "$squad_outputs" ]; then
535
+ local output_count=$(find "$squad_outputs" -type f 2>/dev/null | wc -l | tr -d ' ')
536
+ if [ "$output_count" -gt 0 ]; then
537
+ log_pass "Found outputs in global directory ($output_count files)"
538
+ has_outputs=true
539
+ prod_score=$((prod_score + 2))
540
+ fi
541
+ fi
542
+ fi
543
+
544
+ if [ "$has_outputs" = false ]; then
545
+ log_warn "No outputs/ directory found - squad not tested in production"
546
+ fi
547
+ fi
548
+
549
+ log_subsection "5.2 Tested Flag"
550
+ # Check for tested: true in config.yaml
551
+ if grep -qE "^tested:[[:space:]]*(true|yes)" "$SQUAD_DIR/config.yaml" 2>/dev/null; then
552
+ log_pass "config.yaml has tested: true"
553
+ prod_score=$((prod_score + 1))
554
+ else
555
+ log_warn "config.yaml missing 'tested: true' flag"
556
+ fi
557
+
558
+ log_subsection "5.3 Usage Evidence"
559
+ # Check for YOLO mode state files (real automation usage, not just creation logs)
560
+ local state_files=$(find "$SQUAD_DIR" -name "*-state.json" -o -name "progress.txt" -o -name "handoff.md" 2>/dev/null | wc -l | tr -d ' ')
561
+ if [ "$state_files" -gt 0 ]; then
562
+ # Verify it's real usage, not just template files
563
+ local real_state=$(find "$SQUAD_DIR" -name "*-state.json" -exec grep -l '"status"' {} \; 2>/dev/null | wc -l | tr -d ' ')
564
+ if [ "$real_state" -gt 0 ]; then
565
+ log_pass "Found $real_state state files with execution history (YOLO mode)"
566
+ prod_score=$((prod_score + 1))
567
+ else
568
+ log_warn "State files found but appear to be templates"
569
+ fi
570
+ else
571
+ log_warn "No YOLO mode state files found"
572
+ fi
573
+
574
+ # Check for user feedback or validation reports
575
+ local feedback_files=$(find "$SQUAD_DIR" -name "*feedback*" -o -name "*validation-report*" -o -name "*qa-report*" 2>/dev/null | wc -l | tr -d ' ')
576
+ if [ "$feedback_files" -gt 0 ]; then
577
+ log_pass "Found $feedback_files feedback/validation files"
578
+ prod_score=$((prod_score + 1))
579
+ fi
580
+
581
+ log_subsection "5.4 Sample Outputs"
582
+ # Check for example outputs in docs or templates
583
+ local has_examples=false
584
+ if [ -d "$SQUAD_DIR/examples" ] || [ -d "$SQUAD_DIR/samples" ]; then
585
+ log_pass "examples/ or samples/ directory exists"
586
+ has_examples=true
587
+ prod_score=$((prod_score + 1))
588
+ fi
589
+
590
+ # Check for output_examples in agents
591
+ local output_examples=$(grep -rl "output_examples\|example_output\|sample_output" "$SQUAD_DIR/agents" 2>/dev/null | wc -l | tr -d ' ')
592
+ if [ "$output_examples" -gt 0 ]; then
593
+ log_pass "Found output examples in $output_examples agent files"
594
+ if [ "$has_examples" = false ]; then
595
+ prod_score=$((prod_score + 1))
596
+ fi
597
+ fi
598
+
599
+ if [ "$has_examples" = false ] && [ "$output_examples" -eq 0 ]; then
600
+ log_warn "No sample outputs or examples found"
601
+ fi
602
+
603
+ # Cap at max
604
+ if [ $prod_score -gt $PROD_MAX ]; then
605
+ prod_score=$PROD_MAX
606
+ fi
607
+
608
+ PROD_SCORE=$prod_score
609
+ M_PROD_SCORE=$prod_score
610
+
611
+ echo ""
612
+ if [ $prod_score -eq 0 ]; then
613
+ echo -e "${RED}⚠️ PRODUCTION: 0/$PROD_MAX - No evidence of real usage${NC}"
614
+ echo -e "${YELLOW} Max possible score without production evidence: 5/10${NC}"
615
+ elif [ $prod_score -lt 3 ]; then
616
+ echo -e "${YELLOW}⚠️ PRODUCTION: $prod_score/$PROD_MAX - Limited production evidence${NC}"
617
+ else
618
+ echo -e "${GREEN}✓ Production validation: $prod_score/$PROD_MAX${NC}"
619
+ fi
620
+ }
621
+
622
+ # ═══════════════════════════════════════════════════════════════════════════════
623
+ # PHASE 6: QUALITY ANALYSIS (Claude CLI)
624
+ # ═══════════════════════════════════════════════════════════════════════════════
625
+
626
+ analyze_with_claude() {
627
+ log_section "PHASE 6: Quality Analysis (Claude CLI)"
628
+
629
+ if [[ "$QUICK_MODE" == "true" ]]; then
630
+ echo -e "${YELLOW}Skipping Claude analysis (--quick mode)${NC}"
631
+ M_QUALITY_SCORE="N/A"
632
+ return 0
633
+ fi
634
+
635
+ echo -e "${MAGENTA}Running Claude analysis with $MODEL_QUALITY...${NC}"
636
+
637
+ # Collect sample files for analysis
638
+ local sample_agent=$(find "$SQUAD_DIR/agents" -name "*.md" 2>/dev/null | head -1)
639
+ local sample_task=$(find "$SQUAD_DIR/tasks" -name "*.md" 2>/dev/null | head -1)
640
+ local sample_checklist=$(find "$SQUAD_DIR/checklists" -name "*.md" 2>/dev/null | head -1)
641
+
642
+ local agent_content=""
643
+ local task_content=""
644
+ local checklist_content=""
645
+
646
+ [[ -f "$sample_agent" ]] && agent_content=$(head -100 "$sample_agent" 2>/dev/null || true)
647
+ [[ -f "$sample_task" ]] && task_content=$(head -100 "$sample_task" 2>/dev/null || true)
648
+ [[ -f "$sample_checklist" ]] && checklist_content=$(head -100 "$sample_checklist" 2>/dev/null || true)
649
+
650
+ # Build analysis prompt
651
+ local ANALYSIS_PROMPT="You are evaluating the quality of an AIOS squad. Analyze and provide a JSON response.
652
+
653
+ ## Squad: $SQUAD_NAME
654
+ Type: $M_SQUAD_TYPE
655
+
656
+ ## Metrics
657
+ - Agents: $M_AGENT_COUNT
658
+ - Tasks: $M_TASK_COUNT
659
+ - Checklists: $M_CHECKLIST_COUNT
660
+ - Total lines: $M_TOTAL_LINES
661
+
662
+ ## Sample Agent (first 100 lines):
663
+ \`\`\`
664
+ $agent_content
665
+ \`\`\`
666
+
667
+ ## Sample Task (first 100 lines):
668
+ \`\`\`
669
+ $task_content
670
+ \`\`\`
671
+
672
+ ## Sample Checklist (first 100 lines):
673
+ \`\`\`
674
+ $checklist_content
675
+ \`\`\`
676
+
677
+ ## Evaluation Criteria
678
+ 1. **Prompt Quality (0-10)**: Are prompts specific, actionable, with examples?
679
+ 2. **Structure Coherence (0-10)**: Do agents/tasks/checklists follow consistent patterns?
680
+ 3. **Coverage (0-10)**: Does the squad have appropriate agent:task ratios for its type?
681
+ 4. **Documentation (0-10)**: Are purposes, inputs, outputs clearly defined?
682
+
683
+ ## Required Response Format (JSON only):
684
+ {
685
+ \"prompt_quality\": 8,
686
+ \"structure_coherence\": 7,
687
+ \"coverage\": 9,
688
+ \"documentation\": 6,
689
+ \"overall_score\": 7.5,
690
+ \"strengths\": [\"clear prompts\", \"good task coverage\"],
691
+ \"improvements\": [\"add more examples\", \"document edge cases\"],
692
+ \"recommendation\": \"PASS\"
693
+ }
694
+
695
+ Respond with ONLY the JSON, no other text."
696
+
697
+ # Run Claude
698
+ local claude_output
699
+ if claude_output=$(claude -p --model "$MODEL_QUALITY" --dangerously-skip-permissions "$ANALYSIS_PROMPT" 2>&1); then
700
+ # Extract JSON from response (handle multiline)
701
+ local json_result=$(echo "$claude_output" | tr '\n' ' ' | grep -oE '\{[^}]+\}' | head -1 || echo '{}')
702
+
703
+ if [[ "$VERBOSE" == "true" ]]; then
704
+ echo -e "\n${CYAN}Claude Analysis Result:${NC}"
705
+ echo "$json_result" | jq '.' 2>/dev/null || echo "$json_result"
706
+ fi
707
+
708
+ # Parse scores using jq
709
+ if command -v jq &> /dev/null; then
710
+ M_PROMPT_QUALITY=$(echo "$json_result" | jq -r '.prompt_quality // 0' 2>/dev/null || echo "0")
711
+ M_STRUCTURE_COHERENCE=$(echo "$json_result" | jq -r '.structure_coherence // 0' 2>/dev/null || echo "0")
712
+ M_COVERAGE_SCORE=$(echo "$json_result" | jq -r '.coverage // 0' 2>/dev/null || echo "0")
713
+ M_DOCUMENTATION=$(echo "$json_result" | jq -r '.documentation // 0' 2>/dev/null || echo "0")
714
+ M_QUALITY_SCORE=$(echo "$json_result" | jq -r '.overall_score // 0' 2>/dev/null || echo "0")
715
+ M_IMPROVEMENTS=$(echo "$json_result" | jq -r '.improvements | join("; ")' 2>/dev/null || echo "")
716
+ else
717
+ # Fallback without jq - basic parsing
718
+ M_QUALITY_SCORE=$(echo "$json_result" | grep -oE '"overall_score"[[:space:]]*:[[:space:]]*[0-9.]+' | grep -oE '[0-9.]+$' || echo "0")
719
+ fi
720
+
721
+ echo -e "\n${GREEN}✓ Claude analysis complete${NC}"
722
+ echo -e " Quality Score: ${BOLD}${M_QUALITY_SCORE}/10${NC}"
723
+
724
+ else
725
+ echo -e "${YELLOW}⚠️ Claude analysis failed, using deterministic score only${NC}"
726
+ M_QUALITY_SCORE="N/A"
727
+ fi
728
+ }
729
+
730
+ # ═══════════════════════════════════════════════════════════════════════════════
731
+ # PHASE 6: FINAL SCORING & REPORT
732
+ # ═══════════════════════════════════════════════════════════════════════════════
733
+
734
+ calculate_final_score() {
735
+ log_section "PHASE 7: Final Scoring"
736
+
737
+ local base_score=10
738
+ local total_fails=$((TIER1_FAIL + SEC_FAIL + XREF_FAIL))
739
+
740
+ # Deduct for failures (1.5 per failure)
741
+ local fail_penalty=$((total_fails * 15 / 10))
742
+ # Deduct for warnings (0.3 per warning)
743
+ local warn_penalty=$((WARN_COUNT * 3 / 10))
744
+
745
+ # Calculate structure score (0-10)
746
+ local struct_score=$((base_score - fail_penalty - warn_penalty))
747
+ [ $struct_score -lt 0 ] && struct_score=0
748
+
749
+ # Get Claude quality score (0-10)
750
+ local quality_int=0
751
+ if [[ "$M_QUALITY_SCORE" != "N/A" && "$M_QUALITY_SCORE" != "0" && -n "$M_QUALITY_SCORE" ]]; then
752
+ quality_int=${M_QUALITY_SCORE%.*}
753
+ [[ -z "$quality_int" || "$quality_int" == "0" ]] && quality_int=7 # Default if parsing failed
754
+ else
755
+ quality_int=7 # Default assumption if Claude failed
756
+ fi
757
+
758
+ # Production score is 0-5, normalize to 0-10
759
+ local prod_normalized=$((PROD_SCORE * 2))
760
+
761
+ # SCORING FORMULA:
762
+ # - Structure/Security: 20%
763
+ # - Quality (Claude): 30%
764
+ # - Production: 50% (most important - real usage matters most)
765
+ FINAL_SCORE=$(( (struct_score * 20 + quality_int * 30 + prod_normalized * 50) / 100 ))
766
+
767
+ # CAPS based on production evidence:
768
+ # - No production (0/5): MAX 5/10
769
+ # - Minimal (1-2/5): MAX 7/10
770
+ # - Good (3-4/5): MAX 9/10
771
+ # - Full (5/5): MAX 10/10
772
+ if [ "$PROD_SCORE" -eq 0 ]; then
773
+ [ "$FINAL_SCORE" -gt 5 ] && FINAL_SCORE=5
774
+ elif [ "$PROD_SCORE" -lt 3 ]; then
775
+ [ "$FINAL_SCORE" -gt 7 ] && FINAL_SCORE=7
776
+ elif [ "$PROD_SCORE" -lt 5 ]; then
777
+ [ "$FINAL_SCORE" -gt 9 ] && FINAL_SCORE=9
778
+ fi
779
+
780
+ # Ensure score is in range 0-10
781
+ [ $FINAL_SCORE -lt 0 ] && FINAL_SCORE=0
782
+ [ $FINAL_SCORE -gt 10 ] && FINAL_SCORE=10
783
+ }
784
+
785
+ generate_report() {
786
+ local result="FAIL"
787
+ local result_color=$RED
788
+
789
+ if [[ $FINAL_SCORE -ge 7 ]] && [[ -z "$BLOCKING_ISSUES" ]]; then
790
+ result="PASS"
791
+ result_color=$GREEN
792
+ elif [[ $FINAL_SCORE -ge 5 ]]; then
793
+ result="CONDITIONAL"
794
+ result_color=$YELLOW
795
+ fi
796
+
797
+ if [[ "$JSON_OUTPUT" == "true" ]]; then
798
+ cat << EOF
799
+ {
800
+ "squad": "$SQUAD_NAME",
801
+ "result": "$result",
802
+ "final_score": $FINAL_SCORE,
803
+ "type": "$M_SQUAD_TYPE",
804
+ "metrics": {
805
+ "agents": $M_AGENT_COUNT,
806
+ "tasks": $M_TASK_COUNT,
807
+ "checklists": $M_CHECKLIST_COUNT,
808
+ "total_lines": $M_TOTAL_LINES
809
+ },
810
+ "deterministic": {
811
+ "tier1_fail": $TIER1_FAIL,
812
+ "security_fail": $SEC_FAIL,
813
+ "xref_fail": $XREF_FAIL,
814
+ "warnings": $WARN_COUNT
815
+ },
816
+ "production": {
817
+ "score": $PROD_SCORE,
818
+ "max": $PROD_MAX
819
+ },
820
+ "claude_analysis": {
821
+ "prompt_quality": $M_PROMPT_QUALITY,
822
+ "structure_coherence": $M_STRUCTURE_COHERENCE,
823
+ "coverage": $M_COVERAGE_SCORE,
824
+ "documentation": $M_DOCUMENTATION,
825
+ "quality_score": "$M_QUALITY_SCORE"
826
+ },
827
+ "improvements": "$M_IMPROVEMENTS"
828
+ }
829
+ EOF
830
+ else
831
+ echo ""
832
+ echo -e "${BOLD}╔══════════════════════════════════════════════════════════════╗${NC}"
833
+ if [[ "$result" == "PASS" ]]; then
834
+ echo -e "${BOLD}║${result_color} ✅ VALIDATION PASSED ${NC}${BOLD}║${NC}"
835
+ elif [[ "$result" == "CONDITIONAL" ]]; then
836
+ echo -e "${BOLD}║${result_color} ⚠️ CONDITIONAL PASS ${NC}${BOLD}║${NC}"
837
+ else
838
+ echo -e "${BOLD}║${result_color} ❌ VALIDATION FAILED ${NC}${BOLD}║${NC}"
839
+ fi
840
+ echo -e "${BOLD}╚══════════════════════════════════════════════════════════════╝${NC}"
841
+ echo ""
842
+ echo -e " Squad: ${BOLD}$SQUAD_NAME${NC}"
843
+ echo -e " Type: ${CYAN}$M_SQUAD_TYPE${NC}"
844
+ echo -e " Final Score: ${BOLD}${result_color}$FINAL_SCORE/10${NC}"
845
+ echo ""
846
+ echo " ┌─────────────────────────────────────────┐"
847
+ echo " │ Structure & Security (20%) │"
848
+ printf " │ Structure failures: %-17s│\n" "$TIER1_FAIL"
849
+ printf " │ Security issues: %-19s│\n" "$SEC_FAIL"
850
+ printf " │ Cross-ref broken: %-18s│\n" "$XREF_FAIL"
851
+ printf " │ Warnings: %-26s│\n" "$WARN_COUNT"
852
+ echo " └─────────────────────────────────────────┘"
853
+
854
+ echo " ┌─────────────────────────────────────────┐"
855
+ echo " │ Production Evidence (50%) │"
856
+ if [ "$PROD_SCORE" -eq 0 ]; then
857
+ printf " │ ${RED}Score: %-32s${NC}│\n" "$PROD_SCORE/$PROD_MAX ⚠️ NOT TESTED"
858
+ elif [ "$PROD_SCORE" -lt 3 ]; then
859
+ printf " │ ${YELLOW}Score: %-32s${NC}│\n" "$PROD_SCORE/$PROD_MAX (limited)"
860
+ else
861
+ printf " │ ${GREEN}Score: %-32s${NC}│\n" "$PROD_SCORE/$PROD_MAX ✓"
862
+ fi
863
+ echo " └─────────────────────────────────────────┘"
864
+
865
+ if [[ "$M_QUALITY_SCORE" != "N/A" ]]; then
866
+ echo " ┌─────────────────────────────────────────┐"
867
+ echo " │ Claude Quality Analysis (30%) │"
868
+ printf " │ Prompt Quality: %-20s│\n" "$M_PROMPT_QUALITY/10"
869
+ printf " │ Structure: %-25s│\n" "$M_STRUCTURE_COHERENCE/10"
870
+ printf " │ Coverage: %-26s│\n" "$M_COVERAGE_SCORE/10"
871
+ printf " │ Documentation: %-21s│\n" "$M_DOCUMENTATION/10"
872
+ echo " └─────────────────────────────────────────┘"
873
+ fi
874
+
875
+ if [[ -n "$BLOCKING_ISSUES" ]]; then
876
+ echo ""
877
+ echo -e " ${RED}Blocking Issues:${NC}"
878
+ echo -e "$BLOCKING_ISSUES" | while read -r issue; do
879
+ [[ -n "$issue" ]] && echo -e " ${RED}•${NC} $issue"
880
+ done
881
+ fi
882
+
883
+ if [[ -n "$M_IMPROVEMENTS" ]]; then
884
+ echo ""
885
+ echo -e " ${YELLOW}Improvements:${NC}"
886
+ echo " $M_IMPROVEMENTS"
887
+ fi
888
+ echo ""
889
+ fi
890
+
891
+ # Return appropriate exit code
892
+ if [[ "$result" == "PASS" ]]; then
893
+ exit 0
894
+ else
895
+ exit 1
896
+ fi
897
+ }
898
+
899
+ # ═══════════════════════════════════════════════════════════════════════════════
900
+ # MAIN EXECUTION
901
+ # ═══════════════════════════════════════════════════════════════════════════════
902
+
903
+ main() {
904
+ echo ""
905
+ echo -e "${BOLD}╔══════════════════════════════════════════════════════════════╗${NC}"
906
+ echo -e "${BOLD}║ 🔍 VALIDATE-SQUAD v2.0 - Hybrid Validation ║${NC}"
907
+ echo -e "${BOLD}╚══════════════════════════════════════════════════════════════╝${NC}"
908
+ echo ""
909
+ echo -e " Squad: ${CYAN}$SQUAD_NAME${NC}"
910
+ echo -e " Path: $SQUAD_DIR"
911
+ if [[ "$QUICK_MODE" == "true" ]]; then
912
+ echo -e " Mode: quick (no Claude)"
913
+ else
914
+ echo -e " Mode: hybrid"
915
+ fi
916
+ echo -e " Model: $MODEL_QUALITY"
917
+
918
+ # Phase 1: Structure (Bash)
919
+ check_structure
920
+
921
+ # Phase 2: Security (Bash)
922
+ check_security
923
+
924
+ # Phase 3: Cross-references (Bash)
925
+ check_cross_references
926
+
927
+ # Phase 4: Type detection (Bash)
928
+ detect_squad_type
929
+
930
+ # Phase 5: Production validation (Bash) - NEW
931
+ check_production
932
+
933
+ # Phase 6: Quality analysis (Claude CLI)
934
+ analyze_with_claude
935
+
936
+ # Phase 7: Final scoring
937
+ calculate_final_score
938
+
939
+ # Generate report
940
+ generate_report
941
+ }
942
+
943
+ # Run
944
+ main