aiox-core 5.0.5 → 5.0.7

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 (2196) hide show
  1. package/.aiox-core/install-manifest.yaml +2 -2
  2. package/bin/utils/validate-publish.js +5 -4
  3. package/package.json +1 -1
  4. package/packages/installer/src/wizard/pro-setup.js +2 -1
  5. package/pro/README.md +66 -0
  6. package/pro/feature-registry.yaml +225 -0
  7. package/pro/license/degradation.js +220 -0
  8. package/pro/license/errors.js +450 -0
  9. package/pro/license/feature-gate.js +354 -0
  10. package/pro/license/index.js +181 -0
  11. package/pro/license/license-api.js +679 -0
  12. package/pro/license/license-cache.js +523 -0
  13. package/pro/license/license-crypto.js +303 -0
  14. package/pro/package.json +52 -0
  15. package/pro/pro-config.yaml +63 -0
  16. package/pro/squads/README.md +42 -0
  17. package/pro/squads/aiox-sop/ARCHITECTURE.md +86 -0
  18. package/pro/squads/aiox-sop/CHANGELOG.md +27 -0
  19. package/pro/squads/aiox-sop/HEADLINE.md +3 -0
  20. package/pro/squads/aiox-sop/README.md +77 -0
  21. package/pro/squads/aiox-sop/agents/sop-analyst.md +363 -0
  22. package/pro/squads/aiox-sop/agents/sop-auditor.md +294 -0
  23. package/pro/squads/aiox-sop/agents/sop-chief.md +279 -0
  24. package/pro/squads/aiox-sop/agents/sop-creator.md +322 -0
  25. package/pro/squads/aiox-sop/agents/sop-extractor.md +246 -0
  26. package/pro/squads/aiox-sop/agents/sop-ml-architect.md +310 -0
  27. package/pro/squads/aiox-sop/checklists/14-point-crosby-checklist.md +84 -0
  28. package/pro/squads/aiox-sop/checklists/extraction-completeness-checklist.md +78 -0
  29. package/pro/squads/aiox-sop/checklists/sop-completeness-checklist.md +283 -0
  30. package/pro/squads/aiox-sop/checklists/sop-ml-validation-checklist.md +157 -0
  31. package/pro/squads/aiox-sop/checklists/sop-quality-checklist.md +138 -0
  32. package/pro/squads/aiox-sop/checklists/stranger-test-checklist.md +108 -0
  33. package/pro/squads/aiox-sop/config.yaml +460 -0
  34. package/pro/squads/aiox-sop/data/category-map.yaml +647 -0
  35. package/pro/squads/aiox-sop/data/confidence-levels.yaml +133 -0
  36. package/pro/squads/aiox-sop/data/infrastructure-connections.yaml +730 -0
  37. package/pro/squads/aiox-sop/data/market-categories.yaml +65 -0
  38. package/pro/squads/aiox-sop/data/risk-register.yaml +90 -0
  39. package/pro/squads/aiox-sop/data/sop-ml-schema-examples.yaml +420 -0
  40. package/pro/squads/aiox-sop/data/sop-ml-schema.yaml +780 -0
  41. package/pro/squads/aiox-sop/data/sop-registry.yaml +42 -0
  42. package/pro/squads/aiox-sop/data/sop-scoring-rubric.yaml +601 -0
  43. package/pro/squads/aiox-sop/data/sop-standards-reference.yaml +475 -0
  44. package/pro/squads/aiox-sop/data/task-definitions.yaml +1602 -0
  45. package/pro/squads/aiox-sop/data/token-assignments.yaml +304 -0
  46. package/pro/squads/aiox-sop/data/verdict-thresholds.yaml +117 -0
  47. package/pro/squads/aiox-sop/data/workflow-quality-rubric.yaml +579 -0
  48. package/pro/squads/aiox-sop/docs/README.md +10 -0
  49. package/pro/squads/aiox-sop/docs/optimization-doc-drift-2026-03-18.json +20 -0
  50. package/pro/squads/aiox-sop/docs/optimization-economy-2026-03-18.md +40 -0
  51. package/pro/squads/aiox-sop/docs/optimization-environment-2026-03-18.json +24 -0
  52. package/pro/squads/aiox-sop/docs/optimization-material-inventory-2026-03-18.yaml +73 -0
  53. package/pro/squads/aiox-sop/docs/optimization-repo-baseline-2026-03-18.json +38 -0
  54. package/pro/squads/aiox-sop/docs/optimization-runtime-smoke-2026-03-18.json +57 -0
  55. package/pro/squads/aiox-sop/docs/optimization-split-verdict-2026-03-18.json +21 -0
  56. package/pro/squads/aiox-sop/docs/optimization-validation-2026-03-18.json +53 -0
  57. package/pro/squads/aiox-sop/docs/optimization-validation-fallback-2026-03-18.json +6 -0
  58. package/pro/squads/aiox-sop/docs/optimization-workflow-contracts-2026-03-18.json +81 -0
  59. package/pro/squads/aiox-sop/docs/optimization-yolo-plan-2026-03-18.md +177 -0
  60. package/pro/squads/aiox-sop/docs/optimization-yolo-report-2026-03-18.md +181 -0
  61. package/pro/squads/aiox-sop/docs/scaling-strategy.md +129 -0
  62. package/pro/squads/aiox-sop/examples/README.md +14 -0
  63. package/pro/squads/aiox-sop/examples/sample-human-sop.md +11 -0
  64. package/pro/squads/aiox-sop/examples/sample-ml-sop.yaml +14 -0
  65. package/pro/squads/aiox-sop/outputs/README.md +20 -0
  66. package/pro/squads/aiox-sop/outputs/SOP-SLIDES-001.md +864 -0
  67. package/pro/squads/aiox-sop/outputs/SOP-SLIDES-001.yaml +1225 -0
  68. package/pro/squads/aiox-sop/outputs/SOP-SLIDES-002.md +904 -0
  69. package/pro/squads/aiox-sop/outputs/SOP-SLIDES-002.yaml +431 -0
  70. package/pro/squads/aiox-sop/outputs/SOP-SLIDES-003.md +964 -0
  71. package/pro/squads/aiox-sop/outputs/SOP-SLIDES-003.yaml +392 -0
  72. package/pro/squads/aiox-sop/outputs/SOP-SLIDES-004.md +975 -0
  73. package/pro/squads/aiox-sop/outputs/SOP-SLIDES-004.yaml +786 -0
  74. package/pro/squads/aiox-sop/protocols/sop-workflow-integration.md +209 -0
  75. package/pro/squads/aiox-sop/scripts/convert-sop-format-worker.py +299 -0
  76. package/pro/squads/aiox-sop/scripts/load-workspace-context.cjs +296 -0
  77. package/pro/squads/aiox-sop/scripts/normalize-thiagoroas-vsl-extractions.cjs +1448 -0
  78. package/pro/squads/aiox-sop/scripts/refresh-sop-registry.cjs +331 -0
  79. package/pro/squads/aiox-sop/scripts/resolve-environment-contract.cjs +107 -0
  80. package/pro/squads/aiox-sop/scripts/test-load-workspace-context.cjs +100 -0
  81. package/pro/squads/aiox-sop/scripts/test-resolve-environment-contract.cjs +159 -0
  82. package/pro/squads/aiox-sop/tasks/analyze-sop.md +464 -0
  83. package/pro/squads/aiox-sop/tasks/analyze-squad.md +317 -0
  84. package/pro/squads/aiox-sop/tasks/analyze-workflow.md +343 -0
  85. package/pro/squads/aiox-sop/tasks/audit-batch.md +354 -0
  86. package/pro/squads/aiox-sop/tasks/audit-sop.md +528 -0
  87. package/pro/squads/aiox-sop/tasks/benchmark-sop.md +408 -0
  88. package/pro/squads/aiox-sop/tasks/certify-sop.md +193 -0
  89. package/pro/squads/aiox-sop/tasks/check-environment.md +47 -0
  90. package/pro/squads/aiox-sop/tasks/compliance-check.md +84 -0
  91. package/pro/squads/aiox-sop/tasks/convert-sop-format.md +413 -0
  92. package/pro/squads/aiox-sop/tasks/create-checklist.md +267 -0
  93. package/pro/squads/aiox-sop/tasks/create-sop-human.md +306 -0
  94. package/pro/squads/aiox-sop/tasks/create-sop-ml.md +313 -0
  95. package/pro/squads/aiox-sop/tasks/create-sop-operations-suite.md +177 -0
  96. package/pro/squads/aiox-sop/tasks/delete-aiox-sop.md +38 -0
  97. package/pro/squads/aiox-sop/tasks/extract-from-video.md +354 -0
  98. package/pro/squads/aiox-sop/tasks/extract-sop.md +389 -0
  99. package/pro/squads/aiox-sop/tasks/load-workspace-context.md +112 -0
  100. package/pro/squads/aiox-sop/tasks/map-core-sop-backlog.md +651 -0
  101. package/pro/squads/aiox-sop/tasks/re-audit.md +97 -0
  102. package/pro/squads/aiox-sop/tasks/structured-interview.md +243 -0
  103. package/pro/squads/aiox-sop/tasks/update-aiox-sop.md +39 -0
  104. package/pro/squads/aiox-sop/templates/audit-report-template.md +119 -0
  105. package/pro/squads/aiox-sop/templates/certification-template.md +31 -0
  106. package/pro/squads/aiox-sop/templates/checklist-from-sop-tmpl.md +142 -0
  107. package/pro/squads/aiox-sop/templates/decision-tree-template.yaml +209 -0
  108. package/pro/squads/aiox-sop/templates/extraction-output-template.md +150 -0
  109. package/pro/squads/aiox-sop/templates/handoff-tmpl.yaml +85 -0
  110. package/pro/squads/aiox-sop/templates/ml-sop-json-template.json +208 -0
  111. package/pro/squads/aiox-sop/templates/ml-sop-yaml-template.yaml +204 -0
  112. package/pro/squads/aiox-sop/templates/nonconformity-register-template.md +85 -0
  113. package/pro/squads/aiox-sop/templates/sop-analysis-report-tmpl.md +378 -0
  114. package/pro/squads/aiox-sop/templates/sop-human-tmpl.md +385 -0
  115. package/pro/squads/aiox-sop/templates/sop-ml-tmpl.md +352 -0
  116. package/pro/squads/aiox-sop/templates/sop-scorecard-tmpl.md +123 -0
  117. package/pro/squads/aiox-sop/templates/state-machine-template.yaml +232 -0
  118. package/pro/squads/aiox-sop/templates/tool-binding-template.yaml +255 -0
  119. package/pro/squads/aiox-sop/templates/workflow-gap-report-tmpl.yaml +227 -0
  120. package/pro/squads/aiox-sop/workflows/wf-sop-audit-pipeline.yaml +381 -0
  121. package/pro/squads/aiox-sop/workflows/wf-sop-audit-pipeline.yaml.bak +332 -0
  122. package/pro/squads/aiox-sop/workflows/wf-sop-creation-pipeline.yaml +200 -0
  123. package/pro/squads/aiox-sop/workflows/wf-sop-creation-pipeline.yaml.bak +147 -0
  124. package/pro/squads/aiox-sop/workflows/wf-sop-extraction-pipeline.yaml +476 -0
  125. package/pro/squads/aiox-sop/workflows/wf-sop-extraction-pipeline.yaml.bak +441 -0
  126. package/pro/squads/aiox-sop/workflows/wf-sop-pipeline-definition.yaml +813 -0
  127. package/pro/squads/aiox-sop/workflows/wf-sop-quality-gates.yaml +473 -0
  128. package/pro/squads/brand/ARCHITECTURE.md +79 -0
  129. package/pro/squads/brand/CHANGELOG.md +38 -0
  130. package/pro/squads/brand/README.md +213 -0
  131. package/pro/squads/brand/agents/aaker-brand-identity.md +475 -0
  132. package/pro/squads/brand/agents/archetype-consultant.md +424 -0
  133. package/pro/squads/brand/agents/brand-chief.md +502 -0
  134. package/pro/squads/brand/agents/brand-strategist.md +661 -0
  135. package/pro/squads/brand/agents/domain-scout.md +412 -0
  136. package/pro/squads/brand/agents/heyward-dtc-brand.md +399 -0
  137. package/pro/squads/brand/agents/keller-brand-equity.md +390 -0
  138. package/pro/squads/brand/agents/miller-sticky-brand.md +510 -0
  139. package/pro/squads/brand/agents/naming-strategist.md +638 -0
  140. package/pro/squads/brand/agents/nano-banana-generator.md +38 -0
  141. package/pro/squads/brand/agents/neumeier-differentiation.md +390 -0
  142. package/pro/squads/brand/agents/ries-positioning.md +413 -0
  143. package/pro/squads/brand/agents/sharp-brand-science.md +444 -0
  144. package/pro/squads/brand/agents/storybrand-narrator.md +442 -0
  145. package/pro/squads/brand/agents/wheeler-brand-design.md +700 -0
  146. package/pro/squads/brand/agents/yohn-brand-culture.md +391 -0
  147. package/pro/squads/brand/checklists/brand-naming-checklist.md +46 -0
  148. package/pro/squads/brand/checklists/brand-quality-gate.md +58 -0
  149. package/pro/squads/brand/config/veto-conditions.yaml +54 -0
  150. package/pro/squads/brand/config.yaml +634 -0
  151. package/pro/squads/brand/data/brand-mappings.yaml +140 -0
  152. package/pro/squads/brand/data/logo-scds-templates.yaml +224 -0
  153. package/pro/squads/brand/data/logo-style-library.yaml +226 -0
  154. package/pro/squads/brand/data/swipe-file.yaml +282 -0
  155. package/pro/squads/brand/docs/optimization-economy-2026-03-10.md +25 -0
  156. package/pro/squads/brand/docs/optimization-material-inventory-2026-03-10.yaml +40 -0
  157. package/pro/squads/brand/docs/optimization-validation-2026-03-10.json +26 -0
  158. package/pro/squads/brand/docs/optimization-yolo-plan-2026-03-10.md +80 -0
  159. package/pro/squads/brand/docs/optimization-yolo-report-2026-03-10.md +158 -0
  160. package/pro/squads/brand/scripts/bootstrap-brand-workspace.sh +47 -0
  161. package/pro/squads/brand/scripts/validate-brand-essentials.sh +289 -0
  162. package/pro/squads/brand/tasks/brand-activation.md +86 -0
  163. package/pro/squads/brand/tasks/brand-book.md +224 -0
  164. package/pro/squads/brand/tasks/brand-consulting.md +189 -0
  165. package/pro/squads/brand/tasks/brand-diagnosis.md +81 -0
  166. package/pro/squads/brand/tasks/brand-identity.md +255 -0
  167. package/pro/squads/brand/tasks/brand-messaging.md +226 -0
  168. package/pro/squads/brand/tasks/brand-quality-gate.md +213 -0
  169. package/pro/squads/brand/tasks/create-brand-epic.md +129 -0
  170. package/pro/squads/brand/tasks/create-brand-story.md +155 -0
  171. package/pro/squads/brand/tasks/delete-brand.md +56 -0
  172. package/pro/squads/brand/tasks/domain-check.md +120 -0
  173. package/pro/squads/brand/tasks/load-workspace-context.md +112 -0
  174. package/pro/squads/brand/tasks/logo-curate.md +180 -0
  175. package/pro/squads/brand/tasks/logo-deliverable.md +210 -0
  176. package/pro/squads/brand/tasks/logo-generate.md +143 -0
  177. package/pro/squads/brand/tasks/logo-intake.md +151 -0
  178. package/pro/squads/brand/tasks/logo-prompt-engineering.md +151 -0
  179. package/pro/squads/brand/tasks/logo-refine.md +156 -0
  180. package/pro/squads/brand/tasks/logo-strategic-direction.md +160 -0
  181. package/pro/squads/brand/tasks/naming-generation.md +118 -0
  182. package/pro/squads/brand/tasks/positioning-narrative.md +93 -0
  183. package/pro/squads/brand/tasks/update-brand.md +52 -0
  184. package/pro/squads/brand/templates/brand-epic-tmpl.md +124 -0
  185. package/pro/squads/brand/templates/brand-story-tmpl.md +133 -0
  186. package/pro/squads/brand/templates/brandbook-tmpl.yaml +38 -0
  187. package/pro/squads/brand/templates/naming-report-tmpl.md +36 -0
  188. package/pro/squads/brand/workflows/wf-brand-activation-system.yaml +148 -0
  189. package/pro/squads/brand/workflows/wf-brand-all-hands.yaml +368 -0
  190. package/pro/squads/brand/workflows/wf-brand-complete.yaml +223 -0
  191. package/pro/squads/brand/workflows/wf-brand-consulting.yaml +301 -0
  192. package/pro/squads/brand/workflows/wf-brand-foundations.yaml +129 -0
  193. package/pro/squads/brand/workflows/wf-brand-mockup-generation.yaml +247 -0
  194. package/pro/squads/brand/workflows/wf-brand-positioning-narrative.yaml +146 -0
  195. package/pro/squads/brand/workflows/wf-logo-brainstorm.yaml +297 -0
  196. package/pro/squads/brand/workflows/wf-naming-to-domain.yaml +152 -0
  197. package/pro/squads/claude-code-mastery/ARCHITECTURE.md +224 -0
  198. package/pro/squads/claude-code-mastery/CHANGELOG.md +41 -0
  199. package/pro/squads/claude-code-mastery/README.md +146 -0
  200. package/pro/squads/claude-code-mastery/agents/claude-mastery-chief.md +542 -0
  201. package/pro/squads/claude-code-mastery/agents/config-engineer.md +1051 -0
  202. package/pro/squads/claude-code-mastery/agents/hooks-architect.md +1088 -0
  203. package/pro/squads/claude-code-mastery/agents/mcp-integrator.md +790 -0
  204. package/pro/squads/claude-code-mastery/agents/project-integrator.md +1184 -0
  205. package/pro/squads/claude-code-mastery/agents/roadmap-sentinel.md +922 -0
  206. package/pro/squads/claude-code-mastery/agents/skill-craftsman.md +1302 -0
  207. package/pro/squads/claude-code-mastery/agents/swarm-orchestrator.md +1072 -0
  208. package/pro/squads/claude-code-mastery/checklists/agent-team-readiness-checklist.md +88 -0
  209. package/pro/squads/claude-code-mastery/checklists/brownfield-readiness-checklist.md +91 -0
  210. package/pro/squads/claude-code-mastery/checklists/change-checklist.md +75 -0
  211. package/pro/squads/claude-code-mastery/checklists/context-rot-checklist.md +116 -0
  212. package/pro/squads/claude-code-mastery/checklists/integration-audit-checklist.md +104 -0
  213. package/pro/squads/claude-code-mastery/checklists/multi-agent-review-checklist.md +77 -0
  214. package/pro/squads/claude-code-mastery/checklists/pre-push-checklist.md +79 -0
  215. package/pro/squads/claude-code-mastery/config.yaml +351 -0
  216. package/pro/squads/claude-code-mastery/data/cc-architecture-map.yaml +217 -0
  217. package/pro/squads/claude-code-mastery/data/cc-permission-rules.yaml +281 -0
  218. package/pro/squads/claude-code-mastery/data/ci-cd-patterns.yaml +412 -0
  219. package/pro/squads/claude-code-mastery/data/claude-code-quick-ref.yaml +436 -0
  220. package/pro/squads/claude-code-mastery/data/frontmatter-schemas.yaml +395 -0
  221. package/pro/squads/claude-code-mastery/data/hook-patterns.yaml +799 -0
  222. package/pro/squads/claude-code-mastery/data/infrastructure-map.yaml +53 -0
  223. package/pro/squads/claude-code-mastery/data/journey-log-events.yaml +115 -0
  224. package/pro/squads/claude-code-mastery/data/mcp-integration-catalog.yaml +323 -0
  225. package/pro/squads/claude-code-mastery/data/project-type-signatures.yaml +335 -0
  226. package/pro/squads/claude-code-mastery/data/quality-gates.yaml +43 -0
  227. package/pro/squads/claude-code-mastery/data/swarm-agent-schema.yaml +35 -0
  228. package/pro/squads/claude-code-mastery/data/token-registry.yaml +213 -0
  229. package/pro/squads/claude-code-mastery/docs/.gitkeep +0 -0
  230. package/pro/squads/claude-code-mastery/scripts/README-Permission-Sync.md +38 -0
  231. package/pro/squads/claude-code-mastery/scripts/generate-tool-allowlists.js +232 -0
  232. package/pro/squads/claude-code-mastery/scripts/inject-accountability-tokens.js +91 -0
  233. package/pro/squads/claude-code-mastery/scripts/inject-output-schemas.js +131 -0
  234. package/pro/squads/claude-code-mastery/scripts/inject-swarm-fields.js +92 -0
  235. package/pro/squads/claude-code-mastery/scripts/prepare-claude-runtime.sh +26 -0
  236. package/pro/squads/claude-code-mastery/scripts/publish-mastery-report.sh +17 -0
  237. package/pro/squads/claude-code-mastery/scripts/session-usage-report.py +982 -0
  238. package/pro/squads/claude-code-mastery/scripts/session_usage_report_cache.py +163 -0
  239. package/pro/squads/claude-code-mastery/scripts/session_usage_report_claude_adapter.py +375 -0
  240. package/pro/squads/claude-code-mastery/scripts/session_usage_report_facets.py +1128 -0
  241. package/pro/squads/claude-code-mastery/scripts/session_usage_report_html.py +989 -0
  242. package/pro/squads/claude-code-mastery/scripts/session_usage_report_inventory.py +66 -0
  243. package/pro/squads/claude-code-mastery/scripts/session_usage_report_markdown.py +506 -0
  244. package/pro/squads/claude-code-mastery/scripts/session_usage_report_mock_insights_adapter.py +277 -0
  245. package/pro/squads/claude-code-mastery/scripts/session_usage_report_pipeline.py +519 -0
  246. package/pro/squads/claude-code-mastery/scripts/session_usage_report_recommendations.py +317 -0
  247. package/pro/squads/claude-code-mastery/scripts/session_usage_report_usage.py +235 -0
  248. package/pro/squads/claude-code-mastery/scripts/test_session_usage_report.py +1910 -0
  249. package/pro/squads/claude-code-mastery/scripts/validate-setup.js +597 -0
  250. package/pro/squads/claude-code-mastery/squad-io.yaml +151 -0
  251. package/pro/squads/claude-code-mastery/tasks/align-memory-context.md +212 -0
  252. package/pro/squads/claude-code-mastery/tasks/audit-integration.md +252 -0
  253. package/pro/squads/claude-code-mastery/tasks/audit-settings.md +239 -0
  254. package/pro/squads/claude-code-mastery/tasks/audit-setup.md +258 -0
  255. package/pro/squads/claude-code-mastery/tasks/brownfield-setup.md +355 -0
  256. package/pro/squads/claude-code-mastery/tasks/ci-cd-setup.md +368 -0
  257. package/pro/squads/claude-code-mastery/tasks/claude-md-engineer.md +367 -0
  258. package/pro/squads/claude-code-mastery/tasks/configure-claude-code.md +248 -0
  259. package/pro/squads/claude-code-mastery/tasks/context-rot-audit.md +363 -0
  260. package/pro/squads/claude-code-mastery/tasks/create-agent-definition.md +311 -0
  261. package/pro/squads/claude-code-mastery/tasks/create-rules.md +239 -0
  262. package/pro/squads/claude-code-mastery/tasks/create-team-topology.md +291 -0
  263. package/pro/squads/claude-code-mastery/tasks/delete-claude-code-mastery.md +224 -0
  264. package/pro/squads/claude-code-mastery/tasks/diagnose.md +199 -0
  265. package/pro/squads/claude-code-mastery/tasks/enterprise-config.md +379 -0
  266. package/pro/squads/claude-code-mastery/tasks/hook-designer.md +315 -0
  267. package/pro/squads/claude-code-mastery/tasks/integrate-project.md +337 -0
  268. package/pro/squads/claude-code-mastery/tasks/mcp-integration-plan.md +284 -0
  269. package/pro/squads/claude-code-mastery/tasks/mcp-workflow.md +330 -0
  270. package/pro/squads/claude-code-mastery/tasks/multi-project-setup.md +261 -0
  271. package/pro/squads/claude-code-mastery/tasks/optimize-context.md +250 -0
  272. package/pro/squads/claude-code-mastery/tasks/optimize-workflow.md +270 -0
  273. package/pro/squads/claude-code-mastery/tasks/parallel-decomposition.md +326 -0
  274. package/pro/squads/claude-code-mastery/tasks/permission-strategy.md +315 -0
  275. package/pro/squads/claude-code-mastery/tasks/rebuild-runtime-validator.md +234 -0
  276. package/pro/squads/claude-code-mastery/tasks/refresh-runtime-contract.md +235 -0
  277. package/pro/squads/claude-code-mastery/tasks/sandbox-setup.md +312 -0
  278. package/pro/squads/claude-code-mastery/tasks/setup-repository.md +263 -0
  279. package/pro/squads/claude-code-mastery/tasks/setup-wizard.md +269 -0
  280. package/pro/squads/claude-code-mastery/tasks/update-claude-code-mastery.md +227 -0
  281. package/pro/squads/claude-code-mastery/tasks/worktree-strategy.md +353 -0
  282. package/pro/squads/claude-code-mastery/templates/baseline-kpis-tmpl.yaml +0 -0
  283. package/pro/squads/claude-code-mastery/templates/claude-md-fullstack.md +147 -0
  284. package/pro/squads/claude-code-mastery/templates/claude-md-library.md +175 -0
  285. package/pro/squads/claude-code-mastery/templates/claude-md-microservices.md +186 -0
  286. package/pro/squads/claude-code-mastery/templates/claude-md-mobile.md +198 -0
  287. package/pro/squads/claude-code-mastery/templates/claude-md-monorepo.md +139 -0
  288. package/pro/squads/claude-code-mastery/templates/concept-mapping-tmpl.yaml +0 -0
  289. package/pro/squads/claude-code-mastery/templates/cross-domain-handoff-tmpl.yaml +15 -0
  290. package/pro/squads/claude-code-mastery/templates/github-actions-claude-ci.yml +348 -0
  291. package/pro/squads/claude-code-mastery/templates/github-actions-claude-review.yml +179 -0
  292. package/pro/squads/claude-code-mastery/templates/hook-implementation-tmpl.md +24 -0
  293. package/pro/squads/claude-code-mastery/templates/mcp-config-tmpl.yaml +18 -0
  294. package/pro/squads/claude-code-mastery/templates/session-usage-report-page.css +591 -0
  295. package/pro/squads/claude-code-mastery/templates/session-usage-report-page.html +32 -0
  296. package/pro/squads/claude-code-mastery/templates/session-usage-report-tmpl.yaml +224 -0
  297. package/pro/squads/claude-code-mastery/templates/skill-definition-tmpl.md +67 -0
  298. package/pro/squads/claude-code-mastery/templates/violations-log-tmpl.jsonl +0 -0
  299. package/pro/squads/claude-code-mastery/workflows/wf-audit-complete.yaml +178 -0
  300. package/pro/squads/claude-code-mastery/workflows/wf-knowledge-update.yaml +447 -0
  301. package/pro/squads/claude-code-mastery/workflows/wf-project-setup.yaml +236 -0
  302. package/pro/squads/data/HEADLINE.md +3 -0
  303. package/pro/squads/data/README.md +292 -0
  304. package/pro/squads/data/agents/avinash-kaushik.md +1117 -0
  305. package/pro/squads/data/agents/data-chief.md +1035 -0
  306. package/pro/squads/data/agents/david-spinks.md +1896 -0
  307. package/pro/squads/data/agents/nick-mehta.md +1338 -0
  308. package/pro/squads/data/agents/peter-fader.md +1815 -0
  309. package/pro/squads/data/agents/sean-ellis.md +2460 -0
  310. package/pro/squads/data/agents/wes-kao.md +2124 -0
  311. package/pro/squads/data/checklists/cbc-readiness-checklist.md +155 -0
  312. package/pro/squads/data/checklists/community-health-checklist.md +131 -0
  313. package/pro/squads/data/checklists/customer-360-checklist.md +997 -0
  314. package/pro/squads/data/checklists/customer-centricity-checklist.md +105 -0
  315. package/pro/squads/data/checklists/health-score-checklist.md +984 -0
  316. package/pro/squads/data/checklists/pre-implementation-checklist.md +291 -0
  317. package/pro/squads/data/checklists/so-what-checklist.md +326 -0
  318. package/pro/squads/data/config.yaml +705 -0
  319. package/pro/squads/data/data/.gitkeep +0 -0
  320. package/pro/squads/data/data/README.md +84 -0
  321. package/pro/squads/data/data/framework/01_arquitetura_geral.md +134 -0
  322. package/pro/squads/data/data/framework/02_tier0_fundacao.md +198 -0
  323. package/pro/squads/data/data/framework/03_tier0_fundamentadores.md +297 -0
  324. package/pro/squads/data/data/framework/04_tier1_operacionalizadores.md +447 -0
  325. package/pro/squads/data/data/framework/05_tier2_comunicadores.md +297 -0
  326. package/pro/squads/data/data/framework/06_matriz_decisao.md +328 -0
  327. package/pro/squads/data/data/framework/07_workflows.md +552 -0
  328. package/pro/squads/data/data/framework/08_cheatsheet.md +216 -0
  329. package/pro/squads/data/examples/cohorts-diagnostic-sample-output.yaml +10 -0
  330. package/pro/squads/data/outputs/workspace-hardening-summary.md +12 -0
  331. package/pro/squads/data/projects/data-v1-setup/prd.json +440 -0
  332. package/pro/squads/data/projects/data-v1-setup/prompt.md +184 -0
  333. package/pro/squads/data/scripts/bootstrap-data-workspace.sh +186 -0
  334. package/pro/squads/data/scripts/validate-data-essentials.sh +237 -0
  335. package/pro/squads/data/tasks/analyze-cohort.md +1777 -0
  336. package/pro/squads/data/tasks/build-attribution.md +1695 -0
  337. package/pro/squads/data/tasks/calculate-clv.md +1660 -0
  338. package/pro/squads/data/tasks/create-dashboard.md +2305 -0
  339. package/pro/squads/data/tasks/define-north-star.md +1779 -0
  340. package/pro/squads/data/tasks/design-health-score.md +1952 -0
  341. package/pro/squads/data/tasks/design-learning-outcomes.md +2122 -0
  342. package/pro/squads/data/tasks/load-workspace-context.md +115 -0
  343. package/pro/squads/data/tasks/measure-community.md +1376 -0
  344. package/pro/squads/data/tasks/predict-churn.md +1979 -0
  345. package/pro/squads/data/tasks/run-growth-experiment.md +1863 -0
  346. package/pro/squads/data/tasks/run-pmf-test.md +1514 -0
  347. package/pro/squads/data/tasks/segment-rfm.md +2070 -0
  348. package/pro/squads/data/templates/attribution-report-tmpl.yaml +94 -0
  349. package/pro/squads/data/templates/churn-alert-tmpl.yaml +529 -0
  350. package/pro/squads/data/templates/clv-report-tmpl.yaml +818 -0
  351. package/pro/squads/data/templates/cohort-analysis-tmpl.yaml +72 -0
  352. package/pro/squads/data/templates/cohorts/community-health-cohort-tmpl.yaml +60 -0
  353. package/pro/squads/data/templates/cohorts/executive-summary-tmpl.yaml +54 -0
  354. package/pro/squads/data/templates/cohorts/icp-deep-analysis-tmpl.yaml +49 -0
  355. package/pro/squads/data/templates/cohorts/learning-journey-tmpl.yaml +52 -0
  356. package/pro/squads/data/templates/cohorts/segmentation-rfm-tmpl.yaml +48 -0
  357. package/pro/squads/data/templates/cohorts/student-health-score-tmpl.yaml +50 -0
  358. package/pro/squads/data/templates/community-health-tmpl.yaml +106 -0
  359. package/pro/squads/data/templates/customer-360-tmpl.yaml +80 -0
  360. package/pro/squads/data/templates/dmmm-tmpl.yaml +134 -0
  361. package/pro/squads/data/templates/executive-report-tmpl.yaml +432 -0
  362. package/pro/squads/data/templates/health-score-report-tmpl.yaml +644 -0
  363. package/pro/squads/data/templates/learning-outcomes-tmpl.yaml +112 -0
  364. package/pro/squads/data/workflows/cohort-analysis-workflow.md +356 -0
  365. package/pro/squads/data/workflows/cohorts-diagnostic.md +96 -0
  366. package/pro/squads/data/workflows/create-churn-system.md +354 -0
  367. package/pro/squads/data/workflows/fix-completion-rate.md +436 -0
  368. package/pro/squads/data/workflows/implement-attribution.md +371 -0
  369. package/pro/squads/data/workflows/implement-customer-360.md +297 -0
  370. package/pro/squads/data/workflows/optimize-community-workflow.md +463 -0
  371. package/pro/squads/data/workspace-hardening-state.json +6 -0
  372. package/pro/squads/db-sage/README.md +331 -0
  373. package/pro/squads/db-sage/agents/db-sage.md +317 -0
  374. package/pro/squads/db-sage/checklists/database-design-checklist.md +79 -0
  375. package/pro/squads/db-sage/checklists/database-migration-documentation-checklist.md +348 -0
  376. package/pro/squads/db-sage/checklists/db-kiss-validation-checklist.md +246 -0
  377. package/pro/squads/db-sage/checklists/dba-predeploy-checklist.md +276 -0
  378. package/pro/squads/db-sage/checklists/dba-rollback-checklist.md +65 -0
  379. package/pro/squads/db-sage/checklists/migration-validation-checklist.md +195 -0
  380. package/pro/squads/db-sage/checklists/supabase-best-practices-audit.md +256 -0
  381. package/pro/squads/db-sage/config.yaml +165 -0
  382. package/pro/squads/db-sage/data/database-best-practices.md +42 -0
  383. package/pro/squads/db-sage/data/migration-safety-guide.md +64 -0
  384. package/pro/squads/db-sage/data/postgres-tuning-guide.md +39 -0
  385. package/pro/squads/db-sage/data/rls-security-patterns.md +46 -0
  386. package/pro/squads/db-sage/data/supabase-agent-skills.md +970 -0
  387. package/pro/squads/db-sage/data/supabase-patterns.md +482 -0
  388. package/pro/squads/db-sage/docs/.gitkeep +0 -0
  389. package/pro/squads/db-sage/scripts/database-adapters/detect-database.sh +113 -0
  390. package/pro/squads/db-sage/scripts/database-adapters/postgresql-schema-loader.sh +334 -0
  391. package/pro/squads/db-sage/scripts/database-adapters/unified-db-loader.sh +176 -0
  392. package/pro/squads/db-sage/scripts/database-operations/README.md +638 -0
  393. package/pro/squads/db-sage/scripts/database-operations/backup-manager.sh +341 -0
  394. package/pro/squads/db-sage/scripts/database-operations/connection-monitor.sh +433 -0
  395. package/pro/squads/db-sage/scripts/database-operations/constraint-validator.sh +588 -0
  396. package/pro/squads/db-sage/scripts/database-operations/data-anonymizer.sh +446 -0
  397. package/pro/squads/db-sage/scripts/database-operations/data-loader.sh +346 -0
  398. package/pro/squads/db-sage/scripts/database-operations/explain-analyzer.sh +285 -0
  399. package/pro/squads/db-sage/scripts/database-operations/health-checker.sh +512 -0
  400. package/pro/squads/db-sage/scripts/database-operations/index-manager.sh +380 -0
  401. package/pro/squads/db-sage/scripts/database-operations/migration-generator.sh +490 -0
  402. package/pro/squads/db-sage/scripts/database-operations/migration-safe-runner.sh +228 -0
  403. package/pro/squads/db-sage/scripts/database-operations/permission-auditor.sh +513 -0
  404. package/pro/squads/db-sage/scripts/database-operations/query-killer.sh +306 -0
  405. package/pro/squads/db-sage/scripts/database-operations/replication-monitor.sh +366 -0
  406. package/pro/squads/db-sage/scripts/database-operations/rls-policy-installer.sh +480 -0
  407. package/pro/squads/db-sage/scripts/database-operations/rls-test-suite.sh +172 -0
  408. package/pro/squads/db-sage/scripts/database-operations/schema-differ.sh +265 -0
  409. package/pro/squads/db-sage/scripts/database-operations/security-scanner.sh +683 -0
  410. package/pro/squads/db-sage/scripts/database-operations/setup-pgpass.sh +185 -0
  411. package/pro/squads/db-sage/scripts/database-operations/vacuum-optimizer.sh +448 -0
  412. package/pro/squads/db-sage/scripts/db-ops/backup-manager.sh +321 -0
  413. package/pro/squads/db-sage/scripts/db-ops/best-practices-auditor.sh +534 -0
  414. package/pro/squads/db-sage/scripts/db-ops/bootstrap-runner.sh +255 -0
  415. package/pro/squads/db-sage/scripts/db-ops/data-loader.sh +616 -0
  416. package/pro/squads/db-sage/scripts/db-ops/detect-database.sh +25 -0
  417. package/pro/squads/db-sage/scripts/db-ops/explain-analyzer.sh +90 -0
  418. package/pro/squads/db-sage/scripts/db-ops/health-checker.sh +323 -0
  419. package/pro/squads/db-sage/scripts/db-ops/migration-runner.sh +308 -0
  420. package/pro/squads/db-sage/scripts/db-ops/query-runner.sh +171 -0
  421. package/pro/squads/db-sage/scripts/db-ops/rls-policy-installer.sh +46 -0
  422. package/pro/squads/db-sage/scripts/db-ops/rls-test-suite.sh +38 -0
  423. package/pro/squads/db-sage/scripts/db-ops/schema-context-loader.sh +25 -0
  424. package/pro/squads/db-sage/scripts/db-ops/squad-integration-preflight.sh +155 -0
  425. package/pro/squads/db-sage/tasks/create-doc.md +107 -0
  426. package/pro/squads/db-sage/tasks/db-analyze-hotpaths.md +406 -0
  427. package/pro/squads/db-sage/tasks/db-apply-migration.md +206 -0
  428. package/pro/squads/db-sage/tasks/db-best-practices-audit.md +523 -0
  429. package/pro/squads/db-sage/tasks/db-bootstrap.md +464 -0
  430. package/pro/squads/db-sage/tasks/db-dry-run.md +122 -0
  431. package/pro/squads/db-sage/tasks/db-env-check.md +94 -0
  432. package/pro/squads/db-sage/tasks/db-explain.md +461 -0
  433. package/pro/squads/db-sage/tasks/db-impersonate.md +326 -0
  434. package/pro/squads/db-sage/tasks/db-load-csv.md +433 -0
  435. package/pro/squads/db-sage/tasks/db-policy-apply.md +464 -0
  436. package/pro/squads/db-sage/tasks/db-rls-audit.md +241 -0
  437. package/pro/squads/db-sage/tasks/db-rollback.md +573 -0
  438. package/pro/squads/db-sage/tasks/db-run-sql.md +453 -0
  439. package/pro/squads/db-sage/tasks/db-seed.md +230 -0
  440. package/pro/squads/db-sage/tasks/db-smoke-test.md +181 -0
  441. package/pro/squads/db-sage/tasks/db-snapshot.md +403 -0
  442. package/pro/squads/db-sage/tasks/db-squad-integration.md +487 -0
  443. package/pro/squads/db-sage/tasks/db-verify-order.md +344 -0
  444. package/pro/squads/db-sage/tasks/domain-modeling.md +517 -0
  445. package/pro/squads/db-sage/tasks/execute-checklist.md +99 -0
  446. package/pro/squads/db-sage/tasks/kiss.md +129 -0
  447. package/pro/squads/db-sage/tasks/query-optimization.md +599 -0
  448. package/pro/squads/db-sage/tasks/schema-audit.md +833 -0
  449. package/pro/squads/db-sage/tasks/supabase-setup.md +536 -0
  450. package/pro/squads/db-sage/templates/backup-metadata.json.tmpl +7 -0
  451. package/pro/squads/db-sage/templates/db-analysis-template.yaml +291 -0
  452. package/pro/squads/db-sage/templates/index-strategy-tmpl.yaml +53 -0
  453. package/pro/squads/db-sage/templates/migration-plan-tmpl.yaml +1022 -0
  454. package/pro/squads/db-sage/templates/migration.sql.tmpl +9 -0
  455. package/pro/squads/db-sage/templates/rls-policies-tmpl.yaml +1201 -0
  456. package/pro/squads/db-sage/templates/rollback.sql.tmpl +9 -0
  457. package/pro/squads/db-sage/templates/schema-design-tmpl.yaml +426 -0
  458. package/pro/squads/db-sage/workflows/analyze-data-workflow.yaml +407 -0
  459. package/pro/squads/db-sage/workflows/backup-restore-workflow.yaml +121 -0
  460. package/pro/squads/db-sage/workflows/kiss-gate-workflow.yaml +143 -0
  461. package/pro/squads/db-sage/workflows/modify-schema-workflow.yaml +440 -0
  462. package/pro/squads/db-sage/workflows/performance-tuning-workflow.yaml +104 -0
  463. package/pro/squads/db-sage/workflows/query-database-workflow.yaml +394 -0
  464. package/pro/squads/db-sage/workflows/setup-database-workflow.yaml +428 -0
  465. package/pro/squads/design/HEADLINE.md +3 -0
  466. package/pro/squads/design/README.md +109 -0
  467. package/pro/squads/design/agents/brad-frost.md +1097 -0
  468. package/pro/squads/design/agents/dan-mall.md +857 -0
  469. package/pro/squads/design/agents/dave-malouf.md +2272 -0
  470. package/pro/squads/design/agents/design-chief.md +114 -0
  471. package/pro/squads/design/agents/ds-foundations-lead.md +194 -0
  472. package/pro/squads/design/agents/ds-token-architect.md +361 -0
  473. package/pro/squads/design/agents/nano-banana-generator.md +162 -0
  474. package/pro/squads/design/agents/storybook-expert.md +809 -0
  475. package/pro/squads/design/checklists/atomic-refactor-checklist.md +299 -0
  476. package/pro/squads/design/checklists/component-adaptation-checklist.md +81 -0
  477. package/pro/squads/design/checklists/design-fidelity-checklist.md +283 -0
  478. package/pro/squads/design/checklists/design-handoff-checklist.md +55 -0
  479. package/pro/squads/design/checklists/design-team-health-checklist.md +454 -0
  480. package/pro/squads/design/checklists/designops-maturity-checklist.md +518 -0
  481. package/pro/squads/design/checklists/ds-a11y-release-gate-checklist.md +45 -0
  482. package/pro/squads/design/checklists/ds-accessibility-wcag-checklist.md +147 -0
  483. package/pro/squads/design/checklists/ds-component-quality-checklist.md +150 -0
  484. package/pro/squads/design/checklists/ds-critical-eye-review-checklist.md +147 -0
  485. package/pro/squads/design/checklists/ds-migration-readiness-checklist.md +99 -0
  486. package/pro/squads/design/checklists/ds-pattern-audit-checklist.md +164 -0
  487. package/pro/squads/design/checklists/reading-accessibility-checklist.md +275 -0
  488. package/pro/squads/design/checklists/token-mapping-checklist.md +107 -0
  489. package/pro/squads/design/config/coding-standards.md +286 -0
  490. package/pro/squads/design/config/source-tree.md +59 -0
  491. package/pro/squads/design/config/tech-stack.md +48 -0
  492. package/pro/squads/design/config.yaml +207 -0
  493. package/pro/squads/design/data/agentic-design-systems-guide.md +46 -0
  494. package/pro/squads/design/data/agentic-ds-principles.md +100 -0
  495. package/pro/squads/design/data/atomic-design-principles.md +108 -0
  496. package/pro/squads/design/data/atomic-refactor-rules.md +582 -0
  497. package/pro/squads/design/data/base-component-specs.md +972 -0
  498. package/pro/squads/design/data/brad-frost-analysis-extract-implicit.yaml +270 -0
  499. package/pro/squads/design/data/brad-frost-analysis-find-0.8.yaml +176 -0
  500. package/pro/squads/design/data/brad-frost-analysis-qa-report.yaml +168 -0
  501. package/pro/squads/design/data/brad-frost-dna.yaml +713 -0
  502. package/pro/squads/design/data/capability-tools.yaml +124 -0
  503. package/pro/squads/design/data/component-adaptation-changelog.md +318 -0
  504. package/pro/squads/design/data/consolidation-algorithms.md +168 -0
  505. package/pro/squads/design/data/critical-eye-scoring-rules.yaml +240 -0
  506. package/pro/squads/design/data/design-token-best-practices.md +107 -0
  507. package/pro/squads/design/data/design-tokens-spec.yaml +418 -0
  508. package/pro/squads/design/data/ds-reference-architectures.md +93 -0
  509. package/pro/squads/design/data/f2-qa-report.md +168 -0
  510. package/pro/squads/design/data/f3-derived-components-changelog.md +100 -0
  511. package/pro/squads/design/data/f3-qa-report.md +208 -0
  512. package/pro/squads/design/data/figma-base-components-raw.md +102 -0
  513. package/pro/squads/design/data/figma-tokens-raw.md +1549 -0
  514. package/pro/squads/design/data/fluent2-design-principles.md +114 -0
  515. package/pro/squads/design/data/high-retention-reading-guide.md +349 -0
  516. package/pro/squads/design/data/integration-patterns.md +207 -0
  517. package/pro/squads/design/data/internal-quality-chain.yaml +48 -0
  518. package/pro/squads/design/data/motion-tokens-guide.md +202 -0
  519. package/pro/squads/design/data/roi-calculation-guide.md +142 -0
  520. package/pro/squads/design/data/token-mapping-reference.md +213 -0
  521. package/pro/squads/design/data/w3c-dtcg-spec-reference.md +149 -0
  522. package/pro/squads/design/data/wcag-compliance-guide.md +267 -0
  523. package/pro/squads/design/docs/AUDIT_REPORT.md +97 -0
  524. package/pro/squads/design/docs/DS-CURATION-PIPELINE-PROPOSAL.md +577 -0
  525. package/pro/squads/design/docs/UPGRADE_PLAN.md +618 -0
  526. package/pro/squads/design/docs/brad-frost-research-validation.md +372 -0
  527. package/pro/squads/design/docs/dave-malouf-research-validation.md +391 -0
  528. package/pro/squads/design/docs/tool-discovery-report.md +87 -0
  529. package/pro/squads/design/docs/tool-integration-plan.md +44 -0
  530. package/pro/squads/design/protocols/ai-first-governance.md +56 -0
  531. package/pro/squads/design/protocols/governance-execution-boundary.md +59 -0
  532. package/pro/squads/design/protocols/handoff.md +60 -0
  533. package/pro/squads/design/rules/.claude-rules.md +88 -0
  534. package/pro/squads/design/scripts/design-system/curate_colors.cjs +447 -0
  535. package/pro/squads/design/scripts/design-system/curate_components.cjs +217 -0
  536. package/pro/squads/design/scripts/design-system/curate_radius.cjs +190 -0
  537. package/pro/squads/design/scripts/design-system/curate_shadows.cjs +208 -0
  538. package/pro/squads/design/scripts/design-system/curate_spacing.cjs +243 -0
  539. package/pro/squads/design/scripts/design-system/curate_typography.cjs +404 -0
  540. package/pro/squads/design/scripts/design-system/design-system-metadata.test.js +49 -0
  541. package/pro/squads/design/scripts/design-system/design_manifest_lib.cjs +142 -0
  542. package/pro/squads/design/scripts/design-system/fetch_page_images.cjs +195 -0
  543. package/pro/squads/design/scripts/design-system/generate_components_metadata.cjs +114 -0
  544. package/pro/squads/design/scripts/design-system/generate_curation_report.cjs +258 -0
  545. package/pro/squads/design/scripts/design-system/generate_tokens.cjs +342 -0
  546. package/pro/squads/design/scripts/design-system/sync_design_manifest.cjs +27 -0
  547. package/pro/squads/design/scripts/design-system/test_mcp_tools.cjs +232 -0
  548. package/pro/squads/design/scripts/design-system/validate_components_metadata.cjs +96 -0
  549. package/pro/squads/design/scripts/design-system/validate_curation.cjs +226 -0
  550. package/pro/squads/design/scripts/design-system/validate_design_manifest_drift.cjs +72 -0
  551. package/pro/squads/design/scripts/design-system/validate_mcp_skeleton.cjs +38 -0
  552. package/pro/squads/design/scripts/design-system/validate_registry.cjs +186 -0
  553. package/pro/squads/design/scripts/design-system/validate_task_checklist_bindings.cjs +78 -0
  554. package/pro/squads/design/scripts/dissect-artifact.cjs +806 -0
  555. package/pro/squads/design/scripts/validate-a11y-integration.cjs +40 -0
  556. package/pro/squads/design/scripts/validate-design-squad.py +411 -0
  557. package/pro/squads/design/squad.yaml +714 -0
  558. package/pro/squads/design/tasks/a11y-audit.md +340 -0
  559. package/pro/squads/design/tasks/aria-audit.md +525 -0
  560. package/pro/squads/design/tasks/atomic-refactor-execute.md +391 -0
  561. package/pro/squads/design/tasks/atomic-refactor-plan.md +262 -0
  562. package/pro/squads/design/tasks/audit-reading-experience.md +350 -0
  563. package/pro/squads/design/tasks/audit-tailwind-config.md +101 -0
  564. package/pro/squads/design/tasks/bootstrap-shadcn-library.md +96 -0
  565. package/pro/squads/design/tasks/bundle-audit.md +245 -0
  566. package/pro/squads/design/tasks/contrast-matrix.md +373 -0
  567. package/pro/squads/design/tasks/create-doc.md +135 -0
  568. package/pro/squads/design/tasks/dead-code-detection.md +329 -0
  569. package/pro/squads/design/tasks/design-compare.md +414 -0
  570. package/pro/squads/design/tasks/design-process-optimization.md +407 -0
  571. package/pro/squads/design/tasks/design-review-orchestration.md +99 -0
  572. package/pro/squads/design/tasks/design-team-scaling.md +407 -0
  573. package/pro/squads/design/tasks/design-tooling-audit.md +404 -0
  574. package/pro/squads/design/tasks/design-triage.md +89 -0
  575. package/pro/squads/design/tasks/designops-maturity-assessment.md +364 -0
  576. package/pro/squads/design/tasks/designops-metrics-setup.md +465 -0
  577. package/pro/squads/design/tasks/ds-agentic-audit.md +100 -0
  578. package/pro/squads/design/tasks/ds-agentic-setup.md +103 -0
  579. package/pro/squads/design/tasks/ds-audit-codebase.md +273 -0
  580. package/pro/squads/design/tasks/ds-build-component.md +349 -0
  581. package/pro/squads/design/tasks/ds-build-mcp-server.md +84 -0
  582. package/pro/squads/design/tasks/ds-calculate-roi.md +282 -0
  583. package/pro/squads/design/tasks/ds-compose-molecule.md +106 -0
  584. package/pro/squads/design/tasks/ds-consolidate-patterns.md +253 -0
  585. package/pro/squads/design/tasks/ds-context-contract.md +194 -0
  586. package/pro/squads/design/tasks/ds-critical-eye-compare.md +130 -0
  587. package/pro/squads/design/tasks/ds-critical-eye-decide.md +139 -0
  588. package/pro/squads/design/tasks/ds-critical-eye-inventory.md +111 -0
  589. package/pro/squads/design/tasks/ds-critical-eye-report.md +101 -0
  590. package/pro/squads/design/tasks/ds-critical-eye-score.md +109 -0
  591. package/pro/squads/design/tasks/ds-designops.md +99 -0
  592. package/pro/squads/design/tasks/ds-extend-pattern.md +91 -0
  593. package/pro/squads/design/tasks/ds-extract-tokens.md +312 -0
  594. package/pro/squads/design/tasks/ds-figma-pipeline.md +95 -0
  595. package/pro/squads/design/tasks/ds-fluent-audit.md +105 -0
  596. package/pro/squads/design/tasks/ds-fluent-build.md +110 -0
  597. package/pro/squads/design/tasks/ds-generate-ai-metadata.md +81 -0
  598. package/pro/squads/design/tasks/ds-generate-cursor-rules.md +74 -0
  599. package/pro/squads/design/tasks/ds-generate-documentation.md +101 -0
  600. package/pro/squads/design/tasks/ds-generate-migration-strategy.md +331 -0
  601. package/pro/squads/design/tasks/ds-generate-shock-report.md +323 -0
  602. package/pro/squads/design/tasks/ds-govern-a11y-compliance.md +93 -0
  603. package/pro/squads/design/tasks/ds-governance.md +187 -0
  604. package/pro/squads/design/tasks/ds-health-metrics.md +278 -0
  605. package/pro/squads/design/tasks/ds-integrate-squad.md +130 -0
  606. package/pro/squads/design/tasks/ds-integrate-workspace.md +100 -0
  607. package/pro/squads/design/tasks/ds-legacy-modernization.md +302 -0
  608. package/pro/squads/design/tasks/ds-mcp-status.md +65 -0
  609. package/pro/squads/design/tasks/ds-motion-audit.md +118 -0
  610. package/pro/squads/design/tasks/ds-multi-framework.md +96 -0
  611. package/pro/squads/design/tasks/ds-parallelization-gate.md +246 -0
  612. package/pro/squads/design/tasks/ds-query.md +90 -0
  613. package/pro/squads/design/tasks/ds-rebuild-artifact.md +369 -0
  614. package/pro/squads/design/tasks/ds-reverse-engineer.md +194 -0
  615. package/pro/squads/design/tasks/ds-scan-artifact.md +131 -0
  616. package/pro/squads/design/tasks/ds-setup-design-system.md +297 -0
  617. package/pro/squads/design/tasks/ds-sync-registry.md +287 -0
  618. package/pro/squads/design/tasks/ds-theme-multi-brand.md +90 -0
  619. package/pro/squads/design/tasks/ds-token-modes.md +108 -0
  620. package/pro/squads/design/tasks/ds-token-w3c-extract.md +105 -0
  621. package/pro/squads/design/tasks/ds-validate-ai-readiness.md +69 -0
  622. package/pro/squads/design/tasks/ds-visual-regression.md +130 -0
  623. package/pro/squads/design/tasks/execute-checklist.md +141 -0
  624. package/pro/squads/design/tasks/export-design-tokens-dtcg.md +97 -0
  625. package/pro/squads/design/tasks/f1-apply-foundations.md +154 -0
  626. package/pro/squads/design/tasks/f1-ingest-figma-tokens.md +130 -0
  627. package/pro/squads/design/tasks/f1-map-tokens-to-shadcn.md +145 -0
  628. package/pro/squads/design/tasks/f1-qa-foundations.md +95 -0
  629. package/pro/squads/design/tasks/f2-adapt-shadcn-components.md +155 -0
  630. package/pro/squads/design/tasks/f2-ingest-base-components.md +148 -0
  631. package/pro/squads/design/tasks/f2-qa-base-components.md +98 -0
  632. package/pro/squads/design/tasks/f3-derive-components.md +145 -0
  633. package/pro/squads/design/tasks/f3-qa-derived-components.md +101 -0
  634. package/pro/squads/design/tasks/focus-order-audit.md +450 -0
  635. package/pro/squads/design/tasks/sb-brownfield-migrate.md +367 -0
  636. package/pro/squads/design/tasks/sb-brownfield-scan.md +318 -0
  637. package/pro/squads/design/tasks/sb-configure.md +230 -0
  638. package/pro/squads/design/tasks/sb-expand-shadcn.md +213 -0
  639. package/pro/squads/design/tasks/sb-generate-all-stories.md +288 -0
  640. package/pro/squads/design/tasks/sb-install.md +152 -0
  641. package/pro/squads/design/tasks/sb-sync-workspace.md +239 -0
  642. package/pro/squads/design/tasks/sb-verify.md +203 -0
  643. package/pro/squads/design/tasks/tailwind-upgrade.md +117 -0
  644. package/pro/squads/design/tasks/token-usage-analytics.md +262 -0
  645. package/pro/squads/design/tasks/ux-rewrite-sixth-grade.md +82 -0
  646. package/pro/squads/design/tasks/validate-design-fidelity.md +222 -0
  647. package/pro/squads/design/templates/agent-template.yaml +46 -0
  648. package/pro/squads/design/templates/clone-mind-template.md +352 -0
  649. package/pro/squads/design/templates/component-prompt-injection-tmpl.md +236 -0
  650. package/pro/squads/design/templates/component-visual-spec-tmpl.md +378 -0
  651. package/pro/squads/design/templates/critical-eye-cycle-report-tmpl.md +165 -0
  652. package/pro/squads/design/templates/design-fidelity-report-tmpl.md +155 -0
  653. package/pro/squads/design/templates/ds-ai-component-metadata-schema-tmpl.json +138 -0
  654. package/pro/squads/design/templates/ds-artifact-analysis.md +70 -0
  655. package/pro/squads/design/templates/ds-health-report-tmpl.md +236 -0
  656. package/pro/squads/design/templates/ds-migration-strategy-tmpl.md +524 -0
  657. package/pro/squads/design/templates/ds-state-persistence-tmpl.yaml +194 -0
  658. package/pro/squads/design/templates/ds-tokens-schema-tmpl.yaml +139 -0
  659. package/pro/squads/design/templates/migration-strategy-tmpl.md +524 -0
  660. package/pro/squads/design/templates/reading-design-tokens.css +26 -0
  661. package/pro/squads/design/templates/state-persistence-tmpl.yaml +219 -0
  662. package/pro/squads/design/templates/tokens-schema-tmpl.yaml +305 -0
  663. package/pro/squads/design/workflows/agentic-readiness.yaml +83 -0
  664. package/pro/squads/design/workflows/audit-only.yaml +198 -0
  665. package/pro/squads/design/workflows/brownfield-complete.yaml +257 -0
  666. package/pro/squads/design/workflows/critical-eye.yaml +184 -0
  667. package/pro/squads/design/workflows/dtcg-tokens-governance.yaml +64 -0
  668. package/pro/squads/design/workflows/foundations-pipeline.yaml +192 -0
  669. package/pro/squads/design/workflows/greenfield-new.yaml +192 -0
  670. package/pro/squads/design/workflows/motion-quality.yaml +65 -0
  671. package/pro/squads/design/workflows/self-healing-workflow.yaml +237 -0
  672. package/pro/squads/design/workflows/storybook-brownfield-migration.yaml +400 -0
  673. package/pro/squads/design/workflows/storybook-full-setup.yaml +280 -0
  674. package/pro/squads/etl-ops/HEADLINE.md +3 -0
  675. package/pro/squads/etl-ops/README.md +121 -0
  676. package/pro/squads/etl-ops/agents/etl-chief.md +440 -0
  677. package/pro/squads/etl-ops/agents/etl-extractor.md +352 -0
  678. package/pro/squads/etl-ops/agents/etl-transformer.md +409 -0
  679. package/pro/squads/etl-ops/checklists/.gitkeep +0 -0
  680. package/pro/squads/etl-ops/checklists/README.md +1 -0
  681. package/pro/squads/etl-ops/config.yaml +405 -0
  682. package/pro/squads/etl-ops/data/checkpoints.yaml +92 -0
  683. package/pro/squads/etl-ops/data/enriched-transcript.schema.json +107 -0
  684. package/pro/squads/etl-ops/data/infrastructure-map.yaml +27 -0
  685. package/pro/squads/etl-ops/data/output-contract.yaml +85 -0
  686. package/pro/squads/etl-ops/data/process.schema.json +293 -0
  687. package/pro/squads/etl-ops/data/quality-gates.yaml +40 -0
  688. package/pro/squads/etl-ops/data/routing-profiles.yaml +239 -0
  689. package/pro/squads/etl-ops/data/service-catalog.yaml +13 -0
  690. package/pro/squads/etl-ops/data/token-registry.yaml +58 -0
  691. package/pro/squads/etl-ops/docs/.gitkeep +0 -0
  692. package/pro/squads/etl-ops/scripts/bootstrap-etl-workspace.sh +42 -0
  693. package/pro/squads/etl-ops/scripts/etl-env-bootstrap.sh +876 -0
  694. package/pro/squads/etl-ops/scripts/validate-etl-essentials.sh +164 -0
  695. package/pro/squads/etl-ops/squad-io.yaml +61 -0
  696. package/pro/squads/etl-ops/tasks/compile.md +191 -0
  697. package/pro/squads/etl-ops/tasks/enrich.md +236 -0
  698. package/pro/squads/etl-ops/tasks/etl-env-bootstrap.md +140 -0
  699. package/pro/squads/etl-ops/tasks/extract-keyframes.md +318 -0
  700. package/pro/squads/etl-ops/tasks/extract-podcast.md +146 -0
  701. package/pro/squads/etl-ops/tasks/load-workspace-context.md +140 -0
  702. package/pro/squads/etl-ops/tasks/process.md +185 -0
  703. package/pro/squads/etl-ops/tasks/summarize-book.md +121 -0
  704. package/pro/squads/etl-ops/templates/cross-domain-handoff-tmpl.yaml +9 -0
  705. package/pro/squads/etl-ops/workflows/etl-pipeline.yaml +25 -0
  706. package/pro/squads/etl-ops/workflows/etl-thresholds.yaml +15 -0
  707. package/pro/squads/hormozi/HEADLINE.md +3 -0
  708. package/pro/squads/hormozi/README.md +313 -0
  709. package/pro/squads/hormozi/agents/hormozi-ads.md +1863 -0
  710. package/pro/squads/hormozi/agents/hormozi-advisor.md +1866 -0
  711. package/pro/squads/hormozi/agents/hormozi-audit.md +2301 -0
  712. package/pro/squads/hormozi/agents/hormozi-chief.md +1671 -0
  713. package/pro/squads/hormozi/agents/hormozi-closer.md +2631 -0
  714. package/pro/squads/hormozi/agents/hormozi-content.md +2148 -0
  715. package/pro/squads/hormozi/agents/hormozi-copy.md +2000 -0
  716. package/pro/squads/hormozi/agents/hormozi-hooks.md +1790 -0
  717. package/pro/squads/hormozi/agents/hormozi-launch.md +1734 -0
  718. package/pro/squads/hormozi/agents/hormozi-leads.md +1022 -0
  719. package/pro/squads/hormozi/agents/hormozi-models.md +1429 -0
  720. package/pro/squads/hormozi/agents/hormozi-offers.md +2228 -0
  721. package/pro/squads/hormozi/agents/hormozi-pricing.md +1784 -0
  722. package/pro/squads/hormozi/agents/hormozi-retention.md +1467 -0
  723. package/pro/squads/hormozi/agents/hormozi-scale.md +2312 -0
  724. package/pro/squads/hormozi/agents/hormozi-workshop.md +2715 -0
  725. package/pro/squads/hormozi/checklists/5-horsemen-checklist.md +188 -0
  726. package/pro/squads/hormozi/checklists/activation-point-checklist.md +156 -0
  727. package/pro/squads/hormozi/checklists/ad-angles-checklist.md +395 -0
  728. package/pro/squads/hormozi/checklists/affiliates-referrals-checklist.md +411 -0
  729. package/pro/squads/hormozi/checklists/antipattern-screening.md +319 -0
  730. package/pro/squads/hormozi/checklists/bonuses-checklist.md +282 -0
  731. package/pro/squads/hormozi/checklists/branding-checklist.md +547 -0
  732. package/pro/squads/hormozi/checklists/churn-diagnosis-checklist.md +148 -0
  733. package/pro/squads/hormozi/checklists/content-creation-checklist.md +598 -0
  734. package/pro/squads/hormozi/checklists/core-four-checklist.md +543 -0
  735. package/pro/squads/hormozi/checklists/customer-journey-checklist.md +207 -0
  736. package/pro/squads/hormozi/checklists/downsell-strategy-checklist.md +306 -0
  737. package/pro/squads/hormozi/checklists/email-campaign-checklist.md +484 -0
  738. package/pro/squads/hormozi/checklists/engagement-scoring-checklist.md +227 -0
  739. package/pro/squads/hormozi/checklists/exit-interview-checklist.md +206 -0
  740. package/pro/squads/hormozi/checklists/fast-cash-checklist.md +434 -0
  741. package/pro/squads/hormozi/checklists/goated-ads-checklist.md +558 -0
  742. package/pro/squads/hormozi/checklists/golden-ratios-veto.md +340 -0
  743. package/pro/squads/hormozi/checklists/guarantees-checklist.md +312 -0
  744. package/pro/squads/hormozi/checklists/hooks-checklist.md +621 -0
  745. package/pro/squads/hormozi/checklists/landing-page-checklist.md +514 -0
  746. package/pro/squads/hormozi/checklists/launch-checklist.md +1033 -0
  747. package/pro/squads/hormozi/checklists/lead-magnet-checklist.md +421 -0
  748. package/pro/squads/hormozi/checklists/lead-nurture-checklist.md +730 -0
  749. package/pro/squads/hormozi/checklists/ltv-checklist.md +953 -0
  750. package/pro/squads/hormozi/checklists/market-validation-veto.md +248 -0
  751. package/pro/squads/hormozi/checklists/marketing-machine-checklist.md +570 -0
  752. package/pro/squads/hormozi/checklists/money-model-checklist.md +226 -0
  753. package/pro/squads/hormozi/checklists/naming-framework-checklist.md +325 -0
  754. package/pro/squads/hormozi/checklists/offer-architecture-checklist.md +542 -0
  755. package/pro/squads/hormozi/checklists/onboarding-30-day-checklist.md +223 -0
  756. package/pro/squads/hormozi/checklists/price-raise-checklist.md +399 -0
  757. package/pro/squads/hormozi/checklists/pricing-checklist.md +228 -0
  758. package/pro/squads/hormozi/checklists/pricing-framework-checklist.md +627 -0
  759. package/pro/squads/hormozi/checklists/registration-page-checklist.md +429 -0
  760. package/pro/squads/hormozi/checklists/retention-checklist.md +977 -0
  761. package/pro/squads/hormozi/checklists/sales-page-checklist.md +682 -0
  762. package/pro/squads/hormozi/checklists/scarcity-urgency-checklist.md +423 -0
  763. package/pro/squads/hormozi/checklists/subscription-model-checklist.md +342 -0
  764. package/pro/squads/hormozi/checklists/upsell-page-checklist.md +374 -0
  765. package/pro/squads/hormozi/checklists/upsell-sequence-checklist.md +217 -0
  766. package/pro/squads/hormozi/checklists/upsell-strategy-checklist.md +424 -0
  767. package/pro/squads/hormozi/checklists/value-equation-checklist.md +387 -0
  768. package/pro/squads/hormozi/checklists/vsl-script-checklist.md +464 -0
  769. package/pro/squads/hormozi/checklists/workshop-launch-checklist.md +585 -0
  770. package/pro/squads/hormozi/config/veto-conditions.yaml +324 -0
  771. package/pro/squads/hormozi/config.yaml +617 -0
  772. package/pro/squads/hormozi/data/antipatterns-database.yaml +402 -0
  773. package/pro/squads/hormozi/data/hormozi-case-library.yaml +469 -0
  774. package/pro/squads/hormozi/data/hormozi-infrastructure-map.yaml +16 -0
  775. package/pro/squads/hormozi/data/hormozi-service-catalog.yaml +14 -0
  776. package/pro/squads/hormozi/data/minds/hormozi-ads_dna.yaml +75 -0
  777. package/pro/squads/hormozi/data/minds/hormozi-advisor_dna.yaml +112 -0
  778. package/pro/squads/hormozi/data/minds/hormozi-audit_dna.yaml +124 -0
  779. package/pro/squads/hormozi/data/minds/hormozi-closer_dna.yaml +109 -0
  780. package/pro/squads/hormozi/data/minds/hormozi-content_dna.yaml +112 -0
  781. package/pro/squads/hormozi/data/minds/hormozi-copy_dna.yaml +115 -0
  782. package/pro/squads/hormozi/data/minds/hormozi-hooks_dna.yaml +134 -0
  783. package/pro/squads/hormozi/data/minds/hormozi-launch_dna.yaml +122 -0
  784. package/pro/squads/hormozi/data/minds/hormozi-leads_dna.yaml +64 -0
  785. package/pro/squads/hormozi/data/minds/hormozi-models_dna.yaml +111 -0
  786. package/pro/squads/hormozi/data/minds/hormozi-offers_dna.yaml +100 -0
  787. package/pro/squads/hormozi/data/minds/hormozi-pricing_dna.yaml +129 -0
  788. package/pro/squads/hormozi/data/minds/hormozi-retention_dna.yaml +120 -0
  789. package/pro/squads/hormozi/data/minds/hormozi-scale_dna.yaml +112 -0
  790. package/pro/squads/hormozi/data/minds/hormozi-thinking-dna.yaml +421 -0
  791. package/pro/squads/hormozi/data/minds/hormozi-voice-dna.yaml +548 -0
  792. package/pro/squads/hormozi/data/minds/hormozi-workshop_dna.yaml +109 -0
  793. package/pro/squads/hormozi/data/quality-gates.yaml +76 -0
  794. package/pro/squads/hormozi/data/scaling-by-business-type.yaml +166 -0
  795. package/pro/squads/hormozi/data/source-index.yaml +215 -0
  796. package/pro/squads/hormozi/data/swipefiles/ads-swipefile.yaml +378 -0
  797. package/pro/squads/hormozi/data/swipefiles/blueprint-swipefile.yaml +1223 -0
  798. package/pro/squads/hormozi/data/swipefiles/branding-swipefile.yaml +142 -0
  799. package/pro/squads/hormozi/data/swipefiles/closing-swipefile.yaml +716 -0
  800. package/pro/squads/hormozi/data/swipefiles/content-swipefile.yaml +579 -0
  801. package/pro/squads/hormozi/data/swipefiles/copy-sales-swipefile.yaml +1085 -0
  802. package/pro/squads/hormozi/data/swipefiles/fast-cash-swipefile.yaml +190 -0
  803. package/pro/squads/hormozi/data/swipefiles/goated-ads-swipefile.yaml +770 -0
  804. package/pro/squads/hormozi/data/swipefiles/hooks-swipefile.yaml +1982 -0
  805. package/pro/squads/hormozi/data/swipefiles/lead-nurture-swipefile.yaml +191 -0
  806. package/pro/squads/hormozi/data/swipefiles/ltv-swipefile.yaml +216 -0
  807. package/pro/squads/hormozi/data/swipefiles/marketing-machine-swipefile.yaml +191 -0
  808. package/pro/squads/hormozi/data/swipefiles/naming-swipefile-brasil.yaml +596 -0
  809. package/pro/squads/hormozi/data/swipefiles/naming-swipefile-global.yaml +543 -0
  810. package/pro/squads/hormozi/data/swipefiles/price-raise-swipefile.yaml +213 -0
  811. package/pro/squads/hormozi/data/swipefiles/pricing-swipefile.yaml +203 -0
  812. package/pro/squads/hormozi/data/swipefiles/proof-swipefile.yaml +443 -0
  813. package/pro/squads/hormozi/data/swipefiles/retention-swipefile.yaml +245 -0
  814. package/pro/squads/hormozi/data/swipefiles/scaling-roadmap-swipefile.yaml +529 -0
  815. package/pro/squads/hormozi/data/swipefiles/workshop-launch-swipefile.yaml +912 -0
  816. package/pro/squads/hormozi/data/token-registry.yaml +89 -0
  817. package/pro/squads/hormozi/docs/MIGRATION-PLAN-AGENT-CONFORMITY.md +326 -0
  818. package/pro/squads/hormozi/docs/frameworks/100m-offers-framework.md +363 -0
  819. package/pro/squads/hormozi/docs/frameworks/attraction-offers-framework.md +720 -0
  820. package/pro/squads/hormozi/docs/frameworks/bonuses-framework.md +501 -0
  821. package/pro/squads/hormozi/docs/frameworks/core-four-framework.md +685 -0
  822. package/pro/squads/hormozi/docs/frameworks/goated-ads-framework.md +916 -0
  823. package/pro/squads/hormozi/docs/frameworks/guarantees-framework.md +709 -0
  824. package/pro/squads/hormozi/docs/frameworks/hooks-framework.md +1007 -0
  825. package/pro/squads/hormozi/docs/frameworks/lead-magnet-framework.md +485 -0
  826. package/pro/squads/hormozi/docs/frameworks/money-models-framework.md +891 -0
  827. package/pro/squads/hormozi/docs/frameworks/scarcity-framework.md +793 -0
  828. package/pro/squads/hormozi/docs/frameworks/urgency-framework.md +533 -0
  829. package/pro/squads/hormozi/docs/frameworks/value-equation-framework.md +428 -0
  830. package/pro/squads/hormozi/docs/frameworks/workshop-framework.md +289 -0
  831. package/pro/squads/hormozi/docs/sops/.parallel-execution-plan-batch2.md +344 -0
  832. package/pro/squads/hormozi/docs/sops/.parallel-execution-plan-batch3.md +331 -0
  833. package/pro/squads/hormozi/docs/sops/.parallel-execution-plan.md +558 -0
  834. package/pro/squads/hormozi/docs/sops/ad-angles-sop.md +1247 -0
  835. package/pro/squads/hormozi/docs/sops/ad-angles-squad-blueprint.yaml +739 -0
  836. package/pro/squads/hormozi/docs/sops/affiliates-referrals-sop.md +1105 -0
  837. package/pro/squads/hormozi/docs/sops/affiliates-referrals-squad-blueprint.yaml +1131 -0
  838. package/pro/squads/hormozi/docs/sops/bonuses-sop.md +1014 -0
  839. package/pro/squads/hormozi/docs/sops/bonuses-squad-blueprint.yaml +994 -0
  840. package/pro/squads/hormozi/docs/sops/branding-sop.md +870 -0
  841. package/pro/squads/hormozi/docs/sops/branding-squad-blueprint.yaml +1107 -0
  842. package/pro/squads/hormozi/docs/sops/content-creation-sop.md +877 -0
  843. package/pro/squads/hormozi/docs/sops/content-creation-squad-blueprint.yaml +1362 -0
  844. package/pro/squads/hormozi/docs/sops/core-four-sop.md +1231 -0
  845. package/pro/squads/hormozi/docs/sops/core-four-squad-blueprint.yaml +1205 -0
  846. package/pro/squads/hormozi/docs/sops/downsell-strategy-sop.md +832 -0
  847. package/pro/squads/hormozi/docs/sops/downsell-strategy-squad-blueprint.yaml +1230 -0
  848. package/pro/squads/hormozi/docs/sops/email-campaign-sop.md +1547 -0
  849. package/pro/squads/hormozi/docs/sops/email-campaign-squad-blueprint.yaml +1150 -0
  850. package/pro/squads/hormozi/docs/sops/fast-cash-sop.md +1224 -0
  851. package/pro/squads/hormozi/docs/sops/fast-cash-squad-blueprint.yaml +1128 -0
  852. package/pro/squads/hormozi/docs/sops/goated-ads-sop.md +671 -0
  853. package/pro/squads/hormozi/docs/sops/goated-ads-squad-blueprint.yaml +627 -0
  854. package/pro/squads/hormozi/docs/sops/guarantees-sop.md +1017 -0
  855. package/pro/squads/hormozi/docs/sops/guarantees-squad-blueprint.yaml +1252 -0
  856. package/pro/squads/hormozi/docs/sops/hooks-sop.md +958 -0
  857. package/pro/squads/hormozi/docs/sops/hooks-squad-blueprint.yaml +740 -0
  858. package/pro/squads/hormozi/docs/sops/landing-page-sop.md +1079 -0
  859. package/pro/squads/hormozi/docs/sops/landing-page-squad-blueprint.yaml +1373 -0
  860. package/pro/squads/hormozi/docs/sops/launch-sop.md +1055 -0
  861. package/pro/squads/hormozi/docs/sops/launch-squad-blueprint.yaml +1276 -0
  862. package/pro/squads/hormozi/docs/sops/lead-magnet-sop.md +807 -0
  863. package/pro/squads/hormozi/docs/sops/lead-magnet-squad-blueprint.yaml +1144 -0
  864. package/pro/squads/hormozi/docs/sops/lead-nurture-sop.md +867 -0
  865. package/pro/squads/hormozi/docs/sops/lead-nurture-squad-blueprint.yaml +1168 -0
  866. package/pro/squads/hormozi/docs/sops/ltv-sop.md +897 -0
  867. package/pro/squads/hormozi/docs/sops/ltv-squad-blueprint.yaml +1286 -0
  868. package/pro/squads/hormozi/docs/sops/marketing-machine-sop.md +1257 -0
  869. package/pro/squads/hormozi/docs/sops/marketing-machine-squad-blueprint.yaml +1433 -0
  870. package/pro/squads/hormozi/docs/sops/naming-framework-sop.md +1006 -0
  871. package/pro/squads/hormozi/docs/sops/naming-framework-squad-blueprint.yaml +543 -0
  872. package/pro/squads/hormozi/docs/sops/offer-architecture-sop.md +843 -0
  873. package/pro/squads/hormozi/docs/sops/offer-architecture-squad-blueprint.yaml +794 -0
  874. package/pro/squads/hormozi/docs/sops/price-raise-sop.md +983 -0
  875. package/pro/squads/hormozi/docs/sops/price-raise-squad-blueprint.yaml +919 -0
  876. package/pro/squads/hormozi/docs/sops/pricing-framework-sop.md +459 -0
  877. package/pro/squads/hormozi/docs/sops/pricing-squad-blueprint.yaml +517 -0
  878. package/pro/squads/hormozi/docs/sops/registration-page-sop.md +1111 -0
  879. package/pro/squads/hormozi/docs/sops/registration-page-squad-blueprint.yaml +762 -0
  880. package/pro/squads/hormozi/docs/sops/retention-sop.md +1065 -0
  881. package/pro/squads/hormozi/docs/sops/retention-squad-blueprint.yaml +1356 -0
  882. package/pro/squads/hormozi/docs/sops/sales-page-sop.md +924 -0
  883. package/pro/squads/hormozi/docs/sops/sales-page-squad-blueprint.yaml +1096 -0
  884. package/pro/squads/hormozi/docs/sops/scarcity-urgency-sop.md +1092 -0
  885. package/pro/squads/hormozi/docs/sops/scarcity-urgency-squad-blueprint.yaml +1206 -0
  886. package/pro/squads/hormozi/docs/sops/subscription-model-sop.md +1077 -0
  887. package/pro/squads/hormozi/docs/sops/subscription-model-squad-blueprint.yaml +1007 -0
  888. package/pro/squads/hormozi/docs/sops/upsell-page-sop.md +886 -0
  889. package/pro/squads/hormozi/docs/sops/upsell-page-squad-blueprint.yaml +1100 -0
  890. package/pro/squads/hormozi/docs/sops/upsell-strategy-sop.md +1265 -0
  891. package/pro/squads/hormozi/docs/sops/upsell-strategy-squad-blueprint.yaml +1245 -0
  892. package/pro/squads/hormozi/docs/sops/value-equation-sop.md +793 -0
  893. package/pro/squads/hormozi/docs/sops/value-equation-squad-blueprint.yaml +777 -0
  894. package/pro/squads/hormozi/docs/sops/vsl-script-sop.md +1145 -0
  895. package/pro/squads/hormozi/docs/sops/vsl-script-squad-blueprint.yaml +777 -0
  896. package/pro/squads/hormozi/docs/sops/workshop-launch-sop.md +1273 -0
  897. package/pro/squads/hormozi/docs/sops/workshop-launch-squad-blueprint.yaml +1292 -0
  898. package/pro/squads/hormozi/docs/validation-report-2026-02-10.md +79 -0
  899. package/pro/squads/hormozi/scripts/generate-hormozi-greeting.cjs +132 -0
  900. package/pro/squads/hormozi/scripts/load-context.cjs +139 -0
  901. package/pro/squads/hormozi/scripts/resolve-readiness.cjs +45 -0
  902. package/pro/squads/hormozi/scripts/runtime-paths.cjs +44 -0
  903. package/pro/squads/hormozi/scripts/set-active-context.cjs +104 -0
  904. package/pro/squads/hormozi/scripts/show-context.cjs +22 -0
  905. package/pro/squads/hormozi/scripts/validate-antipattern.py +287 -0
  906. package/pro/squads/hormozi/scripts/validate-handoff.py +166 -0
  907. package/pro/squads/hormozi/scripts/validate-mvn.py +198 -0
  908. package/pro/squads/hormozi/sops/pricing-squad-blueprint.yaml +1445 -0
  909. package/pro/squads/hormozi/squad-io.yaml +917 -0
  910. package/pro/squads/hormozi/tasks/architect-offer-stack.md +228 -0
  911. package/pro/squads/hormozi/tasks/build-marketing-machine.md +205 -0
  912. package/pro/squads/hormozi/tasks/build-scaling-team.md +271 -0
  913. package/pro/squads/hormozi/tasks/calculate-30-day-profit.md +418 -0
  914. package/pro/squads/hormozi/tasks/calculate-ppd.md +200 -0
  915. package/pro/squads/hormozi/tasks/create-ad-angles.md +182 -0
  916. package/pro/squads/hormozi/tasks/create-ad-campaign.md +399 -0
  917. package/pro/squads/hormozi/tasks/create-bonus-stack.md +287 -0
  918. package/pro/squads/hormozi/tasks/create-closer-script.md +240 -0
  919. package/pro/squads/hormozi/tasks/create-content-unit.md +176 -0
  920. package/pro/squads/hormozi/tasks/create-contingency-plan.md +426 -0
  921. package/pro/squads/hormozi/tasks/create-downsell-sequence.md +427 -0
  922. package/pro/squads/hormozi/tasks/create-email-sequence.md +196 -0
  923. package/pro/squads/hormozi/tasks/create-engagement-scoring.md +484 -0
  924. package/pro/squads/hormozi/tasks/create-exit-interview-system.md +382 -0
  925. package/pro/squads/hormozi/tasks/create-grand-slam-offer.md +499 -0
  926. package/pro/squads/hormozi/tasks/create-guarantee-stack.md +246 -0
  927. package/pro/squads/hormozi/tasks/create-hook-set.md +368 -0
  928. package/pro/squads/hormozi/tasks/create-landing-page.md +130 -0
  929. package/pro/squads/hormozi/tasks/create-launch-narrative.md +406 -0
  930. package/pro/squads/hormozi/tasks/create-launch-timeline.md +473 -0
  931. package/pro/squads/hormozi/tasks/create-lead-magnet.md +479 -0
  932. package/pro/squads/hormozi/tasks/create-nurture-sequence.md +207 -0
  933. package/pro/squads/hormozi/tasks/create-offer-name.md +165 -0
  934. package/pro/squads/hormozi/tasks/create-pricing-strategy.md +177 -0
  935. package/pro/squads/hormozi/tasks/create-registration-page.md +190 -0
  936. package/pro/squads/hormozi/tasks/create-sales-page.md +157 -0
  937. package/pro/squads/hormozi/tasks/create-upsell-page.md +138 -0
  938. package/pro/squads/hormozi/tasks/create-upsell-sequence.md +449 -0
  939. package/pro/squads/hormozi/tasks/create-vsl-script.md +175 -0
  940. package/pro/squads/hormozi/tasks/design-brand-identity.md +186 -0
  941. package/pro/squads/hormozi/tasks/design-continuity-offer.md +462 -0
  942. package/pro/squads/hormozi/tasks/design-core-four-strategy.md +733 -0
  943. package/pro/squads/hormozi/tasks/design-customer-journey.md +426 -0
  944. package/pro/squads/hormozi/tasks/design-launch-value-stack.md +379 -0
  945. package/pro/squads/hormozi/tasks/design-money-model.md +391 -0
  946. package/pro/squads/hormozi/tasks/design-onboarding-sequence.md +380 -0
  947. package/pro/squads/hormozi/tasks/design-scarcity-urgency.md +216 -0
  948. package/pro/squads/hormozi/tasks/design-subscription-model.md +162 -0
  949. package/pro/squads/hormozi/tasks/design-systems-automation.md +234 -0
  950. package/pro/squads/hormozi/tasks/design-workshop.md +167 -0
  951. package/pro/squads/hormozi/tasks/diagnose-business-stage.md +323 -0
  952. package/pro/squads/hormozi/tasks/diagnose-cfa-level.md +198 -0
  953. package/pro/squads/hormozi/tasks/diagnose-churn-rate.md +265 -0
  954. package/pro/squads/hormozi/tasks/diagnose-scaling-constraint.md +257 -0
  955. package/pro/squads/hormozi/tasks/diagnose-value-equation.md +431 -0
  956. package/pro/squads/hormozi/tasks/discover-activation-points.md +329 -0
  957. package/pro/squads/hormozi/tasks/execute-price-raise.md +221 -0
  958. package/pro/squads/hormozi/tasks/execute-rule-of-100.md +423 -0
  959. package/pro/squads/hormozi/tasks/generate-fast-cash.md +217 -0
  960. package/pro/squads/hormozi/tasks/implement-5-horsemen.md +430 -0
  961. package/pro/squads/hormozi/tasks/optimize-ltv-cac-ratio.md +505 -0
  962. package/pro/squads/hormozi/tasks/plan-launch-evento.md +395 -0
  963. package/pro/squads/hormozi/tasks/run-launch-post-mortem.md +461 -0
  964. package/pro/squads/hormozi/tasks/setup-affiliate-program.md +406 -0
  965. package/pro/squads/hormozi/tasks/setup-war-room.md +407 -0
  966. package/pro/squads/hormozi/tasks/validate-market-selection.md +331 -0
  967. package/pro/squads/hormozi/templates/capacity-planning-worksheet.yaml +151 -0
  968. package/pro/squads/hormozi/templates/grand-slam-offer-output.yaml +462 -0
  969. package/pro/squads/hormozi/templates/grand-slam-offer-tmpl.md +34 -0
  970. package/pro/squads/hormozi/templates/handoff-context-tmpl.yaml +215 -0
  971. package/pro/squads/hormozi/templates/money-model-tmpl.md +29 -0
  972. package/pro/squads/hormozi/templates/offer-analysis-tmpl.md +33 -0
  973. package/pro/squads/hormozi/templates/value-equation-scorecard.md +267 -0
  974. package/pro/squads/hormozi/workflows/wf-context-diagnosis.yaml +569 -0
  975. package/pro/squads/hormozi/workflows/wf-full-launch-sequence.yaml +995 -0
  976. package/pro/squads/hormozi/workflows/wf-grand-slam-offer.yaml +1138 -0
  977. package/pro/squads/hormozi/workflows/wf-growth-decision.yaml +135 -0
  978. package/pro/squads/hormozi/workflows/wf-lead-magnet-pipeline.yaml +1147 -0
  979. package/pro/squads/hormozi/workflows/wf-money-model-design.yaml +1168 -0
  980. package/pro/squads/hormozi/workflows/wf-opportunity-screening.yaml +511 -0
  981. package/pro/squads/hormozi/workflows/wf-paid-ads-campaign.yaml +1204 -0
  982. package/pro/squads/hormozi/workflows/wf-scaling-diagnostic.yaml +636 -0
  983. package/pro/squads/index.js +145 -0
  984. package/pro/squads/spy/HEADLINE.md +3 -0
  985. package/pro/squads/spy/README.md +115 -0
  986. package/pro/squads/spy/agents/bench-analyst.md +654 -0
  987. package/pro/squads/spy/agents/research-head.md +673 -0
  988. package/pro/squads/spy/agents/spy.md +498 -0
  989. package/pro/squads/spy/checklists/bench-quality-checklist.md +119 -0
  990. package/pro/squads/spy/checklists/content-creation-checklist.md +136 -0
  991. package/pro/squads/spy/config.yaml +587 -0
  992. package/pro/squads/spy/data/bench-data-sources.yaml +46 -0
  993. package/pro/squads/spy/data/bench-dimension-packs.yaml +182 -0
  994. package/pro/squads/spy/data/bench-output-formats.yaml +44 -0
  995. package/pro/squads/spy/data/bench-skeleton.md +184 -0
  996. package/pro/squads/spy/data/capability-tools.yaml +109 -0
  997. package/pro/squads/spy/data/knowledge-base.md +337 -0
  998. package/pro/squads/spy/data/quality-gates.yaml +48 -0
  999. package/pro/squads/spy/data/spy-infrastructure-map.yaml +27 -0
  1000. package/pro/squads/spy/data/spy-service-catalog.yaml +13 -0
  1001. package/pro/squads/spy/data/token-registry.yaml +57 -0
  1002. package/pro/squads/spy/data/viral-content-framework.md +304 -0
  1003. package/pro/squads/spy/docs/tool-discovery-report.md +110 -0
  1004. package/pro/squads/spy/docs/tool-integration-plan.md +47 -0
  1005. package/pro/squads/spy/scripts/prepare-benchmark-workspace.sh +14 -0
  1006. package/pro/squads/spy/scripts/publish-benchmark-report.sh +16 -0
  1007. package/pro/squads/spy/squad-io.yaml +24 -0
  1008. package/pro/squads/spy/tasks/bench-absorb.md +266 -0
  1009. package/pro/squads/spy/tasks/bench-battle-card.md +398 -0
  1010. package/pro/squads/spy/tasks/bench-codebase-recon.md +339 -0
  1011. package/pro/squads/spy/tasks/bench-company-intel.md +360 -0
  1012. package/pro/squads/spy/tasks/bench-deep-compare.md +573 -0
  1013. package/pro/squads/spy/tasks/bench-detect.md +349 -0
  1014. package/pro/squads/spy/tasks/bench-framework.md +105 -0
  1015. package/pro/squads/spy/tasks/bench-gap-analysis.md +168 -0
  1016. package/pro/squads/spy/tasks/bench-gap-company.md +48 -0
  1017. package/pro/squads/spy/tasks/bench-gap-llm.md +48 -0
  1018. package/pro/squads/spy/tasks/bench-gap-product.md +48 -0
  1019. package/pro/squads/spy/tasks/bench-gap-technology.md +48 -0
  1020. package/pro/squads/spy/tasks/bench-gap.md +78 -0
  1021. package/pro/squads/spy/tasks/bench-hooks.md +209 -0
  1022. package/pro/squads/spy/tasks/bench-inventory.md +98 -0
  1023. package/pro/squads/spy/tasks/bench-llm-eval.md +359 -0
  1024. package/pro/squads/spy/tasks/bench-matrix-codebase.md +50 -0
  1025. package/pro/squads/spy/tasks/bench-matrix-company.md +50 -0
  1026. package/pro/squads/spy/tasks/bench-matrix-llm.md +50 -0
  1027. package/pro/squads/spy/tasks/bench-matrix-product.md +50 -0
  1028. package/pro/squads/spy/tasks/bench-matrix-technology.md +50 -0
  1029. package/pro/squads/spy/tasks/bench-matrix.md +78 -0
  1030. package/pro/squads/spy/tasks/bench-migrate.md +207 -0
  1031. package/pro/squads/spy/tasks/bench-product-research.md +370 -0
  1032. package/pro/squads/spy/tasks/bench-quick-compare.md +287 -0
  1033. package/pro/squads/spy/tasks/bench-report-load-evidence.md +49 -0
  1034. package/pro/squads/spy/tasks/bench-report-publish.md +49 -0
  1035. package/pro/squads/spy/tasks/bench-report-synthesize-findings.md +48 -0
  1036. package/pro/squads/spy/tasks/bench-report.md +70 -0
  1037. package/pro/squads/spy/tasks/bench-score.md +406 -0
  1038. package/pro/squads/spy/tasks/bench-synergy.md +248 -0
  1039. package/pro/squads/spy/tasks/bench-tech-eval.md +417 -0
  1040. package/pro/squads/spy/tasks/bench-traceability.md +225 -0
  1041. package/pro/squads/spy/tasks/deep-research-collect.md +50 -0
  1042. package/pro/squads/spy/tasks/deep-research-comments.md +48 -0
  1043. package/pro/squads/spy/tasks/deep-research-patterns.md +49 -0
  1044. package/pro/squads/spy/tasks/deep-research-publish.md +49 -0
  1045. package/pro/squads/spy/tasks/deep-research-select.md +48 -0
  1046. package/pro/squads/spy/tasks/deep-research-synthesis.md +49 -0
  1047. package/pro/squads/spy/tasks/deep-research-transcribe.md +48 -0
  1048. package/pro/squads/spy/tasks/deep-research.md +116 -0
  1049. package/pro/squads/spy/tasks/quick-analysis.md +130 -0
  1050. package/pro/squads/spy/templates/bench-battle-card-tmpl.md +52 -0
  1051. package/pro/squads/spy/templates/bench-codebase-comparativo-tmpl.md +84 -0
  1052. package/pro/squads/spy/templates/bench-codebase-scores-tmpl.md +41 -0
  1053. package/pro/squads/spy/templates/bench-comparativo-tmpl.md +86 -0
  1054. package/pro/squads/spy/templates/bench-deep-compare-tmpl.md +117 -0
  1055. package/pro/squads/spy/templates/bench-gap-tmpl.md +194 -0
  1056. package/pro/squads/spy/templates/bench-matrix-tmpl.md +130 -0
  1057. package/pro/squads/spy/templates/bench-migration-tmpl.md +127 -0
  1058. package/pro/squads/spy/templates/bench-quadrant-tmpl.md +227 -0
  1059. package/pro/squads/spy/templates/bench-report-tmpl.md +167 -0
  1060. package/pro/squads/spy/templates/bench-scorecard-tmpl.md +113 -0
  1061. package/pro/squads/spy/templates/bench-scores-tmpl.md +43 -0
  1062. package/pro/squads/spy/templates/bench-synergy-tmpl.md +381 -0
  1063. package/pro/squads/spy/templates/cross-domain-handoff-tmpl.yaml +9 -0
  1064. package/pro/squads/spy/templates/player-analysis-tmpl.md +145 -0
  1065. package/pro/squads/spy/workflows/bench-comparison-pipeline.yaml +1193 -0
  1066. package/pro/squads/squad-creator/CHANGELOG.md +162 -0
  1067. package/pro/squads/squad-creator/HEADLINE.md +3 -0
  1068. package/pro/squads/squad-creator/README.md +1176 -0
  1069. package/pro/squads/squad-creator/agents/squad-chief.md +1449 -0
  1070. package/pro/squads/squad-creator/checklists/agent-quality-gate.md +433 -0
  1071. package/pro/squads/squad-creator/checklists/analysis-quality-checklist.md +70 -0
  1072. package/pro/squads/squad-creator/checklists/create-agent-checklist.md +239 -0
  1073. package/pro/squads/squad-creator/checklists/create-squad-checklist.md +326 -0
  1074. package/pro/squads/squad-creator/checklists/create-task-checklist.md +225 -0
  1075. package/pro/squads/squad-creator/checklists/create-workflow-checklist.md +243 -0
  1076. package/pro/squads/squad-creator/checklists/greeting-script-checklist.md +110 -0
  1077. package/pro/squads/squad-creator/checklists/install-skills-checklist.md +197 -0
  1078. package/pro/squads/squad-creator/checklists/pipeline-runner-checklist.md +135 -0
  1079. package/pro/squads/squad-creator/checklists/report-quality-checklist.md +49 -0
  1080. package/pro/squads/squad-creator/checklists/smoke-test-agent.md +313 -0
  1081. package/pro/squads/squad-creator/checklists/squad-checklist.md +1000 -0
  1082. package/pro/squads/squad-creator/checklists/squad-consistency-patterns.md +134 -0
  1083. package/pro/squads/squad-creator/checklists/squad-overview-checklist.md +381 -0
  1084. package/pro/squads/squad-creator/checklists/squad-structural-completeness.md +394 -0
  1085. package/pro/squads/squad-creator/checklists/task-anatomy-checklist.md +687 -0
  1086. package/pro/squads/squad-creator/checklists/upgrade-squad-checklist.md +222 -0
  1087. package/pro/squads/squad-creator/config/squad-config.yaml +202 -0
  1088. package/pro/squads/squad-creator/config/workflow-yaml-schema.yaml +323 -0
  1089. package/pro/squads/squad-creator/config.yaml +429 -0
  1090. package/pro/squads/squad-creator/data/base-core-contract.yaml +22 -0
  1091. package/pro/squads/squad-creator/data/baselines/ecosystem-baseline.yaml +88 -0
  1092. package/pro/squads/squad-creator/data/baselines/initial-radar.yaml +89 -0
  1093. package/pro/squads/squad-creator/data/best-practices.md +986 -0
  1094. package/pro/squads/squad-creator/data/cc-agent-schema-ref.yaml +405 -0
  1095. package/pro/squads/squad-creator/data/core-heuristics.md +510 -0
  1096. package/pro/squads/squad-creator/data/decision-heuristics-framework.md +695 -0
  1097. package/pro/squads/squad-creator/data/design-heuristics-diagnostic-systems.md +140 -0
  1098. package/pro/squads/squad-creator/data/executor-decision-tree.md +774 -0
  1099. package/pro/squads/squad-creator/data/executor-matrix-framework.md +441 -0
  1100. package/pro/squads/squad-creator/data/hybridops-patterns.md +1351 -0
  1101. package/pro/squads/squad-creator/data/journey-log-events.yaml +72 -0
  1102. package/pro/squads/squad-creator/data/kaizen-legacy/kaizen-infrastructure-map.yaml +16 -0
  1103. package/pro/squads/squad-creator/data/kpi-baseline.yaml +72 -0
  1104. package/pro/squads/squad-creator/data/pipeline-patterns.md +352 -0
  1105. package/pro/squads/squad-creator/data/process-token-map.yaml +225 -0
  1106. package/pro/squads/squad-creator/data/quality-dimensions-framework.md +405 -0
  1107. package/pro/squads/squad-creator/data/quality-gates.yaml +135 -0
  1108. package/pro/squads/squad-creator/data/radar/initial-radar.yaml +76 -0
  1109. package/pro/squads/squad-creator/data/recommendation-tracker.yaml +53 -0
  1110. package/pro/squads/squad-creator/data/reports/self-improve-2026-02-15.md +111 -0
  1111. package/pro/squads/squad-creator/data/reports/week-07-2026-02-15.md +210 -0
  1112. package/pro/squads/squad-creator/data/reports/week-09-2026-02-28.md +295 -0
  1113. package/pro/squads/squad-creator/data/reports/week-14-2026-04-04.md +234 -0
  1114. package/pro/squads/squad-creator/data/squad-analytics-guide.md +252 -0
  1115. package/pro/squads/squad-creator/data/squad-creator-infrastructure-map.yaml +36 -0
  1116. package/pro/squads/squad-creator/data/squad-creator-service-catalog.yaml +17 -0
  1117. package/pro/squads/squad-creator/data/squad-kb.md +987 -0
  1118. package/pro/squads/squad-creator/data/squad-registry.yaml +14 -0
  1119. package/pro/squads/squad-creator/data/squad-type-definitions.yaml +578 -0
  1120. package/pro/squads/squad-creator/data/tier-system-framework.md +475 -0
  1121. package/pro/squads/squad-creator/data/tool-discovery-sources.yaml +68 -0
  1122. package/pro/squads/squad-creator/docs/ADR-001-model-tier-qualification.md +344 -0
  1123. package/pro/squads/squad-creator/docs/AGENT-COLLABORATION.md +820 -0
  1124. package/pro/squads/squad-creator/docs/COMMANDS.md +895 -0
  1125. package/pro/squads/squad-creator/docs/CONCEPTS.md +979 -0
  1126. package/pro/squads/squad-creator/docs/FAQ.md +773 -0
  1127. package/pro/squads/squad-creator/docs/HITL-FLOW.md +406 -0
  1128. package/pro/squads/squad-creator/docs/MODEL-TIER-QUALIFICATION.md +337 -0
  1129. package/pro/squads/squad-creator/docs/PATTERN-LIBRARY.md +620 -0
  1130. package/pro/squads/squad-creator/docs/PEDRO-VALERIO-ARCHITECTURE.md +456 -0
  1131. package/pro/squads/squad-creator/docs/POR-ONDE-COMECAR.md +211 -0
  1132. package/pro/squads/squad-creator/docs/QUICK-START.md +205 -0
  1133. package/pro/squads/squad-creator/docs/TROUBLESHOOTING.md +412 -0
  1134. package/pro/squads/squad-creator/docs/TUTORIAL-COMPLETO.md +458 -0
  1135. package/pro/squads/squad-creator/docs/sop-extraction-process.md +675 -0
  1136. package/pro/squads/squad-creator/docs/squad-free-vs-open.md +596 -0
  1137. package/pro/squads/squad-creator/docs/task-optimization-framework.md +229 -0
  1138. package/pro/squads/squad-creator/package-lock.json +38 -0
  1139. package/pro/squads/squad-creator/package.json +27 -0
  1140. package/pro/squads/squad-creator/protocols/ai-first-governance.md +63 -0
  1141. package/pro/squads/squad-creator/requirements.txt +1 -0
  1142. package/pro/squads/squad-creator/rules/agent-naming-convention.md +58 -0
  1143. package/pro/squads/squad-creator/rules/recommendation-defensibility.md +161 -0
  1144. package/pro/squads/squad-creator/schemas/agent-persona.schema.json +64 -0
  1145. package/pro/squads/squad-creator/schemas/squad-config.schema.json +92 -0
  1146. package/pro/squads/squad-creator/schemas/validation-report.schema.json +158 -0
  1147. package/pro/squads/squad-creator/scripts/README.md +262 -0
  1148. package/pro/squads/squad-creator/scripts/checklist_validator.py +451 -0
  1149. package/pro/squads/squad-creator/scripts/coherence-validator.py +62 -0
  1150. package/pro/squads/squad-creator/scripts/dependency_check.py +341 -0
  1151. package/pro/squads/squad-creator/scripts/detect-environment-contract.cjs +583 -0
  1152. package/pro/squads/squad-creator/scripts/export-antigravity-workflows.cjs +199 -0
  1153. package/pro/squads/squad-creator/scripts/generate-squad-greeting.js +1150 -0
  1154. package/pro/squads/squad-creator/scripts/generate-squad-guide.js +596 -0
  1155. package/pro/squads/squad-creator/scripts/inventory.py +286 -0
  1156. package/pro/squads/squad-creator/scripts/kaizen/kaizen-trigger.sh +126 -0
  1157. package/pro/squads/squad-creator/scripts/lib/config-loader.js +151 -0
  1158. package/pro/squads/squad-creator/scripts/lib/doom-loop-detector.js +120 -0
  1159. package/pro/squads/squad-creator/scripts/lib/squad-runtime-paths.cjs +187 -0
  1160. package/pro/squads/squad-creator/scripts/lib/validate-runtime-state.cjs +271 -0
  1161. package/pro/squads/squad-creator/scripts/naming_validator.py +303 -0
  1162. package/pro/squads/squad-creator/scripts/on-specialist-complete.py +98 -0
  1163. package/pro/squads/squad-creator/scripts/refresh-registry.py +933 -0
  1164. package/pro/squads/squad-creator/scripts/rename-squad.sh +395 -0
  1165. package/pro/squads/squad-creator/scripts/scaffold-squad.cjs +317 -0
  1166. package/pro/squads/squad-creator/scripts/scoring.py +65 -0
  1167. package/pro/squads/squad-creator/scripts/security_scanner.py +378 -0
  1168. package/pro/squads/squad-creator/scripts/squad-analytics.py +810 -0
  1169. package/pro/squads/squad-creator/scripts/squad_utils.py +267 -0
  1170. package/pro/squads/squad-creator/scripts/sync-chief-codex-skill.js +242 -0
  1171. package/pro/squads/squad-creator/scripts/sync-ide-skills.py +705 -0
  1172. package/pro/squads/squad-creator/scripts/tests/__init__.py +1 -0
  1173. package/pro/squads/squad-creator/scripts/tests/test_adapters.py +73 -0
  1174. package/pro/squads/squad-creator/scripts/tests/test_assess_sources.sh +216 -0
  1175. package/pro/squads/squad-creator/scripts/tests/test_clone_review.sh +239 -0
  1176. package/pro/squads/squad-creator/scripts/tests/test_fidelity_score.sh +298 -0
  1177. package/pro/squads/squad-creator/scripts/tests/test_refresh_registry_contract.py +110 -0
  1178. package/pro/squads/squad-creator/scripts/tests/test_squad_analytics.py +332 -0
  1179. package/pro/squads/squad-creator/scripts/tests/test_validate_squad_contextual_lifecycle.py +111 -0
  1180. package/pro/squads/squad-creator/scripts/tests/test_validate_squad_tested_inference.py +102 -0
  1181. package/pro/squads/squad-creator/scripts/tests/test_validate_squad_yolo_warning.py +108 -0
  1182. package/pro/squads/squad-creator/scripts/update-aiox-sync-config.py +144 -0
  1183. package/pro/squads/squad-creator/scripts/update-claude-command-registry.py +171 -0
  1184. package/pro/squads/squad-creator/scripts/validate-all.sh +49 -0
  1185. package/pro/squads/squad-creator/scripts/validate-report.sh +98 -0
  1186. package/pro/squads/squad-creator/scripts/validate-squad-deep.sh +318 -0
  1187. package/pro/squads/squad-creator/scripts/validate-squad-quality.py +514 -0
  1188. package/pro/squads/squad-creator/scripts/validate-squad-structure.py +881 -0
  1189. package/pro/squads/squad-creator/scripts/validate-squad.sh +4340 -0
  1190. package/pro/squads/squad-creator/scripts/validate-tokens.sh +178 -0
  1191. package/pro/squads/squad-creator/scripts/verify-squad-completeness.sh +294 -0
  1192. package/pro/squads/squad-creator/scripts/yaml_validator.py +528 -0
  1193. package/pro/squads/squad-creator/squad-io.yaml +71 -0
  1194. package/pro/squads/squad-creator/tasks/audit-output-quality.md +135 -0
  1195. package/pro/squads/squad-creator/tasks/auto-heal-close.md +134 -0
  1196. package/pro/squads/squad-creator/tasks/auto-heal-resolve.md +128 -0
  1197. package/pro/squads/squad-creator/tasks/auto-heal.md +86 -0
  1198. package/pro/squads/squad-creator/tasks/auto-healing-gate.md +166 -0
  1199. package/pro/squads/squad-creator/tasks/cost-analysis.md +117 -0
  1200. package/pro/squads/squad-creator/tasks/create-agent-commands.md +197 -0
  1201. package/pro/squads/squad-creator/tasks/create-agent-generate.md +224 -0
  1202. package/pro/squads/squad-creator/tasks/create-agent-persona.md +207 -0
  1203. package/pro/squads/squad-creator/tasks/create-agent-publish.md +136 -0
  1204. package/pro/squads/squad-creator/tasks/create-agent-research.md +201 -0
  1205. package/pro/squads/squad-creator/tasks/create-agent-validate.md +213 -0
  1206. package/pro/squads/squad-creator/tasks/create-agent.md +145 -0
  1207. package/pro/squads/squad-creator/tasks/create-documentation.md +284 -0
  1208. package/pro/squads/squad-creator/tasks/create-greeting-script-discovery.md +59 -0
  1209. package/pro/squads/squad-creator/tasks/create-greeting-script-gap-map.md +59 -0
  1210. package/pro/squads/squad-creator/tasks/create-greeting-script-generate.md +60 -0
  1211. package/pro/squads/squad-creator/tasks/create-greeting-script-integrate.md +59 -0
  1212. package/pro/squads/squad-creator/tasks/create-greeting-script-validate.md +59 -0
  1213. package/pro/squads/squad-creator/tasks/create-greeting-script.md +130 -0
  1214. package/pro/squads/squad-creator/tasks/create-pipeline-design.md +143 -0
  1215. package/pro/squads/squad-creator/tasks/create-pipeline-persist.md +100 -0
  1216. package/pro/squads/squad-creator/tasks/create-pipeline-qualify.md +103 -0
  1217. package/pro/squads/squad-creator/tasks/create-pipeline-render.md +296 -0
  1218. package/pro/squads/squad-creator/tasks/create-pipeline-validate.md +121 -0
  1219. package/pro/squads/squad-creator/tasks/create-pipeline.md +171 -0
  1220. package/pro/squads/squad-creator/tasks/create-squad-build.md +383 -0
  1221. package/pro/squads/squad-creator/tasks/create-squad-design.md +349 -0
  1222. package/pro/squads/squad-creator/tasks/create-squad-discover.md +392 -0
  1223. package/pro/squads/squad-creator/tasks/create-squad-publish.md +225 -0
  1224. package/pro/squads/squad-creator/tasks/create-squad-validate.md +327 -0
  1225. package/pro/squads/squad-creator/tasks/create-squad.md +113 -0
  1226. package/pro/squads/squad-creator/tasks/create-task-anatomy.md +273 -0
  1227. package/pro/squads/squad-creator/tasks/create-task-classify.md +222 -0
  1228. package/pro/squads/squad-creator/tasks/create-task-executor.md +205 -0
  1229. package/pro/squads/squad-creator/tasks/create-task-generate.md +224 -0
  1230. package/pro/squads/squad-creator/tasks/create-task-register.md +192 -0
  1231. package/pro/squads/squad-creator/tasks/create-task-validate.md +232 -0
  1232. package/pro/squads/squad-creator/tasks/create-task.md +113 -0
  1233. package/pro/squads/squad-creator/tasks/create-template-elicitation.md +59 -0
  1234. package/pro/squads/squad-creator/tasks/create-template-identity.md +59 -0
  1235. package/pro/squads/squad-creator/tasks/create-template-register.md +58 -0
  1236. package/pro/squads/squad-creator/tasks/create-template-structure.md +59 -0
  1237. package/pro/squads/squad-creator/tasks/create-template-validate.md +59 -0
  1238. package/pro/squads/squad-creator/tasks/create-template.md +95 -0
  1239. package/pro/squads/squad-creator/tasks/create-workflow-classify.md +213 -0
  1240. package/pro/squads/squad-creator/tasks/create-workflow-design.md +494 -0
  1241. package/pro/squads/squad-creator/tasks/create-workflow-from-sop.md +301 -0
  1242. package/pro/squads/squad-creator/tasks/create-workflow-generate.md +262 -0
  1243. package/pro/squads/squad-creator/tasks/create-workflow.md +108 -0
  1244. package/pro/squads/squad-creator/tasks/detect-gaps.md +116 -0
  1245. package/pro/squads/squad-creator/tasks/detect-operational-mode-classify.md +112 -0
  1246. package/pro/squads/squad-creator/tasks/detect-operational-mode-infrastructure.md +104 -0
  1247. package/pro/squads/squad-creator/tasks/detect-operational-mode-outputs.md +94 -0
  1248. package/pro/squads/squad-creator/tasks/detect-operational-mode-systems.md +91 -0
  1249. package/pro/squads/squad-creator/tasks/detect-operational-mode-verbs.md +94 -0
  1250. package/pro/squads/squad-creator/tasks/detect-operational-mode.md +115 -0
  1251. package/pro/squads/squad-creator/tasks/detect-squad-context.md +120 -0
  1252. package/pro/squads/squad-creator/tasks/discover-tools-classify.md +191 -0
  1253. package/pro/squads/squad-creator/tasks/discover-tools-evaluate.md +173 -0
  1254. package/pro/squads/squad-creator/tasks/discover-tools-recommend.md +180 -0
  1255. package/pro/squads/squad-creator/tasks/discover-tools-report.md +184 -0
  1256. package/pro/squads/squad-creator/tasks/discover-tools-scan.md +188 -0
  1257. package/pro/squads/squad-creator/tasks/discover-tools.md +139 -0
  1258. package/pro/squads/squad-creator/tasks/generate-recommendations.md +162 -0
  1259. package/pro/squads/squad-creator/tasks/improve-workflow-from-report.md +127 -0
  1260. package/pro/squads/squad-creator/tasks/improve-workflow-report-apply-p1.md +59 -0
  1261. package/pro/squads/squad-creator/tasks/improve-workflow-report-apply-secondary.md +59 -0
  1262. package/pro/squads/squad-creator/tasks/improve-workflow-report-backup.md +59 -0
  1263. package/pro/squads/squad-creator/tasks/improve-workflow-report-ingest.md +59 -0
  1264. package/pro/squads/squad-creator/tasks/improve-workflow-report-target.md +59 -0
  1265. package/pro/squads/squad-creator/tasks/improve-workflow-report-validate-report.md +59 -0
  1266. package/pro/squads/squad-creator/tasks/install-skills-finalize.md +415 -0
  1267. package/pro/squads/squad-creator/tasks/install-skills-prepare.md +353 -0
  1268. package/pro/squads/squad-creator/tasks/install-skills-write.md +395 -0
  1269. package/pro/squads/squad-creator/tasks/install-skills.md +282 -0
  1270. package/pro/squads/squad-creator/tasks/next-squad-ranking.md +58 -0
  1271. package/pro/squads/squad-creator/tasks/next-squad-registry.md +58 -0
  1272. package/pro/squads/squad-creator/tasks/next-squad-report.md +59 -0
  1273. package/pro/squads/squad-creator/tasks/next-squad-scoring.md +59 -0
  1274. package/pro/squads/squad-creator/tasks/next-squad-signals.md +58 -0
  1275. package/pro/squads/squad-creator/tasks/next-squad.md +98 -0
  1276. package/pro/squads/squad-creator/tasks/operational-test-baseline.md +69 -0
  1277. package/pro/squads/squad-creator/tasks/operational-test-preflight.md +70 -0
  1278. package/pro/squads/squad-creator/tasks/operational-test-report.md +71 -0
  1279. package/pro/squads/squad-creator/tasks/operational-test-smoke.md +72 -0
  1280. package/pro/squads/squad-creator/tasks/operational-test-target.md +71 -0
  1281. package/pro/squads/squad-creator/tasks/operational-test.md +102 -0
  1282. package/pro/squads/squad-creator/tasks/performance-dashboard.md +118 -0
  1283. package/pro/squads/squad-creator/tasks/qa-after-creation.md +129 -0
  1284. package/pro/squads/squad-creator/tasks/qa-check-compatibility.md +191 -0
  1285. package/pro/squads/squad-creator/tasks/qa-check-completeness.md +218 -0
  1286. package/pro/squads/squad-creator/tasks/qa-check-references.md +172 -0
  1287. package/pro/squads/squad-creator/tasks/qa-check-schema.md +190 -0
  1288. package/pro/squads/squad-creator/tasks/qa-check-structure.md +176 -0
  1289. package/pro/squads/squad-creator/tasks/qa-generate-report.md +240 -0
  1290. package/pro/squads/squad-creator/tasks/qualify-provider-baseline.md +122 -0
  1291. package/pro/squads/squad-creator/tasks/qualify-provider-compare.md +159 -0
  1292. package/pro/squads/squad-creator/tasks/qualify-provider-preflight.md +143 -0
  1293. package/pro/squads/squad-creator/tasks/qualify-provider-ptbr.md +166 -0
  1294. package/pro/squads/squad-creator/tasks/qualify-provider-reliability.md +140 -0
  1295. package/pro/squads/squad-creator/tasks/qualify-provider-report.md +178 -0
  1296. package/pro/squads/squad-creator/tasks/reexecute-squad-phase.md +97 -0
  1297. package/pro/squads/squad-creator/tasks/refresh-registry.md +299 -0
  1298. package/pro/squads/squad-creator/tasks/rename-squad-map.md +59 -0
  1299. package/pro/squads/squad-creator/tasks/rename-squad-propagate.md +59 -0
  1300. package/pro/squads/squad-creator/tasks/rename-squad-structural.md +59 -0
  1301. package/pro/squads/squad-creator/tasks/rename-squad-validate.md +59 -0
  1302. package/pro/squads/squad-creator/tasks/rename-squad.md +118 -0
  1303. package/pro/squads/squad-creator/tasks/self-improve.md +107 -0
  1304. package/pro/squads/squad-creator/tasks/setup-runtime-handoff.md +74 -0
  1305. package/pro/squads/squad-creator/tasks/setup-runtime-persist.md +81 -0
  1306. package/pro/squads/squad-creator/tasks/setup-runtime-requirements.md +84 -0
  1307. package/pro/squads/squad-creator/tasks/setup-runtime-validate.md +82 -0
  1308. package/pro/squads/squad-creator/tasks/setup-runtime-wizard.md +84 -0
  1309. package/pro/squads/squad-creator/tasks/setup-runtime.md +103 -0
  1310. package/pro/squads/squad-creator/tasks/squad-analytics.md +276 -0
  1311. package/pro/squads/squad-creator/tasks/squad-overview-agents.md +110 -0
  1312. package/pro/squads/squad-creator/tasks/squad-overview-generate.md +102 -0
  1313. package/pro/squads/squad-creator/tasks/squad-overview-metadata.md +121 -0
  1314. package/pro/squads/squad-creator/tasks/squad-overview-minds.md +100 -0
  1315. package/pro/squads/squad-creator/tasks/squad-overview-structure.md +106 -0
  1316. package/pro/squads/squad-creator/tasks/squad-overview-write.md +103 -0
  1317. package/pro/squads/squad-creator/tasks/squad-overview.md +117 -0
  1318. package/pro/squads/squad-creator/tasks/sync-chief-codex-skill.md +73 -0
  1319. package/pro/squads/squad-creator/tasks/sync-ide-skills.md +240 -0
  1320. package/pro/squads/squad-creator/tasks/update-radar.md +151 -0
  1321. package/pro/squads/squad-creator/tasks/upgrade-squad-apply.md +187 -0
  1322. package/pro/squads/squad-creator/tasks/upgrade-squad-gap.md +203 -0
  1323. package/pro/squads/squad-creator/tasks/upgrade-squad-inventory.md +186 -0
  1324. package/pro/squads/squad-creator/tasks/upgrade-squad-plan.md +163 -0
  1325. package/pro/squads/squad-creator/tasks/upgrade-squad-verify.md +178 -0
  1326. package/pro/squads/squad-creator/tasks/upgrade-squad.md +138 -0
  1327. package/pro/squads/squad-creator/tasks/validate-final-artifacts.md +104 -0
  1328. package/pro/squads/squad-creator/tasks/validate-squad-classify.md +335 -0
  1329. package/pro/squads/squad-creator/tasks/validate-squad-deep-review.md +226 -0
  1330. package/pro/squads/squad-creator/tasks/validate-squad-preflight.md +189 -0
  1331. package/pro/squads/squad-creator/tasks/validate-squad-verdict.md +442 -0
  1332. package/pro/squads/squad-creator/tasks/validate-squad.md +117 -0
  1333. package/pro/squads/squad-creator/templates/agent-flow-doc-tmpl.md +512 -0
  1334. package/pro/squads/squad-creator/templates/agent-tmpl.md +703 -0
  1335. package/pro/squads/squad-creator/templates/auto-heal-task-tmpl.md +417 -0
  1336. package/pro/squads/squad-creator/templates/capability-map-tmpl.md +95 -0
  1337. package/pro/squads/squad-creator/templates/config-tmpl.yaml +534 -0
  1338. package/pro/squads/squad-creator/templates/cross-domain-handoff-tmpl.yaml +18 -0
  1339. package/pro/squads/squad-creator/templates/ecosystem-health-tmpl.md +19 -0
  1340. package/pro/squads/squad-creator/templates/gap-analysis-tmpl.md +13 -0
  1341. package/pro/squads/squad-creator/templates/greeting-script-tmpl.cjs +169 -0
  1342. package/pro/squads/squad-creator/templates/handoff-insumos-tmpl.yaml +112 -0
  1343. package/pro/squads/squad-creator/templates/journey-log-tmpl.yaml +93 -0
  1344. package/pro/squads/squad-creator/templates/operational-test-task-tmpl.md +514 -0
  1345. package/pro/squads/squad-creator/templates/orchestrator-tmpl.md +74 -0
  1346. package/pro/squads/squad-creator/templates/performance-dashboard-tmpl.md +77 -0
  1347. package/pro/squads/squad-creator/templates/pipeline-progress-tmpl.py +373 -0
  1348. package/pro/squads/squad-creator/templates/pipeline-prompt-tmpl.md +94 -0
  1349. package/pro/squads/squad-creator/templates/pipeline-runner-tmpl.py +444 -0
  1350. package/pro/squads/squad-creator/templates/pipeline-state-tmpl.py +413 -0
  1351. package/pro/squads/squad-creator/templates/pop-extractor-prompt.md +549 -0
  1352. package/pro/squads/squad-creator/templates/quality-dashboard-tmpl.md +286 -0
  1353. package/pro/squads/squad-creator/templates/quality-gate-tmpl.yaml +589 -0
  1354. package/pro/squads/squad-creator/templates/readme-tmpl.md +254 -0
  1355. package/pro/squads/squad-creator/templates/research-output-tmpl.md +625 -0
  1356. package/pro/squads/squad-creator/templates/research-prompt-tmpl.md +479 -0
  1357. package/pro/squads/squad-creator/templates/setup-runtime-task-tmpl.md +627 -0
  1358. package/pro/squads/squad-creator/templates/squad-mappings-tmpl.yaml +71 -0
  1359. package/pro/squads/squad-creator/templates/squad-prd-tmpl.md +488 -0
  1360. package/pro/squads/squad-creator/templates/squad-readme-tmpl.md +170 -0
  1361. package/pro/squads/squad-creator/templates/story-create-agent-tmpl.md +284 -0
  1362. package/pro/squads/squad-creator/templates/task-tmpl.md +533 -0
  1363. package/pro/squads/squad-creator/templates/tech-radar-tmpl.md +73 -0
  1364. package/pro/squads/squad-creator/templates/template-tmpl.yaml +227 -0
  1365. package/pro/squads/squad-creator/templates/weekly-digest-tmpl.md +11 -0
  1366. package/pro/squads/squad-creator/templates/weekly-report-tmpl.md +155 -0
  1367. package/pro/squads/squad-creator/templates/workflow-doc-tmpl.md +860 -0
  1368. package/pro/squads/squad-creator/templates/workflow-tmpl.yaml +486 -0
  1369. package/pro/squads/squad-creator/test-cases/an-assess-sources/TEST-REPORT-v2.1.md +351 -0
  1370. package/pro/squads/squad-creator/test-cases/an-assess-sources/formal-qualification-report.yaml +389 -0
  1371. package/pro/squads/squad-creator/test-cases/an-clone-review/opus-baseline.yaml +566 -0
  1372. package/pro/squads/squad-creator/test-cases/pv-axioma-assessment/opus-baseline.yaml +96 -0
  1373. package/pro/squads/squad-creator/test-cases/pv-modernization-score/opus-baseline.yaml +488 -0
  1374. package/pro/squads/squad-creator/test-cases/smoke-test-model-routing/test-case.yaml +100 -0
  1375. package/pro/squads/squad-creator/workflows/wf-auto-heal.yaml +33 -0
  1376. package/pro/squads/squad-creator/workflows/wf-create-agent.yaml +252 -0
  1377. package/pro/squads/squad-creator/workflows/wf-create-greeting-script.yaml +60 -0
  1378. package/pro/squads/squad-creator/workflows/wf-create-pipeline.yaml +60 -0
  1379. package/pro/squads/squad-creator/workflows/wf-create-squad.yaml +1916 -0
  1380. package/pro/squads/squad-creator/workflows/wf-create-task.yaml +172 -0
  1381. package/pro/squads/squad-creator/workflows/wf-create-template.yaml +60 -0
  1382. package/pro/squads/squad-creator/workflows/wf-create-workflow.yaml +138 -0
  1383. package/pro/squads/squad-creator/workflows/wf-cross-provider-qualification.yaml +769 -0
  1384. package/pro/squads/squad-creator/workflows/wf-detect-operational-mode.yaml +112 -0
  1385. package/pro/squads/squad-creator/workflows/wf-discover-tools.yaml +1695 -0
  1386. package/pro/squads/squad-creator/workflows/wf-ecosystem-analysis.yaml +338 -0
  1387. package/pro/squads/squad-creator/workflows/wf-improve-workflow-from-report.yaml +69 -0
  1388. package/pro/squads/squad-creator/workflows/wf-install-skills.yaml +52 -0
  1389. package/pro/squads/squad-creator/workflows/wf-next-squad.yaml +60 -0
  1390. package/pro/squads/squad-creator/workflows/wf-operational-test.yaml +86 -0
  1391. package/pro/squads/squad-creator/workflows/wf-qa-after-creation.yaml +339 -0
  1392. package/pro/squads/squad-creator/workflows/wf-rename-squad.yaml +51 -0
  1393. package/pro/squads/squad-creator/workflows/wf-self-improve.yaml +206 -0
  1394. package/pro/squads/squad-creator/workflows/wf-setup-runtime.yaml +86 -0
  1395. package/pro/squads/squad-creator/workflows/wf-squad-overview.yaml +100 -0
  1396. package/pro/squads/squad-creator/workflows/wf-sync-ide-skills.yaml +24 -0
  1397. package/pro/squads/squad-creator/workflows/wf-upgrade-squad.yaml +236 -0
  1398. package/pro/squads/squad-creator/workflows/wf-weekly-report.yaml +139 -0
  1399. package/pro/squads/squad-creator-pro/.state.json +32 -0
  1400. package/pro/squads/squad-creator-pro/ARCHITECTURE.md +37 -0
  1401. package/pro/squads/squad-creator-pro/CHANGELOG.md +275 -0
  1402. package/pro/squads/squad-creator-pro/README.md +1061 -0
  1403. package/pro/squads/squad-creator-pro/agents/ecosystem-analyst.md +989 -0
  1404. package/pro/squads/squad-creator-pro/agents/heuristic-ops.md +369 -0
  1405. package/pro/squads/squad-creator-pro/agents/oalanicolas.md +998 -0
  1406. package/pro/squads/squad-creator-pro/agents/pedro-valerio.md +1291 -0
  1407. package/pro/squads/squad-creator-pro/agents/squad-chief.md +1819 -0
  1408. package/pro/squads/squad-creator-pro/agents/thiago_finch.md +986 -0
  1409. package/pro/squads/squad-creator-pro/benchmarks/golden/hormozi-golden.yaml +382 -0
  1410. package/pro/squads/squad-creator-pro/benchmarks/scripts/run-benchmark.sh +363 -0
  1411. package/pro/squads/squad-creator-pro/checklists/.gitkeep +1 -0
  1412. package/pro/squads/squad-creator-pro/checklists/agent-depth-checklist.md +244 -0
  1413. package/pro/squads/squad-creator-pro/checklists/agent-quality-gate.md +434 -0
  1414. package/pro/squads/squad-creator-pro/checklists/create-squad-checklist.md +291 -0
  1415. package/pro/squads/squad-creator-pro/checklists/deep-research-quality.md +505 -0
  1416. package/pro/squads/squad-creator-pro/checklists/executor-matrix-checklist.md +260 -0
  1417. package/pro/squads/squad-creator-pro/checklists/mental-model-integration-checklist.md +95 -0
  1418. package/pro/squads/squad-creator-pro/checklists/mind-validation.md +373 -0
  1419. package/pro/squads/squad-creator-pro/checklists/pipeline-quality-checklist.md +84 -0
  1420. package/pro/squads/squad-creator-pro/checklists/quality-gate-checklist.md +385 -0
  1421. package/pro/squads/squad-creator-pro/checklists/session-heuristics-extraction.md +65 -0
  1422. package/pro/squads/squad-creator-pro/checklists/sop-validation.md +250 -0
  1423. package/pro/squads/squad-creator-pro/checklists/squad-checklist.md +1014 -0
  1424. package/pro/squads/squad-creator-pro/checklists/task-anatomy-checklist.md +626 -0
  1425. package/pro/squads/squad-creator-pro/config/.gitkeep +1 -0
  1426. package/pro/squads/squad-creator-pro/config/axioma-validator.yaml +371 -0
  1427. package/pro/squads/squad-creator-pro/config/heuristic-watcher-rubric.yaml +300 -0
  1428. package/pro/squads/squad-creator-pro/config/heuristics.yaml +937 -0
  1429. package/pro/squads/squad-creator-pro/config/model-routing.yaml +693 -0
  1430. package/pro/squads/squad-creator-pro/config/quality-gates.yaml +415 -0
  1431. package/pro/squads/squad-creator-pro/config/scoring-rubric.yaml +199 -0
  1432. package/pro/squads/squad-creator-pro/config/squad-config.yaml +165 -0
  1433. package/pro/squads/squad-creator-pro/config/task-anatomy.yaml +263 -0
  1434. package/pro/squads/squad-creator-pro/config/veto-conditions.yaml +455 -0
  1435. package/pro/squads/squad-creator-pro/config.yaml +455 -0
  1436. package/pro/squads/squad-creator-pro/data/.gitkeep +1 -0
  1437. package/pro/squads/squad-creator-pro/data/an-anchor-words.yaml +78 -0
  1438. package/pro/squads/squad-creator-pro/data/an-clone-anti-patterns.yaml +148 -0
  1439. package/pro/squads/squad-creator-pro/data/an-clone-validation.yaml +190 -0
  1440. package/pro/squads/squad-creator-pro/data/an-diagnostic-framework.yaml +164 -0
  1441. package/pro/squads/squad-creator-pro/data/an-output-examples.yaml +102 -0
  1442. package/pro/squads/squad-creator-pro/data/an-source-signals.yaml +98 -0
  1443. package/pro/squads/squad-creator-pro/data/an-source-tiers.yaml +119 -0
  1444. package/pro/squads/squad-creator-pro/data/best-practices.md +986 -0
  1445. package/pro/squads/squad-creator-pro/data/core-heuristics.md +510 -0
  1446. package/pro/squads/squad-creator-pro/data/decision-heuristics-framework.md +620 -0
  1447. package/pro/squads/squad-creator-pro/data/executor-matrix-framework.md +441 -0
  1448. package/pro/squads/squad-creator-pro/data/extraction-mentoria-processos-dec19.yaml +337 -0
  1449. package/pro/squads/squad-creator-pro/data/fusion-decision-points-analysis.md +397 -0
  1450. package/pro/squads/squad-creator-pro/data/fusion-dry-runs/traffic-masters-absorve-_traffic-2026-03-09.md +135 -0
  1451. package/pro/squads/squad-creator-pro/data/fusion-executor-analysis.md +677 -0
  1452. package/pro/squads/squad-creator-pro/data/hybridops-patterns.md +1351 -0
  1453. package/pro/squads/squad-creator-pro/data/internal-infrastructure-library.yaml +103 -0
  1454. package/pro/squads/squad-creator-pro/data/mental-model-task-matrix.yaml +692 -0
  1455. package/pro/squads/squad-creator-pro/data/pm-best-practices.md +504 -0
  1456. package/pro/squads/squad-creator-pro/data/pv-anchor-words.yaml +64 -0
  1457. package/pro/squads/squad-creator-pro/data/pv-authenticity-markers.yaml +200 -0
  1458. package/pro/squads/squad-creator-pro/data/pv-meta-axiomas.yaml +162 -0
  1459. package/pro/squads/squad-creator-pro/data/pv-output-examples.yaml +342 -0
  1460. package/pro/squads/squad-creator-pro/data/pv-workflow-validation.yaml +318 -0
  1461. package/pro/squads/squad-creator-pro/data/quality-dimensions-framework.md +405 -0
  1462. package/pro/squads/squad-creator-pro/data/quality-gate-coverage.yaml +169 -0
  1463. package/pro/squads/squad-creator-pro/data/squad-analytics-guide.md +252 -0
  1464. package/pro/squads/squad-creator-pro/data/squad-kb.md +987 -0
  1465. package/pro/squads/squad-creator-pro/data/squad-kpis.yaml +60 -0
  1466. package/pro/squads/squad-creator-pro/data/squad-registry.yaml +4900 -0
  1467. package/pro/squads/squad-creator-pro/data/tier-system-framework.md +475 -0
  1468. package/pro/squads/squad-creator-pro/data/token-registry.yaml +386 -0
  1469. package/pro/squads/squad-creator-pro/data/tool-evaluation-framework.md +847 -0
  1470. package/pro/squads/squad-creator-pro/data/tool-registry.yaml +816 -0
  1471. package/pro/squads/squad-creator-pro/docs/ARCHITECTURE-DIAGRAMS.md +1466 -0
  1472. package/pro/squads/squad-creator-pro/docs/COMMANDS.md +544 -0
  1473. package/pro/squads/squad-creator-pro/docs/CONCEPTS.md +584 -0
  1474. package/pro/squads/squad-creator-pro/docs/FAQ.md +731 -0
  1475. package/pro/squads/squad-creator-pro/docs/HITL-FLOW.md +255 -0
  1476. package/pro/squads/squad-creator-pro/docs/PATTERN-LIBRARY.md +341 -0
  1477. package/pro/squads/squad-creator-pro/docs/PEDRO-VALERIO-ARCHITECTURE.md +456 -0
  1478. package/pro/squads/squad-creator-pro/docs/POR-ONDE-COMECAR.md +210 -0
  1479. package/pro/squads/squad-creator-pro/docs/QUICK-START.md +205 -0
  1480. package/pro/squads/squad-creator-pro/docs/TOOL-RECOMMENDATIONS.md +381 -0
  1481. package/pro/squads/squad-creator-pro/docs/TUTORIAL-COMPLETO.md +458 -0
  1482. package/pro/squads/squad-creator-pro/docs/sop-extraction-process.md +674 -0
  1483. package/pro/squads/squad-creator-pro/docs/squad-chief-agent-flow.md +981 -0
  1484. package/pro/squads/squad-creator-pro/docs/squad-creation-pipeline-workflow.md +937 -0
  1485. package/pro/squads/squad-creator-pro/minds/oalanicolas/artifacts/HANDOFF_PROTOCOL.md +269 -0
  1486. package/pro/squads/squad-creator-pro/minds/oalanicolas/artifacts/SOURCE_CLASSIFICATION.md +258 -0
  1487. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_001.md +117 -0
  1488. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_002.md +115 -0
  1489. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_003.md +110 -0
  1490. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_004.md +109 -0
  1491. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_005.md +116 -0
  1492. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_006.md +183 -0
  1493. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_007.md +273 -0
  1494. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_008.md +204 -0
  1495. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_009.md +246 -0
  1496. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_010.md +265 -0
  1497. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_011.md +72 -0
  1498. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_012.md +59 -0
  1499. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_013.md +69 -0
  1500. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_014.md +69 -0
  1501. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_015.md +83 -0
  1502. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_016.md +67 -0
  1503. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_017.md +64 -0
  1504. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_018.md +79 -0
  1505. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_019.md +69 -0
  1506. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_020.md +67 -0
  1507. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_021.md +114 -0
  1508. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_022.md +75 -0
  1509. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_023.md +60 -0
  1510. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_024.md +66 -0
  1511. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_025.md +81 -0
  1512. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_026.md +82 -0
  1513. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_027.md +85 -0
  1514. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_028.md +74 -0
  1515. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_029.md +73 -0
  1516. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_030.md +80 -0
  1517. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_031.md +78 -0
  1518. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_032.md +81 -0
  1519. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_033.md +69 -0
  1520. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_034.md +119 -0
  1521. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_035.md +120 -0
  1522. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_036.md +134 -0
  1523. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_037.md +123 -0
  1524. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_038.md +85 -0
  1525. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_039.md +74 -0
  1526. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_040.md +130 -0
  1527. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_041.md +87 -0
  1528. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_042.md +89 -0
  1529. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_043.md +78 -0
  1530. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_044.md +97 -0
  1531. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_045.md +82 -0
  1532. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_046.md +83 -0
  1533. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_047.md +77 -0
  1534. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_048.md +83 -0
  1535. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_049.md +102 -0
  1536. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_050.md +85 -0
  1537. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_051.md +90 -0
  1538. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_052.md +84 -0
  1539. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_053.md +83 -0
  1540. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_054.md +96 -0
  1541. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_055.md +137 -0
  1542. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_056.md +114 -0
  1543. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_057.md +82 -0
  1544. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_058.md +79 -0
  1545. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_059.md +88 -0
  1546. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_060.md +78 -0
  1547. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_061.md +79 -0
  1548. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_062.md +99 -0
  1549. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_063.md +73 -0
  1550. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_064.md +106 -0
  1551. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_065.md +87 -0
  1552. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_066.md +66 -0
  1553. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_067.md +65 -0
  1554. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_068.md +70 -0
  1555. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_069.md +69 -0
  1556. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_070.md +67 -0
  1557. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_071.md +87 -0
  1558. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_072.md +84 -0
  1559. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_073.md +89 -0
  1560. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_074.md +60 -0
  1561. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_075.md +87 -0
  1562. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_076.md +107 -0
  1563. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_077.md +98 -0
  1564. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_078.md +66 -0
  1565. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_079.md +91 -0
  1566. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_080.md +59 -0
  1567. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_081.md +64 -0
  1568. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_082.md +71 -0
  1569. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_083.md +62 -0
  1570. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_084.md +66 -0
  1571. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_085.md +62 -0
  1572. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_086.md +69 -0
  1573. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_087.md +74 -0
  1574. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_088.md +89 -0
  1575. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_089.md +88 -0
  1576. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_090.md +74 -0
  1577. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_091.md +76 -0
  1578. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_092.md +61 -0
  1579. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_093.md +69 -0
  1580. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_094.md +58 -0
  1581. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_095.md +58 -0
  1582. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_096.md +65 -0
  1583. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_097.md +63 -0
  1584. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_098.md +98 -0
  1585. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_099.md +97 -0
  1586. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_100.md +100 -0
  1587. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_101.md +62 -0
  1588. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_102.md +65 -0
  1589. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_103.md +60 -0
  1590. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_104.md +60 -0
  1591. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_105.md +67 -0
  1592. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_106.md +64 -0
  1593. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_107.md +63 -0
  1594. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_108.md +60 -0
  1595. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_109.md +62 -0
  1596. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_110.md +58 -0
  1597. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_111.md +88 -0
  1598. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_112.md +60 -0
  1599. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_113.md +74 -0
  1600. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_114.md +55 -0
  1601. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_115.md +126 -0
  1602. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_116.md +76 -0
  1603. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_117.md +65 -0
  1604. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_118.md +72 -0
  1605. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_119.md +58 -0
  1606. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_120.md +77 -0
  1607. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_121.md +65 -0
  1608. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_122.md +57 -0
  1609. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_123.md +63 -0
  1610. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_124.md +69 -0
  1611. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_125.md +73 -0
  1612. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_126.md +81 -0
  1613. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_127.md +77 -0
  1614. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_128.md +76 -0
  1615. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_129.md +81 -0
  1616. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_130.md +88 -0
  1617. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_131.md +85 -0
  1618. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_132.md +81 -0
  1619. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/AN_KE_133.md +86 -0
  1620. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/decision-cards.yaml +1010 -0
  1621. package/pro/squads/squad-creator-pro/minds/oalanicolas/heuristics/heuristic-analytics.md +24 -0
  1622. package/pro/squads/squad-creator-pro/minds/pedro_valerio/artifacts/Assinatura_Linguistica.md +355 -0
  1623. package/pro/squads/squad-creator-pro/minds/pedro_valerio/artifacts/META_AXIOMAS.md +277 -0
  1624. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_BS_001.md +151 -0
  1625. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_041.md +80 -0
  1626. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_042.md +79 -0
  1627. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_043.md +81 -0
  1628. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_044.md +83 -0
  1629. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_045.md +82 -0
  1630. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_046.md +82 -0
  1631. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_047.md +81 -0
  1632. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_048.md +77 -0
  1633. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_049.md +81 -0
  1634. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_050.md +79 -0
  1635. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_051.md +81 -0
  1636. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_052.md +81 -0
  1637. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_053.md +79 -0
  1638. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_054.md +74 -0
  1639. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_055.md +78 -0
  1640. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_056.md +78 -0
  1641. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_057.md +78 -0
  1642. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_058.md +81 -0
  1643. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_059.md +81 -0
  1644. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_060.md +82 -0
  1645. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_061.md +74 -0
  1646. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_062.md +75 -0
  1647. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_063.md +80 -0
  1648. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_064.md +75 -0
  1649. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_065.md +74 -0
  1650. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_066.md +76 -0
  1651. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_067.md +75 -0
  1652. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_068.md +78 -0
  1653. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_069.md +78 -0
  1654. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_070.md +75 -0
  1655. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_071.md +77 -0
  1656. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_072.md +76 -0
  1657. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_073.md +82 -0
  1658. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_074.md +80 -0
  1659. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_075.md +85 -0
  1660. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_076.md +81 -0
  1661. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_077.md +77 -0
  1662. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_078.md +81 -0
  1663. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_079.md +77 -0
  1664. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_080.md +81 -0
  1665. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_081.md +76 -0
  1666. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_082.md +84 -0
  1667. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_083.md +78 -0
  1668. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_084.md +76 -0
  1669. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_085.md +83 -0
  1670. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_086.md +74 -0
  1671. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_087.md +87 -0
  1672. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_088.md +75 -0
  1673. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_089.md +79 -0
  1674. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_090.md +75 -0
  1675. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_091.md +77 -0
  1676. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_092.md +81 -0
  1677. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_093.md +74 -0
  1678. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_094.md +73 -0
  1679. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_095.md +84 -0
  1680. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_096.md +78 -0
  1681. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_097.md +79 -0
  1682. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_098.md +85 -0
  1683. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_099.md +82 -0
  1684. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_100.md +81 -0
  1685. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_KE_101.md +61 -0
  1686. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_001.md +197 -0
  1687. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_002.md +165 -0
  1688. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_003.md +164 -0
  1689. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_004.md +163 -0
  1690. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_005.md +161 -0
  1691. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_006.md +164 -0
  1692. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_007.md +162 -0
  1693. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_008.md +156 -0
  1694. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_009.md +157 -0
  1695. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_010.md +166 -0
  1696. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_011.md +161 -0
  1697. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_012.md +80 -0
  1698. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_013.md +66 -0
  1699. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_014.md +64 -0
  1700. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_015.md +61 -0
  1701. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_016.md +60 -0
  1702. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_017.md +66 -0
  1703. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_018.md +56 -0
  1704. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_019.md +63 -0
  1705. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_020.md +64 -0
  1706. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_021.md +71 -0
  1707. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_022.md +69 -0
  1708. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_023.md +56 -0
  1709. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_024.md +61 -0
  1710. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_025.md +60 -0
  1711. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_026.md +71 -0
  1712. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_027.md +65 -0
  1713. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_028.md +61 -0
  1714. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_029.md +62 -0
  1715. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_030.md +62 -0
  1716. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_031.md +62 -0
  1717. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_032.md +59 -0
  1718. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_033.md +64 -0
  1719. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_034.md +65 -0
  1720. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_035.md +62 -0
  1721. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_036.md +63 -0
  1722. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_037.md +60 -0
  1723. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_038.md +78 -0
  1724. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_039.md +58 -0
  1725. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_040.md +62 -0
  1726. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PA_041.md +61 -0
  1727. package/pro/squads/squad-creator-pro/minds/pedro_valerio/heuristics/PV_PM_001.md +198 -0
  1728. package/pro/squads/squad-creator-pro/package-lock.json +38 -0
  1729. package/pro/squads/squad-creator-pro/package.json +30 -0
  1730. package/pro/squads/squad-creator-pro/requirements.txt +1 -0
  1731. package/pro/squads/squad-creator-pro/schemas/agent-persona.schema.json +78 -0
  1732. package/pro/squads/squad-creator-pro/schemas/squad-config.schema.json +146 -0
  1733. package/pro/squads/squad-creator-pro/scripts/README.md +166 -0
  1734. package/pro/squads/squad-creator-pro/scripts/WAVE-LOOP.md +157 -0
  1735. package/pro/squads/squad-creator-pro/scripts/assess-sources.sh +443 -0
  1736. package/pro/squads/squad-creator-pro/scripts/checklist_validator.py +59 -0
  1737. package/pro/squads/squad-creator-pro/scripts/clone-review.sh +394 -0
  1738. package/pro/squads/squad-creator-pro/scripts/coherence-validator.py +836 -0
  1739. package/pro/squads/squad-creator-pro/scripts/create-agent-preflight.py +243 -0
  1740. package/pro/squads/squad-creator-pro/scripts/cross-mind-linker.py +143 -0
  1741. package/pro/squads/squad-creator-pro/scripts/cross-provider/compare-results.js +281 -0
  1742. package/pro/squads/squad-creator-pro/scripts/cross-provider/cross-provider-runner.js +462 -0
  1743. package/pro/squads/squad-creator-pro/scripts/cross_map.json +338 -0
  1744. package/pro/squads/squad-creator-pro/scripts/dependency_check.py +337 -0
  1745. package/pro/squads/squad-creator-pro/scripts/detect-environment-contract.cjs +37 -0
  1746. package/pro/squads/squad-creator-pro/scripts/export-antigravity-workflows.cjs +12 -0
  1747. package/pro/squads/squad-creator-pro/scripts/fidelity-score.sh +519 -0
  1748. package/pro/squads/squad-creator-pro/scripts/generate-heuristic-registry.py +83 -0
  1749. package/pro/squads/squad-creator-pro/scripts/generate-squad-greeting.js +426 -0
  1750. package/pro/squads/squad-creator-pro/scripts/generate-squad-guide.js +38 -0
  1751. package/pro/squads/squad-creator-pro/scripts/inventory.py +59 -0
  1752. package/pro/squads/squad-creator-pro/scripts/lib/config-loader.js +12 -0
  1753. package/pro/squads/squad-creator-pro/scripts/lib/squad-runtime-paths.cjs +14 -0
  1754. package/pro/squads/squad-creator-pro/scripts/lib/validate-runtime-state.cjs +14 -0
  1755. package/pro/squads/squad-creator-pro/scripts/load-business-sops.cjs +460 -0
  1756. package/pro/squads/squad-creator-pro/scripts/model-tier-validator.cjs +369 -0
  1757. package/pro/squads/squad-creator-pro/scripts/model-usage-logger.cjs +245 -0
  1758. package/pro/squads/squad-creator-pro/scripts/modernization-score.sh +308 -0
  1759. package/pro/squads/squad-creator-pro/scripts/naming_validator.py +59 -0
  1760. package/pro/squads/squad-creator-pro/scripts/on-specialist-complete.py +152 -0
  1761. package/pro/squads/squad-creator-pro/scripts/quality_gate.py +413 -0
  1762. package/pro/squads/squad-creator-pro/scripts/refresh-registry.py +425 -0
  1763. package/pro/squads/squad-creator-pro/scripts/rename-squad.sh +8 -0
  1764. package/pro/squads/squad-creator-pro/scripts/save-session-metrics.py +189 -0
  1765. package/pro/squads/squad-creator-pro/scripts/scaffold-squad.cjs +12 -0
  1766. package/pro/squads/squad-creator-pro/scripts/scoring.py +395 -0
  1767. package/pro/squads/squad-creator-pro/scripts/security_scanner.py +59 -0
  1768. package/pro/squads/squad-creator-pro/scripts/squad-analytics.py +59 -0
  1769. package/pro/squads/squad-creator-pro/scripts/squad-context-loader.cjs +232 -0
  1770. package/pro/squads/squad-creator-pro/scripts/squad-state-manager.cjs +707 -0
  1771. package/pro/squads/squad-creator-pro/scripts/squad-workflow-runner.cjs +884 -0
  1772. package/pro/squads/squad-creator-pro/scripts/squad_utils.py +59 -0
  1773. package/pro/squads/squad-creator-pro/scripts/sync-chief-codex-skill.js +242 -0
  1774. package/pro/squads/squad-creator-pro/scripts/sync-ide-skills.py +59 -0
  1775. package/pro/squads/squad-creator-pro/scripts/tests/__init__.py +1 -0
  1776. package/pro/squads/squad-creator-pro/scripts/tests/conftest.py +309 -0
  1777. package/pro/squads/squad-creator-pro/scripts/tests/run_bash_tests.sh +29 -0
  1778. package/pro/squads/squad-creator-pro/scripts/tests/test_assess_sources.sh +216 -0
  1779. package/pro/squads/squad-creator-pro/scripts/tests/test_checklist_validator.py +396 -0
  1780. package/pro/squads/squad-creator-pro/scripts/tests/test_clone_review.sh +239 -0
  1781. package/pro/squads/squad-creator-pro/scripts/tests/test_coherence_validator.py +212 -0
  1782. package/pro/squads/squad-creator-pro/scripts/tests/test_dependency_check.py +361 -0
  1783. package/pro/squads/squad-creator-pro/scripts/tests/test_fidelity_score.sh +298 -0
  1784. package/pro/squads/squad-creator-pro/scripts/tests/test_inventory.py +307 -0
  1785. package/pro/squads/squad-creator-pro/scripts/tests/test_load_business_sops.cjs +158 -0
  1786. package/pro/squads/squad-creator-pro/scripts/tests/test_modernization_score.sh +211 -0
  1787. package/pro/squads/squad-creator-pro/scripts/tests/test_naming_validator.py +373 -0
  1788. package/pro/squads/squad-creator-pro/scripts/tests/test_quality_gate.py +280 -0
  1789. package/pro/squads/squad-creator-pro/scripts/tests/test_refresh_registry.py +328 -0
  1790. package/pro/squads/squad-creator-pro/scripts/tests/test_scoring.py +366 -0
  1791. package/pro/squads/squad-creator-pro/scripts/tests/test_security_scanner.py +354 -0
  1792. package/pro/squads/squad-creator-pro/scripts/tests/test_squad_analytics.py +309 -0
  1793. package/pro/squads/squad-creator-pro/scripts/tests/test_squad_runtime_pipeline_e2e.cjs +267 -0
  1794. package/pro/squads/squad-creator-pro/scripts/tests/test_validate_clone.sh +252 -0
  1795. package/pro/squads/squad-creator-pro/scripts/tests/test_validate_squad_runtime_state_e2e.cjs +99 -0
  1796. package/pro/squads/squad-creator-pro/scripts/tests/test_wave_loop_runtime_e2e.cjs +216 -0
  1797. package/pro/squads/squad-creator-pro/scripts/tests/test_wave_loop_runtime_unit.cjs +336 -0
  1798. package/pro/squads/squad-creator-pro/scripts/tests/test_yaml_validator.py +412 -0
  1799. package/pro/squads/squad-creator-pro/scripts/validate-agent-output.py +115 -0
  1800. package/pro/squads/squad-creator-pro/scripts/validate-all.sh +49 -0
  1801. package/pro/squads/squad-creator-pro/scripts/validate-clone.sh +345 -0
  1802. package/pro/squads/squad-creator-pro/scripts/validate-squad-structure.py +59 -0
  1803. package/pro/squads/squad-creator-pro/scripts/validate-squad.sh +12 -0
  1804. package/pro/squads/squad-creator-pro/scripts/validate-workspace-contract.py +204 -0
  1805. package/pro/squads/squad-creator-pro/scripts/verify-squad-completeness.sh +8 -0
  1806. package/pro/squads/squad-creator-pro/scripts/wave-loop.cjs +911 -0
  1807. package/pro/squads/squad-creator-pro/scripts/wave-loop.sh +5 -0
  1808. package/pro/squads/squad-creator-pro/scripts/yaml_validator.py +59 -0
  1809. package/pro/squads/squad-creator-pro/skills/fidelity-score.md +245 -0
  1810. package/pro/squads/squad-creator-pro/skills/squad.md +294 -0
  1811. package/pro/squads/squad-creator-pro/squad-io.yaml +49 -0
  1812. package/pro/squads/squad-creator-pro/tasks/CHANGELOG.md +118 -0
  1813. package/pro/squads/squad-creator-pro/tasks/an-assess-sources-collect.md +197 -0
  1814. package/pro/squads/squad-creator-pro/tasks/an-assess-sources-score.md +471 -0
  1815. package/pro/squads/squad-creator-pro/tasks/an-assess-sources.md +177 -0
  1816. package/pro/squads/squad-creator-pro/tasks/an-clone-review-report.md +171 -0
  1817. package/pro/squads/squad-creator-pro/tasks/an-clone-review-source-trinity.md +227 -0
  1818. package/pro/squads/squad-creator-pro/tasks/an-clone-review-stages-fidelity.md +158 -0
  1819. package/pro/squads/squad-creator-pro/tasks/an-clone-review.md +173 -0
  1820. package/pro/squads/squad-creator-pro/tasks/an-compare-outputs-score.md +340 -0
  1821. package/pro/squads/squad-creator-pro/tasks/an-compare-outputs.md +154 -0
  1822. package/pro/squads/squad-creator-pro/tasks/an-design-clone-blueprint.md +51 -0
  1823. package/pro/squads/squad-creator-pro/tasks/an-design-clone-contexts.md +48 -0
  1824. package/pro/squads/squad-creator-pro/tasks/an-design-clone-memory.md +49 -0
  1825. package/pro/squads/squad-creator-pro/tasks/an-design-clone-stages.md +48 -0
  1826. package/pro/squads/squad-creator-pro/tasks/an-design-clone-trinity.md +49 -0
  1827. package/pro/squads/squad-creator-pro/tasks/an-design-clone.md +106 -0
  1828. package/pro/squads/squad-creator-pro/tasks/an-diagnose-clone-prescribe.md +147 -0
  1829. package/pro/squads/squad-creator-pro/tasks/an-diagnose-clone-symptoms.md +147 -0
  1830. package/pro/squads/squad-creator-pro/tasks/an-diagnose-clone-verify-trinity.md +200 -0
  1831. package/pro/squads/squad-creator-pro/tasks/an-diagnose-clone.md +132 -0
  1832. package/pro/squads/squad-creator-pro/tasks/an-extract-dna-layer-extraction.md +54 -0
  1833. package/pro/squads/squad-creator-pro/tasks/an-extract-dna-report.md +55 -0
  1834. package/pro/squads/squad-creator-pro/tasks/an-extract-dna-source-assessment.md +54 -0
  1835. package/pro/squads/squad-creator-pro/tasks/an-extract-dna-thinking-dna.md +54 -0
  1836. package/pro/squads/squad-creator-pro/tasks/an-extract-dna-voice-dna.md +54 -0
  1837. package/pro/squads/squad-creator-pro/tasks/an-extract-dna.md +106 -0
  1838. package/pro/squads/squad-creator-pro/tasks/an-extract-framework-analyze.md +178 -0
  1839. package/pro/squads/squad-creator-pro/tasks/an-extract-framework-integrate.md +239 -0
  1840. package/pro/squads/squad-creator-pro/tasks/an-extract-framework-trinity.md +206 -0
  1841. package/pro/squads/squad-creator-pro/tasks/an-extract-framework.md +144 -0
  1842. package/pro/squads/squad-creator-pro/tasks/an-extract-heuristics.md +560 -0
  1843. package/pro/squads/squad-creator-pro/tasks/an-extract-session-heuristics.md +633 -0
  1844. package/pro/squads/squad-creator-pro/tasks/an-fidelity-score-calculate.md +317 -0
  1845. package/pro/squads/squad-creator-pro/tasks/an-fidelity-score.md +132 -0
  1846. package/pro/squads/squad-creator-pro/tasks/an-validate-clone-hackability.md +346 -0
  1847. package/pro/squads/squad-creator-pro/tasks/an-validate-clone.md +107 -0
  1848. package/pro/squads/squad-creator-pro/tasks/auto-acquire-sources-consolidate.md +186 -0
  1849. package/pro/squads/squad-creator-pro/tasks/auto-acquire-sources-expand.md +173 -0
  1850. package/pro/squads/squad-creator-pro/tasks/auto-acquire-sources-search.md +200 -0
  1851. package/pro/squads/squad-creator-pro/tasks/auto-acquire-sources.md +167 -0
  1852. package/pro/squads/squad-creator-pro/tasks/batch-closeout.md +96 -0
  1853. package/pro/squads/squad-creator-pro/tasks/clone-mind-quality-dashboard.md +142 -0
  1854. package/pro/squads/squad-creator-pro/tasks/clone-mind-smoke-test.md +137 -0
  1855. package/pro/squads/squad-creator-pro/tasks/clone-mind-synthesis.md +147 -0
  1856. package/pro/squads/squad-creator-pro/tasks/collect-sources-classify.md +209 -0
  1857. package/pro/squads/squad-creator-pro/tasks/collect-sources-discover.md +244 -0
  1858. package/pro/squads/squad-creator-pro/tasks/collect-sources-gap-analysis.md +201 -0
  1859. package/pro/squads/squad-creator-pro/tasks/collect-sources-quality-gate.md +227 -0
  1860. package/pro/squads/squad-creator-pro/tasks/collect-sources-validate.md +234 -0
  1861. package/pro/squads/squad-creator-pro/tasks/collect-sources.md +178 -0
  1862. package/pro/squads/squad-creator-pro/tasks/create-agent.md +122 -0
  1863. package/pro/squads/squad-creator-pro/tasks/create-documentation.md +202 -0
  1864. package/pro/squads/squad-creator-pro/tasks/create-from-sop-brief.md +139 -0
  1865. package/pro/squads/squad-creator-pro/tasks/create-from-sop-load-classify.md +173 -0
  1866. package/pro/squads/squad-creator-pro/tasks/create-from-sop-map-workflow.md +172 -0
  1867. package/pro/squads/squad-creator-pro/tasks/create-from-sop.md +130 -0
  1868. package/pro/squads/squad-creator-pro/tasks/create-greeting-script.md +148 -0
  1869. package/pro/squads/squad-creator-pro/tasks/create-pipeline.md +107 -0
  1870. package/pro/squads/squad-creator-pro/tasks/create-squad.md +141 -0
  1871. package/pro/squads/squad-creator-pro/tasks/create-task.md +125 -0
  1872. package/pro/squads/squad-creator-pro/tasks/create-template.md +105 -0
  1873. package/pro/squads/squad-creator-pro/tasks/create-workflow.md +130 -0
  1874. package/pro/squads/squad-creator-pro/tasks/deconstruct-extract.md +221 -0
  1875. package/pro/squads/squad-creator-pro/tasks/deconstruct-synthesize.md +154 -0
  1876. package/pro/squads/squad-creator-pro/tasks/deconstruct.md +123 -0
  1877. package/pro/squads/squad-creator-pro/tasks/deep-research-check-local-knowledge.md +164 -0
  1878. package/pro/squads/squad-creator-pro/tasks/deep-research-execute.md +200 -0
  1879. package/pro/squads/squad-creator-pro/tasks/deep-research-generate-prompt.md +245 -0
  1880. package/pro/squads/squad-creator-pro/tasks/deep-research-pre-agent.md +168 -0
  1881. package/pro/squads/squad-creator-pro/tasks/deep-research-validate.md +192 -0
  1882. package/pro/squads/squad-creator-pro/tasks/delete-squad.md +104 -0
  1883. package/pro/squads/squad-creator-pro/tasks/discover-tools-execute.md +293 -0
  1884. package/pro/squads/squad-creator-pro/tasks/discover-tools.md +201 -0
  1885. package/pro/squads/squad-creator-pro/tasks/etd-assemble-output.md +183 -0
  1886. package/pro/squads/squad-creator-pro/tasks/etd-discovery.md +216 -0
  1887. package/pro/squads/squad-creator-pro/tasks/etd-extract-and-classify.md +250 -0
  1888. package/pro/squads/squad-creator-pro/tasks/etd-extract-heuristics.md +173 -0
  1889. package/pro/squads/squad-creator-pro/tasks/etd-handoff-triggers.md +166 -0
  1890. package/pro/squads/squad-creator-pro/tasks/etd-l4-card-generation.md +224 -0
  1891. package/pro/squads/squad-creator-pro/tasks/etd-objection-handling.md +167 -0
  1892. package/pro/squads/squad-creator-pro/tasks/etd-resolve-and-consolidate.md +158 -0
  1893. package/pro/squads/squad-creator-pro/tasks/evd-assemble-voice-dna.md +218 -0
  1894. package/pro/squads/squad-creator-pro/tasks/evd-collect-sources.md +176 -0
  1895. package/pro/squads/squad-creator-pro/tasks/evd-extract-dimensions.md +667 -0
  1896. package/pro/squads/squad-creator-pro/tasks/extract-expert-gold-context-load.md +180 -0
  1897. package/pro/squads/squad-creator-pro/tasks/extract-expert-gold-enrichment.md +181 -0
  1898. package/pro/squads/squad-creator-pro/tasks/extract-expert-gold-filter.md +192 -0
  1899. package/pro/squads/squad-creator-pro/tasks/extract-expert-gold-multi-lense.md +158 -0
  1900. package/pro/squads/squad-creator-pro/tasks/extract-expert-gold-validation.md +167 -0
  1901. package/pro/squads/squad-creator-pro/tasks/extract-expert-gold.md +185 -0
  1902. package/pro/squads/squad-creator-pro/tasks/extract-implicit-analyze.md +192 -0
  1903. package/pro/squads/squad-creator-pro/tasks/extract-implicit-prioritize.md +212 -0
  1904. package/pro/squads/squad-creator-pro/tasks/extract-implicit-scan.md +231 -0
  1905. package/pro/squads/squad-creator-pro/tasks/extract-implicit-synthesize.md +176 -0
  1906. package/pro/squads/squad-creator-pro/tasks/extract-implicit-validate.md +234 -0
  1907. package/pro/squads/squad-creator-pro/tasks/extract-implicit.md +172 -0
  1908. package/pro/squads/squad-creator-pro/tasks/extract-knowledge-checklist.md +220 -0
  1909. package/pro/squads/squad-creator-pro/tasks/extract-knowledge-framework.md +244 -0
  1910. package/pro/squads/squad-creator-pro/tasks/extract-knowledge-sop.md +244 -0
  1911. package/pro/squads/squad-creator-pro/tasks/extract-knowledge-source-validation.md +191 -0
  1912. package/pro/squads/squad-creator-pro/tasks/extract-knowledge-validation.md +224 -0
  1913. package/pro/squads/squad-creator-pro/tasks/extract-knowledge.md +193 -0
  1914. package/pro/squads/squad-creator-pro/tasks/extract-sop-analyze.md +180 -0
  1915. package/pro/squads/squad-creator-pro/tasks/extract-sop-assemble.md +184 -0
  1916. package/pro/squads/squad-creator-pro/tasks/extract-sop-extract.md +178 -0
  1917. package/pro/squads/squad-creator-pro/tasks/extract-sop-prepare.md +189 -0
  1918. package/pro/squads/squad-creator-pro/tasks/extract-sop.md +182 -0
  1919. package/pro/squads/squad-creator-pro/tasks/extract-thinking-dna.md +160 -0
  1920. package/pro/squads/squad-creator-pro/tasks/extract-voice-dna.md +170 -0
  1921. package/pro/squads/squad-creator-pro/tasks/find-0-8-classify.md +203 -0
  1922. package/pro/squads/squad-creator-pro/tasks/find-0-8-recommend.md +166 -0
  1923. package/pro/squads/squad-creator-pro/tasks/find-0-8.md +136 -0
  1924. package/pro/squads/squad-creator-pro/tasks/ics-audit.md +211 -0
  1925. package/pro/squads/squad-creator-pro/tasks/ics-domain-mapping.md +172 -0
  1926. package/pro/squads/squad-creator-pro/tasks/ics-generate-scripts.md +241 -0
  1927. package/pro/squads/squad-creator-pro/tasks/ics-integration.md +182 -0
  1928. package/pro/squads/squad-creator-pro/tasks/ics-validation.md +181 -0
  1929. package/pro/squads/squad-creator-pro/tasks/install-context-stack.md +228 -0
  1930. package/pro/squads/squad-creator-pro/tasks/install-skills.md +180 -0
  1931. package/pro/squads/squad-creator-pro/tasks/lookup-model.md +139 -0
  1932. package/pro/squads/squad-creator-pro/tasks/migrate-workflows-analyze.md +154 -0
  1933. package/pro/squads/squad-creator-pro/tasks/migrate-workflows-archive.md +162 -0
  1934. package/pro/squads/squad-creator-pro/tasks/migrate-workflows-convert.md +167 -0
  1935. package/pro/squads/squad-creator-pro/tasks/migrate-workflows-to-yaml.md +97 -0
  1936. package/pro/squads/squad-creator-pro/tasks/modernize-squad.md +338 -0
  1937. package/pro/squads/squad-creator-pro/tasks/next-action-discovery.md +191 -0
  1938. package/pro/squads/squad-creator-pro/tasks/next-action-gap-map.md +220 -0
  1939. package/pro/squads/squad-creator-pro/tasks/next-action-implement.md +183 -0
  1940. package/pro/squads/squad-creator-pro/tasks/next-action.md +149 -0
  1941. package/pro/squads/squad-creator-pro/tasks/optimize-binary-checkpoints.md +114 -0
  1942. package/pro/squads/squad-creator-pro/tasks/optimize-determinism-analysis.md +164 -0
  1943. package/pro/squads/squad-creator-pro/tasks/optimize-empirical-validation.md +138 -0
  1944. package/pro/squads/squad-creator-pro/tasks/optimize-gap-zero.md +111 -0
  1945. package/pro/squads/squad-creator-pro/tasks/optimize-gatekeeper-detection.md +113 -0
  1946. package/pro/squads/squad-creator-pro/tasks/optimize-hybrid-executor.md +117 -0
  1947. package/pro/squads/squad-creator-pro/tasks/optimize-post-economy.md +158 -0
  1948. package/pro/squads/squad-creator-pro/tasks/optimize-scope-clarification.md +110 -0
  1949. package/pro/squads/squad-creator-pro/tasks/optimize-workflow-apply.md +142 -0
  1950. package/pro/squads/squad-creator-pro/tasks/optimize-workflow-checkpoints.md +108 -0
  1951. package/pro/squads/squad-creator-pro/tasks/optimize-workflow-executor-distribution.md +107 -0
  1952. package/pro/squads/squad-creator-pro/tasks/optimize-workflow-gap-zero.md +113 -0
  1953. package/pro/squads/squad-creator-pro/tasks/optimize-workflow-parallelization.md +107 -0
  1954. package/pro/squads/squad-creator-pro/tasks/optimize-workflow-phase-necessity.md +139 -0
  1955. package/pro/squads/squad-creator-pro/tasks/optimize-workflow-report.md +146 -0
  1956. package/pro/squads/squad-creator-pro/tasks/optimize-workflow.md +139 -0
  1957. package/pro/squads/squad-creator-pro/tasks/optimize.md +172 -0
  1958. package/pro/squads/squad-creator-pro/tasks/parallel-discovery.md +111 -0
  1959. package/pro/squads/squad-creator-pro/tasks/plan-squad-architecture.md +34 -0
  1960. package/pro/squads/squad-creator-pro/tasks/plan-squad-challenge-reorder.md +34 -0
  1961. package/pro/squads/squad-creator-pro/tasks/plan-squad-contract.md +38 -0
  1962. package/pro/squads/squad-creator-pro/tasks/plan-squad-depth-calibration.md +34 -0
  1963. package/pro/squads/squad-creator-pro/tasks/plan-squad-domain-mapping.md +32 -0
  1964. package/pro/squads/squad-creator-pro/tasks/plan-squad-prd-assembly.md +37 -0
  1965. package/pro/squads/squad-creator-pro/tasks/plan-squad-roadmap.md +32 -0
  1966. package/pro/squads/squad-creator-pro/tasks/plan-squad.md +90 -0
  1967. package/pro/squads/squad-creator-pro/tasks/pv-audit-deep-dive.md +157 -0
  1968. package/pro/squads/squad-creator-pro/tasks/pv-audit-overview.md +157 -0
  1969. package/pro/squads/squad-creator-pro/tasks/pv-audit-sample.md +188 -0
  1970. package/pro/squads/squad-creator-pro/tasks/pv-audit.md +171 -0
  1971. package/pro/squads/squad-creator-pro/tasks/pv-axioma-assessment.md +172 -0
  1972. package/pro/squads/squad-creator-pro/tasks/pv-modernization-score.md +162 -0
  1973. package/pro/squads/squad-creator-pro/tasks/qa-after-creation.md +114 -0
  1974. package/pro/squads/squad-creator-pro/tasks/qualify-task.md +117 -0
  1975. package/pro/squads/squad-creator-pro/tasks/refresh-registry-enrich.md +171 -0
  1976. package/pro/squads/squad-creator-pro/tasks/refresh-registry-scan.md +173 -0
  1977. package/pro/squads/squad-creator-pro/tasks/refresh-registry-write.md +192 -0
  1978. package/pro/squads/squad-creator-pro/tasks/refresh-registry.md +163 -0
  1979. package/pro/squads/squad-creator-pro/tasks/smoke-test-model-routing-comparison.md +49 -0
  1980. package/pro/squads/squad-creator-pro/tasks/smoke-test-model-routing-execution.md +49 -0
  1981. package/pro/squads/squad-creator-pro/tasks/smoke-test-model-routing-lookup.md +49 -0
  1982. package/pro/squads/squad-creator-pro/tasks/smoke-test-model-routing-preflight.md +48 -0
  1983. package/pro/squads/squad-creator-pro/tasks/smoke-test-model-routing-report.md +51 -0
  1984. package/pro/squads/squad-creator-pro/tasks/smoke-test-model-routing.md +105 -0
  1985. package/pro/squads/squad-creator-pro/tasks/squad-analytics.md +192 -0
  1986. package/pro/squads/squad-creator-pro/tasks/squad-fusion-cleanup.md +93 -0
  1987. package/pro/squads/squad-creator-pro/tasks/squad-fusion-command-sync.md +97 -0
  1988. package/pro/squads/squad-creator-pro/tasks/squad-fusion-deduplication.md +234 -0
  1989. package/pro/squads/squad-creator-pro/tasks/squad-fusion-discovery.md +98 -0
  1990. package/pro/squads/squad-creator-pro/tasks/squad-fusion-execution.md +246 -0
  1991. package/pro/squads/squad-creator-pro/tasks/squad-fusion-initialize.md +247 -0
  1992. package/pro/squads/squad-creator-pro/tasks/squad-fusion-integration.md +95 -0
  1993. package/pro/squads/squad-creator-pro/tasks/squad-fusion-resolution.md +205 -0
  1994. package/pro/squads/squad-creator-pro/tasks/squad-fusion-scope.md +95 -0
  1995. package/pro/squads/squad-creator-pro/tasks/squad-fusion-structure.md +128 -0
  1996. package/pro/squads/squad-creator-pro/tasks/squad-fusion-validation.md +96 -0
  1997. package/pro/squads/squad-creator-pro/tasks/squad-fusion.md +148 -0
  1998. package/pro/squads/squad-creator-pro/tasks/sync-chief-codex-skill.md +107 -0
  1999. package/pro/squads/squad-creator-pro/tasks/sync-ide-skills.md +192 -0
  2000. package/pro/squads/squad-creator-pro/tasks/update-mind-apply.md +207 -0
  2001. package/pro/squads/squad-creator-pro/tasks/update-mind-extract-merge.md +257 -0
  2002. package/pro/squads/squad-creator-pro/tasks/update-mind-extract.md +201 -0
  2003. package/pro/squads/squad-creator-pro/tasks/update-mind-load-snapshot.md +177 -0
  2004. package/pro/squads/squad-creator-pro/tasks/update-mind-load.md +173 -0
  2005. package/pro/squads/squad-creator-pro/tasks/update-mind-merge.md +193 -0
  2006. package/pro/squads/squad-creator-pro/tasks/update-mind.md +177 -0
  2007. package/pro/squads/squad-creator-pro/tasks/upgrade-squad-apply.md +104 -0
  2008. package/pro/squads/squad-creator-pro/tasks/upgrade-squad-gap.md +110 -0
  2009. package/pro/squads/squad-creator-pro/tasks/upgrade-squad-inventory.md +110 -0
  2010. package/pro/squads/squad-creator-pro/tasks/upgrade-squad-plan.md +107 -0
  2011. package/pro/squads/squad-creator-pro/tasks/upgrade-squad-qualitative.md +104 -0
  2012. package/pro/squads/squad-creator-pro/tasks/upgrade-squad-verify.md +106 -0
  2013. package/pro/squads/squad-creator-pro/tasks/upgrade-squad.md +155 -0
  2014. package/pro/squads/squad-creator-pro/tasks/validate-extraction-adversarial.md +182 -0
  2015. package/pro/squads/squad-creator-pro/tasks/validate-extraction-checklist.md +155 -0
  2016. package/pro/squads/squad-creator-pro/tasks/validate-extraction-gate.md +175 -0
  2017. package/pro/squads/squad-creator-pro/tasks/validate-extraction.md +151 -0
  2018. package/pro/squads/squad-creator-pro/tasks/validate-squad-contextual.md +120 -0
  2019. package/pro/squads/squad-creator-pro/tasks/validate-squad-cross-references.md +122 -0
  2020. package/pro/squads/squad-creator-pro/tasks/validate-squad-deterministic.md +261 -0
  2021. package/pro/squads/squad-creator-pro/tasks/validate-squad-quality.md +138 -0
  2022. package/pro/squads/squad-creator-pro/tasks/validate-squad-verdict.md +183 -0
  2023. package/pro/squads/squad-creator-pro/tasks/validate-squad.md +135 -0
  2024. package/pro/squads/squad-creator-pro/tasks/workspace-integration-hardening.md +187 -0
  2025. package/pro/squads/squad-creator-pro/templates/.gitkeep +1 -0
  2026. package/pro/squads/squad-creator-pro/templates/agent-flow-doc-tmpl.md +512 -0
  2027. package/pro/squads/squad-creator-pro/templates/agent-tmpl.md +697 -0
  2028. package/pro/squads/squad-creator-pro/templates/config-tmpl.yaml +434 -0
  2029. package/pro/squads/squad-creator-pro/templates/cross-domain-handoff-tmpl.yaml +17 -0
  2030. package/pro/squads/squad-creator-pro/templates/journey-log-tmpl.yaml +75 -0
  2031. package/pro/squads/squad-creator-pro/templates/pop-extractor-prompt.md +549 -0
  2032. package/pro/squads/squad-creator-pro/templates/quality-gate-tmpl.yaml +589 -0
  2033. package/pro/squads/squad-creator-pro/templates/readme-tmpl.md +231 -0
  2034. package/pro/squads/squad-creator-pro/templates/report-tmpl.yaml +14 -0
  2035. package/pro/squads/squad-creator-pro/templates/research-output-tmpl.md +625 -0
  2036. package/pro/squads/squad-creator-pro/templates/research-prompt-tmpl.md +479 -0
  2037. package/pro/squads/squad-creator-pro/templates/session-heuristic-tmpl.md +100 -0
  2038. package/pro/squads/squad-creator-pro/templates/squad-prd-deep-tmpl.md +434 -0
  2039. package/pro/squads/squad-creator-pro/templates/squad-prd-tmpl.md +464 -0
  2040. package/pro/squads/squad-creator-pro/templates/story-create-agent-tmpl.md +284 -0
  2041. package/pro/squads/squad-creator-pro/templates/task-tmpl.md +461 -0
  2042. package/pro/squads/squad-creator-pro/templates/template-tmpl.yaml +227 -0
  2043. package/pro/squads/squad-creator-pro/templates/workflow-doc-tmpl.md +860 -0
  2044. package/pro/squads/squad-creator-pro/templates/workflow-tmpl.yaml +394 -0
  2045. package/pro/squads/squad-creator-pro/test-cases/BATCH-PROGRESS.md +268 -0
  2046. package/pro/squads/squad-creator-pro/test-cases/QUALIFICATION-DASHBOARD.yaml +13 -0
  2047. package/pro/squads/squad-creator-pro/test-cases/_template.yaml +147 -0
  2048. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/ASSESSMENT-SUMMARY.md +275 -0
  2049. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/ASSESSMENT_SUMMARY.md +140 -0
  2050. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/CHECKPOINT_MATRIX.md +202 -0
  2051. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/EXECUTION-REPORT.md +413 -0
  2052. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/EXECUTION_NOTES.md +358 -0
  2053. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/README-v2.2.2.md +299 -0
  2054. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/README.md +320 -0
  2055. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/TEST-REPORT-v2.1.md +351 -0
  2056. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/VERIFICATION-CHECKLIST.txt +247 -0
  2057. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/formal-qualification-report.yaml +389 -0
  2058. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/opus-baseline.yaml +517 -0
  2059. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/qualification-report.yaml +213 -0
  2060. package/pro/squads/squad-creator-pro/test-cases/an-assess-sources/test-case.yaml +69 -0
  2061. package/pro/squads/squad-creator-pro/test-cases/an-clone-review/opus-baseline.yaml +566 -0
  2062. package/pro/squads/squad-creator-pro/test-cases/an-clone-review/qualification-report.yaml +82 -0
  2063. package/pro/squads/squad-creator-pro/test-cases/an-design-clone/test-case.yaml +102 -0
  2064. package/pro/squads/squad-creator-pro/test-cases/an-extract-dna/test-case.yaml +105 -0
  2065. package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/opus-baseline.yaml +266 -0
  2066. package/pro/squads/squad-creator-pro/test-cases/an-fidelity-score/qualification-report.yaml +94 -0
  2067. package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/opus-baseline.yaml +470 -0
  2068. package/pro/squads/squad-creator-pro/test-cases/an-validate-clone/qualification-report.yaml +106 -0
  2069. package/pro/squads/squad-creator-pro/test-cases/collect-sources/test-case.yaml +105 -0
  2070. package/pro/squads/squad-creator-pro/test-cases/create-task/test-case.yaml +104 -0
  2071. package/pro/squads/squad-creator-pro/test-cases/cross-provider/DASHBOARD.yaml +11 -0
  2072. package/pro/squads/squad-creator-pro/test-cases/pv-audit/test-case.yaml +106 -0
  2073. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/opus-baseline.yaml +96 -0
  2074. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/sonnet-output.yaml +30 -0
  2075. package/pro/squads/squad-creator-pro/test-cases/pv-axioma-assessment/test-case.yaml +129 -0
  2076. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/comparison-round-1.yaml +242 -0
  2077. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/opus-baseline.yaml +488 -0
  2078. package/pro/squads/squad-creator-pro/test-cases/pv-modernization-score/qualification-report.yaml +74 -0
  2079. package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/opus-baseline.yaml +603 -0
  2080. package/pro/squads/squad-creator-pro/test-cases/qa-after-creation/qualification-report.yaml +97 -0
  2081. package/pro/squads/squad-creator-pro/test-cases/smoke-test-model-routing/test-case.yaml +100 -0
  2082. package/pro/squads/squad-creator-pro/test-cases/upgrade-squad/test-case.yaml +106 -0
  2083. package/pro/squads/squad-creator-pro/test-cases/validate-squad/comparison-round-1.yaml +223 -0
  2084. package/pro/squads/squad-creator-pro/test-cases/validate-squad/opus-baseline.yaml +529 -0
  2085. package/pro/squads/squad-creator-pro/test-cases/validate-squad/opus-round-3-v4-task.yaml +132 -0
  2086. package/pro/squads/squad-creator-pro/test-cases/validate-squad/qualification-report.yaml +104 -0
  2087. package/pro/squads/squad-creator-pro/test-cases/wf-clone-mind/opus-baseline.yaml +112 -0
  2088. package/pro/squads/squad-creator-pro/utils/.gitkeep +1 -0
  2089. package/pro/squads/squad-creator-pro/workflows/.gitkeep +1 -0
  2090. package/pro/squads/squad-creator-pro/workflows/create-squad.yaml +300 -0
  2091. package/pro/squads/squad-creator-pro/workflows/modules/module-discovery.yaml +16 -0
  2092. package/pro/squads/squad-creator-pro/workflows/modules/module-integration.yaml +34 -0
  2093. package/pro/squads/squad-creator-pro/workflows/modules/module-quality-gates.yaml +20 -0
  2094. package/pro/squads/squad-creator-pro/workflows/validate-squad.yaml +552 -0
  2095. package/pro/squads/squad-creator-pro/workflows/wf-assess-sources.yaml +62 -0
  2096. package/pro/squads/squad-creator-pro/workflows/wf-auto-acquire-sources.yaml +520 -0
  2097. package/pro/squads/squad-creator-pro/workflows/wf-brownfield-upgrade-squad.yaml +142 -0
  2098. package/pro/squads/squad-creator-pro/workflows/wf-clone-mind.yaml +607 -0
  2099. package/pro/squads/squad-creator-pro/workflows/wf-clone-review.yaml +111 -0
  2100. package/pro/squads/squad-creator-pro/workflows/wf-collect-sources.yaml +104 -0
  2101. package/pro/squads/squad-creator-pro/workflows/wf-compare-outputs.yaml +77 -0
  2102. package/pro/squads/squad-creator-pro/workflows/wf-context-aware-create-squad.yaml +177 -0
  2103. package/pro/squads/squad-creator-pro/workflows/wf-create-from-sop.yaml +117 -0
  2104. package/pro/squads/squad-creator-pro/workflows/wf-create-pipeline.yaml +19 -0
  2105. package/pro/squads/squad-creator-pro/workflows/wf-create-squad.yaml +1763 -0
  2106. package/pro/squads/squad-creator-pro/workflows/wf-create-task.yaml +22 -0
  2107. package/pro/squads/squad-creator-pro/workflows/wf-create-template.yaml +17 -0
  2108. package/pro/squads/squad-creator-pro/workflows/wf-create-workflow.yaml +22 -0
  2109. package/pro/squads/squad-creator-pro/workflows/wf-cross-provider-qualification.yaml +660 -0
  2110. package/pro/squads/squad-creator-pro/workflows/wf-deconstruct.yaml +92 -0
  2111. package/pro/squads/squad-creator-pro/workflows/wf-deep-research.yaml +148 -0
  2112. package/pro/squads/squad-creator-pro/workflows/wf-design-clone.yaml +103 -0
  2113. package/pro/squads/squad-creator-pro/workflows/wf-diagnose-clone.yaml +115 -0
  2114. package/pro/squads/squad-creator-pro/workflows/wf-discover-tools.yaml +1711 -0
  2115. package/pro/squads/squad-creator-pro/workflows/wf-extract-dna.yaml +103 -0
  2116. package/pro/squads/squad-creator-pro/workflows/wf-extract-expert-gold.yaml +101 -0
  2117. package/pro/squads/squad-creator-pro/workflows/wf-extract-framework.yaml +108 -0
  2118. package/pro/squads/squad-creator-pro/workflows/wf-extract-implicit.yaml +101 -0
  2119. package/pro/squads/squad-creator-pro/workflows/wf-extract-knowledge.yaml +162 -0
  2120. package/pro/squads/squad-creator-pro/workflows/wf-extract-sop.yaml +143 -0
  2121. package/pro/squads/squad-creator-pro/workflows/wf-extract-thinking-dna.yaml +210 -0
  2122. package/pro/squads/squad-creator-pro/workflows/wf-extract-voice-dna.yaml +76 -0
  2123. package/pro/squads/squad-creator-pro/workflows/wf-extraction-pipeline.yaml +475 -0
  2124. package/pro/squads/squad-creator-pro/workflows/wf-fidelity-score.yaml +88 -0
  2125. package/pro/squads/squad-creator-pro/workflows/wf-find-08.yaml +71 -0
  2126. package/pro/squads/squad-creator-pro/workflows/wf-install-context-stack.yaml +88 -0
  2127. package/pro/squads/squad-creator-pro/workflows/wf-install-workspace-context.yaml +764 -0
  2128. package/pro/squads/squad-creator-pro/workflows/wf-migrate-workflows.yaml +103 -0
  2129. package/pro/squads/squad-creator-pro/workflows/wf-mind-research-loop.yaml +671 -0
  2130. package/pro/squads/squad-creator-pro/workflows/wf-model-tier-qualification.yaml +737 -0
  2131. package/pro/squads/squad-creator-pro/workflows/wf-modernize-squad.yaml +178 -0
  2132. package/pro/squads/squad-creator-pro/workflows/wf-next-action.yaml +113 -0
  2133. package/pro/squads/squad-creator-pro/workflows/wf-optimize-squad.yaml +761 -0
  2134. package/pro/squads/squad-creator-pro/workflows/wf-optimize-workflow.yaml +122 -0
  2135. package/pro/squads/squad-creator-pro/workflows/wf-optimize-yolo.yaml +595 -0
  2136. package/pro/squads/squad-creator-pro/workflows/wf-plan-squad.yaml +255 -0
  2137. package/pro/squads/squad-creator-pro/workflows/wf-pv-audit.yaml +115 -0
  2138. package/pro/squads/squad-creator-pro/workflows/wf-refresh-registry.yaml +110 -0
  2139. package/pro/squads/squad-creator-pro/workflows/wf-research-then-create-agent.yaml +858 -0
  2140. package/pro/squads/squad-creator-pro/workflows/wf-smoke-test-model-routing.yaml +103 -0
  2141. package/pro/squads/squad-creator-pro/workflows/wf-squad-fusion.yaml +1691 -0
  2142. package/pro/squads/squad-creator-pro/workflows/wf-update-mind.yaml +148 -0
  2143. package/pro/squads/squad-creator-pro/workflows/wf-upgrade-squad.yaml +141 -0
  2144. package/pro/squads/squad-creator-pro/workflows/wf-validate-clone.yaml +120 -0
  2145. package/pro/squads/squad-creator-pro/workflows/wf-validate-extraction.yaml +111 -0
  2146. package/pro/squads/squad-creator-pro/workflows/wf-workspace-integration-hardening.yaml +119 -0
  2147. package/pro/squads/storytelling/CHANGELOG.md +30 -0
  2148. package/pro/squads/storytelling/HEADLINE.md +3 -0
  2149. package/pro/squads/storytelling/README.md +137 -0
  2150. package/pro/squads/storytelling/agents/blake-snyder.md +451 -0
  2151. package/pro/squads/storytelling/agents/dan-harmon.md +742 -0
  2152. package/pro/squads/storytelling/agents/donald-miller.md +662 -0
  2153. package/pro/squads/storytelling/agents/joseph-campbell.md +625 -0
  2154. package/pro/squads/storytelling/agents/keith-johnstone.md +467 -0
  2155. package/pro/squads/storytelling/agents/kindra-hall.md +953 -0
  2156. package/pro/squads/storytelling/agents/marshall-ganz.md +473 -0
  2157. package/pro/squads/storytelling/agents/matthew-dicks.md +526 -0
  2158. package/pro/squads/storytelling/agents/nancy-duarte.md +528 -0
  2159. package/pro/squads/storytelling/agents/oren-klaff.md +785 -0
  2160. package/pro/squads/storytelling/agents/park-howell.md +807 -0
  2161. package/pro/squads/storytelling/agents/shawn-coyne.md +540 -0
  2162. package/pro/squads/storytelling/agents/story-chief.md +409 -0
  2163. package/pro/squads/storytelling/checklists/story-quality-checklist.md +100 -0
  2164. package/pro/squads/storytelling/config.yaml +248 -0
  2165. package/pro/squads/storytelling/data/story-mappings.yaml +200 -0
  2166. package/pro/squads/storytelling/docs/.gitkeep +0 -0
  2167. package/pro/squads/storytelling/research/blake-snyder-save-the-cat-research.md +958 -0
  2168. package/pro/squads/storytelling/research/donald-miller-storybrand-research.md +1205 -0
  2169. package/pro/squads/storytelling/research/joseph-campbell-heros-journey-research.md +1170 -0
  2170. package/pro/squads/storytelling/research/keith-johnstone-improv-spontaneity-research.md +574 -0
  2171. package/pro/squads/storytelling/research/marshall-ganz-public-narrative-research.md +658 -0
  2172. package/pro/squads/storytelling/research/nancy-duarte-sparkline-research.md +892 -0
  2173. package/pro/squads/storytelling/research/shawn-coyne-story-grid-research.md +760 -0
  2174. package/pro/squads/storytelling/scripts/generate-story-greeting.cjs +140 -0
  2175. package/pro/squads/storytelling/scripts/load-context.cjs +141 -0
  2176. package/pro/squads/storytelling/scripts/resolve-readiness.cjs +45 -0
  2177. package/pro/squads/storytelling/scripts/runtime-paths.cjs +44 -0
  2178. package/pro/squads/storytelling/scripts/set-active-context.cjs +108 -0
  2179. package/pro/squads/storytelling/scripts/show-context.cjs +22 -0
  2180. package/pro/squads/storytelling/squad-io.yaml +573 -0
  2181. package/pro/squads/storytelling/tasks/apply-abt.md +856 -0
  2182. package/pro/squads/storytelling/tasks/apply-beat-sheet.md +1245 -0
  2183. package/pro/squads/storytelling/tasks/apply-heros-journey.md +1100 -0
  2184. package/pro/squads/storytelling/tasks/apply-save-the-cat.md +1075 -0
  2185. package/pro/squads/storytelling/tasks/apply-story-circle.md +1116 -0
  2186. package/pro/squads/storytelling/tasks/craft-personal-story.md +1004 -0
  2187. package/pro/squads/storytelling/tasks/craft-public-narrative.md +1193 -0
  2188. package/pro/squads/storytelling/tasks/craft-ted-talk.md +773 -0
  2189. package/pro/squads/storytelling/tasks/create-brandscript.md +1376 -0
  2190. package/pro/squads/storytelling/tasks/create-business-story.md +1472 -0
  2191. package/pro/squads/storytelling/tasks/create-pitch.md +1128 -0
  2192. package/pro/squads/storytelling/tasks/diagnose-story-grid.md +979 -0
  2193. package/pro/squads/storytelling/tasks/improvise-story.md +772 -0
  2194. package/pro/squads/storytelling/templates/narrative-output-tmpl.md +44 -0
  2195. package/pro/squads/storytelling/workflows/story-creation.yaml +80 -0
  2196. package/scripts/validate-package-completeness.js +4 -1
@@ -0,0 +1,1910 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Tests for session-usage-report.py
4
+
5
+ Covers: short_name, analyze_session, get_recent_commits, discover_inventory,
6
+ generate_report, format_markdown, normalize_skill dedup, CLI args.
7
+ """
8
+ import json
9
+ import os
10
+ import sys
11
+ import tempfile
12
+ import shutil
13
+ import subprocess
14
+ import textwrap
15
+ import unittest
16
+ from collections import Counter, defaultdict
17
+ from unittest.mock import patch
18
+
19
+ # ── Import the module under test ──────────────────────────────────────────────
20
+ sys.path.insert(0, os.path.dirname(__file__))
21
+ import importlib
22
+ report_mod = importlib.import_module("session-usage-report")
23
+
24
+ short_name = report_mod.short_name
25
+ find_projects = report_mod.find_projects
26
+ analyze_session = report_mod.analyze_session
27
+ get_recent_commits = report_mod.get_recent_commits
28
+ discover_inventory = report_mod.discover_inventory
29
+ generate_report = report_mod.generate_report
30
+ format_markdown = report_mod.format_markdown
31
+ format_html = report_mod.format_html
32
+ get_session_meta = report_mod.get_session_meta
33
+ generate_workflow_recommendations = report_mod.generate_workflow_recommendations
34
+ build_transcript_excerpt = report_mod.build_transcript_excerpt
35
+ BUILTIN_COMMANDS = report_mod.BUILTIN_COMMANDS
36
+
37
+
38
+ class TestShortName(unittest.TestCase):
39
+ """Unit tests for short_name()."""
40
+
41
+ def test_oalanicolas_prefix(self):
42
+ path = "/tmp/.claude/projects/-Users-userA-Code-sinkra-hub"
43
+ self.assertEqual(short_name(path), "sinkra-hub")
44
+
45
+ def test_alan_prefix(self):
46
+ path = "/tmp/.claude/projects/-Users-userB-Code-aiox-stage"
47
+ self.assertEqual(short_name(path), "aiox-stage")
48
+
49
+ def test_generic_users_prefix(self):
50
+ path = "/tmp/.claude/projects/-Users-john"
51
+ self.assertEqual(short_name(path), "john")
52
+
53
+ def test_no_known_prefix(self):
54
+ path = "/tmp/.claude/projects/my-project"
55
+ self.assertEqual(short_name(path), "my-project")
56
+
57
+ def test_nested_code_path(self):
58
+ path = "/x/-Users-userA-Code-aiox-stage-apps-site-aiox"
59
+ self.assertEqual(short_name(path), "aiox-stage-apps-site-aiox")
60
+
61
+
62
+ class TestAnalyzeSession(unittest.TestCase):
63
+ """Unit tests for analyze_session()."""
64
+
65
+ def setUp(self):
66
+ self.tmpdir = tempfile.mkdtemp()
67
+
68
+ def tearDown(self):
69
+ shutil.rmtree(self.tmpdir)
70
+
71
+ def _write_jsonl(self, filename, entries):
72
+ path = os.path.join(self.tmpdir, filename)
73
+ with open(path, "w") as f:
74
+ for entry in entries:
75
+ f.write(json.dumps(entry) + "\n")
76
+ return path
77
+
78
+ def test_empty_file(self):
79
+ path = self._write_jsonl("empty.jsonl", [])
80
+ result = analyze_session(path)
81
+ self.assertFalse(result["is_headless"])
82
+ self.assertEqual(len(result["slash_commands"]), 0)
83
+ self.assertEqual(len(result["skill_invocations"]), 0)
84
+ self.assertEqual(len(result["agent_types"]), 0)
85
+ self.assertEqual(len(result["shell_runners"]), 0)
86
+
87
+ def test_detects_headless_session(self):
88
+ entries = [
89
+ {"message": {"type": "queue-operation", "content": "run"}}
90
+ ]
91
+ path = self._write_jsonl("headless.jsonl", entries)
92
+ result = analyze_session(path)
93
+ self.assertTrue(result["is_headless"])
94
+
95
+ def test_interactive_session_default(self):
96
+ entries = [
97
+ {"message": {"content": "hello world"}}
98
+ ]
99
+ path = self._write_jsonl("interactive.jsonl", entries)
100
+ result = analyze_session(path)
101
+ self.assertFalse(result["is_headless"])
102
+
103
+ def test_extracts_slash_commands(self):
104
+ entries = [
105
+ {"message": {"content": "invoking <command-name>commit</command-name> now"}},
106
+ {"message": {"content": "<command-name>sinkra-squad:sinkra-chief</command-name>"}},
107
+ ]
108
+ path = self._write_jsonl("commands.jsonl", entries)
109
+ result = analyze_session(path)
110
+ self.assertEqual(result["slash_commands"]["/commit"], 1)
111
+ self.assertEqual(result["slash_commands"]["/sinkra-squad:sinkra-chief"], 1)
112
+
113
+ def test_ignores_builtin_commands(self):
114
+ entries = [
115
+ {"message": {"content": "<command-name>clear</command-name>"}},
116
+ {"message": {"content": "<command-name>model</command-name>"}},
117
+ {"message": {"content": "<command-name>help</command-name>"}},
118
+ ]
119
+ path = self._write_jsonl("builtins.jsonl", entries)
120
+ result = analyze_session(path)
121
+ self.assertEqual(len(result["slash_commands"]), 0)
122
+
123
+ def test_extracts_skill_tool_invocations(self):
124
+ entries = [
125
+ {"message": {"content": [
126
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "handoff"}},
127
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}},
128
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}},
129
+ ]}}
130
+ ]
131
+ path = self._write_jsonl("skills.jsonl", entries)
132
+ result = analyze_session(path)
133
+ self.assertEqual(result["skill_invocations"]["handoff"], 1)
134
+ self.assertEqual(result["skill_invocations"]["commit"], 2)
135
+
136
+ def test_extracts_agent_types(self):
137
+ entries = [
138
+ {"message": {"content": [
139
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "dev", "prompt": "do stuff"}},
140
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "Explore", "prompt": "find"}},
141
+ {"type": "tool_use", "name": "Agent", "input": {"prompt": "no type specified"}},
142
+ ]}}
143
+ ]
144
+ path = self._write_jsonl("agents.jsonl", entries)
145
+ result = analyze_session(path)
146
+ self.assertEqual(result["agent_types"]["dev"], 1)
147
+ self.assertEqual(result["agent_types"]["Explore"], 1)
148
+ self.assertEqual(result["agent_types"]["general-purpose"], 1)
149
+
150
+ def test_extracts_shell_runners(self):
151
+ entries = [
152
+ {"message": {"content": [
153
+ {"type": "tool_use", "name": "Bash", "input": {"command": "bash sinkra-map.sh --all"}},
154
+ {"type": "tool_use", "name": "Bash", "input": {"command": "/path/to/validate-squad.sh config.yaml"}},
155
+ {"type": "tool_use", "name": "Bash", "input": {"command": "npm run build"}},
156
+ ]}}
157
+ ]
158
+ path = self._write_jsonl("runners.jsonl", entries)
159
+ result = analyze_session(path)
160
+ self.assertEqual(result["shell_runners"]["sinkra-map.sh"], 1)
161
+ self.assertEqual(result["shell_runners"]["validate-squad.sh"], 1)
162
+ self.assertNotIn("build", result["shell_runners"])
163
+
164
+ def test_extracts_dates_from_summary(self):
165
+ entries = [
166
+ {"type": "summary", "timestamp": "2026-03-28T10:00:00Z"},
167
+ ]
168
+ path = self._write_jsonl("dates.jsonl", entries)
169
+ result = analyze_session(path)
170
+ self.assertIn("2026-03-28", result["dates"])
171
+
172
+ def test_handles_malformed_json_lines(self):
173
+ path = os.path.join(self.tmpdir, "bad.jsonl")
174
+ with open(path, "w") as f:
175
+ f.write("not json\n")
176
+ f.write('{"message": {"content": "<command-name>commit</command-name>"}}\n')
177
+ f.write("{broken\n")
178
+ result = analyze_session(path)
179
+ self.assertEqual(result["slash_commands"]["/commit"], 1)
180
+
181
+ def test_handles_content_as_list_of_blocks(self):
182
+ entries = [
183
+ {"message": {"content": [
184
+ {"type": "text", "text": "running <command-name>deploy</command-name>"},
185
+ {"type": "text", "text": "also <command-name>review-story</command-name>"},
186
+ ]}}
187
+ ]
188
+ path = self._write_jsonl("blocks.jsonl", entries)
189
+ result = analyze_session(path)
190
+ self.assertEqual(result["slash_commands"]["/deploy"], 1)
191
+ self.assertEqual(result["slash_commands"]["/review-story"], 1)
192
+
193
+ def test_handles_content_as_string(self):
194
+ entries = [
195
+ {"message": "plain string message, no tool use"}
196
+ ]
197
+ path = self._write_jsonl("string_msg.jsonl", entries)
198
+ result = analyze_session(path)
199
+ self.assertEqual(len(result["slash_commands"]), 0)
200
+
201
+ def test_nonexistent_file_does_not_crash(self):
202
+ result = analyze_session("/nonexistent/path.jsonl")
203
+ self.assertFalse(result["is_headless"])
204
+ self.assertEqual(len(result["skill_invocations"]), 0)
205
+
206
+ def test_dedupes_branches_and_extracts_rich_metrics(self):
207
+ entries = [
208
+ {
209
+ "type": "user",
210
+ "uuid": "u1",
211
+ "sessionId": "sess-main",
212
+ "timestamp": "2026-04-01T10:00:00Z",
213
+ "message": {"content": [{"type": "text", "text": "Start"}]},
214
+ },
215
+ {
216
+ "type": "assistant",
217
+ "uuid": "a1",
218
+ "parentUuid": "u1",
219
+ "sessionId": "sess-main",
220
+ "timestamp": "2026-04-01T10:00:05Z",
221
+ "message": {
222
+ "usage": {"input_tokens": 100, "output_tokens": 50},
223
+ "content": [
224
+ {
225
+ "type": "tool_use",
226
+ "name": "Edit",
227
+ "input": {
228
+ "file_path": "/tmp/a.py",
229
+ "old_string": "old\nline",
230
+ "new_string": "new\nline\nextra",
231
+ },
232
+ },
233
+ {"type": "tool_use", "name": "WebSearch", "input": {"query": "branch dedupe"}},
234
+ {"type": "tool_result", "is_error": True, "content": "command failed with exit code 1"},
235
+ ],
236
+ },
237
+ },
238
+ {
239
+ "type": "user",
240
+ "uuid": "u2",
241
+ "parentUuid": "a1",
242
+ "sessionId": "sess-main",
243
+ "timestamp": "2026-04-01T10:00:20Z",
244
+ "message": {"content": [{"type": "text", "text": "Continue"}]},
245
+ },
246
+ {
247
+ "type": "assistant",
248
+ "uuid": "a2",
249
+ "parentUuid": "u2",
250
+ "sessionId": "sess-main",
251
+ "timestamp": "2026-04-01T10:00:35Z",
252
+ "message": {
253
+ "usage": {"input_tokens": 70, "output_tokens": 30},
254
+ "content": [
255
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "dev", "prompt": "x"}},
256
+ {"type": "tool_use", "name": "mcp__drive__fetch", "input": {"url": "x"}},
257
+ {
258
+ "type": "tool_use",
259
+ "name": "Write",
260
+ "input": {"file_path": "/tmp/b.py", "content": "alpha\nbeta\n"},
261
+ },
262
+ {"type": "text", "text": "[Request interrupted by user]"},
263
+ ],
264
+ },
265
+ },
266
+ {
267
+ "type": "user",
268
+ "uuid": "u3",
269
+ "parentUuid": "a2",
270
+ "sessionId": "sess-main",
271
+ "timestamp": "2026-04-01T10:00:40Z",
272
+ "message": {"content": [{"type": "text", "text": "Final ask"}]},
273
+ },
274
+ {
275
+ "type": "user",
276
+ "uuid": "u2b",
277
+ "parentUuid": "a1",
278
+ "sessionId": "sess-main",
279
+ "timestamp": "2026-04-01T10:00:25Z",
280
+ "message": {"content": [{"type": "text", "text": "Short branch"}]},
281
+ },
282
+ {
283
+ "type": "assistant",
284
+ "uuid": "a2b",
285
+ "parentUuid": "u2b",
286
+ "sessionId": "sess-main",
287
+ "timestamp": "2026-04-01T10:00:30Z",
288
+ "message": {
289
+ "content": [
290
+ {"type": "tool_use", "name": "Bash", "input": {"command": "bash ignored.sh"}}
291
+ ]
292
+ },
293
+ },
294
+ {
295
+ "type": "assistant",
296
+ "uuid": "other-1",
297
+ "sessionId": "sess-stray",
298
+ "timestamp": "2026-04-01T10:00:50Z",
299
+ "message": {
300
+ "content": [
301
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "deploy"}}
302
+ ]
303
+ },
304
+ },
305
+ ]
306
+ path = self._write_jsonl("rich-session.jsonl", entries)
307
+ result = analyze_session(path)
308
+
309
+ self.assertEqual(result["session_id"], "sess-main")
310
+ self.assertEqual(result["branches_total"], 2)
311
+ self.assertEqual(result["branches_deduped"], 1)
312
+ self.assertEqual(result["user_messages"], 3)
313
+ self.assertEqual(result["assistant_messages"], 2)
314
+ self.assertEqual(result["duration_minutes"], 1)
315
+ self.assertEqual(result["input_tokens"], 170)
316
+ self.assertEqual(result["output_tokens"], 80)
317
+ self.assertEqual(result["tool_errors"], 1)
318
+ self.assertEqual(result["tool_error_categories"]["Command Failed"], 1)
319
+ self.assertEqual(result["user_interruptions"], 1)
320
+ self.assertEqual(result["user_response_times"], [15.0, 5.0])
321
+ self.assertTrue(result["uses_task_agent"])
322
+ self.assertTrue(result["uses_mcp"])
323
+ self.assertTrue(result["uses_web_search"])
324
+ self.assertFalse(result["uses_web_fetch"])
325
+ self.assertEqual(result["tools"]["Edit"], 1)
326
+ self.assertEqual(result["tools"]["Agent"], 1)
327
+ self.assertEqual(result["tools"]["Write"], 1)
328
+ self.assertEqual(result["tools"]["Bash"], 1)
329
+ self.assertNotIn("deploy", result["skill_invocations"])
330
+ self.assertEqual(result["lines_added"], 4)
331
+ self.assertEqual(result["lines_removed"], 1)
332
+ self.assertEqual(result["files_modified"], {"/tmp/a.py", "/tmp/b.py"})
333
+
334
+ def test_counts_workflow_usage_from_non_selected_branch(self):
335
+ entries = [
336
+ {
337
+ "type": "user",
338
+ "uuid": "u1",
339
+ "sessionId": "sess-main",
340
+ "timestamp": "2026-04-01T10:00:00Z",
341
+ "message": {"content": [{"type": "text", "text": "Start"}]},
342
+ },
343
+ {
344
+ "type": "assistant",
345
+ "uuid": "a1",
346
+ "parentUuid": "u1",
347
+ "sessionId": "sess-main",
348
+ "timestamp": "2026-04-01T10:00:05Z",
349
+ "message": {"content": [{"type": "text", "text": "Choose a path"}]},
350
+ },
351
+ {
352
+ "type": "user",
353
+ "uuid": "u-long",
354
+ "parentUuid": "a1",
355
+ "sessionId": "sess-main",
356
+ "timestamp": "2026-04-01T10:00:10Z",
357
+ "message": {"content": [{"type": "text", "text": "Long branch"}]},
358
+ },
359
+ {
360
+ "type": "assistant",
361
+ "uuid": "a-long",
362
+ "parentUuid": "u-long",
363
+ "sessionId": "sess-main",
364
+ "timestamp": "2026-04-01T10:00:15Z",
365
+ "message": {"content": [{"type": "text", "text": "Continuing"}]},
366
+ },
367
+ {
368
+ "type": "user",
369
+ "uuid": "u-long-2",
370
+ "parentUuid": "a-long",
371
+ "sessionId": "sess-main",
372
+ "timestamp": "2026-04-01T10:00:20Z",
373
+ "message": {"content": [{"type": "text", "text": "Finish long branch"}]},
374
+ },
375
+ {
376
+ "type": "assistant",
377
+ "uuid": "a-short",
378
+ "parentUuid": "a1",
379
+ "sessionId": "sess-main",
380
+ "timestamp": "2026-04-01T10:00:12Z",
381
+ "message": {
382
+ "content": [
383
+ {"type": "text", "text": "<command-name>commit</command-name>"},
384
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}},
385
+ ]
386
+ },
387
+ },
388
+ ]
389
+ path = self._write_jsonl("branch-usage.jsonl", entries)
390
+ result = analyze_session(path)
391
+ self.assertEqual(result["user_messages"], 3)
392
+ self.assertEqual(result["assistant_messages"], 2)
393
+ self.assertEqual(result["slash_commands"]["/commit"], 1)
394
+ self.assertEqual(result["skill_invocations"]["commit"], 1)
395
+
396
+
397
+ class TestGetRecentCommits(unittest.TestCase):
398
+ """Unit tests for get_recent_commits()."""
399
+
400
+ def test_nonexistent_repo_returns_empty(self):
401
+ result = get_recent_commits("/nonexistent/repo", 14)
402
+ self.assertEqual(result, {})
403
+
404
+ def test_categorizes_story_commits(self):
405
+ fake_output = textwrap.dedent("""\
406
+ abc1234 feat: implement feature [Story 71.1]
407
+ def5678 docs(epic-71): add stories
408
+ ghi9012 fix: correct RLS policy
409
+ jkl3456 chore: squad validation
410
+ mno7890 fix(sinkra): add tokens
411
+ pqr1234 feat(synapse): scanner
412
+ stu5678 fix(yaml): duplicate keys
413
+ vwx9012 feat: migrate AN_KE_115 to structure
414
+ """)
415
+ with patch("subprocess.check_output", return_value=fake_output):
416
+ result = get_recent_commits("/fake/repo", 14)
417
+ self.assertEqual(result["SDC (Story/Epic)"], 2)
418
+ self.assertEqual(result["Squad"], 1)
419
+ self.assertEqual(result["SINKRA"], 1)
420
+ self.assertEqual(result["Synapse"], 1)
421
+ self.assertEqual(result["CI/Infra"], 1)
422
+ self.assertEqual(result["MMOS/Minds"], 1)
423
+ self.assertEqual(result["Other"], 1)
424
+
425
+
426
+ class TestDiscoverInventory(unittest.TestCase):
427
+ """Unit tests for discover_inventory()."""
428
+
429
+ def setUp(self):
430
+ self.tmpdir = tempfile.mkdtemp()
431
+ self.claude_dir = os.path.join(self.tmpdir, ".claude")
432
+
433
+ def tearDown(self):
434
+ shutil.rmtree(self.tmpdir)
435
+
436
+ def _make_dirs(self, *paths):
437
+ for p in paths:
438
+ os.makedirs(os.path.join(self.tmpdir, p), exist_ok=True)
439
+
440
+ def _make_files(self, *paths):
441
+ for p in paths:
442
+ full = os.path.join(self.tmpdir, p)
443
+ os.makedirs(os.path.dirname(full), exist_ok=True)
444
+ with open(full, "w") as f:
445
+ f.write("# placeholder")
446
+
447
+ def test_discovers_skills(self):
448
+ self._make_dirs(".claude/skills/commit", ".claude/skills/handoff", ".claude/skills/deploy")
449
+ inv = discover_inventory(self.tmpdir)
450
+ self.assertEqual(sorted(inv["skills"]), ["commit", "deploy", "handoff"])
451
+
452
+ def test_discovers_agents(self):
453
+ self._make_files(".claude/agents/dev.md", ".claude/agents/qa.md")
454
+ inv = discover_inventory(self.tmpdir)
455
+ self.assertEqual(sorted(inv["agents"]), ["dev", "qa"])
456
+
457
+ def test_discovers_skill_groups(self):
458
+ self._make_files(
459
+ ".claude/skills/copy-copy-chief/SKILL.md",
460
+ ".claude/skills/copy-gary-halbert/SKILL.md",
461
+ ".claude/skills/hormozi-hormozi-chief/SKILL.md",
462
+ )
463
+ inv = discover_inventory(self.tmpdir)
464
+ self.assertEqual(inv["skill_groups"]["copy"], 2)
465
+ self.assertEqual(inv["skill_groups"]["hormozi"], 1)
466
+
467
+ def test_empty_project(self):
468
+ inv = discover_inventory(self.tmpdir)
469
+ self.assertEqual(inv["skills"], [])
470
+ self.assertEqual(inv["agents"], [])
471
+ self.assertEqual(inv["skill_groups"], {})
472
+
473
+ def test_ignores_non_md_agent_files(self):
474
+ self._make_files(".claude/agents/dev.md", ".claude/agents/readme.txt")
475
+ inv = discover_inventory(self.tmpdir)
476
+ self.assertEqual(inv["agents"], ["dev"])
477
+
478
+ def test_ignores_files_in_skills_dir(self):
479
+ self._make_files(".claude/skills/registry.yaml")
480
+ self._make_dirs(".claude/skills/commit")
481
+ inv = discover_inventory(self.tmpdir)
482
+ self.assertEqual(inv["skills"], ["commit"])
483
+
484
+
485
+ class TestGenerateReport(unittest.TestCase):
486
+ """Integration tests for generate_report()."""
487
+
488
+ def setUp(self):
489
+ self.tmpdir = tempfile.mkdtemp()
490
+ self.projects_dir = os.path.join(self.tmpdir, "projects")
491
+ os.makedirs(self.projects_dir)
492
+
493
+ def tearDown(self):
494
+ shutil.rmtree(self.tmpdir)
495
+
496
+ def _create_project_session(self, project_name, filename, entries):
497
+ proj_dir = os.path.join(self.projects_dir, project_name)
498
+ os.makedirs(proj_dir, exist_ok=True)
499
+ path = os.path.join(proj_dir, filename)
500
+ with open(path, "w") as f:
501
+ for entry in entries:
502
+ f.write(json.dumps(entry) + "\n")
503
+ return path
504
+
505
+ def test_empty_projects_dir(self):
506
+ data = generate_report(self.projects_dir, 14)
507
+ self.assertEqual(data["projects"], {})
508
+
509
+ def test_single_interactive_session(self):
510
+ self._create_project_session(
511
+ "test-proj", "session1.jsonl",
512
+ [
513
+ {"message": {"content": [
514
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}},
515
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "dev", "prompt": "x"}},
516
+ ]}}
517
+ ]
518
+ )
519
+ data = generate_report(self.projects_dir, 14)
520
+ self.assertIn("test-proj", data["projects"])
521
+ self.assertEqual(data["projects"]["test-proj"]["interactive"], 1)
522
+ self.assertEqual(data["projects"]["test-proj"]["headless"], 0)
523
+ self.assertEqual(data["skills"]["commit"], 1)
524
+ self.assertEqual(data["agents"]["dev"], 1)
525
+
526
+ def test_headless_session_separated(self):
527
+ self._create_project_session(
528
+ "test-proj", "session_hl.jsonl",
529
+ [
530
+ {"message": {"type": "queue-operation", "content": "run"}},
531
+ {"message": {"content": [
532
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "deploy"}},
533
+ ]}}
534
+ ]
535
+ )
536
+ data = generate_report(self.projects_dir, 14)
537
+ self.assertEqual(data["projects"]["test-proj"]["headless"], 1)
538
+ self.assertEqual(data["projects"]["test-proj"]["interactive"], 0)
539
+ self.assertEqual(data["headless_skills"]["deploy"], 1)
540
+ self.assertNotIn("deploy", data["skills"])
541
+
542
+ def test_multiple_projects(self):
543
+ self._create_project_session(
544
+ "proj-a", "s1.jsonl",
545
+ [{"message": {"content": [
546
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "dev", "prompt": "x"}},
547
+ ]}}]
548
+ )
549
+ self._create_project_session(
550
+ "proj-b", "s1.jsonl",
551
+ [{"message": {"content": [
552
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "dev", "prompt": "y"}},
553
+ ]}}]
554
+ )
555
+ data = generate_report(self.projects_dir, 14)
556
+ self.assertEqual(len(data["projects"]), 2)
557
+ self.assertEqual(data["agents"]["dev"], 2)
558
+ self.assertEqual(data["agent_projects"]["dev"], {"proj-a", "proj-b"})
559
+
560
+ def test_subagent_sessions_counted(self):
561
+ proj_dir = os.path.join(self.projects_dir, "test-proj")
562
+ os.makedirs(proj_dir, exist_ok=True)
563
+ # Main session
564
+ main_path = os.path.join(proj_dir, "main.jsonl")
565
+ with open(main_path, "w") as f:
566
+ f.write(json.dumps({"message": {"content": "hello"}}) + "\n")
567
+ # Subagent session
568
+ sub_dir = os.path.join(proj_dir, "main-id", "subagents")
569
+ os.makedirs(sub_dir, exist_ok=True)
570
+ sub_path = os.path.join(sub_dir, "agent-abc.jsonl")
571
+ with open(sub_path, "w") as f:
572
+ f.write(json.dumps({"message": {"content": [
573
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "Explore", "prompt": "x"}},
574
+ ]}}) + "\n")
575
+
576
+ data = generate_report(self.projects_dir, 14)
577
+ self.assertEqual(data["projects"]["test-proj"]["subagents"], 1)
578
+ self.assertEqual(data["agents"]["Explore"], 1)
579
+
580
+ def test_aggregates_rich_metrics_and_top_tools(self):
581
+ self._create_project_session(
582
+ "test-proj",
583
+ "session-rich.jsonl",
584
+ [
585
+ {
586
+ "type": "user",
587
+ "uuid": "u1",
588
+ "sessionId": "sess-main",
589
+ "timestamp": "2026-04-01T10:00:00Z",
590
+ "message": {"content": [{"type": "text", "text": "Start"}]},
591
+ },
592
+ {
593
+ "type": "assistant",
594
+ "uuid": "a1",
595
+ "parentUuid": "u1",
596
+ "sessionId": "sess-main",
597
+ "timestamp": "2026-04-01T10:00:05Z",
598
+ "message": {
599
+ "usage": {"input_tokens": 100, "output_tokens": 50},
600
+ "content": [
601
+ {
602
+ "type": "tool_use",
603
+ "name": "Edit",
604
+ "input": {
605
+ "file_path": "/tmp/a.py",
606
+ "old_string": "old\nline",
607
+ "new_string": "new\nline\nextra",
608
+ },
609
+ },
610
+ {"type": "tool_use", "name": "WebSearch", "input": {"query": "branch dedupe"}},
611
+ {"type": "tool_result", "is_error": True, "content": "command failed with exit code 1"},
612
+ ],
613
+ },
614
+ },
615
+ {
616
+ "type": "user",
617
+ "uuid": "u2",
618
+ "parentUuid": "a1",
619
+ "sessionId": "sess-main",
620
+ "timestamp": "2026-04-01T10:00:20Z",
621
+ "message": {"content": [{"type": "text", "text": "Continue"}]},
622
+ },
623
+ {
624
+ "type": "assistant",
625
+ "uuid": "a2",
626
+ "parentUuid": "u2",
627
+ "sessionId": "sess-main",
628
+ "timestamp": "2026-04-01T10:00:35Z",
629
+ "message": {
630
+ "usage": {"input_tokens": 70, "output_tokens": 30},
631
+ "content": [
632
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "dev", "prompt": "x"}},
633
+ {"type": "tool_use", "name": "mcp__drive__fetch", "input": {"url": "x"}},
634
+ {
635
+ "type": "tool_use",
636
+ "name": "Write",
637
+ "input": {"file_path": "/tmp/b.py", "content": "alpha\nbeta\n"},
638
+ },
639
+ {"type": "text", "text": "[Request interrupted by user]"},
640
+ ],
641
+ },
642
+ },
643
+ {
644
+ "type": "user",
645
+ "uuid": "u3",
646
+ "parentUuid": "a2",
647
+ "sessionId": "sess-main",
648
+ "timestamp": "2026-04-01T10:00:40Z",
649
+ "message": {"content": [{"type": "text", "text": "Final ask"}]},
650
+ },
651
+ {
652
+ "type": "user",
653
+ "uuid": "u2b",
654
+ "parentUuid": "a1",
655
+ "sessionId": "sess-main",
656
+ "timestamp": "2026-04-01T10:00:25Z",
657
+ "message": {"content": [{"type": "text", "text": "Short branch"}]},
658
+ },
659
+ {
660
+ "type": "assistant",
661
+ "uuid": "a2b",
662
+ "parentUuid": "u2b",
663
+ "sessionId": "sess-main",
664
+ "timestamp": "2026-04-01T10:00:30Z",
665
+ "message": {
666
+ "content": [
667
+ {"type": "tool_use", "name": "Bash", "input": {"command": "bash ignored.sh"}}
668
+ ]
669
+ },
670
+ },
671
+ ],
672
+ )
673
+ self._create_project_session(
674
+ "test-proj",
675
+ "session-headless.jsonl",
676
+ [
677
+ {"message": {"type": "queue-operation", "content": "run"}},
678
+ {"message": {"content": [
679
+ {"type": "tool_use", "name": "WebFetch", "input": {"url": "https://example.com"}}
680
+ ]}},
681
+ ],
682
+ )
683
+
684
+ data = generate_report(self.projects_dir, 14)
685
+
686
+ self.assertEqual(data["summary"]["total_interactive"], 1)
687
+ self.assertEqual(data["summary"]["total_headless"], 1)
688
+ self.assertEqual(data["summary"]["total_branches_deduped"], 1)
689
+ self.assertEqual(data["summary"]["total_tool_errors"], 1)
690
+ self.assertEqual(data["summary"]["sessions_with_task_agent"], 1)
691
+ self.assertEqual(data["summary"]["sessions_with_mcp"], 1)
692
+ self.assertEqual(data["summary"]["sessions_with_web_search"], 1)
693
+ self.assertEqual(data["summary"]["sessions_with_web_fetch"], 1)
694
+ self.assertEqual(data["summary"]["total_lines_added"], 4)
695
+ self.assertEqual(data["summary"]["total_lines_removed"], 1)
696
+ self.assertEqual(data["summary"]["total_unique_files_modified"], 2)
697
+ self.assertEqual(data["summary"]["tool_error_categories"]["Command Failed"], 1)
698
+ self.assertEqual(data["tools"]["Edit"], 1)
699
+ self.assertEqual(data["tools"]["WebFetch"], 1)
700
+ self.assertEqual(data["tool_projects"]["Edit"], {"test-proj"})
701
+ self.assertEqual(data["projects"]["test-proj"]["avg_user_response_seconds"], 10.0)
702
+ self.assertEqual(data["projects"]["test-proj"]["unique_files_modified"], 2)
703
+
704
+ def test_filters_meta_sessions_and_counts_exclusions(self):
705
+ self._create_project_session(
706
+ "test-proj",
707
+ "meta-session.jsonl",
708
+ [
709
+ {
710
+ "type": "user",
711
+ "message": {"content": [{"type": "text", "text": "RESPOND WITH ONLY A VALID JSON OBJECT"}]},
712
+ },
713
+ {
714
+ "type": "assistant",
715
+ "message": {"content": [{"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}}]},
716
+ },
717
+ ],
718
+ )
719
+
720
+ data = generate_report(self.projects_dir, 14)
721
+
722
+ self.assertEqual(data["projects"], {})
723
+ self.assertEqual(data["summary"]["total_sessions"], 0)
724
+ self.assertEqual(data["summary"]["total_sessions_scanned"], 1)
725
+ self.assertEqual(data["summary"]["excluded_meta_sessions"], 1)
726
+
727
+ def test_filters_non_substantive_sessions_but_keeps_meaningful_short_ones(self):
728
+ self._create_project_session(
729
+ "test-proj",
730
+ "non-substantive.jsonl",
731
+ [
732
+ {
733
+ "type": "user",
734
+ "message": {"content": [{"type": "text", "text": "oi"}]},
735
+ },
736
+ ],
737
+ )
738
+ self._create_project_session(
739
+ "test-proj",
740
+ "meaningful-short.jsonl",
741
+ [
742
+ {
743
+ "type": "user",
744
+ "message": {"content": [{"type": "text", "text": "rodar skill"}]},
745
+ },
746
+ {
747
+ "type": "assistant",
748
+ "message": {
749
+ "content": [
750
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}},
751
+ ]
752
+ },
753
+ },
754
+ ],
755
+ )
756
+
757
+ data = generate_report(self.projects_dir, 14)
758
+
759
+ self.assertIn("test-proj", data["projects"])
760
+ self.assertEqual(data["summary"]["total_sessions_scanned"], 2)
761
+ self.assertEqual(data["summary"]["excluded_non_substantive_sessions"], 1)
762
+ self.assertEqual(data["summary"]["total_sessions"], 1)
763
+ self.assertEqual(data["skills"]["commit"], 1)
764
+
765
+ def test_builds_usage_inventory_without_changing_original_rankings(self):
766
+ self._create_project_session(
767
+ "test-proj",
768
+ "inventory-rich.jsonl",
769
+ [
770
+ {
771
+ "type": "user",
772
+ "uuid": "u1",
773
+ "sessionId": "sess-inventory",
774
+ "timestamp": "2026-04-01T10:00:00Z",
775
+ "message": {"content": [{"type": "text", "text": "Rodar commit"}]},
776
+ },
777
+ {
778
+ "type": "assistant",
779
+ "uuid": "a1",
780
+ "parentUuid": "u1",
781
+ "sessionId": "sess-inventory",
782
+ "timestamp": "2026-04-01T10:00:05Z",
783
+ "message": {
784
+ "usage": {"input_tokens": 80, "output_tokens": 40},
785
+ "content": [
786
+ {"type": "text", "text": "<command-name>commit</command-name>"},
787
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}},
788
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "dev", "prompt": "x"}},
789
+ {
790
+ "type": "tool_use",
791
+ "name": "Edit",
792
+ "input": {
793
+ "file_path": "/tmp/app.py",
794
+ "old_string": "old",
795
+ "new_string": "new\nextra",
796
+ },
797
+ },
798
+ {"type": "tool_use", "name": "Bash", "input": {"command": "bash validate-squad.sh"}},
799
+ {"type": "tool_result", "is_error": True, "content": "command failed with exit code 1"},
800
+ ],
801
+ },
802
+ },
803
+ {
804
+ "type": "user",
805
+ "uuid": "u2",
806
+ "parentUuid": "a1",
807
+ "sessionId": "sess-inventory",
808
+ "timestamp": "2026-04-01T10:00:15Z",
809
+ "message": {"content": [{"type": "text", "text": "Continuar"}]},
810
+ },
811
+ ],
812
+ )
813
+
814
+ data = generate_report(self.projects_dir, 14)
815
+
816
+ self.assertEqual(data["skills"]["commit"], 1)
817
+ self.assertEqual(data["tools"]["Edit"], 1)
818
+ self.assertEqual(data["runners"]["validate-squad.sh"], 1)
819
+ self.assertEqual(data["usage_inventory"]["summary"]["normalized_skills"], 1)
820
+ self.assertEqual(data["usage_inventory"]["summary"]["slash_commands"], 1)
821
+ self.assertEqual(data["usage_inventory"]["summary"]["skill_tools"], 1)
822
+ self.assertEqual(data["usage_inventory"]["normalized_skills"]["top_by_usage"][0]["name"], "commit")
823
+ self.assertEqual(data["usage_inventory"]["slash_commands"]["top_by_usage"][0]["name"], "/commit")
824
+ self.assertEqual(data["usage_inventory"]["skill_tools"]["top_by_usage"][0]["name"], "commit")
825
+ self.assertEqual(data["usage_inventory"]["agents"]["top_by_usage"][0]["name"], "dev")
826
+ self.assertEqual(data["usage_inventory"]["tools"]["top_by_usage"][0]["name"], "Agent")
827
+
828
+
829
+ class TestCacheAndInsights(unittest.TestCase):
830
+ """Tests cache invalidation and optional insights enrichment."""
831
+
832
+ def setUp(self):
833
+ self.tmpdir = tempfile.mkdtemp()
834
+ self.projects_dir = os.path.join(self.tmpdir, "projects")
835
+ self.cache_dir = os.path.join(self.tmpdir, "cache")
836
+ os.makedirs(self.projects_dir)
837
+
838
+ def tearDown(self):
839
+ shutil.rmtree(self.tmpdir)
840
+
841
+ def _write_session(self, project_name, filename, entries):
842
+ proj_dir = os.path.join(self.projects_dir, project_name)
843
+ os.makedirs(proj_dir, exist_ok=True)
844
+ session_path = os.path.join(proj_dir, filename)
845
+ with open(session_path, "w") as f:
846
+ for entry in entries:
847
+ f.write(json.dumps(entry) + "\n")
848
+ return session_path
849
+
850
+ def test_session_meta_cache_hit_and_invalidation(self):
851
+ session_path = self._write_session(
852
+ "test-proj",
853
+ "s1.jsonl",
854
+ [
855
+ {"message": {"content": "<command-name>commit</command-name>"}},
856
+ ],
857
+ )
858
+
859
+ result1, cache_state1 = get_session_meta(session_path, cache_root=self.cache_dir)
860
+ self.assertEqual(cache_state1, "miss")
861
+ self.assertEqual(result1["slash_commands"]["/commit"], 1)
862
+
863
+ with patch.object(report_mod, "analyze_session", side_effect=AssertionError("cache should be used")):
864
+ result2, cache_state2 = get_session_meta(session_path, cache_root=self.cache_dir)
865
+ self.assertEqual(cache_state2, "hit")
866
+ self.assertEqual(result2["slash_commands"]["/commit"], 1)
867
+
868
+ with open(session_path, "a") as f:
869
+ f.write(json.dumps({"message": {"content": "<command-name>deploy</command-name>"}}) + "\n")
870
+
871
+ original_analyze = report_mod.analyze_session
872
+ with patch.object(report_mod, "analyze_session", wraps=original_analyze) as mocked:
873
+ result3, cache_state3 = get_session_meta(session_path, cache_root=self.cache_dir)
874
+ self.assertEqual(cache_state3, "miss")
875
+ self.assertTrue(mocked.called)
876
+ self.assertEqual(result3["slash_commands"]["/deploy"], 1)
877
+
878
+ def test_generate_report_uses_llm_enrichment_when_configured(self):
879
+ self._write_session(
880
+ "test-proj",
881
+ "s1.jsonl",
882
+ [
883
+ {
884
+ "type": "user",
885
+ "uuid": "u1",
886
+ "sessionId": "sess-main",
887
+ "timestamp": "2026-04-01T10:00:00Z",
888
+ "message": {"content": [{"type": "text", "text": "Investigar workflow"}]},
889
+ },
890
+ {
891
+ "type": "assistant",
892
+ "uuid": "a1",
893
+ "parentUuid": "u1",
894
+ "sessionId": "sess-main",
895
+ "timestamp": "2026-04-01T10:00:05Z",
896
+ "message": {
897
+ "content": [
898
+ {"type": "tool_use", "name": "WebSearch", "input": {"query": "workflow"}},
899
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "dev", "prompt": "x"}},
900
+ ]
901
+ },
902
+ },
903
+ ],
904
+ )
905
+
906
+ def fake_run_insights_command(command, payload, timeout_seconds=60):
907
+ self.assertEqual(command, "dummy-insights")
908
+ if payload["mode"] == "facet":
909
+ self.assertIn("Investigar workflow", payload["transcript"])
910
+ return {
911
+ "underlying_goal": "Compreender e refinar o workflow",
912
+ "goal_categories": ["workflow-analysis", "research"],
913
+ "outcome": "partial",
914
+ "satisfaction": "medium",
915
+ "friction_points": ["handoff ambiguity"],
916
+ "primary_success": "Mapeou o fluxo principal",
917
+ "brief_summary": "Sessão de análise de workflow.",
918
+ }
919
+ if payload["mode"] == "insight_sections":
920
+ self.assertIn("facet_summary", payload)
921
+ return {
922
+ "at_a_glance": "Narrativa LLM.",
923
+ "at_a_glance_sections": {
924
+ "whats_working": "Narrativa LLM.",
925
+ "whats_hindering": "Alguma fricção.",
926
+ "quick_wins": "Padronizar handoffs.",
927
+ "ambitious_workflows": "Usar agents em loops maiores.",
928
+ },
929
+ "project_area_items": [
930
+ {
931
+ "name": "Workflow analysis",
932
+ "session_count": 1,
933
+ "description": "Compreender e refinar o workflow principal.",
934
+ }
935
+ ],
936
+ "interaction_style": "Direto e iterativo.",
937
+ "what_works_items": [
938
+ {"title": "Bom uso de pesquisa e agentes", "description": "Explorou e refinou o fluxo principal."}
939
+ ],
940
+ "friction_categories": [
941
+ {
942
+ "category": "Ambiguidade de handoff",
943
+ "description": "Houve ambiguidade na passagem de contexto.",
944
+ "examples": ["handoff ambiguity"],
945
+ }
946
+ ],
947
+ "claude_md_additions": [],
948
+ "features_to_try": [],
949
+ "usage_patterns": [],
950
+ "on_the_horizon": "Expandir o uso de agents.",
951
+ "horizon_opportunities": [],
952
+ "feedback": {"cc_team_improvements": [], "model_behavior_improvements": []},
953
+ "fun_ending_card": {"headline": "Fechamento LLM.", "detail": "Sessão útil."},
954
+ }
955
+ raise AssertionError(f"Modo inesperado: {payload['mode']}")
956
+
957
+ with patch.object(report_mod, "run_insights_command", side_effect=fake_run_insights_command):
958
+ data = generate_report(
959
+ self.projects_dir,
960
+ 14,
961
+ cache_dir=self.cache_dir,
962
+ use_cache=False,
963
+ insights_command="dummy-insights",
964
+ )
965
+
966
+ self.assertEqual(data["facet_summary"]["sources"]["llm"], 1)
967
+ self.assertEqual(data["facet_summary"]["goal_categories"]["workflow-analysis"], 1)
968
+ self.assertEqual(data["facet_summary"]["friction_points"]["handoff ambiguity"], 1)
969
+ self.assertEqual(data["narrative"]["source"], "llm")
970
+ self.assertEqual(data["narrative"]["at_a_glance"], "Narrativa LLM.")
971
+ self.assertEqual(data["summary"]["facets_cache_misses"], 1)
972
+
973
+ def test_build_transcript_excerpt_summarizes_long_transcript_in_chunks(self):
974
+ session_path = self._write_session(
975
+ "test-proj",
976
+ "long-session.jsonl",
977
+ [
978
+ {
979
+ "type": "user",
980
+ "uuid": "u1",
981
+ "sessionId": "sess-long",
982
+ "timestamp": "2026-04-01T10:00:00Z",
983
+ "message": {"content": [{"type": "text", "text": "A" * 20000}]},
984
+ },
985
+ {
986
+ "type": "assistant",
987
+ "uuid": "a1",
988
+ "parentUuid": "u1",
989
+ "sessionId": "sess-long",
990
+ "timestamp": "2026-04-01T10:00:05Z",
991
+ "message": {
992
+ "content": [
993
+ {"type": "text", "text": "B" * 20000},
994
+ {"type": "tool_use", "name": "Edit", "input": {"file_path": "/tmp/a.py"}},
995
+ ]
996
+ },
997
+ },
998
+ ],
999
+ )
1000
+
1001
+ def fake_run_insights_command(command, payload, timeout_seconds=60):
1002
+ self.assertEqual(command, "dummy-insights")
1003
+ self.assertEqual(payload["mode"], "summarize_chunk")
1004
+ return {"summary": f"chunk-size={len(payload['transcript_chunk'])}"}
1005
+
1006
+ with patch.object(report_mod, "run_insights_command", side_effect=fake_run_insights_command) as mocked:
1007
+ excerpt = build_transcript_excerpt(session_path, insights_command="dummy-insights")
1008
+
1009
+ self.assertTrue(mocked.called)
1010
+ self.assertIn("[long transcript summarized in", excerpt)
1011
+ self.assertIn("chunk-size=", excerpt)
1012
+
1013
+
1014
+ class TestRecommendations(unittest.TestCase):
1015
+ """Tests deterministic workflow recommendations."""
1016
+
1017
+ def test_generates_global_and_project_recommendations(self):
1018
+ data = {
1019
+ "projects": {
1020
+ "proj-a": {
1021
+ "interactive": 4,
1022
+ "headless": 0,
1023
+ "subagents": 0,
1024
+ "tool_errors": 3,
1025
+ "branches_deduped": 3,
1026
+ "lines_added": 140,
1027
+ "lines_removed": 30,
1028
+ "sessions_with_task_agent": 0,
1029
+ "sessions_with_mcp": 0,
1030
+ "sessions_with_web_search": 3,
1031
+ "sessions_with_web_fetch": 1,
1032
+ "avg_user_response_seconds": 52,
1033
+ "user_interruptions": 2,
1034
+ },
1035
+ },
1036
+ "summary": {
1037
+ "total_sessions": 12,
1038
+ "total_tool_errors": 5,
1039
+ "total_branches_deduped": 5,
1040
+ "total_lines_added": 500,
1041
+ "total_lines_removed": 100,
1042
+ "sessions_with_task_agent": 1,
1043
+ "sessions_with_web_search": 6,
1044
+ "sessions_with_web_fetch": 2,
1045
+ "sessions_with_mcp": 1,
1046
+ },
1047
+ "facet_summary": {
1048
+ "friction_points": Counter({"user interruptions": 3}),
1049
+ },
1050
+ }
1051
+
1052
+ recommendations = generate_workflow_recommendations(data)
1053
+
1054
+ self.assertGreaterEqual(recommendations["summary"]["total_recommendations"], 5)
1055
+ self.assertGreaterEqual(recommendations["summary"]["high_impact"], 1)
1056
+ self.assertIn("proj-a", recommendations["by_project"])
1057
+ self.assertTrue(any(
1058
+ rec["category"] == "permissions"
1059
+ for rec in recommendations["by_project"]["proj-a"]
1060
+ ))
1061
+ self.assertTrue(any(
1062
+ rec["scope"] == "global" and rec["category"] == "context"
1063
+ for rec in recommendations["top_recommendations"]
1064
+ ))
1065
+
1066
+
1067
+ class TestFormatMarkdown(unittest.TestCase):
1068
+ """Tests for format_markdown()."""
1069
+
1070
+ def _make_data(self, **overrides):
1071
+ base = {
1072
+ "projects": {"my-proj": {
1073
+ "interactive": 10,
1074
+ "headless": 2,
1075
+ "subagents": 5,
1076
+ "date_range": "2026-03-20 to 2026-03-31",
1077
+ "input_tokens": 1200,
1078
+ "output_tokens": 640,
1079
+ "tool_errors": 3,
1080
+ "branches_deduped": 4,
1081
+ "lines_added": 120,
1082
+ "lines_removed": 45,
1083
+ "unique_files_modified": 12,
1084
+ "avg_user_response_seconds": 18.5,
1085
+ }},
1086
+ "summary": {
1087
+ "total_sessions": 12,
1088
+ "total_interactive": 10,
1089
+ "total_headless": 2,
1090
+ "total_subagents": 5,
1091
+ "total_session_files": 17,
1092
+ "total_branches": 14,
1093
+ "total_branches_deduped": 4,
1094
+ "total_user_messages": 88,
1095
+ "total_assistant_messages": 74,
1096
+ "total_input_tokens": 1200,
1097
+ "total_output_tokens": 640,
1098
+ "total_tool_errors": 3,
1099
+ "tool_error_categories": Counter({"Command Failed": 2, "Edit Failed": 1}),
1100
+ "total_user_interruptions": 2,
1101
+ "avg_user_response_seconds": 18.5,
1102
+ "sessions_with_task_agent": 6,
1103
+ "sessions_with_mcp": 3,
1104
+ "sessions_with_web_search": 4,
1105
+ "sessions_with_web_fetch": 1,
1106
+ "total_lines_added": 120,
1107
+ "total_lines_removed": 45,
1108
+ "total_unique_files_modified": 12,
1109
+ "session_meta_cache_hits": 9,
1110
+ "session_meta_cache_misses": 8,
1111
+ "facets_cache_hits": 7,
1112
+ "facets_cache_misses": 10,
1113
+ },
1114
+ "facet_summary": {
1115
+ "sessions_with_facets": 17,
1116
+ "sources": Counter({"heuristic": 10, "llm": 7}),
1117
+ "goal_categories": Counter({"coding": 9, "research": 5, "orchestration": 3}),
1118
+ "outcomes": Counter({"implemented": 8, "partial": 6, "blocked": 3}),
1119
+ "satisfaction": Counter({"high": 7, "medium": 6, "low": 4}),
1120
+ "friction_points": Counter({"command failed": 2, "user interruptions": 1}),
1121
+ },
1122
+ "narrative": {
1123
+ "source": "llm",
1124
+ "at_a_glance": "Visão geral sintética.",
1125
+ "project_areas": "Áreas mais frequentes: coding e research.",
1126
+ "interaction_style": "Interações objetivas.",
1127
+ "what_works": "Boa taxa de implementação.",
1128
+ "friction_analysis": "Erros de comando aparecem no topo.",
1129
+ "suggestions": "Consolidar prompts e skills recorrentes.",
1130
+ "on_the_horizon": "Escalar workflows paralelos mais ambiciosos.",
1131
+ "fun_ending": "Muito trabalho real concentrado em poucos fluxos.",
1132
+ },
1133
+ "recommendations": {
1134
+ "summary": {
1135
+ "total_recommendations": 4,
1136
+ "high_impact": 2,
1137
+ "medium_impact": 2,
1138
+ "low_impact": 0,
1139
+ "quick_wins": 2,
1140
+ "estimated_minutes_saved_per_week": 91,
1141
+ },
1142
+ "global": [
1143
+ {
1144
+ "id": "global-context-discipline",
1145
+ "scope": "global",
1146
+ "project": None,
1147
+ "title": "Adotar disciplina operacional de compaction e checkpoints de plano",
1148
+ "description": "Muitas branches deduplicadas.",
1149
+ "impact": "HIGH",
1150
+ "effort": "Quick",
1151
+ "category": "context",
1152
+ "phase": "Phase 2: Identify Bottlenecks",
1153
+ "rationale": "4 branches deduplicadas.",
1154
+ "implementation_steps": ["Compactar", "Resumir", "Extrair"],
1155
+ "estimated_minutes_saved_per_week": 38,
1156
+ "priority_score": 33,
1157
+ }
1158
+ ],
1159
+ "by_project": {
1160
+ "my-proj": [
1161
+ {
1162
+ "id": "my-proj-permission-friction",
1163
+ "scope": "project",
1164
+ "project": "my-proj",
1165
+ "title": "Revisar estratégia de permissões para reduzir falhas recorrentes",
1166
+ "description": "Há erros suficientes para revisão.",
1167
+ "impact": "HIGH",
1168
+ "effort": "Quick",
1169
+ "category": "permissions",
1170
+ "phase": "Phase 3: Optimize Permission Strategy",
1171
+ "rationale": "3 erros em 12 sessões.",
1172
+ "implementation_steps": ["Mapear erros", "Adicionar allows", "Promover padrões"],
1173
+ "estimated_minutes_saved_per_week": 35,
1174
+ "priority_score": 33,
1175
+ }
1176
+ ]
1177
+ },
1178
+ "top_recommendations": [
1179
+ {
1180
+ "id": "global-context-discipline",
1181
+ "scope": "global",
1182
+ "project": None,
1183
+ "title": "Adotar disciplina operacional de compaction e checkpoints de plano",
1184
+ "description": "Muitas branches deduplicadas.",
1185
+ "impact": "HIGH",
1186
+ "effort": "Quick",
1187
+ "category": "context",
1188
+ "phase": "Phase 2: Identify Bottlenecks",
1189
+ "rationale": "4 branches deduplicadas.",
1190
+ "implementation_steps": ["Compactar", "Resumir", "Extrair"],
1191
+ "estimated_minutes_saved_per_week": 38,
1192
+ "priority_score": 33,
1193
+ },
1194
+ {
1195
+ "id": "my-proj-permission-friction",
1196
+ "scope": "project",
1197
+ "project": "my-proj",
1198
+ "title": "Revisar estratégia de permissões para reduzir falhas recorrentes",
1199
+ "description": "Há erros suficientes para revisão.",
1200
+ "impact": "HIGH",
1201
+ "effort": "Quick",
1202
+ "category": "permissions",
1203
+ "phase": "Phase 3: Optimize Permission Strategy",
1204
+ "rationale": "3 erros em 12 sessões.",
1205
+ "implementation_steps": ["Mapear erros", "Adicionar allows", "Promover padrões"],
1206
+ "estimated_minutes_saved_per_week": 35,
1207
+ "priority_score": 33,
1208
+ }
1209
+ ],
1210
+ },
1211
+ "skills": Counter({"/commit": 8, "handoff": 3}),
1212
+ "headless_skills": Counter({"/deploy": 2}),
1213
+ "agents": Counter({"dev": 15, "Explore": 10}),
1214
+ "runners": Counter({"validate-squad.sh": 20}),
1215
+ "tools": Counter({"Edit": 11, "Read": 8, "Bash": 6}),
1216
+ "skill_projects": defaultdict(set, {
1217
+ "/commit": {"my-proj"}, "handoff": {"my-proj"}, "/deploy": {"my-proj"}
1218
+ }),
1219
+ "agent_projects": defaultdict(set, {"dev": {"my-proj"}, "Explore": {"my-proj"}}),
1220
+ "tool_projects": defaultdict(set, {"Edit": {"my-proj"}, "Read": {"my-proj"}, "Bash": {"my-proj"}}),
1221
+ "usage_inventory": {
1222
+ "summary": {
1223
+ "normalized_skills": 2,
1224
+ "slash_commands": 2,
1225
+ "skill_tools": 2,
1226
+ "agents": 2,
1227
+ "tools": 3,
1228
+ "runners": 1,
1229
+ },
1230
+ "normalized_skills": {
1231
+ "entries": [],
1232
+ "top_by_usage": [
1233
+ {
1234
+ "name": "commit",
1235
+ "invocations": 8,
1236
+ "sessions": 5,
1237
+ "projects_count": 1,
1238
+ "interactive_invocations": 8,
1239
+ "headless_invocations": 0,
1240
+ "subagent_invocations": 0,
1241
+ "associated_lines_changed": 90,
1242
+ "associated_tokens": 560,
1243
+ "associated_files_modified": 7,
1244
+ "sessions_with_errors": 1,
1245
+ "error_session_rate": 0.2,
1246
+ "avg_associated_tokens_per_session": 112.0,
1247
+ }
1248
+ ],
1249
+ "top_by_impact": [],
1250
+ "top_by_context_cost": [
1251
+ {
1252
+ "name": "commit",
1253
+ "associated_tokens": 560,
1254
+ "avg_associated_tokens_per_session": 112.0,
1255
+ "sessions": 5,
1256
+ "associated_lines_changed": 90,
1257
+ }
1258
+ ],
1259
+ "top_by_friction": [
1260
+ {
1261
+ "name": "commit",
1262
+ "sessions_with_errors": 1,
1263
+ "error_session_rate": 0.2,
1264
+ "sessions": 5,
1265
+ "associated_tokens": 560,
1266
+ }
1267
+ ],
1268
+ },
1269
+ "slash_commands": {
1270
+ "entries": [],
1271
+ "top_by_usage": [
1272
+ {
1273
+ "name": "/commit",
1274
+ "invocations": 8,
1275
+ "sessions": 5,
1276
+ "interactive_invocations": 8,
1277
+ "headless_invocations": 0,
1278
+ "subagent_invocations": 0,
1279
+ }
1280
+ ],
1281
+ },
1282
+ "skill_tools": {
1283
+ "entries": [],
1284
+ "top_by_usage": [
1285
+ {
1286
+ "name": "handoff",
1287
+ "invocations": 3,
1288
+ "sessions": 2,
1289
+ "interactive_invocations": 3,
1290
+ "headless_invocations": 0,
1291
+ "subagent_invocations": 0,
1292
+ }
1293
+ ],
1294
+ },
1295
+ "agents": {
1296
+ "entries": [],
1297
+ "top_by_usage": [],
1298
+ "top_by_impact": [
1299
+ {
1300
+ "name": "dev",
1301
+ "invocations": 15,
1302
+ "sessions": 9,
1303
+ "associated_lines_changed": 120,
1304
+ "associated_files_modified": 12,
1305
+ "error_session_rate": 0.2,
1306
+ }
1307
+ ],
1308
+ "top_by_context_cost": [
1309
+ {
1310
+ "name": "dev",
1311
+ "associated_tokens": 720,
1312
+ "avg_associated_tokens_per_session": 80.0,
1313
+ "sessions": 9,
1314
+ "associated_lines_changed": 120,
1315
+ }
1316
+ ],
1317
+ "top_by_friction": [],
1318
+ },
1319
+ "tools": {
1320
+ "entries": [],
1321
+ "top_by_usage": [],
1322
+ "top_by_impact": [],
1323
+ "top_by_context_cost": [
1324
+ {
1325
+ "name": "Edit",
1326
+ "associated_tokens": 840,
1327
+ "avg_associated_tokens_per_session": 105.0,
1328
+ "sessions": 8,
1329
+ "invocations": 11,
1330
+ }
1331
+ ],
1332
+ "top_by_friction": [
1333
+ {
1334
+ "name": "Edit",
1335
+ "sessions_with_errors": 2,
1336
+ "error_session_rate": 0.25,
1337
+ "invocations": 11,
1338
+ "sessions": 8,
1339
+ "associated_tokens": 840,
1340
+ }
1341
+ ],
1342
+ },
1343
+ "runners": {
1344
+ "entries": [],
1345
+ "top_by_usage": [],
1346
+ },
1347
+ },
1348
+ }
1349
+ base.update(overrides)
1350
+ return base
1351
+
1352
+ def test_contains_header(self):
1353
+ md = format_markdown(self._make_data(), 14)
1354
+ self.assertIn("# Claude Code Session Usage Report", md)
1355
+
1356
+ def test_contains_summary_table(self):
1357
+ md = format_markdown(self._make_data(), 14)
1358
+ self.assertIn("| **my-proj** | 10 | 2 | 5 |", md)
1359
+ self.assertIn("| **TOTAL** | **10** | **2** | **5** |", md)
1360
+
1361
+ def test_skills_normalized(self):
1362
+ md = format_markdown(self._make_data(), 14)
1363
+ # "/commit" should appear as "commit" (normalized)
1364
+ self.assertIn("| `commit` |", md)
1365
+ # The legacy Top Skills/Commands table should still expose a single normalized row.
1366
+ top_skill_rows = [l for l in md.split("\n") if l == "| `commit` | 8 | 0 | my-proj |"]
1367
+ self.assertEqual(len(top_skill_rows), 1, f"Expected 1 top-skill row, got: {top_skill_rows}")
1368
+
1369
+ def test_agents_table(self):
1370
+ md = format_markdown(self._make_data(), 14)
1371
+ self.assertIn("| `dev` | 15 |", md)
1372
+ self.assertIn("| `Explore` | 10 |", md)
1373
+
1374
+ def test_runners_table(self):
1375
+ md = format_markdown(self._make_data(), 14)
1376
+ self.assertIn("| `validate-squad.sh` | 20 |", md)
1377
+
1378
+ def test_unused_skills_section(self):
1379
+ tmpdir = tempfile.mkdtemp()
1380
+ try:
1381
+ os.makedirs(os.path.join(tmpdir, ".claude/skills/commit"), exist_ok=True)
1382
+ os.makedirs(os.path.join(tmpdir, ".claude/skills/roundtable"), exist_ok=True)
1383
+ os.makedirs(os.path.join(tmpdir, ".claude/skills/tribunal"), exist_ok=True)
1384
+ md = format_markdown(self._make_data(), 14, {"test": tmpdir})
1385
+ self.assertIn("## Skills NUNCA Usados (test)", md)
1386
+ self.assertIn("- `roundtable`", md)
1387
+ self.assertIn("- `tribunal`", md)
1388
+ # commit is used, should NOT appear
1389
+ self.assertNotIn("- `commit`", md)
1390
+ finally:
1391
+ shutil.rmtree(tmpdir)
1392
+
1393
+ def test_unused_agents_section(self):
1394
+ tmpdir = tempfile.mkdtemp()
1395
+ try:
1396
+ agents_dir = os.path.join(tmpdir, ".claude/agents")
1397
+ os.makedirs(agents_dir, exist_ok=True)
1398
+ for a in ["dev.md", "qa.md", "ux-design-expert.md"]:
1399
+ with open(os.path.join(agents_dir, a), "w") as f:
1400
+ f.write("# agent")
1401
+ md = format_markdown(self._make_data(), 14, {"test": tmpdir})
1402
+ self.assertIn("## Agents NUNCA Usados", md)
1403
+ self.assertIn("- `qa`", md)
1404
+ self.assertIn("- `ux-design-expert`", md)
1405
+ # dev is used, should NOT appear
1406
+ unused_lines = [l for l in md.split("\n") if l.strip() == "- `dev`"]
1407
+ self.assertEqual(len(unused_lines), 0)
1408
+ finally:
1409
+ shutil.rmtree(tmpdir)
1410
+
1411
+ def test_empty_projects(self):
1412
+ data = self._make_data(projects={})
1413
+ data["summary"] = {
1414
+ "total_interactive": 0,
1415
+ "total_headless": 0,
1416
+ "total_subagents": 0,
1417
+ "total_session_files": 0,
1418
+ "total_branches": 0,
1419
+ "total_branches_deduped": 0,
1420
+ "total_user_messages": 0,
1421
+ "total_assistant_messages": 0,
1422
+ "total_input_tokens": 0,
1423
+ "total_output_tokens": 0,
1424
+ "total_tool_errors": 0,
1425
+ "tool_error_categories": Counter(),
1426
+ "total_user_interruptions": 0,
1427
+ "avg_user_response_seconds": 0,
1428
+ "sessions_with_task_agent": 0,
1429
+ "sessions_with_mcp": 0,
1430
+ "sessions_with_web_search": 0,
1431
+ "sessions_with_web_fetch": 0,
1432
+ "total_lines_added": 0,
1433
+ "total_lines_removed": 0,
1434
+ "total_unique_files_modified": 0,
1435
+ "session_meta_cache_hits": 0,
1436
+ "session_meta_cache_misses": 0,
1437
+ "facets_cache_hits": 0,
1438
+ "facets_cache_misses": 0,
1439
+ }
1440
+ data["facet_summary"] = {
1441
+ "sessions_with_facets": 0,
1442
+ "sources": Counter(),
1443
+ "goal_categories": Counter(),
1444
+ "outcomes": Counter(),
1445
+ "satisfaction": Counter(),
1446
+ "friction_points": Counter(),
1447
+ }
1448
+ data["narrative"] = {}
1449
+ data["skills"] = Counter()
1450
+ data["headless_skills"] = Counter()
1451
+ data["agents"] = Counter()
1452
+ data["runners"] = Counter()
1453
+ data["tools"] = Counter()
1454
+ data["skill_projects"] = defaultdict(set)
1455
+ data["agent_projects"] = defaultdict(set)
1456
+ data["tool_projects"] = defaultdict(set)
1457
+ md = format_markdown(data, 14)
1458
+ self.assertIn("| **TOTAL** | **0** | **0** | **0** |", md)
1459
+
1460
+ def test_days_param_reflected(self):
1461
+ md = format_markdown(self._make_data(), 30)
1462
+ self.assertIn("últimos 30 dias", md)
1463
+
1464
+ def test_contains_session_metrics_and_top_tools(self):
1465
+ md = format_markdown(self._make_data(), 14)
1466
+ self.assertIn("## Métricas de Sessão", md)
1467
+ self.assertIn("| Input tokens | 1.200 |", md)
1468
+ self.assertIn("| Cache session-meta (hit/miss) | 9/8 |", md)
1469
+ self.assertIn("## Top Tools", md)
1470
+ self.assertIn("| `Edit` | 11 | my-proj |", md)
1471
+ self.assertIn("## Inventário Operacional", md)
1472
+ self.assertIn("### Skills Normalizadas por Uso", md)
1473
+ self.assertIn("| `commit` | 8 | 5 | 1 | 90 | 20,0 |", md)
1474
+ self.assertIn("### Slash Commands Cruos", md)
1475
+ self.assertIn("| `/commit` | 8 | 5 | 8 | 0 | 0 |", md)
1476
+ self.assertIn("## Custo de Contexto", md)
1477
+ self.assertIn("| `commit` | 560 | 112,0 | 5 | 90 |", md)
1478
+ self.assertIn("## Fricção Operacional", md)
1479
+ self.assertIn("| `Edit` | 2 | 25,0 | 11 | 8 | 840 |", md)
1480
+ self.assertIn("## Facets de Sessão", md)
1481
+ self.assertIn("coding (9)", md)
1482
+ self.assertIn("## Insights Narrativos", md)
1483
+ self.assertIn("### O Que Está Funcionando", md)
1484
+ self.assertIn("### No Horizonte", md)
1485
+ self.assertIn("### Fechamento", md)
1486
+ self.assertIn("Visão geral sintética.", md)
1487
+ self.assertIn("## Categorias de Erro de Tool", md)
1488
+ self.assertIn("| Command Failed | 2 |", md)
1489
+
1490
+
1491
+ class TestFormatHTML(unittest.TestCase):
1492
+ """Tests for format_html()."""
1493
+
1494
+ def _make_data(self):
1495
+ return TestFormatMarkdown()._make_data()
1496
+
1497
+ def test_contains_html_shell_and_sections(self):
1498
+ html_report = format_html(self._make_data(), 14)
1499
+ self.assertIn("<!DOCTYPE html>", html_report)
1500
+ self.assertIn("<html lang=\"pt-BR\">", html_report)
1501
+ self.assertIn("Session Usage Report", html_report)
1502
+ self.assertIn("Top Tools", html_report)
1503
+ self.assertIn("Inventário Operacional", html_report)
1504
+ self.assertIn("Custo de Contexto", html_report)
1505
+ self.assertIn("Fricção Operacional", html_report)
1506
+ self.assertIn("Insights Narrativos", html_report)
1507
+ self.assertIn("O Que Está Funcionando", html_report)
1508
+ self.assertIn("No Horizonte", html_report)
1509
+ self.assertIn("Fechamento", html_report)
1510
+ self.assertIn("Visão geral sintética.", html_report)
1511
+
1512
+ def test_contains_project_and_metric_values(self):
1513
+ html_report = format_html(self._make_data(), 14)
1514
+ self.assertIn("my-proj", html_report)
1515
+ self.assertIn("1.200", html_report)
1516
+ self.assertIn("Cache meta hit/miss", html_report)
1517
+ self.assertIn("9/8", html_report)
1518
+ self.assertIn("coding (9)", html_report)
1519
+
1520
+
1521
+ class TestNormalizeSkillDedup(unittest.TestCase):
1522
+ """Verifies that /commit and commit are merged correctly."""
1523
+
1524
+ def test_slash_and_no_slash_merged(self):
1525
+ data = {
1526
+ "projects": {"p": {"interactive": 5, "headless": 0, "subagents": 0, "date_range": "x"}},
1527
+ "skills": Counter({"/commit": 10, "commit": 5, "/tech-research": 3}),
1528
+ "headless_skills": Counter({"commit": 2}),
1529
+ "agents": Counter(),
1530
+ "runners": Counter(),
1531
+ "skill_projects": defaultdict(set, {
1532
+ "/commit": {"p"}, "commit": {"p"}, "/tech-research": {"p"}
1533
+ }),
1534
+ "agent_projects": defaultdict(set),
1535
+ }
1536
+ md = format_markdown(data, 14)
1537
+ # "commit" should appear once with interactive=15 (10+5), headless=2
1538
+ lines = [l for l in md.split("\n") if l.startswith("| `commit`")]
1539
+ self.assertEqual(len(lines), 1)
1540
+ self.assertIn("| 15 |", lines[0])
1541
+ self.assertIn("| 2 |", lines[0])
1542
+
1543
+ def test_tech_research_merged(self):
1544
+ data = {
1545
+ "projects": {"p": {"interactive": 1, "headless": 0, "subagents": 0, "date_range": "x"}},
1546
+ "skills": Counter({"/tech-research": 6, "tech-research": 5}),
1547
+ "headless_skills": Counter(),
1548
+ "agents": Counter(),
1549
+ "runners": Counter(),
1550
+ "skill_projects": defaultdict(set, {
1551
+ "/tech-research": {"a"}, "tech-research": {"b"}
1552
+ }),
1553
+ "agent_projects": defaultdict(set),
1554
+ }
1555
+ md = format_markdown(data, 14)
1556
+ lines = [l for l in md.split("\n") if l.startswith("| `tech-research`")]
1557
+ self.assertEqual(len(lines), 1)
1558
+ self.assertIn("11", lines[0])
1559
+ self.assertIn("a, b", lines[0])
1560
+
1561
+
1562
+ class TestCLI(unittest.TestCase):
1563
+ """End-to-end tests for CLI invocation."""
1564
+
1565
+ def test_help_flag(self):
1566
+ script = os.path.join(os.path.dirname(__file__), "session-usage-report.py")
1567
+ result = subprocess.run(
1568
+ [sys.executable, script, "--help"],
1569
+ capture_output=True, text=True
1570
+ )
1571
+ self.assertEqual(result.returncode, 0)
1572
+ self.assertIn("--days", result.stdout)
1573
+ self.assertIn("--output", result.stdout)
1574
+ self.assertIn("--repo", result.stdout)
1575
+ self.assertIn("--cache-dir", result.stdout)
1576
+ self.assertIn("--insights-command", result.stdout)
1577
+ self.assertIn("--html-file", result.stdout)
1578
+
1579
+ def test_empty_dir_produces_report(self):
1580
+ tmpdir = tempfile.mkdtemp()
1581
+ try:
1582
+ script = os.path.join(os.path.dirname(__file__), "session-usage-report.py")
1583
+ result = subprocess.run(
1584
+ [sys.executable, script, "--days", "1", "--projects-dir", tmpdir],
1585
+ capture_output=True, text=True
1586
+ )
1587
+ self.assertEqual(result.returncode, 0)
1588
+ self.assertIn("# Claude Code Session Usage Report", result.stdout)
1589
+ self.assertIn("| **TOTAL** | **0** | **0** | **0** |", result.stdout)
1590
+ finally:
1591
+ shutil.rmtree(tmpdir)
1592
+
1593
+ def test_json_output_valid(self):
1594
+ tmpdir = tempfile.mkdtemp()
1595
+ try:
1596
+ script = os.path.join(os.path.dirname(__file__), "session-usage-report.py")
1597
+ result = subprocess.run(
1598
+ [sys.executable, script, "--days", "1", "--projects-dir", tmpdir, "--output", "json"],
1599
+ capture_output=True, text=True
1600
+ )
1601
+ self.assertEqual(result.returncode, 0)
1602
+ parsed = json.loads(result.stdout)
1603
+ self.assertIn("report", parsed)
1604
+ self.assertIn("summary", parsed)
1605
+ self.assertIn("facets", parsed)
1606
+ self.assertIn("narrative", parsed)
1607
+ self.assertEqual(parsed["summary"]["total_interactive"], 0)
1608
+ finally:
1609
+ shutil.rmtree(tmpdir)
1610
+
1611
+ def test_with_synthetic_session(self):
1612
+ tmpdir = tempfile.mkdtemp()
1613
+ try:
1614
+ proj_dir = os.path.join(tmpdir, "test-project")
1615
+ os.makedirs(proj_dir)
1616
+ session_path = os.path.join(proj_dir, "abc123.jsonl")
1617
+ with open(session_path, "w") as f:
1618
+ f.write(json.dumps({"message": {"content": [
1619
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}},
1620
+ {"type": "tool_use", "name": "Agent", "input": {"subagent_type": "dev", "prompt": "x"}},
1621
+ {"type": "tool_use", "name": "Bash", "input": {"command": "bash validate-squad.sh"}},
1622
+ ]}}) + "\n")
1623
+
1624
+ script = os.path.join(os.path.dirname(__file__), "session-usage-report.py")
1625
+ result = subprocess.run(
1626
+ [sys.executable, script, "--days", "1", "--projects-dir", tmpdir],
1627
+ capture_output=True, text=True
1628
+ )
1629
+ self.assertEqual(result.returncode, 0)
1630
+ self.assertIn("commit", result.stdout)
1631
+ self.assertIn("dev", result.stdout)
1632
+ self.assertIn("validate-squad.sh", result.stdout)
1633
+ finally:
1634
+ shutil.rmtree(tmpdir)
1635
+
1636
+ def test_html_output_written_to_file(self):
1637
+ tmpdir = tempfile.mkdtemp()
1638
+ try:
1639
+ proj_dir = os.path.join(tmpdir, "test-project")
1640
+ os.makedirs(proj_dir)
1641
+ session_path = os.path.join(proj_dir, "abc123.jsonl")
1642
+ with open(session_path, "w") as f:
1643
+ f.write(json.dumps({"message": {"content": [
1644
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}},
1645
+ ]}}) + "\n")
1646
+
1647
+ html_path = os.path.join(tmpdir, "report.html")
1648
+ script = os.path.join(os.path.dirname(__file__), "session-usage-report.py")
1649
+ result = subprocess.run(
1650
+ [
1651
+ sys.executable,
1652
+ script,
1653
+ "--days", "1",
1654
+ "--projects-dir", tmpdir,
1655
+ "--output", "html",
1656
+ "--html-file", html_path,
1657
+ "--cache-dir", os.path.join(tmpdir, "cache"),
1658
+ ],
1659
+ capture_output=True,
1660
+ text=True,
1661
+ )
1662
+ self.assertEqual(result.returncode, 0)
1663
+ self.assertEqual(result.stdout.strip(), html_path)
1664
+ self.assertTrue(os.path.exists(html_path))
1665
+ with open(html_path, "r", encoding="utf-8") as f:
1666
+ html_report = f.read()
1667
+ self.assertIn("<!DOCTYPE html>", html_report)
1668
+ self.assertIn("Session Usage Report", html_report)
1669
+ finally:
1670
+ shutil.rmtree(tmpdir)
1671
+
1672
+
1673
+ class TestBuiltinCommandFilter(unittest.TestCase):
1674
+ """Verifies builtin commands are correctly filtered."""
1675
+
1676
+ def test_all_builtins_start_with_slash(self):
1677
+ for cmd in BUILTIN_COMMANDS:
1678
+ self.assertTrue(cmd.startswith("/"), f"Builtin '{cmd}' missing / prefix")
1679
+
1680
+ def test_common_builtins_present(self):
1681
+ for cmd in ["/clear", "/model", "/compact", "/help", "/config"]:
1682
+ self.assertIn(cmd, BUILTIN_COMMANDS)
1683
+
1684
+
1685
+ class TestEdgeCases(unittest.TestCase):
1686
+ """Edge cases and robustness tests."""
1687
+
1688
+ def setUp(self):
1689
+ self.tmpdir = tempfile.mkdtemp()
1690
+
1691
+ def tearDown(self):
1692
+ shutil.rmtree(self.tmpdir)
1693
+
1694
+ def test_nested_command_name_in_tool_content(self):
1695
+ """command-name inside tool_use content blocks should still be found."""
1696
+ entries = [
1697
+ {"message": {"content": [
1698
+ {"type": "text", "text": "Loading <command-name>execute-story</command-name>"},
1699
+ {"type": "tool_use", "name": "Read", "input": {"file_path": "/some/file"}},
1700
+ ]}}
1701
+ ]
1702
+ path = os.path.join(self.tmpdir, "nested.jsonl")
1703
+ with open(path, "w") as f:
1704
+ for e in entries:
1705
+ f.write(json.dumps(e) + "\n")
1706
+ result = analyze_session(path)
1707
+ self.assertEqual(result["slash_commands"]["/execute-story"], 1)
1708
+
1709
+ def test_multiple_commands_in_one_line(self):
1710
+ entries = [
1711
+ {"message": {"content":
1712
+ "<command-name>commit</command-name> and <command-name>deploy</command-name>"
1713
+ }}
1714
+ ]
1715
+ path = os.path.join(self.tmpdir, "multi.jsonl")
1716
+ with open(path, "w") as f:
1717
+ for e in entries:
1718
+ f.write(json.dumps(e) + "\n")
1719
+ result = analyze_session(path)
1720
+ self.assertEqual(result["slash_commands"]["/commit"], 1)
1721
+ self.assertEqual(result["slash_commands"]["/deploy"], 1)
1722
+
1723
+ def test_shell_runner_with_path_prefix(self):
1724
+ entries = [
1725
+ {"message": {"content": [
1726
+ {"type": "tool_use", "name": "Bash", "input": {
1727
+ "command": "squads/sinkra-squad/scripts/sinkra-map.sh --verbose"
1728
+ }},
1729
+ ]}}
1730
+ ]
1731
+ path = os.path.join(self.tmpdir, "paths.jsonl")
1732
+ with open(path, "w") as f:
1733
+ for e in entries:
1734
+ f.write(json.dumps(e) + "\n")
1735
+ result = analyze_session(path)
1736
+ self.assertEqual(result["shell_runners"]["sinkra-map.sh"], 1)
1737
+
1738
+ def test_skill_with_missing_skill_field(self):
1739
+ entries = [
1740
+ {"message": {"content": [
1741
+ {"type": "tool_use", "name": "Skill", "input": {}},
1742
+ ]}}
1743
+ ]
1744
+ path = os.path.join(self.tmpdir, "no_skill.jsonl")
1745
+ with open(path, "w") as f:
1746
+ for e in entries:
1747
+ f.write(json.dumps(e) + "\n")
1748
+ result = analyze_session(path)
1749
+ self.assertEqual(result["skill_invocations"]["unknown"], 1)
1750
+
1751
+
1752
+ class TestFindProjects(unittest.TestCase):
1753
+ """Unit tests for find_projects()."""
1754
+
1755
+ def setUp(self):
1756
+ self.tmpdir = tempfile.mkdtemp()
1757
+
1758
+ def tearDown(self):
1759
+ shutil.rmtree(self.tmpdir)
1760
+
1761
+ def test_discovers_project_dirs(self):
1762
+ os.makedirs(os.path.join(self.tmpdir, "proj-a"))
1763
+ os.makedirs(os.path.join(self.tmpdir, "proj-b"))
1764
+ projects = find_projects(self.tmpdir)
1765
+ self.assertIn("proj-a", projects)
1766
+ self.assertIn("proj-b", projects)
1767
+
1768
+ def test_empty_dir(self):
1769
+ projects = find_projects(self.tmpdir)
1770
+ self.assertEqual(projects, {})
1771
+
1772
+ def test_ignores_files(self):
1773
+ with open(os.path.join(self.tmpdir, "not-a-project.txt"), "w") as f:
1774
+ f.write("x")
1775
+ os.makedirs(os.path.join(self.tmpdir, "real-project"))
1776
+ projects = find_projects(self.tmpdir)
1777
+ self.assertEqual(len(projects), 1)
1778
+ self.assertIn("real-project", projects)
1779
+
1780
+
1781
+ class TestJSONOutputNormalization(unittest.TestCase):
1782
+ """Verifies JSON output normalizes skills (no /prefix dupes)."""
1783
+
1784
+ def test_json_output_merges_slash_variants(self):
1785
+ tmpdir = tempfile.mkdtemp()
1786
+ try:
1787
+ proj_dir = os.path.join(tmpdir, "test-project")
1788
+ os.makedirs(proj_dir)
1789
+ session_path = os.path.join(proj_dir, "s1.jsonl")
1790
+ with open(session_path, "w") as f:
1791
+ # Skill tool invocation (no slash)
1792
+ f.write(json.dumps({"message": {"content": [
1793
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}},
1794
+ {"type": "tool_use", "name": "Skill", "input": {"skill": "commit"}},
1795
+ ]}}) + "\n")
1796
+ # Slash command invocation (with slash via command-name tag)
1797
+ f.write(json.dumps({"message": {"content":
1798
+ "<command-name>commit</command-name>"
1799
+ }}) + "\n")
1800
+
1801
+ script = os.path.join(os.path.dirname(__file__), "session-usage-report.py")
1802
+ result = subprocess.run(
1803
+ [sys.executable, script, "--days", "1", "--projects-dir", tmpdir, "--output", "json"],
1804
+ capture_output=True, text=True
1805
+ )
1806
+ self.assertEqual(result.returncode, 0)
1807
+ parsed = json.loads(result.stdout)
1808
+ skills = parsed["top_skills"]
1809
+ # Should have "commit" (normalized), not "/commit"
1810
+ self.assertIn("commit", skills)
1811
+ self.assertNotIn("/commit", skills)
1812
+ # Combined count: 2 (Skill tool) + 1 (slash command) = 3
1813
+ self.assertEqual(skills["commit"], 3)
1814
+ finally:
1815
+ shutil.rmtree(tmpdir)
1816
+
1817
+ def test_json_output_includes_rich_session_metrics(self):
1818
+ tmpdir = tempfile.mkdtemp()
1819
+ try:
1820
+ proj_dir = os.path.join(tmpdir, "test-project")
1821
+ os.makedirs(proj_dir)
1822
+ session_path = os.path.join(proj_dir, "s1.jsonl")
1823
+ with open(session_path, "w") as f:
1824
+ f.write(json.dumps({
1825
+ "type": "user",
1826
+ "uuid": "u1",
1827
+ "sessionId": "sess-main",
1828
+ "timestamp": "2026-04-01T10:00:00Z",
1829
+ "message": {"content": [{"type": "text", "text": "Start"}]},
1830
+ }) + "\n")
1831
+ f.write(json.dumps({
1832
+ "type": "assistant",
1833
+ "uuid": "a1",
1834
+ "parentUuid": "u1",
1835
+ "sessionId": "sess-main",
1836
+ "timestamp": "2026-04-01T10:00:05Z",
1837
+ "message": {
1838
+ "usage": {"input_tokens": 100, "output_tokens": 50},
1839
+ "content": [
1840
+ {
1841
+ "type": "tool_use",
1842
+ "name": "Edit",
1843
+ "input": {
1844
+ "file_path": "/tmp/a.py",
1845
+ "old_string": "old",
1846
+ "new_string": "new\nextra",
1847
+ },
1848
+ },
1849
+ {"type": "tool_result", "is_error": True, "content": "command failed with exit code 1"},
1850
+ ],
1851
+ },
1852
+ }) + "\n")
1853
+ f.write(json.dumps({
1854
+ "type": "user",
1855
+ "uuid": "u2",
1856
+ "parentUuid": "a1",
1857
+ "sessionId": "sess-main",
1858
+ "timestamp": "2026-04-01T10:00:20Z",
1859
+ "message": {"content": [{"type": "text", "text": "Continue"}]},
1860
+ }) + "\n")
1861
+
1862
+ script = os.path.join(os.path.dirname(__file__), "session-usage-report.py")
1863
+ result = subprocess.run(
1864
+ [sys.executable, script, "--days", "1", "--projects-dir", tmpdir, "--output", "json"],
1865
+ capture_output=True, text=True
1866
+ )
1867
+ self.assertEqual(result.returncode, 0)
1868
+ parsed = json.loads(result.stdout)
1869
+ self.assertEqual(parsed["summary"]["total_tool_errors"], 1)
1870
+ self.assertEqual(parsed["summary"]["total_branches"], 1)
1871
+ self.assertEqual(parsed["summary"]["projects"]["test-project"]["input_tokens"], 100)
1872
+ self.assertEqual(parsed["summary"]["projects"]["test-project"]["unique_files_modified"], 1)
1873
+ self.assertIn("goal_categories", parsed["facets"])
1874
+ self.assertIn("at_a_glance", parsed["narrative"])
1875
+ self.assertEqual(parsed["top_tools"]["Edit"], 1)
1876
+ self.assertIn("usage_inventory", parsed)
1877
+ self.assertEqual(parsed["usage_inventory"]["summary"]["tools"], 1)
1878
+ finally:
1879
+ shutil.rmtree(tmpdir)
1880
+
1881
+
1882
+ class TestCLIWithRepo(unittest.TestCase):
1883
+ """Tests for --repo flag with inventory analysis."""
1884
+
1885
+ def test_repo_flag_shows_unused_skills(self):
1886
+ tmpdir = tempfile.mkdtemp()
1887
+ try:
1888
+ # Create a fake project dir (no sessions)
1889
+ proj_dir = os.path.join(tmpdir, "projects")
1890
+ os.makedirs(proj_dir)
1891
+ # Create a fake repo with skills
1892
+ repo_dir = os.path.join(tmpdir, "repo")
1893
+ os.makedirs(os.path.join(repo_dir, ".claude/skills/commit"), exist_ok=True)
1894
+ os.makedirs(os.path.join(repo_dir, ".claude/skills/unused-skill"), exist_ok=True)
1895
+
1896
+ script = os.path.join(os.path.dirname(__file__), "session-usage-report.py")
1897
+ result = subprocess.run(
1898
+ [sys.executable, script, "--days", "1", "--projects-dir", proj_dir,
1899
+ "--repo", repo_dir],
1900
+ capture_output=True, text=True
1901
+ )
1902
+ self.assertEqual(result.returncode, 0)
1903
+ self.assertIn("Skills NUNCA Usados", result.stdout)
1904
+ self.assertIn("unused-skill", result.stdout)
1905
+ finally:
1906
+ shutil.rmtree(tmpdir)
1907
+
1908
+
1909
+ if __name__ == "__main__":
1910
+ unittest.main()