grimoire-framework 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1174) hide show
  1. package/.claude/CLAUDE.md +318 -0
  2. package/.claude/hooks/README.md +170 -0
  3. package/.claude/hooks/enforce-architecture-first.py +198 -0
  4. package/.claude/hooks/install-hooks.sh +43 -0
  5. package/.claude/hooks/mind-clone-governance.py +192 -0
  6. package/.claude/hooks/pre-commit-version-check.sh +157 -0
  7. package/.claude/hooks/precompact-session-digest.js +47 -0
  8. package/.claude/hooks/read-protection.py +153 -0
  9. package/.claude/hooks/slug-validation.py +176 -0
  10. package/.claude/hooks/sql-governance.py +182 -0
  11. package/.claude/hooks/synapse-engine.js +77 -0
  12. package/.claude/hooks/write-path-validation.py +196 -0
  13. package/.claude/rules/mcp-usage.md +177 -0
  14. package/.grimoire/cli/commands/config/index.js +609 -0
  15. package/.grimoire/cli/commands/generate/index.js +222 -0
  16. package/.grimoire/cli/commands/manifest/index.js +47 -0
  17. package/.grimoire/cli/commands/manifest/regenerate.js +97 -0
  18. package/.grimoire/cli/commands/manifest/validate.js +66 -0
  19. package/.grimoire/cli/commands/mcp/add.js +235 -0
  20. package/.grimoire/cli/commands/mcp/index.js +77 -0
  21. package/.grimoire/cli/commands/mcp/link.js +218 -0
  22. package/.grimoire/cli/commands/mcp/setup.js +165 -0
  23. package/.grimoire/cli/commands/mcp/status.js +184 -0
  24. package/.grimoire/cli/commands/metrics/cleanup.js +91 -0
  25. package/.grimoire/cli/commands/metrics/index.js +66 -0
  26. package/.grimoire/cli/commands/metrics/record.js +154 -0
  27. package/.grimoire/cli/commands/metrics/seed.js +127 -0
  28. package/.grimoire/cli/commands/metrics/show.js +209 -0
  29. package/.grimoire/cli/commands/migrate/analyze.js +355 -0
  30. package/.grimoire/cli/commands/migrate/backup.js +354 -0
  31. package/.grimoire/cli/commands/migrate/execute.js +294 -0
  32. package/.grimoire/cli/commands/migrate/index.js +443 -0
  33. package/.grimoire/cli/commands/migrate/rollback.js +325 -0
  34. package/.grimoire/cli/commands/migrate/update-imports.js +398 -0
  35. package/.grimoire/cli/commands/migrate/validate.js +454 -0
  36. package/.grimoire/cli/commands/pro/index.js +705 -0
  37. package/.grimoire/cli/commands/qa/index.js +57 -0
  38. package/.grimoire/cli/commands/qa/run.js +163 -0
  39. package/.grimoire/cli/commands/qa/status.js +195 -0
  40. package/.grimoire/cli/commands/validate/index.js +431 -0
  41. package/.grimoire/cli/commands/workers/formatters/info-formatter.js +275 -0
  42. package/.grimoire/cli/commands/workers/formatters/list-table.js +265 -0
  43. package/.grimoire/cli/commands/workers/formatters/list-tree.js +160 -0
  44. package/.grimoire/cli/commands/workers/index.js +57 -0
  45. package/.grimoire/cli/commands/workers/info.js +195 -0
  46. package/.grimoire/cli/commands/workers/list.js +215 -0
  47. package/.grimoire/cli/commands/workers/search-filters.js +185 -0
  48. package/.grimoire/cli/commands/workers/search-keyword.js +310 -0
  49. package/.grimoire/cli/commands/workers/search-semantic.js +294 -0
  50. package/.grimoire/cli/commands/workers/search.js +155 -0
  51. package/.grimoire/cli/commands/workers/utils/pagination.js +102 -0
  52. package/.grimoire/cli/index.js +150 -0
  53. package/.grimoire/cli/utils/output-formatter-cli.js +233 -0
  54. package/.grimoire/cli/utils/score-calculator.js +221 -0
  55. package/.grimoire/constitution.md +172 -0
  56. package/.grimoire/core/README.md +231 -0
  57. package/.grimoire/core/code-intel/code-intel-client.js +280 -0
  58. package/.grimoire/core/code-intel/code-intel-enricher.js +160 -0
  59. package/.grimoire/core/code-intel/index.js +137 -0
  60. package/.grimoire/core/code-intel/providers/code-graph-provider.js +201 -0
  61. package/.grimoire/core/code-intel/providers/provider-interface.js +108 -0
  62. package/.grimoire/core/config/config-cache.js +233 -0
  63. package/.grimoire/core/config/config-loader.js +281 -0
  64. package/.grimoire/core/config/config-resolver.js +609 -0
  65. package/.grimoire/core/config/env-interpolator.js +122 -0
  66. package/.grimoire/core/config/merge-utils.js +101 -0
  67. package/.grimoire/core/config/migrate-config.js +293 -0
  68. package/.grimoire/core/config/schemas/framework-config.schema.json +19 -0
  69. package/.grimoire/core/config/schemas/local-config.schema.json +20 -0
  70. package/.grimoire/core/config/schemas/project-config.schema.json +32 -0
  71. package/.grimoire/core/config/schemas/user-config.schema.json +33 -0
  72. package/.grimoire/core/config/templates/user-config.yaml +24 -0
  73. package/.grimoire/core/docs/SHARD-TRANSLATION-GUIDE.md +337 -0
  74. package/.grimoire/core/docs/component-creation-guide.md +459 -0
  75. package/.grimoire/core/docs/session-update-pattern.md +316 -0
  76. package/.grimoire/core/docs/template-syntax.md +267 -0
  77. package/.grimoire/core/docs/troubleshooting-guide.md +626 -0
  78. package/.grimoire/core/elicitation/agent-elicitation.js +272 -0
  79. package/.grimoire/core/elicitation/elicitation-engine.js +486 -0
  80. package/.grimoire/core/elicitation/session-manager.js +322 -0
  81. package/.grimoire/core/elicitation/task-elicitation.js +281 -0
  82. package/.grimoire/core/elicitation/workflow-elicitation.js +349 -0
  83. package/.grimoire/core/events/dashboard-emitter.js +369 -0
  84. package/.grimoire/core/events/index.js +17 -0
  85. package/.grimoire/core/events/types.js +52 -0
  86. package/.grimoire/core/execution/autonomous-build-loop.js +1068 -0
  87. package/.grimoire/core/execution/build-orchestrator.js +1055 -0
  88. package/.grimoire/core/execution/build-state-manager.js +1530 -0
  89. package/.grimoire/core/execution/context-injector.js +537 -0
  90. package/.grimoire/core/execution/parallel-executor.js +292 -0
  91. package/.grimoire/core/execution/parallel-monitor.js +429 -0
  92. package/.grimoire/core/execution/rate-limit-manager.js +314 -0
  93. package/.grimoire/core/execution/result-aggregator.js +486 -0
  94. package/.grimoire/core/execution/semantic-merge-engine.js +1736 -0
  95. package/.grimoire/core/execution/subagent-dispatcher.js +848 -0
  96. package/.grimoire/core/execution/wave-executor.js +397 -0
  97. package/.grimoire/core/health-check/base-check.js +224 -0
  98. package/.grimoire/core/health-check/check-registry.js +253 -0
  99. package/.grimoire/core/health-check/checks/deployment/build-config.js +111 -0
  100. package/.grimoire/core/health-check/checks/deployment/ci-config.js +125 -0
  101. package/.grimoire/core/health-check/checks/deployment/deployment-readiness.js +152 -0
  102. package/.grimoire/core/health-check/checks/deployment/docker-config.js +122 -0
  103. package/.grimoire/core/health-check/checks/deployment/env-file.js +111 -0
  104. package/.grimoire/core/health-check/checks/deployment/index.js +29 -0
  105. package/.grimoire/core/health-check/checks/index.js +56 -0
  106. package/.grimoire/core/health-check/checks/local/disk-space.js +214 -0
  107. package/.grimoire/core/health-check/checks/local/environment-vars.js +136 -0
  108. package/.grimoire/core/health-check/checks/local/git-install.js +158 -0
  109. package/.grimoire/core/health-check/checks/local/ide-detection.js +148 -0
  110. package/.grimoire/core/health-check/checks/local/index.js +35 -0
  111. package/.grimoire/core/health-check/checks/local/memory.js +138 -0
  112. package/.grimoire/core/health-check/checks/local/network.js +170 -0
  113. package/.grimoire/core/health-check/checks/local/npm-install.js +149 -0
  114. package/.grimoire/core/health-check/checks/local/shell-environment.js +120 -0
  115. package/.grimoire/core/health-check/checks/project/agent-config.js +167 -0
  116. package/.grimoire/core/health-check/checks/project/dependencies.js +150 -0
  117. package/.grimoire/core/health-check/checks/project/framework-config.js +133 -0
  118. package/.grimoire/core/health-check/checks/project/grimoire-directory.js +143 -0
  119. package/.grimoire/core/health-check/checks/project/index.js +35 -0
  120. package/.grimoire/core/health-check/checks/project/node-version.js +163 -0
  121. package/.grimoire/core/health-check/checks/project/package-json.js +107 -0
  122. package/.grimoire/core/health-check/checks/project/task-definitions.js +192 -0
  123. package/.grimoire/core/health-check/checks/project/workflow-dependencies.js +214 -0
  124. package/.grimoire/core/health-check/checks/repository/branch-protection.js +107 -0
  125. package/.grimoire/core/health-check/checks/repository/commit-history.js +144 -0
  126. package/.grimoire/core/health-check/checks/repository/conflicts.js +152 -0
  127. package/.grimoire/core/health-check/checks/repository/git-repo.js +159 -0
  128. package/.grimoire/core/health-check/checks/repository/git-status.js +149 -0
  129. package/.grimoire/core/health-check/checks/repository/gitignore.js +194 -0
  130. package/.grimoire/core/health-check/checks/repository/index.js +35 -0
  131. package/.grimoire/core/health-check/checks/repository/large-files.js +183 -0
  132. package/.grimoire/core/health-check/checks/repository/lockfile-integrity.js +144 -0
  133. package/.grimoire/core/health-check/checks/services/api-endpoints.js +168 -0
  134. package/.grimoire/core/health-check/checks/services/claude-code.js +139 -0
  135. package/.grimoire/core/health-check/checks/services/gemini-cli.js +241 -0
  136. package/.grimoire/core/health-check/checks/services/github-cli.js +117 -0
  137. package/.grimoire/core/health-check/checks/services/index.js +29 -0
  138. package/.grimoire/core/health-check/checks/services/mcp-integration.js +125 -0
  139. package/.grimoire/core/health-check/engine.js +407 -0
  140. package/.grimoire/core/health-check/healers/backup-manager.js +340 -0
  141. package/.grimoire/core/health-check/healers/index.js +330 -0
  142. package/.grimoire/core/health-check/index.js +370 -0
  143. package/.grimoire/core/health-check/reporters/console.js +331 -0
  144. package/.grimoire/core/health-check/reporters/index.js +117 -0
  145. package/.grimoire/core/health-check/reporters/json.js +301 -0
  146. package/.grimoire/core/health-check/reporters/markdown.js +323 -0
  147. package/.grimoire/core/ideation/ideation-engine.js +834 -0
  148. package/.grimoire/core/ids/README.md +123 -0
  149. package/.grimoire/core/ids/circuit-breaker.js +156 -0
  150. package/.grimoire/core/ids/framework-governor.js +567 -0
  151. package/.grimoire/core/ids/gates/g1-epic-creation.js +101 -0
  152. package/.grimoire/core/ids/gates/g2-story-creation.js +133 -0
  153. package/.grimoire/core/ids/gates/g3-story-validation.js +166 -0
  154. package/.grimoire/core/ids/gates/g4-dev-context.js +155 -0
  155. package/.grimoire/core/ids/incremental-decision-engine.js +651 -0
  156. package/.grimoire/core/ids/index.js +157 -0
  157. package/.grimoire/core/ids/registry-healer.js +868 -0
  158. package/.grimoire/core/ids/registry-loader.js +281 -0
  159. package/.grimoire/core/ids/registry-updater.js +703 -0
  160. package/.grimoire/core/ids/verification-gate.js +306 -0
  161. package/.grimoire/core/index.esm.js +44 -0
  162. package/.grimoire/core/index.js +90 -0
  163. package/.grimoire/core/manifest/manifest-generator.js +388 -0
  164. package/.grimoire/core/manifest/manifest-validator.js +431 -0
  165. package/.grimoire/core/mcp/config-migrator.js +341 -0
  166. package/.grimoire/core/mcp/global-config-manager.js +370 -0
  167. package/.grimoire/core/mcp/index.js +34 -0
  168. package/.grimoire/core/mcp/os-detector.js +189 -0
  169. package/.grimoire/core/mcp/symlink-manager.js +415 -0
  170. package/.grimoire/core/memory/__tests__/active-modules.verify.js +254 -0
  171. package/.grimoire/core/memory/gotchas-memory.js +1154 -0
  172. package/.grimoire/core/migration/migration-config.yaml +85 -0
  173. package/.grimoire/core/migration/module-mapping.yaml +91 -0
  174. package/.grimoire/core/orchestration/agent-invoker.js +612 -0
  175. package/.grimoire/core/orchestration/bob-orchestrator.js +1032 -0
  176. package/.grimoire/core/orchestration/bob-status-writer.js +482 -0
  177. package/.grimoire/core/orchestration/bob-surface-criteria.yaml +272 -0
  178. package/.grimoire/core/orchestration/brownfield-handler.js +741 -0
  179. package/.grimoire/core/orchestration/checklist-runner.js +328 -0
  180. package/.grimoire/core/orchestration/cli-commands.js +581 -0
  181. package/.grimoire/core/orchestration/condition-evaluator.js +379 -0
  182. package/.grimoire/core/orchestration/context-manager.js +616 -0
  183. package/.grimoire/core/orchestration/dashboard-integration.js +520 -0
  184. package/.grimoire/core/orchestration/data-lifecycle-manager.js +357 -0
  185. package/.grimoire/core/orchestration/epic-context-accumulator.js +396 -0
  186. package/.grimoire/core/orchestration/execution-profile-resolver.js +107 -0
  187. package/.grimoire/core/orchestration/executor-assignment.js +413 -0
  188. package/.grimoire/core/orchestration/executors/epic-3-executor.js +223 -0
  189. package/.grimoire/core/orchestration/executors/epic-4-executor.js +269 -0
  190. package/.grimoire/core/orchestration/executors/epic-5-executor.js +329 -0
  191. package/.grimoire/core/orchestration/executors/epic-6-executor.js +265 -0
  192. package/.grimoire/core/orchestration/executors/epic-executor.js +237 -0
  193. package/.grimoire/core/orchestration/executors/index.js +86 -0
  194. package/.grimoire/core/orchestration/gate-evaluator.js +495 -0
  195. package/.grimoire/core/orchestration/gemini-model-selector.js +161 -0
  196. package/.grimoire/core/orchestration/greenfield-handler.js +890 -0
  197. package/.grimoire/core/orchestration/index.js +323 -0
  198. package/.grimoire/core/orchestration/lock-manager.js +327 -0
  199. package/.grimoire/core/orchestration/master-orchestrator.js +1544 -0
  200. package/.grimoire/core/orchestration/message-formatter.js +279 -0
  201. package/.grimoire/core/orchestration/parallel-executor.js +225 -0
  202. package/.grimoire/core/orchestration/recovery-handler.js +721 -0
  203. package/.grimoire/core/orchestration/session-state.js +876 -0
  204. package/.grimoire/core/orchestration/skill-dispatcher.js +364 -0
  205. package/.grimoire/core/orchestration/subagent-prompt-builder.js +370 -0
  206. package/.grimoire/core/orchestration/surface-checker.js +403 -0
  207. package/.grimoire/core/orchestration/task-complexity-classifier.js +123 -0
  208. package/.grimoire/core/orchestration/tech-stack-detector.js +599 -0
  209. package/.grimoire/core/orchestration/terminal-spawner.js +1044 -0
  210. package/.grimoire/core/orchestration/workflow-executor.js +1182 -0
  211. package/.grimoire/core/orchestration/workflow-orchestrator.js +907 -0
  212. package/.grimoire/core/permissions/__tests__/permission-mode.test.js +293 -0
  213. package/.grimoire/core/permissions/index.js +140 -0
  214. package/.grimoire/core/permissions/operation-guard.js +395 -0
  215. package/.grimoire/core/permissions/permission-mode.js +271 -0
  216. package/.grimoire/core/quality-gates/base-layer.js +134 -0
  217. package/.grimoire/core/quality-gates/checklist-generator.js +329 -0
  218. package/.grimoire/core/quality-gates/focus-area-recommender.js +361 -0
  219. package/.grimoire/core/quality-gates/human-review-orchestrator.js +530 -0
  220. package/.grimoire/core/quality-gates/layer1-precommit.js +336 -0
  221. package/.grimoire/core/quality-gates/layer2-pr-automation.js +331 -0
  222. package/.grimoire/core/quality-gates/layer3-human-review.js +350 -0
  223. package/.grimoire/core/quality-gates/notification-manager.js +551 -0
  224. package/.grimoire/core/quality-gates/quality-gate-config.yaml +87 -0
  225. package/.grimoire/core/quality-gates/quality-gate-manager.js +603 -0
  226. package/.grimoire/core/registry/README.md +181 -0
  227. package/.grimoire/core/registry/build-registry.js +454 -0
  228. package/.grimoire/core/registry/registry-loader.js +331 -0
  229. package/.grimoire/core/registry/registry-schema.json +168 -0
  230. package/.grimoire/core/registry/service-registry.json +6468 -0
  231. package/.grimoire/core/registry/validate-registry.js +341 -0
  232. package/.grimoire/core/session/context-detector.js +233 -0
  233. package/.grimoire/core/session/context-loader.js +443 -0
  234. package/.grimoire/core/synapse/context/context-builder.js +34 -0
  235. package/.grimoire/core/synapse/context/context-tracker.js +190 -0
  236. package/.grimoire/core/synapse/diagnostics/collectors/consistency-collector.js +168 -0
  237. package/.grimoire/core/synapse/diagnostics/collectors/hook-collector.js +129 -0
  238. package/.grimoire/core/synapse/diagnostics/collectors/manifest-collector.js +82 -0
  239. package/.grimoire/core/synapse/diagnostics/collectors/output-analyzer.js +134 -0
  240. package/.grimoire/core/synapse/diagnostics/collectors/pipeline-collector.js +75 -0
  241. package/.grimoire/core/synapse/diagnostics/collectors/quality-collector.js +252 -0
  242. package/.grimoire/core/synapse/diagnostics/collectors/relevance-matrix.js +174 -0
  243. package/.grimoire/core/synapse/diagnostics/collectors/safe-read-json.js +31 -0
  244. package/.grimoire/core/synapse/diagnostics/collectors/session-collector.js +102 -0
  245. package/.grimoire/core/synapse/diagnostics/collectors/timing-collector.js +126 -0
  246. package/.grimoire/core/synapse/diagnostics/collectors/uap-collector.js +83 -0
  247. package/.grimoire/core/synapse/diagnostics/report-formatter.js +485 -0
  248. package/.grimoire/core/synapse/diagnostics/synapse-diagnostics.js +95 -0
  249. package/.grimoire/core/synapse/domain/domain-loader.js +322 -0
  250. package/.grimoire/core/synapse/engine.js +380 -0
  251. package/.grimoire/core/synapse/layers/l0-constitution.js +80 -0
  252. package/.grimoire/core/synapse/layers/l1-global.js +102 -0
  253. package/.grimoire/core/synapse/layers/l2-agent.js +94 -0
  254. package/.grimoire/core/synapse/layers/l3-workflow.js +94 -0
  255. package/.grimoire/core/synapse/layers/l4-task.js +83 -0
  256. package/.grimoire/core/synapse/layers/l5-squad.js +244 -0
  257. package/.grimoire/core/synapse/layers/l6-keyword.js +154 -0
  258. package/.grimoire/core/synapse/layers/l7-star-command.js +169 -0
  259. package/.grimoire/core/synapse/layers/layer-processor.js +82 -0
  260. package/.grimoire/core/synapse/memory/memory-bridge.js +246 -0
  261. package/.grimoire/core/synapse/output/formatter.js +561 -0
  262. package/.grimoire/core/synapse/runtime/hook-runtime.js +61 -0
  263. package/.grimoire/core/synapse/scripts/generate-constitution.js +205 -0
  264. package/.grimoire/core/synapse/session/session-manager.js +403 -0
  265. package/.grimoire/core/synapse/utils/paths.js +57 -0
  266. package/.grimoire/core/synapse/utils/tokens.js +25 -0
  267. package/.grimoire/core/ui/index.js +43 -0
  268. package/.grimoire/core/ui/observability-panel.js +394 -0
  269. package/.grimoire/core/ui/panel-renderer.js +337 -0
  270. package/.grimoire/core/utils/output-formatter.js +299 -0
  271. package/.grimoire/core/utils/security-utils.js +336 -0
  272. package/.grimoire/core/utils/yaml-validator.js +416 -0
  273. package/.grimoire/core-config.yaml +357 -0
  274. package/.grimoire/data/agent-config-requirements.yaml +409 -0
  275. package/.grimoire/data/entity-registry.yaml +9219 -0
  276. package/.grimoire/data/grimoire-kb.md +918 -0
  277. package/.grimoire/data/learned-patterns.yaml +3 -0
  278. package/.grimoire/data/tech-presets/_template.md +259 -0
  279. package/.grimoire/data/tech-presets/nextjs-react.md +933 -0
  280. package/.grimoire/data/technical-preferences.md +85 -0
  281. package/.grimoire/data/workflow-patterns.yaml +836 -0
  282. package/.grimoire/data/workflow-state-schema.yaml +203 -0
  283. package/.grimoire/development/README.md +143 -0
  284. package/.grimoire/development/agent-teams/team-all.yaml +16 -0
  285. package/.grimoire/development/agent-teams/team-fullstack.yaml +19 -0
  286. package/.grimoire/development/agent-teams/team-ide-minimal.yaml +10 -0
  287. package/.grimoire/development/agent-teams/team-no-ui.yaml +14 -0
  288. package/.grimoire/development/agent-teams/team-qa-focused.yaml +155 -0
  289. package/.grimoire/development/agents/analyst.md +261 -0
  290. package/.grimoire/development/agents/architect.md +461 -0
  291. package/.grimoire/development/agents/caravaggio.md +31 -0
  292. package/.grimoire/development/agents/data-engineer.md +482 -0
  293. package/.grimoire/development/agents/dev.md +548 -0
  294. package/.grimoire/development/agents/devops.md +500 -0
  295. package/.grimoire/development/agents/frida.md +31 -0
  296. package/.grimoire/development/agents/grimoire-master.md +447 -0
  297. package/.grimoire/development/agents/picasso.md +31 -0
  298. package/.grimoire/development/agents/pm.md +365 -0
  299. package/.grimoire/development/agents/po.md +323 -0
  300. package/.grimoire/development/agents/qa.md +437 -0
  301. package/.grimoire/development/agents/salvador.md +31 -0
  302. package/.grimoire/development/agents/sm.md +275 -0
  303. package/.grimoire/development/agents/squad-creator.md +330 -0
  304. package/.grimoire/development/agents/tarsila.md +31 -0
  305. package/.grimoire/development/agents/ux-design-expert.md +482 -0
  306. package/.grimoire/development/agents/van-gogh.md +31 -0
  307. package/.grimoire/development/agents/warhol.md +31 -0
  308. package/.grimoire/development/checklists/agent-quality-gate.md +560 -0
  309. package/.grimoire/development/checklists/brownfield-compatibility-checklist.md +116 -0
  310. package/.grimoire/development/checklists/self-critique-checklist.md +274 -0
  311. package/.grimoire/development/data/decision-heuristics-framework.md +622 -0
  312. package/.grimoire/development/data/quality-dimensions-framework.md +427 -0
  313. package/.grimoire/development/data/tier-system-framework.md +476 -0
  314. package/.grimoire/development/scripts/activation-runtime.js +64 -0
  315. package/.grimoire/development/scripts/agent-assignment-resolver.js +231 -0
  316. package/.grimoire/development/scripts/agent-config-loader.js +628 -0
  317. package/.grimoire/development/scripts/agent-exit-hooks.js +97 -0
  318. package/.grimoire/development/scripts/apply-inline-greeting-all-agents.js +147 -0
  319. package/.grimoire/development/scripts/approval-workflow.js +643 -0
  320. package/.grimoire/development/scripts/audit-agent-config.js +382 -0
  321. package/.grimoire/development/scripts/backlog-manager.js +409 -0
  322. package/.grimoire/development/scripts/backup-manager.js +607 -0
  323. package/.grimoire/development/scripts/batch-update-agents-session-context.js +97 -0
  324. package/.grimoire/development/scripts/branch-manager.js +390 -0
  325. package/.grimoire/development/scripts/code-quality-improver.js +1312 -0
  326. package/.grimoire/development/scripts/commit-message-generator.js +850 -0
  327. package/.grimoire/development/scripts/conflict-resolver.js +675 -0
  328. package/.grimoire/development/scripts/decision-context.js +229 -0
  329. package/.grimoire/development/scripts/decision-log-generator.js +294 -0
  330. package/.grimoire/development/scripts/decision-log-indexer.js +285 -0
  331. package/.grimoire/development/scripts/decision-recorder.js +169 -0
  332. package/.grimoire/development/scripts/dependency-analyzer.js +639 -0
  333. package/.grimoire/development/scripts/dev-context-loader.js +298 -0
  334. package/.grimoire/development/scripts/diff-generator.js +352 -0
  335. package/.grimoire/development/scripts/elicitation-engine.js +385 -0
  336. package/.grimoire/development/scripts/elicitation-session-manager.js +300 -0
  337. package/.grimoire/development/scripts/generate-greeting.js +109 -0
  338. package/.grimoire/development/scripts/git-wrapper.js +462 -0
  339. package/.grimoire/development/scripts/greeting-builder.js +1406 -0
  340. package/.grimoire/development/scripts/greeting-config-cli.js +86 -0
  341. package/.grimoire/development/scripts/greeting-preference-manager.js +170 -0
  342. package/.grimoire/development/scripts/manifest-preview.js +245 -0
  343. package/.grimoire/development/scripts/metrics-tracker.js +776 -0
  344. package/.grimoire/development/scripts/migrate-task-to-v2.js +379 -0
  345. package/.grimoire/development/scripts/modification-validator.js +555 -0
  346. package/.grimoire/development/scripts/pattern-learner.js +1225 -0
  347. package/.grimoire/development/scripts/performance-analyzer.js +758 -0
  348. package/.grimoire/development/scripts/populate-entity-registry.js +281 -0
  349. package/.grimoire/development/scripts/refactoring-suggester.js +1139 -0
  350. package/.grimoire/development/scripts/rollback-handler.js +532 -0
  351. package/.grimoire/development/scripts/security-checker.js +359 -0
  352. package/.grimoire/development/scripts/skill-validator.js +343 -0
  353. package/.grimoire/development/scripts/squad/README.md +114 -0
  354. package/.grimoire/development/scripts/squad/index.js +124 -0
  355. package/.grimoire/development/scripts/squad/squad-analyzer.js +638 -0
  356. package/.grimoire/development/scripts/squad/squad-designer.js +1010 -0
  357. package/.grimoire/development/scripts/squad/squad-downloader.js +511 -0
  358. package/.grimoire/development/scripts/squad/squad-extender.js +872 -0
  359. package/.grimoire/development/scripts/squad/squad-generator.js +1406 -0
  360. package/.grimoire/development/scripts/squad/squad-loader.js +359 -0
  361. package/.grimoire/development/scripts/squad/squad-migrator.js +628 -0
  362. package/.grimoire/development/scripts/squad/squad-publisher.js +630 -0
  363. package/.grimoire/development/scripts/squad/squad-validator.js +857 -0
  364. package/.grimoire/development/scripts/story-index-generator.js +339 -0
  365. package/.grimoire/development/scripts/story-manager.js +375 -0
  366. package/.grimoire/development/scripts/story-update-hook.js +259 -0
  367. package/.grimoire/development/scripts/task-identifier-resolver.js +145 -0
  368. package/.grimoire/development/scripts/template-engine.js +240 -0
  369. package/.grimoire/development/scripts/template-validator.js +279 -0
  370. package/.grimoire/development/scripts/test-generator.js +844 -0
  371. package/.grimoire/development/scripts/test-greeting-system.js +143 -0
  372. package/.grimoire/development/scripts/transaction-manager.js +591 -0
  373. package/.grimoire/development/scripts/unified-activation-pipeline.js +796 -0
  374. package/.grimoire/development/scripts/usage-tracker.js +675 -0
  375. package/.grimoire/development/scripts/validate-filenames.js +228 -0
  376. package/.grimoire/development/scripts/validate-task-v2.js +320 -0
  377. package/.grimoire/development/scripts/verify-workflow-gaps.js +1034 -0
  378. package/.grimoire/development/scripts/version-tracker.js +527 -0
  379. package/.grimoire/development/scripts/workflow-navigator.js +328 -0
  380. package/.grimoire/development/scripts/workflow-state-manager.js +652 -0
  381. package/.grimoire/development/scripts/workflow-validator.js +697 -0
  382. package/.grimoire/development/scripts/yaml-validator.js +397 -0
  383. package/.grimoire/development/tasks/add-mcp.md +437 -0
  384. package/.grimoire/development/tasks/advanced-elicitation.md +320 -0
  385. package/.grimoire/development/tasks/analyst-facilitate-brainstorming.md +343 -0
  386. package/.grimoire/development/tasks/analyze-brownfield.md +458 -0
  387. package/.grimoire/development/tasks/analyze-cross-artifact.md +358 -0
  388. package/.grimoire/development/tasks/analyze-framework.md +698 -0
  389. package/.grimoire/development/tasks/analyze-performance.md +639 -0
  390. package/.grimoire/development/tasks/analyze-project-structure.md +623 -0
  391. package/.grimoire/development/tasks/apply-qa-fixes.md +342 -0
  392. package/.grimoire/development/tasks/architect-analyze-impact.md +828 -0
  393. package/.grimoire/development/tasks/audit-codebase.md +431 -0
  394. package/.grimoire/development/tasks/audit-tailwind-config.md +272 -0
  395. package/.grimoire/development/tasks/audit-utilities.md +360 -0
  396. package/.grimoire/development/tasks/blocks/README.md +180 -0
  397. package/.grimoire/development/tasks/blocks/agent-prompt-template.md +117 -0
  398. package/.grimoire/development/tasks/blocks/context-loading.md +110 -0
  399. package/.grimoire/development/tasks/blocks/execution-pattern.md +122 -0
  400. package/.grimoire/development/tasks/blocks/finalization.md +123 -0
  401. package/.grimoire/development/tasks/bootstrap-shadcn-library.md +288 -0
  402. package/.grimoire/development/tasks/brownfield-create-epic.md +533 -0
  403. package/.grimoire/development/tasks/brownfield-create-story.md +358 -0
  404. package/.grimoire/development/tasks/build-autonomous.md +186 -0
  405. package/.grimoire/development/tasks/build-component.md +480 -0
  406. package/.grimoire/development/tasks/build-resume.md +125 -0
  407. package/.grimoire/development/tasks/build-status.md +155 -0
  408. package/.grimoire/development/tasks/build.md +142 -0
  409. package/.grimoire/development/tasks/calculate-roi.md +457 -0
  410. package/.grimoire/development/tasks/check-docs-links.md +114 -0
  411. package/.grimoire/development/tasks/ci-cd-configuration.md +766 -0
  412. package/.grimoire/development/tasks/cleanup-utilities.md +672 -0
  413. package/.grimoire/development/tasks/cleanup-worktrees.md +39 -0
  414. package/.grimoire/development/tasks/collaborative-edit.md +1110 -0
  415. package/.grimoire/development/tasks/compose-molecule.md +286 -0
  416. package/.grimoire/development/tasks/consolidate-patterns.md +416 -0
  417. package/.grimoire/development/tasks/correct-course.md +281 -0
  418. package/.grimoire/development/tasks/create-agent.md +1199 -0
  419. package/.grimoire/development/tasks/create-brownfield-story.md +728 -0
  420. package/.grimoire/development/tasks/create-deep-research-prompt.md +500 -0
  421. package/.grimoire/development/tasks/create-doc.md +318 -0
  422. package/.grimoire/development/tasks/create-next-story.md +776 -0
  423. package/.grimoire/development/tasks/create-service.md +393 -0
  424. package/.grimoire/development/tasks/create-suite.md +285 -0
  425. package/.grimoire/development/tasks/create-task.md +391 -0
  426. package/.grimoire/development/tasks/create-workflow.md +429 -0
  427. package/.grimoire/development/tasks/create-worktree.md +439 -0
  428. package/.grimoire/development/tasks/db-analyze-hotpaths.md +574 -0
  429. package/.grimoire/development/tasks/db-apply-migration.md +383 -0
  430. package/.grimoire/development/tasks/db-bootstrap.md +644 -0
  431. package/.grimoire/development/tasks/db-domain-modeling.md +695 -0
  432. package/.grimoire/development/tasks/db-dry-run.md +295 -0
  433. package/.grimoire/development/tasks/db-env-check.md +262 -0
  434. package/.grimoire/development/tasks/db-explain.md +633 -0
  435. package/.grimoire/development/tasks/db-impersonate.md +497 -0
  436. package/.grimoire/development/tasks/db-load-csv.md +595 -0
  437. package/.grimoire/development/tasks/db-policy-apply.md +655 -0
  438. package/.grimoire/development/tasks/db-rls-audit.md +413 -0
  439. package/.grimoire/development/tasks/db-rollback.md +741 -0
  440. package/.grimoire/development/tasks/db-run-sql.md +615 -0
  441. package/.grimoire/development/tasks/db-schema-audit.md +1013 -0
  442. package/.grimoire/development/tasks/db-seed.md +392 -0
  443. package/.grimoire/development/tasks/db-smoke-test.md +353 -0
  444. package/.grimoire/development/tasks/db-snapshot.md +571 -0
  445. package/.grimoire/development/tasks/db-squad-integration.md +665 -0
  446. package/.grimoire/development/tasks/db-supabase-setup.md +714 -0
  447. package/.grimoire/development/tasks/db-verify-order.md +517 -0
  448. package/.grimoire/development/tasks/deprecate-component.md +958 -0
  449. package/.grimoire/development/tasks/dev-apply-qa-fixes.md +320 -0
  450. package/.grimoire/development/tasks/dev-backlog-debt.md +471 -0
  451. package/.grimoire/development/tasks/dev-develop-story.md +912 -0
  452. package/.grimoire/development/tasks/dev-improve-code-quality.md +874 -0
  453. package/.grimoire/development/tasks/dev-optimize-performance.md +1035 -0
  454. package/.grimoire/development/tasks/dev-suggest-refactoring.md +872 -0
  455. package/.grimoire/development/tasks/dev-validate-next-story.md +350 -0
  456. package/.grimoire/development/tasks/document-gotchas.md +479 -0
  457. package/.grimoire/development/tasks/document-project.md +554 -0
  458. package/.grimoire/development/tasks/environment-bootstrap.md +1391 -0
  459. package/.grimoire/development/tasks/execute-checklist.md +303 -0
  460. package/.grimoire/development/tasks/execute-epic-plan.md +887 -0
  461. package/.grimoire/development/tasks/export-design-tokens-dtcg.md +276 -0
  462. package/.grimoire/development/tasks/extend-pattern.md +271 -0
  463. package/.grimoire/development/tasks/extract-patterns.md +399 -0
  464. package/.grimoire/development/tasks/extract-tokens.md +469 -0
  465. package/.grimoire/development/tasks/facilitate-brainstorming-session.md +520 -0
  466. package/.grimoire/development/tasks/generate-ai-frontend-prompt.md +262 -0
  467. package/.grimoire/development/tasks/generate-documentation.md +286 -0
  468. package/.grimoire/development/tasks/generate-migration-strategy.md +524 -0
  469. package/.grimoire/development/tasks/generate-shock-report.md +503 -0
  470. package/.grimoire/development/tasks/github-devops-github-pr-automation.md +666 -0
  471. package/.grimoire/development/tasks/github-devops-pre-push-quality-gate.md +791 -0
  472. package/.grimoire/development/tasks/github-devops-repository-cleanup.md +376 -0
  473. package/.grimoire/development/tasks/github-devops-version-management.md +485 -0
  474. package/.grimoire/development/tasks/gotcha.md +138 -0
  475. package/.grimoire/development/tasks/gotchas.md +155 -0
  476. package/.grimoire/development/tasks/health-check.yaml +227 -0
  477. package/.grimoire/development/tasks/ids-governor.md +96 -0
  478. package/.grimoire/development/tasks/ids-health.md +91 -0
  479. package/.grimoire/development/tasks/ids-query.md +156 -0
  480. package/.grimoire/development/tasks/improve-self.md +824 -0
  481. package/.grimoire/development/tasks/index-docs.md +389 -0
  482. package/.grimoire/development/tasks/init-project-status.md +508 -0
  483. package/.grimoire/development/tasks/integrate-squad.md +316 -0
  484. package/.grimoire/development/tasks/kb-mode-interaction.md +285 -0
  485. package/.grimoire/development/tasks/learn-patterns.md +902 -0
  486. package/.grimoire/development/tasks/list-mcps.md +33 -0
  487. package/.grimoire/development/tasks/list-worktrees.md +344 -0
  488. package/.grimoire/development/tasks/mcp-workflow.md +438 -0
  489. package/.grimoire/development/tasks/merge-worktree.md +42 -0
  490. package/.grimoire/development/tasks/modify-agent.md +399 -0
  491. package/.grimoire/development/tasks/modify-task.md +442 -0
  492. package/.grimoire/development/tasks/modify-workflow.md +511 -0
  493. package/.grimoire/development/tasks/next.md +327 -0
  494. package/.grimoire/development/tasks/orchestrate-resume.md +60 -0
  495. package/.grimoire/development/tasks/orchestrate-status.md +64 -0
  496. package/.grimoire/development/tasks/orchestrate-stop.md +55 -0
  497. package/.grimoire/development/tasks/orchestrate.md +66 -0
  498. package/.grimoire/development/tasks/patterns.md +336 -0
  499. package/.grimoire/development/tasks/plan-create-context.md +812 -0
  500. package/.grimoire/development/tasks/plan-create-implementation.md +797 -0
  501. package/.grimoire/development/tasks/plan-execute-subtask.md +962 -0
  502. package/.grimoire/development/tasks/po-backlog-add.md +372 -0
  503. package/.grimoire/development/tasks/po-close-story.md +428 -0
  504. package/.grimoire/development/tasks/po-manage-story-backlog.md +525 -0
  505. package/.grimoire/development/tasks/po-pull-story-from-clickup.md +542 -0
  506. package/.grimoire/development/tasks/po-pull-story.md +318 -0
  507. package/.grimoire/development/tasks/po-stories-index.md +353 -0
  508. package/.grimoire/development/tasks/po-sync-story-to-clickup.md +459 -0
  509. package/.grimoire/development/tasks/po-sync-story.md +305 -0
  510. package/.grimoire/development/tasks/pr-automation.md +703 -0
  511. package/.grimoire/development/tasks/propose-modification.md +844 -0
  512. package/.grimoire/development/tasks/publish-npm.md +259 -0
  513. package/.grimoire/development/tasks/qa-after-creation.md +519 -0
  514. package/.grimoire/development/tasks/qa-backlog-add-followup.md +427 -0
  515. package/.grimoire/development/tasks/qa-browser-console-check.md +343 -0
  516. package/.grimoire/development/tasks/qa-create-fix-request.md +625 -0
  517. package/.grimoire/development/tasks/qa-evidence-requirements.md +314 -0
  518. package/.grimoire/development/tasks/qa-false-positive-detection.md +374 -0
  519. package/.grimoire/development/tasks/qa-fix-issues.md +686 -0
  520. package/.grimoire/development/tasks/qa-gate.md +375 -0
  521. package/.grimoire/development/tasks/qa-generate-tests.md +1176 -0
  522. package/.grimoire/development/tasks/qa-library-validation.md +497 -0
  523. package/.grimoire/development/tasks/qa-migration-validation.md +584 -0
  524. package/.grimoire/development/tasks/qa-nfr-assess.md +559 -0
  525. package/.grimoire/development/tasks/qa-review-build.md +1225 -0
  526. package/.grimoire/development/tasks/qa-review-proposal.md +1159 -0
  527. package/.grimoire/development/tasks/qa-review-story.md +684 -0
  528. package/.grimoire/development/tasks/qa-risk-profile.md +568 -0
  529. package/.grimoire/development/tasks/qa-run-tests.md +279 -0
  530. package/.grimoire/development/tasks/qa-security-checklist.md +552 -0
  531. package/.grimoire/development/tasks/qa-test-design.md +389 -0
  532. package/.grimoire/development/tasks/qa-trace-requirements.md +478 -0
  533. package/.grimoire/development/tasks/release-management.md +754 -0
  534. package/.grimoire/development/tasks/remove-mcp.md +35 -0
  535. package/.grimoire/development/tasks/remove-worktree.md +435 -0
  536. package/.grimoire/development/tasks/run-design-system-pipeline.md +642 -0
  537. package/.grimoire/development/tasks/run-workflow-engine.md +861 -0
  538. package/.grimoire/development/tasks/run-workflow.md +389 -0
  539. package/.grimoire/development/tasks/search-mcp.md +309 -0
  540. package/.grimoire/development/tasks/security-audit.md +556 -0
  541. package/.grimoire/development/tasks/security-scan.md +792 -0
  542. package/.grimoire/development/tasks/session-resume.md +193 -0
  543. package/.grimoire/development/tasks/setup-database.md +743 -0
  544. package/.grimoire/development/tasks/setup-design-system.md +464 -0
  545. package/.grimoire/development/tasks/setup-github.md +876 -0
  546. package/.grimoire/development/tasks/setup-llm-routing.md +231 -0
  547. package/.grimoire/development/tasks/setup-mcp-docker.md +628 -0
  548. package/.grimoire/development/tasks/setup-project-docs.md +442 -0
  549. package/.grimoire/development/tasks/shard-doc.md +539 -0
  550. package/.grimoire/development/tasks/sm-create-next-story.md +482 -0
  551. package/.grimoire/development/tasks/spec-assess-complexity.md +461 -0
  552. package/.grimoire/development/tasks/spec-critique.md +595 -0
  553. package/.grimoire/development/tasks/spec-gather-requirements.md +545 -0
  554. package/.grimoire/development/tasks/spec-research-dependencies.md +446 -0
  555. package/.grimoire/development/tasks/spec-write-spec.md +531 -0
  556. package/.grimoire/development/tasks/squad-creator-analyze.md +318 -0
  557. package/.grimoire/development/tasks/squad-creator-create.md +314 -0
  558. package/.grimoire/development/tasks/squad-creator-design.md +335 -0
  559. package/.grimoire/development/tasks/squad-creator-download.md +169 -0
  560. package/.grimoire/development/tasks/squad-creator-extend.md +413 -0
  561. package/.grimoire/development/tasks/squad-creator-list.md +226 -0
  562. package/.grimoire/development/tasks/squad-creator-migrate.md +245 -0
  563. package/.grimoire/development/tasks/squad-creator-publish.md +231 -0
  564. package/.grimoire/development/tasks/squad-creator-sync-grimoire.md +317 -0
  565. package/.grimoire/development/tasks/squad-creator-sync-ide-command.md +403 -0
  566. package/.grimoire/development/tasks/squad-creator-validate.md +160 -0
  567. package/.grimoire/development/tasks/story-checkpoint.md +361 -0
  568. package/.grimoire/development/tasks/sync-documentation.md +866 -0
  569. package/.grimoire/development/tasks/tailwind-upgrade.md +296 -0
  570. package/.grimoire/development/tasks/test-as-user.md +623 -0
  571. package/.grimoire/development/tasks/test-validation-task.md +172 -0
  572. package/.grimoire/development/tasks/undo-last.md +348 -0
  573. package/.grimoire/development/tasks/update-grimoire.md +153 -0
  574. package/.grimoire/development/tasks/update-manifest.md +411 -0
  575. package/.grimoire/development/tasks/update-source-tree.md +138 -0
  576. package/.grimoire/development/tasks/ux-create-wireframe.md +619 -0
  577. package/.grimoire/development/tasks/ux-ds-scan-artifact.md +674 -0
  578. package/.grimoire/development/tasks/ux-user-research.md +561 -0
  579. package/.grimoire/development/tasks/validate-agents.md +117 -0
  580. package/.grimoire/development/tasks/validate-next-story.md +456 -0
  581. package/.grimoire/development/tasks/validate-tech-preset.md +187 -0
  582. package/.grimoire/development/tasks/validate-workflow.md +323 -0
  583. package/.grimoire/development/tasks/verify-subtask.md +237 -0
  584. package/.grimoire/development/tasks/waves.md +206 -0
  585. package/.grimoire/development/tasks/yolo-toggle.md +115 -0
  586. package/.grimoire/development/templates/grimoire-doc-template.md +496 -0
  587. package/.grimoire/development/templates/research-prompt-tmpl.md +486 -0
  588. package/.grimoire/development/templates/service-template/README.md.hbs +159 -0
  589. package/.grimoire/development/templates/service-template/__tests__/index.test.ts.hbs +238 -0
  590. package/.grimoire/development/templates/service-template/client.ts.hbs +404 -0
  591. package/.grimoire/development/templates/service-template/errors.ts.hbs +183 -0
  592. package/.grimoire/development/templates/service-template/index.ts.hbs +121 -0
  593. package/.grimoire/development/templates/service-template/jest.config.js +89 -0
  594. package/.grimoire/development/templates/service-template/package.json.hbs +88 -0
  595. package/.grimoire/development/templates/service-template/tsconfig.json +45 -0
  596. package/.grimoire/development/templates/service-template/types.ts.hbs +146 -0
  597. package/.grimoire/development/templates/squad/agent-template.md +69 -0
  598. package/.grimoire/development/templates/squad/checklist-template.md +82 -0
  599. package/.grimoire/development/templates/squad/data-template.yaml +105 -0
  600. package/.grimoire/development/templates/squad/script-template.js +179 -0
  601. package/.grimoire/development/templates/squad/task-template.md +125 -0
  602. package/.grimoire/development/templates/squad/template-template.md +98 -0
  603. package/.grimoire/development/templates/squad/tool-template.js +103 -0
  604. package/.grimoire/development/templates/squad/workflow-template.yaml +108 -0
  605. package/.grimoire/development/templates/squad-template/LICENSE +21 -0
  606. package/.grimoire/development/templates/squad-template/README.md +37 -0
  607. package/.grimoire/development/templates/squad-template/agents/example-agent.yaml +36 -0
  608. package/.grimoire/development/templates/squad-template/package.json +20 -0
  609. package/.grimoire/development/templates/squad-template/squad.yaml +26 -0
  610. package/.grimoire/development/templates/squad-template/tasks/example-task.yaml +46 -0
  611. package/.grimoire/development/templates/squad-template/templates/example-template.md +24 -0
  612. package/.grimoire/development/templates/squad-template/tests/example-agent.test.js +54 -0
  613. package/.grimoire/development/templates/squad-template/workflows/example-workflow.yaml +54 -0
  614. package/.grimoire/development/templates/subagent-step-prompt.md +122 -0
  615. package/.grimoire/development/workflows/README.md +82 -0
  616. package/.grimoire/development/workflows/auto-worktree.yaml +423 -0
  617. package/.grimoire/development/workflows/brownfield-discovery.yaml +933 -0
  618. package/.grimoire/development/workflows/brownfield-fullstack.yaml +369 -0
  619. package/.grimoire/development/workflows/brownfield-service.yaml +246 -0
  620. package/.grimoire/development/workflows/brownfield-ui.yaml +260 -0
  621. package/.grimoire/development/workflows/design-system-build-quality.yaml +228 -0
  622. package/.grimoire/development/workflows/development-cycle.yaml +427 -0
  623. package/.grimoire/development/workflows/epic-orchestration.yaml +328 -0
  624. package/.grimoire/development/workflows/greenfield-fullstack.yaml +386 -0
  625. package/.grimoire/development/workflows/greenfield-service.yaml +278 -0
  626. package/.grimoire/development/workflows/greenfield-ui.yaml +284 -0
  627. package/.grimoire/development/workflows/qa-loop.yaml +444 -0
  628. package/.grimoire/development/workflows/spec-pipeline.yaml +577 -0
  629. package/.grimoire/development/workflows/story-development-cycle.yaml +285 -0
  630. package/.grimoire/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +574 -0
  631. package/.grimoire/docs/standards/EXECUTOR-DECISION-TREE.md +698 -0
  632. package/.grimoire/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +513 -0
  633. package/.grimoire/docs/standards/QUALITY-GATES-SPECIFICATION.md +558 -0
  634. package/.grimoire/docs/standards/STANDARDS-INDEX.md +212 -0
  635. package/.grimoire/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +551 -0
  636. package/.grimoire/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1415 -0
  637. package/.grimoire/docs/standards/grimoire-COLOR-PALETTE-QUICK-REFERENCE.md +186 -0
  638. package/.grimoire/docs/standards/grimoire-COLOR-PALETTE-V2.1.md +354 -0
  639. package/.grimoire/docs/standards/grimoire-LIVRO-DE-OURO-V2.1-COMPLETE.md +839 -0
  640. package/.grimoire/docs/standards/grimoire-LIVRO-DE-OURO-V2.2-SUMMARY.md +1341 -0
  641. package/.grimoire/elicitation/agent-elicitation.js +272 -0
  642. package/.grimoire/elicitation/task-elicitation.js +281 -0
  643. package/.grimoire/elicitation/workflow-elicitation.js +315 -0
  644. package/.grimoire/framework-config.yaml +152 -0
  645. package/.grimoire/hooks/gemini/after-tool.js +78 -0
  646. package/.grimoire/hooks/gemini/before-agent.js +80 -0
  647. package/.grimoire/hooks/gemini/before-tool.js +115 -0
  648. package/.grimoire/hooks/gemini/rewind-handler.js +69 -0
  649. package/.grimoire/hooks/gemini/session-end.js +91 -0
  650. package/.grimoire/hooks/gemini/session-start.js +91 -0
  651. package/.grimoire/hooks/ids-post-commit.js +118 -0
  652. package/.grimoire/hooks/ids-pre-push.js +125 -0
  653. package/.grimoire/hooks/unified/README.md +309 -0
  654. package/.grimoire/hooks/unified/hook-interface.js +161 -0
  655. package/.grimoire/hooks/unified/hook-registry.js +143 -0
  656. package/.grimoire/hooks/unified/index.js +36 -0
  657. package/.grimoire/hooks/unified/runners/precompact-runner.js +98 -0
  658. package/.grimoire/index.esm.js +17 -0
  659. package/.grimoire/index.js +17 -0
  660. package/.grimoire/infrastructure/README.md +128 -0
  661. package/.grimoire/infrastructure/contracts/compatibility/grimoire-4.0.4.yaml +46 -0
  662. package/.grimoire/infrastructure/index.js +200 -0
  663. package/.grimoire/infrastructure/integrations/ai-providers/README.md +103 -0
  664. package/.grimoire/infrastructure/integrations/ai-providers/ai-provider-factory.js +286 -0
  665. package/.grimoire/infrastructure/integrations/ai-providers/ai-provider.js +145 -0
  666. package/.grimoire/infrastructure/integrations/ai-providers/claude-provider.js +170 -0
  667. package/.grimoire/infrastructure/integrations/ai-providers/gemini-provider.js +365 -0
  668. package/.grimoire/infrastructure/integrations/ai-providers/index.js +45 -0
  669. package/.grimoire/infrastructure/integrations/gemini-extensions/cloudrun-adapter.js +129 -0
  670. package/.grimoire/infrastructure/integrations/gemini-extensions/index.js +41 -0
  671. package/.grimoire/infrastructure/integrations/gemini-extensions/policy-sync.js +74 -0
  672. package/.grimoire/infrastructure/integrations/gemini-extensions/security-adapter.js +159 -0
  673. package/.grimoire/infrastructure/integrations/gemini-extensions/supabase-adapter.js +88 -0
  674. package/.grimoire/infrastructure/integrations/gemini-extensions/workspace-adapter.js +100 -0
  675. package/.grimoire/infrastructure/integrations/pm-adapters/README.md +60 -0
  676. package/.grimoire/infrastructure/integrations/pm-adapters/clickup-adapter.js +345 -0
  677. package/.grimoire/infrastructure/integrations/pm-adapters/github-adapter.js +393 -0
  678. package/.grimoire/infrastructure/integrations/pm-adapters/jira-adapter.js +449 -0
  679. package/.grimoire/infrastructure/integrations/pm-adapters/local-adapter.js +176 -0
  680. package/.grimoire/infrastructure/schemas/agent-v3-schema.json +160 -0
  681. package/.grimoire/infrastructure/schemas/build-state.schema.json +158 -0
  682. package/.grimoire/infrastructure/schemas/task-v3-schema.json +152 -0
  683. package/.grimoire/infrastructure/scripts/approach-manager.js +1005 -0
  684. package/.grimoire/infrastructure/scripts/approval-workflow.js +644 -0
  685. package/.grimoire/infrastructure/scripts/asset-inventory.js +622 -0
  686. package/.grimoire/infrastructure/scripts/atomic-layer-classifier.js +309 -0
  687. package/.grimoire/infrastructure/scripts/backup-manager.js +607 -0
  688. package/.grimoire/infrastructure/scripts/batch-creator.js +609 -0
  689. package/.grimoire/infrastructure/scripts/branch-manager.js +391 -0
  690. package/.grimoire/infrastructure/scripts/capability-analyzer.js +535 -0
  691. package/.grimoire/infrastructure/scripts/changelog-generator.js +554 -0
  692. package/.grimoire/infrastructure/scripts/cicd-discovery.js +1269 -0
  693. package/.grimoire/infrastructure/scripts/clickup-helpers.js +227 -0
  694. package/.grimoire/infrastructure/scripts/code-quality-improver.js +1312 -0
  695. package/.grimoire/infrastructure/scripts/codebase-mapper.js +1288 -0
  696. package/.grimoire/infrastructure/scripts/codex-skills-sync/index.js +184 -0
  697. package/.grimoire/infrastructure/scripts/codex-skills-sync/validate.js +174 -0
  698. package/.grimoire/infrastructure/scripts/commit-message-generator.js +850 -0
  699. package/.grimoire/infrastructure/scripts/component-generator.js +738 -0
  700. package/.grimoire/infrastructure/scripts/component-metadata.js +628 -0
  701. package/.grimoire/infrastructure/scripts/component-search.js +278 -0
  702. package/.grimoire/infrastructure/scripts/config-cache.js +322 -0
  703. package/.grimoire/infrastructure/scripts/config-loader.js +351 -0
  704. package/.grimoire/infrastructure/scripts/conflict-resolver.js +675 -0
  705. package/.grimoire/infrastructure/scripts/coverage-analyzer.js +882 -0
  706. package/.grimoire/infrastructure/scripts/dashboard-status-writer.js +310 -0
  707. package/.grimoire/infrastructure/scripts/dependency-analyzer.js +639 -0
  708. package/.grimoire/infrastructure/scripts/dependency-impact-analyzer.js +704 -0
  709. package/.grimoire/infrastructure/scripts/diff-generator.js +129 -0
  710. package/.grimoire/infrastructure/scripts/documentation-integrity/brownfield-analyzer.js +502 -0
  711. package/.grimoire/infrastructure/scripts/documentation-integrity/config-generator.js +369 -0
  712. package/.grimoire/infrastructure/scripts/documentation-integrity/deployment-config-loader.js +309 -0
  713. package/.grimoire/infrastructure/scripts/documentation-integrity/doc-generator.js +331 -0
  714. package/.grimoire/infrastructure/scripts/documentation-integrity/gitignore-generator.js +314 -0
  715. package/.grimoire/infrastructure/scripts/documentation-integrity/index.js +75 -0
  716. package/.grimoire/infrastructure/scripts/documentation-integrity/mode-detector.js +391 -0
  717. package/.grimoire/infrastructure/scripts/documentation-synchronizer.js +1432 -0
  718. package/.grimoire/infrastructure/scripts/framework-analyzer.js +763 -0
  719. package/.grimoire/infrastructure/scripts/git-config-detector.js +293 -0
  720. package/.grimoire/infrastructure/scripts/git-hooks/post-commit.js +75 -0
  721. package/.grimoire/infrastructure/scripts/git-wrapper.js +444 -0
  722. package/.grimoire/infrastructure/scripts/gotchas-documenter.js +1296 -0
  723. package/.grimoire/infrastructure/scripts/grimoire-validator.js +295 -0
  724. package/.grimoire/infrastructure/scripts/ide-sync/README.md +220 -0
  725. package/.grimoire/infrastructure/scripts/ide-sync/agent-parser.js +295 -0
  726. package/.grimoire/infrastructure/scripts/ide-sync/gemini-commands.js +207 -0
  727. package/.grimoire/infrastructure/scripts/ide-sync/index.js +540 -0
  728. package/.grimoire/infrastructure/scripts/ide-sync/redirect-generator.js +179 -0
  729. package/.grimoire/infrastructure/scripts/ide-sync/transformers/antigravity.js +107 -0
  730. package/.grimoire/infrastructure/scripts/ide-sync/transformers/claude-code.js +86 -0
  731. package/.grimoire/infrastructure/scripts/ide-sync/transformers/cursor.js +96 -0
  732. package/.grimoire/infrastructure/scripts/ide-sync/validator.js +273 -0
  733. package/.grimoire/infrastructure/scripts/improvement-engine.js +758 -0
  734. package/.grimoire/infrastructure/scripts/improvement-validator.js +710 -0
  735. package/.grimoire/infrastructure/scripts/llm-routing/install-llm-routing.js +282 -0
  736. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +129 -0
  737. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
  738. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-free.cmd +80 -0
  739. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-free.sh +62 -0
  740. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-max.cmd +26 -0
  741. package/.grimoire/infrastructure/scripts/llm-routing/templates/claude-max.sh +18 -0
  742. package/.grimoire/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +73 -0
  743. package/.grimoire/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
  744. package/.grimoire/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +53 -0
  745. package/.grimoire/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
  746. package/.grimoire/infrastructure/scripts/llm-routing/usage-tracker/index.js +551 -0
  747. package/.grimoire/infrastructure/scripts/migrate-agent.js +528 -0
  748. package/.grimoire/infrastructure/scripts/modification-risk-assessment.js +970 -0
  749. package/.grimoire/infrastructure/scripts/modification-validator.js +555 -0
  750. package/.grimoire/infrastructure/scripts/output-formatter.js +298 -0
  751. package/.grimoire/infrastructure/scripts/path-analyzer.js +476 -0
  752. package/.grimoire/infrastructure/scripts/pattern-extractor.js +1563 -0
  753. package/.grimoire/infrastructure/scripts/performance-analyzer.js +758 -0
  754. package/.grimoire/infrastructure/scripts/performance-and-error-resolver.js +258 -0
  755. package/.grimoire/infrastructure/scripts/performance-optimizer.js +1902 -0
  756. package/.grimoire/infrastructure/scripts/performance-tracker.js +454 -0
  757. package/.grimoire/infrastructure/scripts/plan-tracker.js +922 -0
  758. package/.grimoire/infrastructure/scripts/pm-adapter-factory.js +182 -0
  759. package/.grimoire/infrastructure/scripts/pm-adapter.js +134 -0
  760. package/.grimoire/infrastructure/scripts/pr-review-ai.js +1062 -0
  761. package/.grimoire/infrastructure/scripts/project-status-loader.js +850 -0
  762. package/.grimoire/infrastructure/scripts/qa-loop-orchestrator.js +1264 -0
  763. package/.grimoire/infrastructure/scripts/qa-report-generator.js +1154 -0
  764. package/.grimoire/infrastructure/scripts/recovery-tracker.js +965 -0
  765. package/.grimoire/infrastructure/scripts/refactoring-suggester.js +1139 -0
  766. package/.grimoire/infrastructure/scripts/repository-detector.js +66 -0
  767. package/.grimoire/infrastructure/scripts/rollback-manager.js +734 -0
  768. package/.grimoire/infrastructure/scripts/sandbox-tester.js +618 -0
  769. package/.grimoire/infrastructure/scripts/security-checker.js +359 -0
  770. package/.grimoire/infrastructure/scripts/spot-check-validator.js +149 -0
  771. package/.grimoire/infrastructure/scripts/status-mapper.js +116 -0
  772. package/.grimoire/infrastructure/scripts/story-worktree-hooks.js +426 -0
  773. package/.grimoire/infrastructure/scripts/stuck-detector.js +1251 -0
  774. package/.grimoire/infrastructure/scripts/subtask-verifier.js +793 -0
  775. package/.grimoire/infrastructure/scripts/template-engine.js +240 -0
  776. package/.grimoire/infrastructure/scripts/template-validator.js +279 -0
  777. package/.grimoire/infrastructure/scripts/test-discovery.js +1259 -0
  778. package/.grimoire/infrastructure/scripts/test-generator.js +845 -0
  779. package/.grimoire/infrastructure/scripts/test-quality-assessment.js +1082 -0
  780. package/.grimoire/infrastructure/scripts/test-utilities-fast.js +126 -0
  781. package/.grimoire/infrastructure/scripts/test-utilities.js +201 -0
  782. package/.grimoire/infrastructure/scripts/tool-resolver.js +362 -0
  783. package/.grimoire/infrastructure/scripts/transaction-manager.js +590 -0
  784. package/.grimoire/infrastructure/scripts/usage-analytics.js +636 -0
  785. package/.grimoire/infrastructure/scripts/validate-agents.js +527 -0
  786. package/.grimoire/infrastructure/scripts/validate-claude-integration.js +103 -0
  787. package/.grimoire/infrastructure/scripts/validate-codex-integration.js +143 -0
  788. package/.grimoire/infrastructure/scripts/validate-gemini-integration.js +153 -0
  789. package/.grimoire/infrastructure/scripts/validate-output-pattern.js +213 -0
  790. package/.grimoire/infrastructure/scripts/validate-parity.js +357 -0
  791. package/.grimoire/infrastructure/scripts/validate-paths.js +144 -0
  792. package/.grimoire/infrastructure/scripts/validate-user-profile.js +251 -0
  793. package/.grimoire/infrastructure/scripts/visual-impact-generator.js +1056 -0
  794. package/.grimoire/infrastructure/scripts/worktree-manager.js +704 -0
  795. package/.grimoire/infrastructure/scripts/yaml-validator.js +397 -0
  796. package/.grimoire/infrastructure/templates/coderabbit.yaml.template +280 -0
  797. package/.grimoire/infrastructure/templates/core-config/core-config-brownfield.tmpl.yaml +177 -0
  798. package/.grimoire/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +169 -0
  799. package/.grimoire/infrastructure/templates/github-workflows/README.md +110 -0
  800. package/.grimoire/infrastructure/templates/github-workflows/ci.yml.template +170 -0
  801. package/.grimoire/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -0
  802. package/.grimoire/infrastructure/templates/github-workflows/release.yml.template +197 -0
  803. package/.grimoire/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +20 -0
  804. package/.grimoire/infrastructure/templates/gitignore/gitignore-grimoire-base.tmpl +65 -0
  805. package/.grimoire/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -0
  806. package/.grimoire/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -0
  807. package/.grimoire/infrastructure/templates/grimoire-sync.yaml.template +183 -0
  808. package/.grimoire/infrastructure/templates/project-docs/coding-standards-tmpl.md +347 -0
  809. package/.grimoire/infrastructure/templates/project-docs/source-tree-tmpl.md +179 -0
  810. package/.grimoire/infrastructure/templates/project-docs/tech-stack-tmpl.md +269 -0
  811. package/.grimoire/infrastructure/tests/project-status-loader.test.js +569 -0
  812. package/.grimoire/infrastructure/tests/regression-suite-v2.md +622 -0
  813. package/.grimoire/infrastructure/tests/validate-module.js +98 -0
  814. package/.grimoire/infrastructure/tests/worktree-manager.test.js +620 -0
  815. package/.grimoire/infrastructure/tools/README.md +224 -0
  816. package/.grimoire/infrastructure/tools/cli/github-cli.yaml +200 -0
  817. package/.grimoire/infrastructure/tools/cli/llm-routing.yaml +128 -0
  818. package/.grimoire/infrastructure/tools/cli/railway-cli.yaml +260 -0
  819. package/.grimoire/infrastructure/tools/cli/supabase-cli.yaml +224 -0
  820. package/.grimoire/infrastructure/tools/local/ffmpeg.yaml +261 -0
  821. package/.grimoire/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -0
  822. package/.grimoire/infrastructure/tools/mcp/browser.yaml +103 -0
  823. package/.grimoire/infrastructure/tools/mcp/clickup.yaml +535 -0
  824. package/.grimoire/infrastructure/tools/mcp/context7.yaml +78 -0
  825. package/.grimoire/infrastructure/tools/mcp/desktop-commander.yaml +180 -0
  826. package/.grimoire/infrastructure/tools/mcp/exa.yaml +103 -0
  827. package/.grimoire/infrastructure/tools/mcp/google-workspace.yaml +930 -0
  828. package/.grimoire/infrastructure/tools/mcp/n8n.yaml +551 -0
  829. package/.grimoire/infrastructure/tools/mcp/supabase.yaml +808 -0
  830. package/.grimoire/install-manifest.yaml +4058 -0
  831. package/.grimoire/local-config.yaml.template +73 -0
  832. package/.grimoire/manifests/schema/manifest-schema.json +191 -0
  833. package/.grimoire/monitor/hooks/lib/__init__.py +2 -0
  834. package/.grimoire/monitor/hooks/lib/enrich.py +59 -0
  835. package/.grimoire/monitor/hooks/lib/send_event.py +48 -0
  836. package/.grimoire/monitor/hooks/notification.py +30 -0
  837. package/.grimoire/monitor/hooks/post_tool_use.py +46 -0
  838. package/.grimoire/monitor/hooks/pre_compact.py +30 -0
  839. package/.grimoire/monitor/hooks/pre_tool_use.py +41 -0
  840. package/.grimoire/monitor/hooks/stop.py +30 -0
  841. package/.grimoire/monitor/hooks/subagent_stop.py +30 -0
  842. package/.grimoire/monitor/hooks/user_prompt_submit.py +39 -0
  843. package/.grimoire/package.json +104 -0
  844. package/.grimoire/presets/README.md +359 -0
  845. package/.grimoire/product/README.md +57 -0
  846. package/.grimoire/product/checklists/accessibility-wcag-checklist.md +80 -0
  847. package/.grimoire/product/checklists/architect-checklist.md +444 -0
  848. package/.grimoire/product/checklists/change-checklist.md +183 -0
  849. package/.grimoire/product/checklists/component-quality-checklist.md +74 -0
  850. package/.grimoire/product/checklists/database-design-checklist.md +119 -0
  851. package/.grimoire/product/checklists/dba-predeploy-checklist.md +97 -0
  852. package/.grimoire/product/checklists/dba-rollback-checklist.md +99 -0
  853. package/.grimoire/product/checklists/migration-readiness-checklist.md +75 -0
  854. package/.grimoire/product/checklists/pattern-audit-checklist.md +88 -0
  855. package/.grimoire/product/checklists/pm-checklist.md +376 -0
  856. package/.grimoire/product/checklists/po-master-checklist.md +442 -0
  857. package/.grimoire/product/checklists/pre-push-checklist.md +108 -0
  858. package/.grimoire/product/checklists/release-checklist.md +122 -0
  859. package/.grimoire/product/checklists/self-critique-checklist.md +387 -0
  860. package/.grimoire/product/checklists/story-dod-checklist.md +102 -0
  861. package/.grimoire/product/checklists/story-draft-checklist.md +216 -0
  862. package/.grimoire/product/data/atomic-design-principles.md +108 -0
  863. package/.grimoire/product/data/brainstorming-techniques.md +37 -0
  864. package/.grimoire/product/data/consolidation-algorithms.md +142 -0
  865. package/.grimoire/product/data/database-best-practices.md +182 -0
  866. package/.grimoire/product/data/design-token-best-practices.md +107 -0
  867. package/.grimoire/product/data/elicitation-methods.md +135 -0
  868. package/.grimoire/product/data/integration-patterns.md +207 -0
  869. package/.grimoire/product/data/migration-safety-guide.md +329 -0
  870. package/.grimoire/product/data/mode-selection-best-practices.md +471 -0
  871. package/.grimoire/product/data/postgres-tuning-guide.md +300 -0
  872. package/.grimoire/product/data/rls-security-patterns.md +333 -0
  873. package/.grimoire/product/data/roi-calculation-guide.md +142 -0
  874. package/.grimoire/product/data/supabase-patterns.md +330 -0
  875. package/.grimoire/product/data/test-levels-framework.md +149 -0
  876. package/.grimoire/product/data/test-priorities-matrix.md +175 -0
  877. package/.grimoire/product/data/wcag-compliance-guide.md +267 -0
  878. package/.grimoire/product/templates/activation-instructions-inline-greeting.yaml +64 -0
  879. package/.grimoire/product/templates/activation-instructions-template.md +260 -0
  880. package/.grimoire/product/templates/adr.hbs +126 -0
  881. package/.grimoire/product/templates/agent-template.yaml +122 -0
  882. package/.grimoire/product/templates/architecture-tmpl.yaml +651 -0
  883. package/.grimoire/product/templates/brainstorming-output-tmpl.yaml +156 -0
  884. package/.grimoire/product/templates/brownfield-architecture-tmpl.yaml +476 -0
  885. package/.grimoire/product/templates/brownfield-prd-tmpl.yaml +280 -0
  886. package/.grimoire/product/templates/brownfield-risk-report-tmpl.yaml +278 -0
  887. package/.grimoire/product/templates/changelog-template.md +134 -0
  888. package/.grimoire/product/templates/command-rationalization-matrix.md +154 -0
  889. package/.grimoire/product/templates/competitor-analysis-tmpl.yaml +293 -0
  890. package/.grimoire/product/templates/component-react-tmpl.tsx +98 -0
  891. package/.grimoire/product/templates/current-approach-tmpl.md +56 -0
  892. package/.grimoire/product/templates/dbdr.hbs +242 -0
  893. package/.grimoire/product/templates/design-story-tmpl.yaml +588 -0
  894. package/.grimoire/product/templates/ds-artifact-analysis.md +70 -0
  895. package/.grimoire/product/templates/engine/elicitation.js +298 -0
  896. package/.grimoire/product/templates/engine/index.js +310 -0
  897. package/.grimoire/product/templates/engine/loader.js +232 -0
  898. package/.grimoire/product/templates/engine/renderer.js +343 -0
  899. package/.grimoire/product/templates/engine/schemas/adr.schema.json +102 -0
  900. package/.grimoire/product/templates/engine/schemas/dbdr.schema.json +205 -0
  901. package/.grimoire/product/templates/engine/schemas/epic.schema.json +175 -0
  902. package/.grimoire/product/templates/engine/schemas/pmdr.schema.json +175 -0
  903. package/.grimoire/product/templates/engine/schemas/prd-v2.schema.json +300 -0
  904. package/.grimoire/product/templates/engine/schemas/prd.schema.json +152 -0
  905. package/.grimoire/product/templates/engine/schemas/story.schema.json +222 -0
  906. package/.grimoire/product/templates/engine/schemas/task.schema.json +154 -0
  907. package/.grimoire/product/templates/engine/validator.js +295 -0
  908. package/.grimoire/product/templates/epic.hbs +213 -0
  909. package/.grimoire/product/templates/eslintrc-security.json +32 -0
  910. package/.grimoire/product/templates/front-end-architecture-tmpl.yaml +206 -0
  911. package/.grimoire/product/templates/front-end-spec-tmpl.yaml +349 -0
  912. package/.grimoire/product/templates/fullstack-architecture-tmpl.yaml +805 -0
  913. package/.grimoire/product/templates/gemini/settings.json +81 -0
  914. package/.grimoire/product/templates/github-actions-cd.yml +213 -0
  915. package/.grimoire/product/templates/github-actions-ci.yml +173 -0
  916. package/.grimoire/product/templates/github-pr-template.md +68 -0
  917. package/.grimoire/product/templates/gordon-mcp.yaml +141 -0
  918. package/.grimoire/product/templates/grimoire-ai-config.yaml +107 -0
  919. package/.grimoire/product/templates/ide-rules/antigravity-rules.md +117 -0
  920. package/.grimoire/product/templates/ide-rules/claude-rules.md +233 -0
  921. package/.grimoire/product/templates/ide-rules/codex-rules.md +67 -0
  922. package/.grimoire/product/templates/ide-rules/copilot-rules.md +94 -0
  923. package/.grimoire/product/templates/ide-rules/cursor-rules.md +116 -0
  924. package/.grimoire/product/templates/ide-rules/gemini-rules.md +89 -0
  925. package/.grimoire/product/templates/index-strategy-tmpl.yaml +53 -0
  926. package/.grimoire/product/templates/market-research-tmpl.yaml +252 -0
  927. package/.grimoire/product/templates/mcp-workflow.js +273 -0
  928. package/.grimoire/product/templates/migration-plan-tmpl.yaml +1022 -0
  929. package/.grimoire/product/templates/migration-strategy-tmpl.md +524 -0
  930. package/.grimoire/product/templates/personalized-agent-template.md +260 -0
  931. package/.grimoire/product/templates/personalized-checklist-template.md +341 -0
  932. package/.grimoire/product/templates/personalized-task-template-v2.md +907 -0
  933. package/.grimoire/product/templates/personalized-task-template.md +345 -0
  934. package/.grimoire/product/templates/personalized-template-file.yaml +323 -0
  935. package/.grimoire/product/templates/personalized-workflow-template.yaml +461 -0
  936. package/.grimoire/product/templates/pmdr.hbs +187 -0
  937. package/.grimoire/product/templates/prd-tmpl.yaml +202 -0
  938. package/.grimoire/product/templates/prd-v2.0.hbs +217 -0
  939. package/.grimoire/product/templates/prd.hbs +202 -0
  940. package/.grimoire/product/templates/project-brief-tmpl.yaml +221 -0
  941. package/.grimoire/product/templates/qa-gate-tmpl.yaml +240 -0
  942. package/.grimoire/product/templates/qa-report-tmpl.md +235 -0
  943. package/.grimoire/product/templates/rls-policies-tmpl.yaml +1203 -0
  944. package/.grimoire/product/templates/schema-design-tmpl.yaml +428 -0
  945. package/.grimoire/product/templates/shock-report-tmpl.html +502 -0
  946. package/.grimoire/product/templates/spec-tmpl.md +235 -0
  947. package/.grimoire/product/templates/state-persistence-tmpl.yaml +219 -0
  948. package/.grimoire/product/templates/statusline/statusline-script.js +190 -0
  949. package/.grimoire/product/templates/statusline/track-agent.sh +70 -0
  950. package/.grimoire/product/templates/story-tmpl.yaml +369 -0
  951. package/.grimoire/product/templates/story.hbs +264 -0
  952. package/.grimoire/product/templates/task-execution-report.md +496 -0
  953. package/.grimoire/product/templates/task-template.md +123 -0
  954. package/.grimoire/product/templates/task.hbs +171 -0
  955. package/.grimoire/product/templates/tmpl-comment-on-examples.sql +158 -0
  956. package/.grimoire/product/templates/tmpl-migration-script.sql +91 -0
  957. package/.grimoire/product/templates/tmpl-rls-granular-policies.sql +104 -0
  958. package/.grimoire/product/templates/tmpl-rls-kiss-policy.sql +10 -0
  959. package/.grimoire/product/templates/tmpl-rls-roles.sql +135 -0
  960. package/.grimoire/product/templates/tmpl-rls-simple.sql +77 -0
  961. package/.grimoire/product/templates/tmpl-rls-tenant.sql +152 -0
  962. package/.grimoire/product/templates/tmpl-rollback-script.sql +77 -0
  963. package/.grimoire/product/templates/tmpl-seed-data.sql +140 -0
  964. package/.grimoire/product/templates/tmpl-smoke-test.sql +16 -0
  965. package/.grimoire/product/templates/tmpl-staging-copy-merge.sql +139 -0
  966. package/.grimoire/product/templates/tmpl-stored-proc.sql +140 -0
  967. package/.grimoire/product/templates/tmpl-trigger.sql +152 -0
  968. package/.grimoire/product/templates/tmpl-view-materialized.sql +133 -0
  969. package/.grimoire/product/templates/tmpl-view.sql +177 -0
  970. package/.grimoire/product/templates/token-exports-css-tmpl.css +240 -0
  971. package/.grimoire/product/templates/token-exports-tailwind-tmpl.js +395 -0
  972. package/.grimoire/product/templates/tokens-schema-tmpl.yaml +305 -0
  973. package/.grimoire/product/templates/workflow-template.yaml +152 -0
  974. package/.grimoire/project-config.yaml +166 -0
  975. package/.grimoire/quality/metrics-collector.js +601 -0
  976. package/.grimoire/quality/metrics-hook.js +261 -0
  977. package/.grimoire/quality/schemas/quality-metrics.schema.json +234 -0
  978. package/.grimoire/quality/seed-metrics.js +336 -0
  979. package/.grimoire/schemas/README.md +405 -0
  980. package/.grimoire/schemas/agent-v3-schema.json +395 -0
  981. package/.grimoire/schemas/squad-design-schema.json +300 -0
  982. package/.grimoire/schemas/squad-schema.json +187 -0
  983. package/.grimoire/schemas/task-v3-schema.json +354 -0
  984. package/.grimoire/schemas/validate-v3-schema.js +431 -0
  985. package/.grimoire/scripts/README.md +124 -0
  986. package/.grimoire/scripts/batch-migrate-phase1.ps1 +37 -0
  987. package/.grimoire/scripts/batch-migrate-phase2.ps1 +89 -0
  988. package/.grimoire/scripts/batch-migrate-phase3.ps1 +46 -0
  989. package/.grimoire/scripts/command-execution-hook.js +202 -0
  990. package/.grimoire/scripts/diagnostics/diagnose-installation.js +276 -0
  991. package/.grimoire/scripts/diagnostics/diagnose-npx-issue.ps1 +98 -0
  992. package/.grimoire/scripts/diagnostics/health-dashboard/README.md +123 -0
  993. package/.grimoire/scripts/diagnostics/health-dashboard/index.html +14 -0
  994. package/.grimoire/scripts/diagnostics/health-dashboard/package-lock.json +5262 -0
  995. package/.grimoire/scripts/diagnostics/health-dashboard/package.json +25 -0
  996. package/.grimoire/scripts/diagnostics/health-dashboard/public/favicon.svg +10 -0
  997. package/.grimoire/scripts/diagnostics/health-dashboard/src/App.jsx +22 -0
  998. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/AutoFixLog.css +122 -0
  999. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/AutoFixLog.jsx +72 -0
  1000. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/DomainCard.css +121 -0
  1001. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/DomainCard.jsx +116 -0
  1002. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/HealthScore.css +80 -0
  1003. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/HealthScore.jsx +81 -0
  1004. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/IssuesList.css +184 -0
  1005. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/IssuesList.jsx +145 -0
  1006. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/TechDebtList.css +114 -0
  1007. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/TechDebtList.jsx +72 -0
  1008. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/index.js +9 -0
  1009. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Card.css +44 -0
  1010. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Card.jsx +25 -0
  1011. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Chart.css +14 -0
  1012. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Chart.jsx +138 -0
  1013. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Header.css +54 -0
  1014. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/Header.jsx +22 -0
  1015. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/StatusBadge.css +77 -0
  1016. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/StatusBadge.jsx +45 -0
  1017. package/.grimoire/scripts/diagnostics/health-dashboard/src/components/shared/index.js +4 -0
  1018. package/.grimoire/scripts/diagnostics/health-dashboard/src/hooks/index.js +2 -0
  1019. package/.grimoire/scripts/diagnostics/health-dashboard/src/hooks/useAutoRefresh.js +89 -0
  1020. package/.grimoire/scripts/diagnostics/health-dashboard/src/hooks/useHealthData.js +308 -0
  1021. package/.grimoire/scripts/diagnostics/health-dashboard/src/main.jsx +13 -0
  1022. package/.grimoire/scripts/diagnostics/health-dashboard/src/pages/Dashboard.css +238 -0
  1023. package/.grimoire/scripts/diagnostics/health-dashboard/src/pages/Dashboard.jsx +154 -0
  1024. package/.grimoire/scripts/diagnostics/health-dashboard/src/pages/DomainDetail.css +259 -0
  1025. package/.grimoire/scripts/diagnostics/health-dashboard/src/pages/DomainDetail.jsx +164 -0
  1026. package/.grimoire/scripts/diagnostics/health-dashboard/src/pages/index.js +2 -0
  1027. package/.grimoire/scripts/diagnostics/health-dashboard/src/styles/App.css +19 -0
  1028. package/.grimoire/scripts/diagnostics/health-dashboard/src/styles/index.css +67 -0
  1029. package/.grimoire/scripts/diagnostics/health-dashboard/vite.config.js +23 -0
  1030. package/.grimoire/scripts/diagnostics/quick-diagnose.cmd +86 -0
  1031. package/.grimoire/scripts/diagnostics/quick-diagnose.ps1 +118 -0
  1032. package/.grimoire/scripts/grimoire-doc-template.md +326 -0
  1033. package/.grimoire/scripts/migrate-framework-docs.sh +302 -0
  1034. package/.grimoire/scripts/pm.sh +455 -0
  1035. package/.grimoire/scripts/session-context-loader.js +46 -0
  1036. package/.grimoire/scripts/test-template-system.js +942 -0
  1037. package/.grimoire/scripts/update-grimoire.sh +176 -0
  1038. package/.grimoire/scripts/validate-phase1.ps1 +36 -0
  1039. package/.grimoire/scripts/workflow-management.md +70 -0
  1040. package/.grimoire/user-guide.md +1411 -0
  1041. package/.grimoire/utils/format-duration.js +95 -0
  1042. package/.grimoire/utils/grimoire-validator.js +27 -0
  1043. package/.grimoire/workflow-intelligence/__tests__/confidence-scorer.test.js +334 -0
  1044. package/.grimoire/workflow-intelligence/__tests__/integration.test.js +339 -0
  1045. package/.grimoire/workflow-intelligence/__tests__/suggestion-engine.test.js +437 -0
  1046. package/.grimoire/workflow-intelligence/__tests__/wave-analyzer.test.js +447 -0
  1047. package/.grimoire/workflow-intelligence/__tests__/workflow-registry.test.js +302 -0
  1048. package/.grimoire/workflow-intelligence/engine/confidence-scorer.js +306 -0
  1049. package/.grimoire/workflow-intelligence/engine/output-formatter.js +299 -0
  1050. package/.grimoire/workflow-intelligence/engine/suggestion-engine.js +798 -0
  1051. package/.grimoire/workflow-intelligence/engine/wave-analyzer.js +683 -0
  1052. package/.grimoire/workflow-intelligence/index.js +330 -0
  1053. package/.grimoire/workflow-intelligence/learning/capture-hook.js +148 -0
  1054. package/.grimoire/workflow-intelligence/learning/gotcha-registry.js +654 -0
  1055. package/.grimoire/workflow-intelligence/learning/index.js +306 -0
  1056. package/.grimoire/workflow-intelligence/learning/pattern-capture.js +330 -0
  1057. package/.grimoire/workflow-intelligence/learning/pattern-store.js +497 -0
  1058. package/.grimoire/workflow-intelligence/learning/pattern-validator.js +310 -0
  1059. package/.grimoire/workflow-intelligence/learning/qa-feedback.js +586 -0
  1060. package/.grimoire/workflow-intelligence/learning/semantic-search.js +521 -0
  1061. package/.grimoire/workflow-intelligence/registry/workflow-registry.js +357 -0
  1062. package/.grimoire/working-in-the-brownfield.md +362 -0
  1063. package/LICENSE +25 -0
  1064. package/README.md +59 -0
  1065. package/bin/grimoire-ids.js +560 -0
  1066. package/bin/grimoire-init.js +1232 -0
  1067. package/bin/grimoire-minimal.js +40 -0
  1068. package/bin/grimoire.js +1118 -0
  1069. package/bin/modules/env-config.js +436 -0
  1070. package/bin/modules/mcp-installer.js +384 -0
  1071. package/bin/utils/install-errors.js +340 -0
  1072. package/bin/utils/install-transaction.js +447 -0
  1073. package/bin/utils/pro-detector.js +110 -0
  1074. package/package.json +158 -0
  1075. package/packages/gemini-grimoire-extension/README.md +55 -0
  1076. package/packages/gemini-grimoire-extension/commands/grimoire-agent.js +7 -0
  1077. package/packages/gemini-grimoire-extension/commands/grimoire-agents.js +51 -0
  1078. package/packages/gemini-grimoire-extension/commands/grimoire-analyst.js +6 -0
  1079. package/packages/gemini-grimoire-extension/commands/grimoire-architect.js +6 -0
  1080. package/packages/gemini-grimoire-extension/commands/grimoire-data-engineer.js +6 -0
  1081. package/packages/gemini-grimoire-extension/commands/grimoire-dev.js +6 -0
  1082. package/packages/gemini-grimoire-extension/commands/grimoire-devops.js +6 -0
  1083. package/packages/gemini-grimoire-extension/commands/grimoire-master.js +7 -0
  1084. package/packages/gemini-grimoire-extension/commands/grimoire-menu.js +6 -0
  1085. package/packages/gemini-grimoire-extension/commands/grimoire-pm.js +6 -0
  1086. package/packages/gemini-grimoire-extension/commands/grimoire-po.js +6 -0
  1087. package/packages/gemini-grimoire-extension/commands/grimoire-qa.js +6 -0
  1088. package/packages/gemini-grimoire-extension/commands/grimoire-sm.js +6 -0
  1089. package/packages/gemini-grimoire-extension/commands/grimoire-squad-creator.js +6 -0
  1090. package/packages/gemini-grimoire-extension/commands/grimoire-status.js +68 -0
  1091. package/packages/gemini-grimoire-extension/commands/grimoire-ux-design-expert.js +6 -0
  1092. package/packages/gemini-grimoire-extension/commands/grimoire-validate.js +35 -0
  1093. package/packages/gemini-grimoire-extension/commands/lib/agent-launcher.js +147 -0
  1094. package/packages/gemini-grimoire-extension/extension.json +149 -0
  1095. package/packages/gemini-grimoire-extension/gemini-extension.json +149 -0
  1096. package/packages/gemini-grimoire-extension/hooks/hooks.json +72 -0
  1097. package/packages/grimoire-install/.releaserc.json +39 -0
  1098. package/packages/grimoire-install/CHANGELOG.md +33 -0
  1099. package/packages/grimoire-install/README.md +119 -0
  1100. package/packages/grimoire-install/bin/edmcp.js +80 -0
  1101. package/packages/grimoire-install/bin/grimoire-install.js +51 -0
  1102. package/packages/grimoire-install/jest.config.js +27 -0
  1103. package/packages/grimoire-install/package.json +68 -0
  1104. package/packages/grimoire-install/src/dep-checker.js +306 -0
  1105. package/packages/grimoire-install/src/edmcp/index.js +382 -0
  1106. package/packages/grimoire-install/src/installer.js +487 -0
  1107. package/packages/grimoire-install/src/os-detector.js +280 -0
  1108. package/packages/grimoire-pro-cli/bin/grimoire-pro.js +233 -0
  1109. package/packages/grimoire-pro-cli/package.json +38 -0
  1110. package/packages/grimoire-pro-cli/src/recover.js +101 -0
  1111. package/packages/installer/package.json +40 -0
  1112. package/packages/installer/src/__tests__/performance-benchmark.js +384 -0
  1113. package/packages/installer/src/config/configure-environment.js +373 -0
  1114. package/packages/installer/src/config/ide-configs.js +161 -0
  1115. package/packages/installer/src/config/templates/core-config-template.js +199 -0
  1116. package/packages/installer/src/config/templates/env-template.js +272 -0
  1117. package/packages/installer/src/config/validation/config-validator.js +244 -0
  1118. package/packages/installer/src/detection/detect-project-type.js +83 -0
  1119. package/packages/installer/src/installer/brownfield-upgrader.js +440 -0
  1120. package/packages/installer/src/installer/dependency-installer.js +335 -0
  1121. package/packages/installer/src/installer/file-hasher.js +234 -0
  1122. package/packages/installer/src/installer/grimoire-core-installer.js +428 -0
  1123. package/packages/installer/src/installer/manifest-signature.js +380 -0
  1124. package/packages/installer/src/installer/post-install-validator.js +1524 -0
  1125. package/packages/installer/src/merger/index.js +72 -0
  1126. package/packages/installer/src/merger/parsers/env-parser.js +153 -0
  1127. package/packages/installer/src/merger/parsers/markdown-section-parser.js +199 -0
  1128. package/packages/installer/src/merger/strategies/base-merger.js +61 -0
  1129. package/packages/installer/src/merger/strategies/env-merger.js +138 -0
  1130. package/packages/installer/src/merger/strategies/index.js +105 -0
  1131. package/packages/installer/src/merger/strategies/markdown-merger.js +208 -0
  1132. package/packages/installer/src/merger/strategies/replace-merger.js +68 -0
  1133. package/packages/installer/src/merger/types.js +72 -0
  1134. package/packages/installer/src/pro/pro-scaffolder.js +387 -0
  1135. package/packages/installer/src/updater/index.js +814 -0
  1136. package/packages/installer/src/utils/grimoire-colors.js +235 -0
  1137. package/packages/installer/src/wizard/feedback.js +232 -0
  1138. package/packages/installer/src/wizard/i18n.js +230 -0
  1139. package/packages/installer/src/wizard/ide-config-generator.js +993 -0
  1140. package/packages/installer/src/wizard/ide-selector.js +86 -0
  1141. package/packages/installer/src/wizard/index.js +831 -0
  1142. package/packages/installer/src/wizard/pro-setup.js +1223 -0
  1143. package/packages/installer/src/wizard/questions.js +336 -0
  1144. package/packages/installer/src/wizard/validation/index.js +121 -0
  1145. package/packages/installer/src/wizard/validation/report-generator.js +254 -0
  1146. package/packages/installer/src/wizard/validation/troubleshooting-system.js +348 -0
  1147. package/packages/installer/src/wizard/validation/validators/config-validator.js +364 -0
  1148. package/packages/installer/src/wizard/validation/validators/dependency-validator.js +333 -0
  1149. package/packages/installer/src/wizard/validation/validators/file-structure-validator.js +175 -0
  1150. package/packages/installer/src/wizard/validation/validators/mcp-health-checker.js +310 -0
  1151. package/packages/installer/src/wizard/validators.js +274 -0
  1152. package/packages/installer/src/wizard/wizard.js +246 -0
  1153. package/packages/installer/tests/integration/environment-configuration.test.js +331 -0
  1154. package/packages/installer/tests/integration/wizard-detection.test.js +353 -0
  1155. package/packages/installer/tests/unit/config-validator.test.js +316 -0
  1156. package/packages/installer/tests/unit/detection/detect-project-type.test.js +403 -0
  1157. package/packages/installer/tests/unit/env-template.test.js +189 -0
  1158. package/packages/installer/tests/unit/merger/env-merger.test.js +192 -0
  1159. package/packages/installer/tests/unit/merger/markdown-merger.test.js +262 -0
  1160. package/packages/installer/tests/unit/merger/strategies.test.js +153 -0
  1161. package/scripts/check-markdown-links.py +353 -0
  1162. package/scripts/code-intel-health-check.js +344 -0
  1163. package/scripts/dashboard-parallel-dev.sh +184 -0
  1164. package/scripts/dashboard-parallel-phase3.sh +130 -0
  1165. package/scripts/dashboard-parallel-phase4.sh +131 -0
  1166. package/scripts/ensure-manifest.js +59 -0
  1167. package/scripts/generate-install-manifest.js +368 -0
  1168. package/scripts/install-monitor-hooks.sh +83 -0
  1169. package/scripts/package-synapse.js +325 -0
  1170. package/scripts/semantic-lint.js +191 -0
  1171. package/scripts/sign-manifest.ps1 +132 -0
  1172. package/scripts/sign-manifest.sh +122 -0
  1173. package/scripts/validate-manifest.js +267 -0
  1174. package/scripts/validate-package-completeness.js +319 -0
@@ -0,0 +1,1406 @@
1
+ /**
2
+ * Squad Generator
3
+ *
4
+ * Generates squad structure following task-first architecture.
5
+ * Used by the *create-squad task of the squad-creator agent.
6
+ *
7
+ * @module squad-generator
8
+ * @version 1.0.0
9
+ * @see Story SQS-4: Squad Creator Agent + Tasks
10
+ */
11
+
12
+ const fs = require('fs').promises;
13
+ const path = require('path');
14
+ const { execSync } = require('child_process');
15
+ const yaml = require('js-yaml');
16
+
17
+ /**
18
+ * Default path for squads directory
19
+ * @constant {string}
20
+ */
21
+ const DEFAULT_SQUADS_PATH = './squads';
22
+
23
+ /**
24
+ * Default path for squad designs directory
25
+ * @constant {string}
26
+ */
27
+ const DEFAULT_DESIGNS_PATH = './squads/.designs';
28
+
29
+ /**
30
+ * Path to squad design schema
31
+ * @constant {string}
32
+ */
33
+ const SQUAD_DESIGN_SCHEMA_PATH = path.join(__dirname, '../../schemas/squad-design-schema.json');
34
+
35
+ /**
36
+ * Default grimoire minimum version
37
+ * @constant {string}
38
+ */
39
+ const DEFAULT_grimoire_MIN_VERSION = '2.1.0';
40
+
41
+ /**
42
+ * Available templates
43
+ * @constant {string[]}
44
+ */
45
+ const AVAILABLE_TEMPLATES = ['basic', 'etl', 'agent-only'];
46
+
47
+ /**
48
+ * Available config modes
49
+ * @constant {string[]}
50
+ */
51
+ const CONFIG_MODES = ['extend', 'override', 'none'];
52
+
53
+ /**
54
+ * Available licenses
55
+ * @constant {string[]}
56
+ */
57
+ const AVAILABLE_LICENSES = ['MIT', 'Apache-2.0', 'ISC', 'UNLICENSED'];
58
+
59
+ /**
60
+ * Directories to create in squad structure
61
+ * @constant {string[]}
62
+ */
63
+ const SQUAD_DIRECTORIES = [
64
+ '',
65
+ 'config',
66
+ 'agents',
67
+ 'tasks',
68
+ 'workflows',
69
+ 'checklists',
70
+ 'templates',
71
+ 'tools',
72
+ 'scripts',
73
+ 'data',
74
+ ];
75
+
76
+ /**
77
+ * Error codes for SquadGeneratorError
78
+ * @enum {string}
79
+ */
80
+ const GeneratorErrorCodes = {
81
+ INVALID_NAME: 'INVALID_NAME',
82
+ SQUAD_EXISTS: 'SQUAD_EXISTS',
83
+ PERMISSION_DENIED: 'PERMISSION_DENIED',
84
+ TEMPLATE_NOT_FOUND: 'TEMPLATE_NOT_FOUND',
85
+ INVALID_CONFIG_MODE: 'INVALID_CONFIG_MODE',
86
+ BLUEPRINT_NOT_FOUND: 'BLUEPRINT_NOT_FOUND',
87
+ BLUEPRINT_INVALID: 'BLUEPRINT_INVALID',
88
+ BLUEPRINT_PARSE_ERROR: 'BLUEPRINT_PARSE_ERROR',
89
+ SCHEMA_NOT_FOUND: 'SCHEMA_NOT_FOUND',
90
+ };
91
+
92
+ /**
93
+ * Custom error class for Squad Generator operations
94
+ * @extends Error
95
+ */
96
+ class SquadGeneratorError extends Error {
97
+ /**
98
+ * Create a SquadGeneratorError
99
+ * @param {string} code - Error code from GeneratorErrorCodes enum
100
+ * @param {string} message - Human-readable error message
101
+ * @param {string} [suggestion] - Suggested fix for the error
102
+ */
103
+ constructor(code, message, suggestion) {
104
+ super(message);
105
+ this.name = 'SquadGeneratorError';
106
+ this.code = code;
107
+ this.suggestion = suggestion || '';
108
+
109
+ if (Error.captureStackTrace) {
110
+ Error.captureStackTrace(this, SquadGeneratorError);
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Create error for invalid squad name
116
+ * @param {string} name - Invalid name provided
117
+ * @returns {SquadGeneratorError}
118
+ */
119
+ static invalidName(name) {
120
+ return new SquadGeneratorError(
121
+ GeneratorErrorCodes.INVALID_NAME,
122
+ `Invalid squad name "${name}": must be kebab-case (lowercase letters, numbers, hyphens)`,
123
+ 'Use format: my-squad-name (lowercase, hyphens only)',
124
+ );
125
+ }
126
+
127
+ /**
128
+ * Create error for existing squad
129
+ * @param {string} name - Squad name that exists
130
+ * @param {string} squadPath - Path where squad exists
131
+ * @returns {SquadGeneratorError}
132
+ */
133
+ static squadExists(name, squadPath) {
134
+ return new SquadGeneratorError(
135
+ GeneratorErrorCodes.SQUAD_EXISTS,
136
+ `Squad "${name}" already exists at ${squadPath}`,
137
+ `Choose a different name or delete existing squad: rm -rf ${squadPath}`,
138
+ );
139
+ }
140
+
141
+ /**
142
+ * Create error for invalid template
143
+ * @param {string} template - Invalid template name
144
+ * @returns {SquadGeneratorError}
145
+ */
146
+ static templateNotFound(template) {
147
+ return new SquadGeneratorError(
148
+ GeneratorErrorCodes.TEMPLATE_NOT_FOUND,
149
+ `Template "${template}" not found`,
150
+ `Available templates: ${AVAILABLE_TEMPLATES.join(', ')}`,
151
+ );
152
+ }
153
+
154
+ /**
155
+ * Create error for invalid config mode
156
+ * @param {string} mode - Invalid config mode
157
+ * @returns {SquadGeneratorError}
158
+ */
159
+ static invalidConfigMode(mode) {
160
+ return new SquadGeneratorError(
161
+ GeneratorErrorCodes.INVALID_CONFIG_MODE,
162
+ `Invalid config mode "${mode}"`,
163
+ `Available modes: ${CONFIG_MODES.join(', ')}`,
164
+ );
165
+ }
166
+
167
+ /**
168
+ * Create error for blueprint not found
169
+ * @param {string} blueprintPath - Path that doesn't exist
170
+ * @returns {SquadGeneratorError}
171
+ */
172
+ static blueprintNotFound(blueprintPath) {
173
+ return new SquadGeneratorError(
174
+ GeneratorErrorCodes.BLUEPRINT_NOT_FOUND,
175
+ `Blueprint not found at "${blueprintPath}"`,
176
+ 'Generate a blueprint first: *design-squad --docs ./your-docs.md',
177
+ );
178
+ }
179
+
180
+ /**
181
+ * Create error for blueprint parse error
182
+ * @param {string} blueprintPath - Path to blueprint
183
+ * @param {string} parseError - Parse error message
184
+ * @returns {SquadGeneratorError}
185
+ */
186
+ static blueprintParseError(blueprintPath, parseError) {
187
+ return new SquadGeneratorError(
188
+ GeneratorErrorCodes.BLUEPRINT_PARSE_ERROR,
189
+ `Failed to parse blueprint at "${blueprintPath}": ${parseError}`,
190
+ 'Ensure blueprint is valid YAML format',
191
+ );
192
+ }
193
+
194
+ /**
195
+ * Create error for invalid blueprint
196
+ * @param {string[]} validationErrors - List of validation errors
197
+ * @returns {SquadGeneratorError}
198
+ */
199
+ static blueprintInvalid(validationErrors) {
200
+ return new SquadGeneratorError(
201
+ GeneratorErrorCodes.BLUEPRINT_INVALID,
202
+ `Blueprint validation failed:\n - ${validationErrors.join('\n - ')}`,
203
+ 'Fix the validation errors and try again',
204
+ );
205
+ }
206
+
207
+ /**
208
+ * Create error for schema not found
209
+ * @param {string} schemaPath - Path to schema
210
+ * @returns {SquadGeneratorError}
211
+ */
212
+ static schemaNotFound(schemaPath) {
213
+ return new SquadGeneratorError(
214
+ GeneratorErrorCodes.SCHEMA_NOT_FOUND,
215
+ `Schema not found at "${schemaPath}"`,
216
+ 'Ensure grimoire is properly installed',
217
+ );
218
+ }
219
+ }
220
+
221
+ /**
222
+ * Get git user name
223
+ * @returns {string} Git user name or 'Unknown'
224
+ */
225
+ function getGitUserName() {
226
+ try {
227
+ const name = execSync('git config user.name', { encoding: 'utf-8' }).trim();
228
+ return name || 'Unknown';
229
+ } catch {
230
+ return 'Unknown';
231
+ }
232
+ }
233
+
234
+ /**
235
+ * Validate squad name (kebab-case)
236
+ * @param {string} name - Name to validate
237
+ * @returns {boolean} True if valid
238
+ */
239
+ function isValidSquadName(name) {
240
+ // Must be kebab-case: lowercase letters, numbers, and hyphens
241
+ // Must start with letter, end with letter or number
242
+ // Minimum 2 characters
243
+ return /^[a-z][a-z0-9-]*[a-z0-9]$/.test(name) && name.length >= 2;
244
+ }
245
+
246
+ /**
247
+ * Extract slash prefix from squad name
248
+ * @param {string} name - Squad name
249
+ * @returns {string} Slash prefix
250
+ */
251
+ function extractSlashPrefix(name) {
252
+ // Remove -squad suffix if present
253
+ return name.replace(/-squad$/, '');
254
+ }
255
+
256
+ /**
257
+ * Safely quote YAML values that may contain special characters
258
+ * @param {string} val - Value to quote
259
+ * @returns {string} Safely quoted value
260
+ */
261
+ function safeYamlValue(val) {
262
+ if (!val) return '""';
263
+ // Quote if contains special YAML characters or leading/trailing spaces
264
+ if (/[:\n\r"']/.test(val) || val.startsWith(' ') || val.endsWith(' ')) {
265
+ return `"${val.replace(/"/g, '\\"')}"`;
266
+ }
267
+ return val;
268
+ }
269
+
270
+ // =============================================================================
271
+ // TEMPLATES
272
+ // =============================================================================
273
+
274
+ /**
275
+ * Generate squad.yaml content
276
+ * @param {Object} config - Squad configuration
277
+ * @returns {string} YAML content
278
+ */
279
+ function generateSquadYaml(config) {
280
+ const components = {
281
+ tasks: config.includeTask ? ['example-agent-task.md'] : [],
282
+ agents: config.includeAgent ? ['example-agent.md'] : [],
283
+ workflows: [],
284
+ checklists: [],
285
+ templates: [],
286
+ tools: [],
287
+ scripts: [],
288
+ };
289
+
290
+ // For etl template, add more components
291
+ if (config.template === 'etl') {
292
+ components.agents = ['data-extractor.md', 'data-transformer.md'];
293
+ components.tasks = [
294
+ 'extract-data.md',
295
+ 'transform-data.md',
296
+ 'load-data.md',
297
+ ];
298
+ components.scripts = ['utils.js'];
299
+ }
300
+
301
+ // For agent-only template
302
+ if (config.template === 'agent-only') {
303
+ components.agents = ['primary-agent.md', 'helper-agent.md'];
304
+ components.tasks = [];
305
+ }
306
+
307
+ // SQS-10: Use project configs if available, otherwise use local paths
308
+ let configSection;
309
+ if (config.configMode === 'none') {
310
+ configSection = {};
311
+ } else if (config._useProjectConfigs && config._projectConfigs) {
312
+ // Reference project-level config files
313
+ configSection = {
314
+ extends: config.configMode,
315
+ 'coding-standards': config._projectConfigs['coding-standards'] || 'config/coding-standards.md',
316
+ 'tech-stack': config._projectConfigs['tech-stack'] || 'config/tech-stack.md',
317
+ 'source-tree': config._projectConfigs['source-tree'] || 'config/source-tree.md',
318
+ };
319
+ } else {
320
+ // Fallback to local config files
321
+ configSection = {
322
+ extends: config.configMode,
323
+ 'coding-standards': 'config/coding-standards.md',
324
+ 'tech-stack': 'config/tech-stack.md',
325
+ 'source-tree': 'config/source-tree.md',
326
+ };
327
+ }
328
+
329
+ const yaml = `name: ${config.name}
330
+ version: 1.0.0
331
+ description: ${safeYamlValue(config.description || 'Custom squad')}
332
+ author: ${safeYamlValue(config.author || 'Unknown')}
333
+ license: ${config.license || 'MIT'}
334
+ slashPrefix: ${extractSlashPrefix(config.name)}
335
+
336
+ grimoire:
337
+ minVersion: "${config.grimoireMinVersion || DEFAULT_grimoire_MIN_VERSION}"
338
+ type: squad
339
+
340
+ components:
341
+ tasks:${components.tasks.length ? '\n - ' + components.tasks.join('\n - ') : ' []'}
342
+ agents:${components.agents.length ? '\n - ' + components.agents.join('\n - ') : ' []'}
343
+ workflows: []
344
+ checklists: []
345
+ templates: []
346
+ tools: []
347
+ scripts:${components.scripts.length ? '\n - ' + components.scripts.join('\n - ') : ' []'}
348
+
349
+ config:${
350
+ config.configMode === 'none'
351
+ ? ' {}'
352
+ : `
353
+ extends: ${configSection.extends}
354
+ coding-standards: ${configSection['coding-standards']}
355
+ tech-stack: ${configSection['tech-stack']}
356
+ source-tree: ${configSection['source-tree']}`
357
+ }
358
+
359
+ dependencies:
360
+ node: []
361
+ python: []
362
+ squads: []
363
+
364
+ tags:
365
+ - custom
366
+ `;
367
+
368
+ return yaml;
369
+ }
370
+
371
+ /**
372
+ * Generate README.md content
373
+ * @param {Object} config - Squad configuration
374
+ * @returns {string} Markdown content
375
+ */
376
+ function generateReadme(config) {
377
+ return `# ${config.name}
378
+
379
+ ${config.description || 'Custom grimoire squad.'}
380
+
381
+ ## Installation
382
+
383
+ This squad is installed locally in your project:
384
+
385
+ \`\`\`
386
+ ./squads/${config.name}/
387
+ \`\`\`
388
+
389
+ ## Usage
390
+
391
+ Activate agents from this squad and use their commands.
392
+
393
+ ### Available Agents
394
+
395
+ ${config.includeAgent || config.template !== 'basic' ? '- **example-agent** - Example agent (customize or remove)' : '_No agents defined yet_'}
396
+
397
+ ### Available Tasks
398
+
399
+ ${config.includeTask || config.template === 'etl' ? '- **example-agent-task** - Example task (customize or remove)' : '_No tasks defined yet_'}
400
+
401
+ ## Configuration
402
+
403
+ This squad ${config.configMode === 'extend' ? 'extends' : config.configMode === 'override' ? 'overrides' : 'does not inherit'} the core grimoire configuration.
404
+
405
+ ## Development
406
+
407
+ 1. Add agents in \`agents/\` directory
408
+ 2. Add tasks in \`tasks/\` directory (task-first architecture!)
409
+ 3. Update \`squad.yaml\` components section
410
+ 4. Validate: \`@squad-creator *validate-squad ${config.name}\`
411
+
412
+ ## License
413
+
414
+ ${config.license || 'MIT'}
415
+ `;
416
+ }
417
+
418
+ /**
419
+ * Generate coding-standards.md content
420
+ * @param {Object} config - Squad configuration
421
+ * @returns {string} Markdown content
422
+ */
423
+ function generateCodingStandards(config) {
424
+ return `# Coding Standards - ${config.name}
425
+
426
+ > This file ${config.configMode === 'extend' ? 'extends' : config.configMode === 'override' ? 'overrides' : 'is independent of'} the core grimoire coding standards.
427
+
428
+ ## Code Style
429
+
430
+ - Follow consistent naming conventions
431
+ - Use meaningful variable and function names
432
+ - Keep functions small and focused
433
+ - Document complex logic with comments
434
+
435
+ ## File Organization
436
+
437
+ - Place agents in \`agents/\` directory
438
+ - Place tasks in \`tasks/\` directory
439
+ - Place utilities in \`scripts/\` directory
440
+
441
+ ## Testing
442
+
443
+ - Write tests for all new functionality
444
+ - Maintain test coverage above 80%
445
+ - Use descriptive test names
446
+
447
+ ## Documentation
448
+
449
+ - Document all public APIs
450
+ - Include examples in documentation
451
+ - Keep README.md up to date
452
+ `;
453
+ }
454
+
455
+ /**
456
+ * Generate tech-stack.md content
457
+ * @param {Object} config - Squad configuration
458
+ * @returns {string} Markdown content
459
+ */
460
+ function generateTechStack(config) {
461
+ return `# Tech Stack - ${config.name}
462
+
463
+ ## Runtime
464
+
465
+ - Node.js >= 18.x
466
+ - grimoire >= ${config.grimoireMinVersion || DEFAULT_grimoire_MIN_VERSION}
467
+
468
+ ## Dependencies
469
+
470
+ _Add your squad's dependencies here_
471
+
472
+ ## Development Tools
473
+
474
+ - ESLint for code quality
475
+ - Jest for testing
476
+ - Prettier for formatting
477
+ `;
478
+ }
479
+
480
+ /**
481
+ * Generate source-tree.md content
482
+ * @param {Object} config - Squad configuration
483
+ * @returns {string} Markdown content
484
+ */
485
+ function generateSourceTree(config) {
486
+ return `# Source Tree - ${config.name}
487
+
488
+ \`\`\`
489
+ ${config.name}/
490
+ ├── squad.yaml # Squad manifest
491
+ ├── README.md # Documentation
492
+ ├── config/ # Configuration files
493
+ │ ├── coding-standards.md
494
+ │ ├── tech-stack.md
495
+ │ └── source-tree.md
496
+ ├── agents/ # Agent definitions
497
+ ├── tasks/ # Task definitions
498
+ ├── workflows/ # Multi-step workflows
499
+ ├── checklists/ # Validation checklists
500
+ ├── templates/ # Document templates
501
+ ├── tools/ # Custom tools
502
+ ├── scripts/ # Utility scripts
503
+ └── data/ # Static data
504
+ \`\`\`
505
+
506
+ ## Directory Purpose
507
+
508
+ | Directory | Purpose |
509
+ |-----------|---------|
510
+ | \`agents/\` | Agent persona definitions (.md) |
511
+ | \`tasks/\` | Executable task workflows (.md) |
512
+ | \`workflows/\` | Multi-step workflow definitions |
513
+ | \`checklists/\` | Validation and review checklists |
514
+ | \`templates/\` | Document and code templates |
515
+ | \`tools/\` | Custom tool definitions |
516
+ | \`scripts/\` | JavaScript/Python utilities |
517
+ | \`data/\` | Static data files |
518
+ `;
519
+ }
520
+
521
+ /**
522
+ * Generate example agent content
523
+ * @param {Object} config - Squad configuration
524
+ * @returns {string} Markdown content
525
+ */
526
+ function generateExampleAgent(config) {
527
+ const agentName = config.template === 'etl' ? 'data-extractor' : 'example-agent';
528
+ const title = config.template === 'etl' ? 'Data Extractor' : 'Example Agent';
529
+
530
+ return `# ${agentName}
531
+
532
+ ## Agent Definition
533
+
534
+ \`\`\`yaml
535
+ agent:
536
+ name: ${title.replace(/ /g, '')}
537
+ id: ${agentName}
538
+ title: ${title}
539
+ icon: "🤖"
540
+ whenToUse: "Use for ${config.template === 'etl' ? 'extracting data from sources' : 'example purposes - customize this'}"
541
+
542
+ persona:
543
+ role: ${config.template === 'etl' ? 'Data Extraction Specialist' : 'Example Specialist'}
544
+ style: Systematic, thorough
545
+ focus: ${config.template === 'etl' ? 'Extracting data efficiently' : 'Demonstrating squad structure'}
546
+
547
+ commands:
548
+ - name: help
549
+ description: "Show available commands"
550
+ - name: run
551
+ description: "${config.template === 'etl' ? 'Extract data from source' : 'Run example task'}"
552
+ task: ${config.template === 'etl' ? 'extract-data.md' : 'example-agent-task.md'}
553
+ \`\`\`
554
+
555
+ ## Usage
556
+
557
+ \`\`\`
558
+ @${agentName}
559
+ *help
560
+ *run
561
+ \`\`\`
562
+ `;
563
+ }
564
+
565
+ /**
566
+ * Generate example task content
567
+ * @param {Object} config - Squad configuration
568
+ * @returns {string} Markdown content
569
+ */
570
+ function generateExampleTask(config) {
571
+ const taskName = config.template === 'etl' ? 'extract-data' : 'example-agent-task';
572
+ const title = config.template === 'etl' ? 'Extract Data' : 'Example Task';
573
+
574
+ return `---
575
+ task: ${title}
576
+ responsavel: "@${config.template === 'etl' ? 'data-extractor' : 'example-agent'}"
577
+ responsavel_type: agent
578
+ atomic_layer: task
579
+ Entrada: |
580
+ - source: Data source path or URL
581
+ - format: Output format (json, csv, yaml)
582
+ Saida: |
583
+ - data: Extracted data
584
+ - status: Success or error message
585
+ Checklist:
586
+ - "[ ] Validate input parameters"
587
+ - "[ ] Connect to source"
588
+ - "[ ] Extract data"
589
+ - "[ ] Format output"
590
+ - "[ ] Return result"
591
+ ---
592
+
593
+ # *${taskName.replace(/-/g, '-')}
594
+
595
+ ${config.template === 'etl' ? 'Extracts data from the specified source.' : 'Example task demonstrating task-first architecture.'}
596
+
597
+ ## Usage
598
+
599
+ \`\`\`
600
+ @${config.template === 'etl' ? 'data-extractor' : 'example-agent'}
601
+ *${taskName.replace('example-agent-', '')} --source ./data/input.json --format json
602
+ \`\`\`
603
+
604
+ ## Parameters
605
+
606
+ | Parameter | Type | Required | Description |
607
+ |-----------|------|----------|-------------|
608
+ | \`--source\` | string | Yes | Data source path or URL |
609
+ | \`--format\` | string | No | Output format (default: json) |
610
+
611
+ ## Example
612
+
613
+ \`\`\`javascript
614
+ // This is a placeholder - implement your logic here
615
+ async function execute(options) {
616
+ const { source, format } = options;
617
+
618
+ // TODO: Implement extraction logic
619
+ console.log(\`Extracting from \${source} as \${format}\`);
620
+
621
+ return { status: 'success', data: {} };
622
+ }
623
+ \`\`\`
624
+ `;
625
+ }
626
+
627
+ // =============================================================================
628
+ // SQUAD GENERATOR CLASS
629
+ // =============================================================================
630
+
631
+ /**
632
+ * Squad Generator class
633
+ * Generates complete squad structure with all necessary files
634
+ */
635
+ class SquadGenerator {
636
+ /**
637
+ * Create a SquadGenerator
638
+ * @param {Object} options - Generator options
639
+ * @param {string} [options.squadsPath] - Path to squads directory
640
+ */
641
+ constructor(options = {}) {
642
+ this.squadsPath = options.squadsPath || DEFAULT_SQUADS_PATH;
643
+ }
644
+
645
+ /**
646
+ * Check if a path exists
647
+ * @param {string} filePath - Path to check
648
+ * @returns {Promise<boolean>} True if exists
649
+ */
650
+ async pathExists(filePath) {
651
+ try {
652
+ await fs.access(filePath);
653
+ return true;
654
+ } catch {
655
+ return false;
656
+ }
657
+ }
658
+
659
+ /**
660
+ * Detect project-level configuration files in docs/framework/
661
+ * Implements AC10.1: Project Config Detection
662
+ *
663
+ * @param {string} projectRoot - Project root directory
664
+ * @param {string} squadPath - Path to squad being created (for relative paths)
665
+ * @returns {Promise<Object|null>} Detected config paths (relative to squadPath) or null if not found
666
+ * @see Story SQS-10: Project Config Reference for Squads
667
+ */
668
+ async detectProjectConfigs(projectRoot, squadPath) {
669
+ const frameworkDir = path.join(projectRoot, 'docs', 'framework');
670
+
671
+ // Check if docs/framework/ exists
672
+ if (!(await this.pathExists(frameworkDir))) {
673
+ return null;
674
+ }
675
+
676
+ // Config files to detect (case-insensitive variants)
677
+ const configFiles = {
678
+ 'coding-standards': ['CODING-STANDARDS.md', 'coding-standards.md', 'Coding-Standards.md'],
679
+ 'tech-stack': ['TECH-STACK.md', 'tech-stack.md', 'Tech-Stack.md'],
680
+ 'source-tree': ['SOURCE-TREE.md', 'source-tree.md', 'Source-Tree.md'],
681
+ };
682
+
683
+ const detected = {};
684
+
685
+ for (const [key, variants] of Object.entries(configFiles)) {
686
+ for (const filename of variants) {
687
+ const fullPath = path.join(frameworkDir, filename);
688
+ if (await this.pathExists(fullPath)) {
689
+ // Calculate relative path from squad to project config
690
+ detected[key] = path.relative(squadPath, fullPath).replace(/\\/g, '/');
691
+ break;
692
+ }
693
+ }
694
+ }
695
+
696
+ // Only return if at least one config file was found
697
+ const foundCount = Object.keys(detected).length;
698
+ if (foundCount > 0) {
699
+ console.log(`[squad-generator] Detected ${foundCount} project config(s) in docs/framework/`);
700
+ return detected;
701
+ }
702
+
703
+ return null;
704
+ }
705
+
706
+ /**
707
+ * Validate generation configuration
708
+ * @param {Object} config - Configuration to validate
709
+ * @throws {SquadGeneratorError} If validation fails
710
+ */
711
+ validateConfig(config) {
712
+ // Validate name
713
+ if (!config.name) {
714
+ throw new SquadGeneratorError(
715
+ GeneratorErrorCodes.INVALID_NAME,
716
+ 'Squad name is required',
717
+ 'Provide a name: *create-squad my-squad-name',
718
+ );
719
+ }
720
+
721
+ if (!isValidSquadName(config.name)) {
722
+ throw SquadGeneratorError.invalidName(config.name);
723
+ }
724
+
725
+ // Validate template
726
+ if (config.template && !AVAILABLE_TEMPLATES.includes(config.template)) {
727
+ throw SquadGeneratorError.templateNotFound(config.template);
728
+ }
729
+
730
+ // Validate config mode
731
+ if (config.configMode && !CONFIG_MODES.includes(config.configMode)) {
732
+ throw SquadGeneratorError.invalidConfigMode(config.configMode);
733
+ }
734
+ }
735
+
736
+ /**
737
+ * Generate a new squad
738
+ * @param {Object} config - Squad configuration
739
+ * @param {string} config.name - Squad name (kebab-case)
740
+ * @param {string} [config.description] - Squad description
741
+ * @param {string} [config.author] - Author name
742
+ * @param {string} [config.license] - License type
743
+ * @param {string} [config.template='basic'] - Template type
744
+ * @param {string} [config.configMode='extend'] - Config inheritance mode
745
+ * @param {boolean} [config.includeAgent=true] - Include example agent
746
+ * @param {boolean} [config.includeTask=true] - Include example task
747
+ * @param {string} [config.grimoireMinVersion] - Minimum grimoire version
748
+ * @param {string} [config.projectRoot] - Project root directory (for detecting project configs)
749
+ * @returns {Promise<Object>} Generation result with path and files
750
+ * @throws {SquadGeneratorError} If generation fails
751
+ */
752
+ async generate(config) {
753
+ // Set defaults
754
+ const fullConfig = {
755
+ name: config.name,
756
+ description: config.description || 'Custom squad',
757
+ author: config.author || getGitUserName(),
758
+ license: config.license || 'MIT',
759
+ template: config.template || 'basic',
760
+ configMode: config.configMode || 'extend',
761
+ includeAgent: config.includeAgent !== false,
762
+ includeTask: config.includeTask !== false,
763
+ grimoireMinVersion: config.grimoireMinVersion || DEFAULT_grimoire_MIN_VERSION,
764
+ projectRoot: config.projectRoot || process.cwd(),
765
+ };
766
+
767
+ // Validate configuration
768
+ this.validateConfig(fullConfig);
769
+
770
+ const squadPath = path.join(this.squadsPath, fullConfig.name);
771
+
772
+ // SQS-10: Detect project-level configs when configMode is 'extend'
773
+ let projectConfigs = null;
774
+ let useProjectConfigs = false;
775
+
776
+ if (fullConfig.configMode === 'extend') {
777
+ projectConfigs = await this.detectProjectConfigs(fullConfig.projectRoot, squadPath);
778
+ useProjectConfigs = projectConfigs !== null;
779
+
780
+ if (useProjectConfigs) {
781
+ console.log('[squad-generator] Using project-level configuration from docs/framework/');
782
+ }
783
+ }
784
+
785
+ // Store for use in squad.yaml generation
786
+ fullConfig._projectConfigs = projectConfigs;
787
+ fullConfig._useProjectConfigs = useProjectConfigs;
788
+
789
+ // Check if squad already exists
790
+ if (await this.pathExists(squadPath)) {
791
+ throw SquadGeneratorError.squadExists(fullConfig.name, squadPath);
792
+ }
793
+
794
+ // Create directories
795
+ for (const dir of SQUAD_DIRECTORIES) {
796
+ const dirPath = path.join(squadPath, dir);
797
+ await fs.mkdir(dirPath, { recursive: true });
798
+ }
799
+
800
+ // Track generated files
801
+ const files = [];
802
+
803
+ // Generate main files
804
+ const mainFiles = {
805
+ 'squad.yaml': generateSquadYaml(fullConfig),
806
+ 'README.md': generateReadme(fullConfig),
807
+ };
808
+
809
+ for (const [filename, content] of Object.entries(mainFiles)) {
810
+ const filePath = path.join(squadPath, filename);
811
+ await fs.writeFile(filePath, content, 'utf-8');
812
+ files.push(filePath);
813
+ }
814
+
815
+ // Generate config files (SQS-10: skip if using project configs)
816
+ if (useProjectConfigs) {
817
+ // Don't create local config files, just add .gitkeep to config directory
818
+ console.log('[squad-generator] Skipping local config file creation (using project-level configs)');
819
+ const gitkeepPath = path.join(squadPath, 'config', '.gitkeep');
820
+ await fs.writeFile(gitkeepPath, '# Config files are referenced from project docs/framework/\n', 'utf-8');
821
+ files.push(gitkeepPath);
822
+ } else {
823
+ // Fallback: Create local config files (AC10.3)
824
+ console.log('[squad-generator] Creating local configuration files');
825
+ const configFiles = {
826
+ 'config/coding-standards.md': generateCodingStandards(fullConfig),
827
+ 'config/tech-stack.md': generateTechStack(fullConfig),
828
+ 'config/source-tree.md': generateSourceTree(fullConfig),
829
+ };
830
+
831
+ for (const [filename, content] of Object.entries(configFiles)) {
832
+ const filePath = path.join(squadPath, filename);
833
+ await fs.writeFile(filePath, content, 'utf-8');
834
+ files.push(filePath);
835
+ }
836
+ }
837
+
838
+ // Generate example agent if requested
839
+ if (fullConfig.includeAgent) {
840
+ const agentContent = generateExampleAgent(fullConfig);
841
+ const agentName =
842
+ fullConfig.template === 'etl' ? 'data-extractor.md' : 'example-agent.md';
843
+ const agentPath = path.join(squadPath, 'agents', agentName);
844
+ await fs.writeFile(agentPath, agentContent, 'utf-8');
845
+ files.push(agentPath);
846
+
847
+ // For ETL template, add second agent
848
+ if (fullConfig.template === 'etl') {
849
+ const transformerConfig = { ...fullConfig, template: 'basic' };
850
+ const transformerContent = generateExampleAgent(transformerConfig)
851
+ .replace(/data-extractor/g, 'data-transformer')
852
+ .replace(/Data Extractor/g, 'Data Transformer')
853
+ .replace(/extracting data/g, 'transforming data')
854
+ .replace(/extract-data/g, 'transform-data');
855
+ const transformerPath = path.join(squadPath, 'agents', 'data-transformer.md');
856
+ await fs.writeFile(transformerPath, transformerContent, 'utf-8');
857
+ files.push(transformerPath);
858
+ }
859
+
860
+ // For agent-only template, add agents
861
+ if (fullConfig.template === 'agent-only') {
862
+ const primaryContent = generateExampleAgent({ ...fullConfig, template: 'basic' })
863
+ .replace(/example-agent/g, 'primary-agent')
864
+ .replace(/Example Agent/g, 'Primary Agent');
865
+ const primaryPath = path.join(squadPath, 'agents', 'primary-agent.md');
866
+ await fs.writeFile(primaryPath, primaryContent, 'utf-8');
867
+ files.push(primaryPath);
868
+
869
+ const helperContent = generateExampleAgent({ ...fullConfig, template: 'basic' })
870
+ .replace(/example-agent/g, 'helper-agent')
871
+ .replace(/Example Agent/g, 'Helper Agent');
872
+ const helperPath = path.join(squadPath, 'agents', 'helper-agent.md');
873
+ await fs.writeFile(helperPath, helperContent, 'utf-8');
874
+ files.push(helperPath);
875
+ }
876
+ }
877
+
878
+ // Generate example task if requested
879
+ if (fullConfig.includeTask && fullConfig.template !== 'agent-only') {
880
+ const taskContent = generateExampleTask(fullConfig);
881
+ const taskName =
882
+ fullConfig.template === 'etl' ? 'extract-data.md' : 'example-agent-task.md';
883
+ const taskPath = path.join(squadPath, 'tasks', taskName);
884
+ await fs.writeFile(taskPath, taskContent, 'utf-8');
885
+ files.push(taskPath);
886
+
887
+ // For ETL template, add more tasks
888
+ if (fullConfig.template === 'etl') {
889
+ const transformTask = generateExampleTask(fullConfig)
890
+ .replace(/extract-data/g, 'transform-data')
891
+ .replace(/Extract Data/g, 'Transform Data')
892
+ .replace(/data-extractor/g, 'data-transformer')
893
+ .replace(/Extracts data/g, 'Transforms data');
894
+ const transformPath = path.join(squadPath, 'tasks', 'transform-data.md');
895
+ await fs.writeFile(transformPath, transformTask, 'utf-8');
896
+ files.push(transformPath);
897
+
898
+ const loadTask = generateExampleTask(fullConfig)
899
+ .replace(/extract-data/g, 'load-data')
900
+ .replace(/Extract Data/g, 'Load Data')
901
+ .replace(/data-extractor/g, 'data-loader')
902
+ .replace(/Extracts data/g, 'Loads data');
903
+ const loadPath = path.join(squadPath, 'tasks', 'load-data.md');
904
+ await fs.writeFile(loadPath, loadTask, 'utf-8');
905
+ files.push(loadPath);
906
+ }
907
+ }
908
+
909
+ // For ETL template, create utils.js script
910
+ if (fullConfig.template === 'etl') {
911
+ const utilsContent = `/**
912
+ * ETL Utilities
913
+ *
914
+ * Utility functions for ETL operations.
915
+ */
916
+
917
+ /**
918
+ * Format data for output
919
+ * @param {Object} data - Data to format
920
+ * @param {string} format - Output format (json, csv, yaml)
921
+ * @returns {string} Formatted data
922
+ */
923
+ function formatData(data, format = 'json') {
924
+ switch (format) {
925
+ case 'json':
926
+ return JSON.stringify(data, null, 2);
927
+ case 'csv':
928
+ // Simple CSV conversion
929
+ if (Array.isArray(data) && data.length > 0) {
930
+ const headers = Object.keys(data[0]);
931
+ const rows = data.map(row => headers.map(h => row[h]).join(','));
932
+ return [headers.join(','), ...rows].join('\\n');
933
+ }
934
+ return '';
935
+ case 'yaml':
936
+ // Simple YAML conversion
937
+ return Object.entries(data)
938
+ .map(([k, v]) => \`\${k}: \${JSON.stringify(v)}\`)
939
+ .join('\\n');
940
+ default:
941
+ return JSON.stringify(data);
942
+ }
943
+ }
944
+
945
+ module.exports = { formatData };
946
+ `;
947
+ const utilsPath = path.join(squadPath, 'scripts', 'utils.js');
948
+ await fs.writeFile(utilsPath, utilsContent, 'utf-8');
949
+ files.push(utilsPath);
950
+ }
951
+
952
+ // Add .gitkeep to empty directories
953
+ const emptyDirs = ['workflows', 'checklists', 'templates', 'tools', 'data'];
954
+ if (!fullConfig.includeAgent) {
955
+ emptyDirs.push('agents');
956
+ }
957
+ if (!fullConfig.includeTask || fullConfig.template === 'agent-only') {
958
+ emptyDirs.push('tasks');
959
+ }
960
+ if (fullConfig.template !== 'etl') {
961
+ emptyDirs.push('scripts');
962
+ }
963
+
964
+ for (const dir of emptyDirs) {
965
+ const gitkeepPath = path.join(squadPath, dir, '.gitkeep');
966
+ // Only create .gitkeep if directory is empty
967
+ try {
968
+ const dirContents = await fs.readdir(path.join(squadPath, dir));
969
+ if (dirContents.length === 0) {
970
+ await fs.writeFile(gitkeepPath, '', 'utf-8');
971
+ files.push(gitkeepPath);
972
+ }
973
+ } catch {
974
+ // Directory might not exist, create .gitkeep anyway
975
+ await fs.writeFile(gitkeepPath, '', 'utf-8');
976
+ files.push(gitkeepPath);
977
+ }
978
+ }
979
+
980
+ return {
981
+ path: squadPath,
982
+ files,
983
+ config: fullConfig,
984
+ };
985
+ }
986
+
987
+ /**
988
+ * List local squads
989
+ * @returns {Promise<Array>} List of squad info objects
990
+ */
991
+ async listLocal() {
992
+ const squads = [];
993
+
994
+ try {
995
+ const entries = await fs.readdir(this.squadsPath, { withFileTypes: true });
996
+
997
+ for (const entry of entries) {
998
+ if (!entry.isDirectory()) continue;
999
+
1000
+ const squadPath = path.join(this.squadsPath, entry.name);
1001
+
1002
+ // Try to load manifest
1003
+ try {
1004
+ const manifestPath = path.join(squadPath, 'squad.yaml');
1005
+ const manifestContent = await fs.readFile(manifestPath, 'utf-8');
1006
+
1007
+ // Basic YAML parsing for key fields
1008
+ const nameMatch = manifestContent.match(/^name:\s*(.+)$/m);
1009
+ const versionMatch = manifestContent.match(/^version:\s*(.+)$/m);
1010
+ const descriptionMatch = manifestContent.match(/^description:\s*(.+)$/m);
1011
+
1012
+ squads.push({
1013
+ name: nameMatch ? nameMatch[1].trim() : entry.name,
1014
+ version: versionMatch ? versionMatch[1].trim() : 'unknown',
1015
+ description: descriptionMatch ? descriptionMatch[1].trim() : '',
1016
+ path: squadPath,
1017
+ });
1018
+ } catch {
1019
+ // Try config.yaml fallback
1020
+ try {
1021
+ const configPath = path.join(squadPath, 'config.yaml');
1022
+ const configContent = await fs.readFile(configPath, 'utf-8');
1023
+
1024
+ const nameMatch = configContent.match(/^name:\s*(.+)$/m);
1025
+ const versionMatch = configContent.match(/^version:\s*(.+)$/m);
1026
+ const descriptionMatch = configContent.match(/^description:\s*(.+)$/m);
1027
+
1028
+ squads.push({
1029
+ name: nameMatch ? nameMatch[1].trim() : entry.name,
1030
+ version: versionMatch ? versionMatch[1].trim() : 'unknown',
1031
+ description: descriptionMatch ? descriptionMatch[1].trim() : '',
1032
+ path: squadPath,
1033
+ deprecated: true, // Using config.yaml
1034
+ });
1035
+ } catch {
1036
+ // No manifest found, still list but mark as invalid
1037
+ squads.push({
1038
+ name: entry.name,
1039
+ version: 'unknown',
1040
+ description: 'No manifest found',
1041
+ path: squadPath,
1042
+ invalid: true,
1043
+ });
1044
+ }
1045
+ }
1046
+ }
1047
+ } catch (err) {
1048
+ // Squads directory doesn't exist
1049
+ if (err.code !== 'ENOENT') {
1050
+ throw err;
1051
+ }
1052
+ }
1053
+
1054
+ return squads;
1055
+ }
1056
+
1057
+ // ===========================================================================
1058
+ // BLUEPRINT METHODS (--from-design support)
1059
+ // ===========================================================================
1060
+
1061
+ /**
1062
+ * Load a blueprint file from disk
1063
+ * @param {string} blueprintPath - Path to blueprint YAML file
1064
+ * @returns {Promise<Object>} Parsed blueprint object
1065
+ * @throws {SquadGeneratorError} If file not found or parse error
1066
+ */
1067
+ async loadBlueprint(blueprintPath) {
1068
+ // Check if blueprint exists
1069
+ if (!(await this.pathExists(blueprintPath))) {
1070
+ throw SquadGeneratorError.blueprintNotFound(blueprintPath);
1071
+ }
1072
+
1073
+ try {
1074
+ const content = await fs.readFile(blueprintPath, 'utf-8');
1075
+ const blueprint = yaml.load(content);
1076
+ return blueprint;
1077
+ } catch (err) {
1078
+ if (err.name === 'YAMLException') {
1079
+ throw SquadGeneratorError.blueprintParseError(blueprintPath, err.message);
1080
+ }
1081
+ throw err;
1082
+ }
1083
+ }
1084
+
1085
+ /**
1086
+ * Validate a blueprint against the schema
1087
+ * @param {Object} blueprint - Blueprint object to validate
1088
+ * @returns {Object} Validation result with isValid and errors
1089
+ */
1090
+ async validateBlueprint(blueprint) {
1091
+ const errors = [];
1092
+
1093
+ // Required top-level fields
1094
+ if (!blueprint.squad) {
1095
+ errors.push('Missing required field: squad');
1096
+ } else {
1097
+ if (!blueprint.squad.name) {
1098
+ errors.push('Missing required field: squad.name');
1099
+ } else if (!isValidSquadName(blueprint.squad.name)) {
1100
+ errors.push(`Invalid squad name "${blueprint.squad.name}": must be kebab-case`);
1101
+ }
1102
+ if (!blueprint.squad.domain) {
1103
+ errors.push('Missing required field: squad.domain');
1104
+ }
1105
+ }
1106
+
1107
+ if (!blueprint.recommendations) {
1108
+ errors.push('Missing required field: recommendations');
1109
+ } else {
1110
+ if (!Array.isArray(blueprint.recommendations.agents)) {
1111
+ errors.push('recommendations.agents must be an array');
1112
+ } else {
1113
+ // Validate each agent
1114
+ blueprint.recommendations.agents.forEach((agent, idx) => {
1115
+ if (!agent.id) {
1116
+ errors.push(`recommendations.agents[${idx}]: missing required field "id"`);
1117
+ } else if (!/^[a-z][a-z0-9-]*[a-z0-9]$/.test(agent.id)) {
1118
+ errors.push(`recommendations.agents[${idx}]: id "${agent.id}" must be kebab-case`);
1119
+ }
1120
+ if (!agent.role) {
1121
+ errors.push(`recommendations.agents[${idx}]: missing required field "role"`);
1122
+ }
1123
+ if (typeof agent.confidence !== 'number' || agent.confidence < 0 || agent.confidence > 1) {
1124
+ errors.push(`recommendations.agents[${idx}]: confidence must be a number between 0 and 1`);
1125
+ }
1126
+ });
1127
+ }
1128
+
1129
+ if (!Array.isArray(blueprint.recommendations.tasks)) {
1130
+ errors.push('recommendations.tasks must be an array');
1131
+ } else {
1132
+ // Validate each task
1133
+ blueprint.recommendations.tasks.forEach((task, idx) => {
1134
+ if (!task.name) {
1135
+ errors.push(`recommendations.tasks[${idx}]: missing required field "name"`);
1136
+ } else if (!/^[a-z][a-z0-9-]*[a-z0-9]$/.test(task.name)) {
1137
+ errors.push(`recommendations.tasks[${idx}]: name "${task.name}" must be kebab-case`);
1138
+ }
1139
+ if (!task.agent) {
1140
+ errors.push(`recommendations.tasks[${idx}]: missing required field "agent"`);
1141
+ }
1142
+ if (typeof task.confidence !== 'number' || task.confidence < 0 || task.confidence > 1) {
1143
+ errors.push(`recommendations.tasks[${idx}]: confidence must be a number between 0 and 1`);
1144
+ }
1145
+ });
1146
+ }
1147
+ }
1148
+
1149
+ if (!blueprint.metadata) {
1150
+ errors.push('Missing required field: metadata');
1151
+ } else {
1152
+ if (!blueprint.metadata.created_at) {
1153
+ errors.push('Missing required field: metadata.created_at');
1154
+ }
1155
+ }
1156
+
1157
+ return {
1158
+ isValid: errors.length === 0,
1159
+ errors,
1160
+ };
1161
+ }
1162
+
1163
+ /**
1164
+ * Convert blueprint to SquadGenerator config format
1165
+ * @param {Object} blueprint - Validated blueprint object
1166
+ * @returns {Object} Config object for generate()
1167
+ */
1168
+ blueprintToConfig(blueprint) {
1169
+ const config = {
1170
+ name: blueprint.squad.name,
1171
+ description: blueprint.squad.description || `Squad for ${blueprint.squad.domain}`,
1172
+ template: blueprint.recommendations.template || 'custom',
1173
+ configMode: blueprint.recommendations.config_mode || 'extend',
1174
+ includeAgent: false, // We'll add custom agents, not example ones
1175
+ includeTask: false, // We'll add custom tasks, not example ones
1176
+ // Store blueprint data for custom generation
1177
+ _blueprint: blueprint,
1178
+ };
1179
+
1180
+ return config;
1181
+ }
1182
+
1183
+ /**
1184
+ * Generate agent markdown content from blueprint recommendation
1185
+ * @param {Object} agent - Agent recommendation from blueprint
1186
+ * @param {string} squadName - Name of the squad
1187
+ * @returns {string} Markdown content for agent file
1188
+ */
1189
+ generateAgentFromBlueprint(agent, squadName) {
1190
+ const commandsList = (agent.commands || [])
1191
+ .map(cmd => ` - name: ${cmd}\n description: "${cmd.replace(/-/g, ' ')} operation"`)
1192
+ .join('\n');
1193
+
1194
+ return `# ${agent.id}
1195
+
1196
+ ## Agent Definition
1197
+
1198
+ \`\`\`yaml
1199
+ agent:
1200
+ name: ${agent.id.replace(/-/g, '')}
1201
+ id: ${agent.id}
1202
+ title: "${agent.role}"
1203
+ icon: "🤖"
1204
+ whenToUse: "${agent.role}"
1205
+
1206
+ persona:
1207
+ role: ${agent.role}
1208
+ style: Systematic, thorough
1209
+ focus: Executing ${agent.id} responsibilities
1210
+
1211
+ commands:
1212
+ - name: help
1213
+ description: "Show available commands"
1214
+ ${commandsList}
1215
+ \`\`\`
1216
+
1217
+ ## Usage
1218
+
1219
+ \`\`\`
1220
+ @${agent.id}
1221
+ *help
1222
+ \`\`\`
1223
+
1224
+ ## Origin
1225
+
1226
+ Generated from squad design blueprint for ${squadName}.
1227
+ Confidence: ${Math.round(agent.confidence * 100)}%
1228
+ ${agent.user_added ? 'Added by user during design refinement.' : ''}
1229
+ ${agent.user_modified ? 'Modified by user during design refinement.' : ''}
1230
+ `;
1231
+ }
1232
+
1233
+ /**
1234
+ * Generate task markdown content from blueprint recommendation
1235
+ * @param {Object} task - Task recommendation from blueprint
1236
+ * @param {string} squadName - Name of the squad
1237
+ * @returns {string} Markdown content for task file
1238
+ */
1239
+ generateTaskFromBlueprint(task, squadName) {
1240
+ const entradaList = (task.entrada || []).map(e => ` - ${e}`).join('\n');
1241
+ const saidaList = (task.saida || []).map(s => ` - ${s}`).join('\n');
1242
+ const checklistItems = (task.checklist || [
1243
+ '[ ] Validate input parameters',
1244
+ '[ ] Execute main logic',
1245
+ '[ ] Format output',
1246
+ '[ ] Return result',
1247
+ ]).map(item => ` - "${item.startsWith('[') ? item : '[ ] ' + item}"`).join('\n');
1248
+
1249
+ return `---
1250
+ task: "${task.name.replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase())}"
1251
+ responsavel: "@${task.agent}"
1252
+ responsavel_type: agent
1253
+ atomic_layer: task
1254
+ Entrada: |
1255
+ ${entradaList || ' - (no inputs defined)'}
1256
+ Saida: |
1257
+ ${saidaList || ' - (no outputs defined)'}
1258
+ Checklist:
1259
+ ${checklistItems}
1260
+ ---
1261
+
1262
+ # *${task.name}
1263
+
1264
+ Task generated from squad design blueprint for ${squadName}.
1265
+
1266
+ ## Usage
1267
+
1268
+ \`\`\`
1269
+ @${task.agent}
1270
+ *${task.name}
1271
+ \`\`\`
1272
+
1273
+ ## Parameters
1274
+
1275
+ | Parameter | Type | Required | Description |
1276
+ |-----------|------|----------|-------------|
1277
+ ${(task.entrada || []).map(e => `| \`${e}\` | string | Yes | ${e.replace(/_/g, ' ')} |`).join('\n') || '| - | - | - | No parameters defined |'}
1278
+
1279
+ ## Output
1280
+
1281
+ ${(task.saida || []).map(s => `- **${s}**: ${s.replace(/_/g, ' ')}`).join('\n') || '- No outputs defined'}
1282
+
1283
+ ## Origin
1284
+
1285
+ Confidence: ${Math.round(task.confidence * 100)}%
1286
+ `;
1287
+ }
1288
+
1289
+ /**
1290
+ * Generate a squad from a blueprint file
1291
+ * @param {string} blueprintPath - Path to blueprint YAML file
1292
+ * @param {Object} [options] - Additional options
1293
+ * @param {boolean} [options.force=false] - Force overwrite if squad exists
1294
+ * @returns {Promise<Object>} Generation result with path, files, and blueprint info
1295
+ * @throws {SquadGeneratorError} If blueprint is invalid or generation fails
1296
+ */
1297
+ async generateFromBlueprint(blueprintPath, options = {}) {
1298
+ // 1. Load blueprint
1299
+ const blueprint = await this.loadBlueprint(blueprintPath);
1300
+
1301
+ // 2. Validate blueprint
1302
+ const validation = await this.validateBlueprint(blueprint);
1303
+ if (!validation.isValid) {
1304
+ throw SquadGeneratorError.blueprintInvalid(validation.errors);
1305
+ }
1306
+
1307
+ // 3. Convert to config
1308
+ const config = this.blueprintToConfig(blueprint);
1309
+
1310
+ // Check for existing squad
1311
+ const squadPath = path.join(this.squadsPath, config.name);
1312
+ if (await this.pathExists(squadPath)) {
1313
+ if (!options.force) {
1314
+ throw SquadGeneratorError.squadExists(config.name, squadPath);
1315
+ }
1316
+ // If force, remove existing squad directory before regenerating
1317
+ await fs.rm(squadPath, { recursive: true, force: true });
1318
+ }
1319
+
1320
+ // 4. Generate base structure (without example agents/tasks)
1321
+ const result = await this.generate(config);
1322
+
1323
+ // 5. Generate custom agents from blueprint
1324
+ const agentFiles = [];
1325
+ for (const agent of blueprint.recommendations.agents || []) {
1326
+ const agentContent = this.generateAgentFromBlueprint(agent, config.name);
1327
+ const agentPath = path.join(squadPath, 'agents', `${agent.id}.md`);
1328
+ await fs.writeFile(agentPath, agentContent, 'utf-8');
1329
+ agentFiles.push(agentPath);
1330
+ }
1331
+
1332
+ // 6. Generate custom tasks from blueprint
1333
+ const taskFiles = [];
1334
+ for (const task of blueprint.recommendations.tasks || []) {
1335
+ const taskContent = this.generateTaskFromBlueprint(task, config.name);
1336
+ const taskPath = path.join(squadPath, 'tasks', `${task.name}.md`);
1337
+ await fs.writeFile(taskPath, taskContent, 'utf-8');
1338
+ taskFiles.push(taskPath);
1339
+ }
1340
+
1341
+ // 7. Update squad.yaml with actual components
1342
+ const squadYamlPath = path.join(squadPath, 'squad.yaml');
1343
+ await this.updateSquadYamlComponents(squadYamlPath, blueprint);
1344
+
1345
+ // 8. Return result with blueprint info
1346
+ return {
1347
+ ...result,
1348
+ files: [...result.files, ...agentFiles, ...taskFiles],
1349
+ blueprint: {
1350
+ path: blueprintPath,
1351
+ agents: blueprint.recommendations.agents?.length || 0,
1352
+ tasks: blueprint.recommendations.tasks?.length || 0,
1353
+ confidence: blueprint.metadata.overall_confidence || 0,
1354
+ source_docs: blueprint.metadata.source_docs || [],
1355
+ },
1356
+ };
1357
+ }
1358
+
1359
+ /**
1360
+ * Update squad.yaml with actual components from blueprint
1361
+ * @param {string} squadYamlPath - Path to squad.yaml
1362
+ * @param {Object} blueprint - Blueprint object
1363
+ */
1364
+ async updateSquadYamlComponents(squadYamlPath, blueprint) {
1365
+ const content = await fs.readFile(squadYamlPath, 'utf-8');
1366
+ const squadManifest = yaml.load(content);
1367
+
1368
+ // Update components
1369
+ squadManifest.components = squadManifest.components || {};
1370
+ squadManifest.components.agents = (blueprint.recommendations.agents || [])
1371
+ .map(a => `${a.id}.md`);
1372
+ squadManifest.components.tasks = (blueprint.recommendations.tasks || [])
1373
+ .map(t => `${t.name}.md`);
1374
+
1375
+ // Add blueprint reference
1376
+ squadManifest.blueprint = {
1377
+ source: blueprint.metadata.source_docs || [],
1378
+ created_at: blueprint.metadata.created_at,
1379
+ confidence: blueprint.metadata.overall_confidence || 0,
1380
+ };
1381
+
1382
+ // Write updated manifest
1383
+ const updatedContent = yaml.dump(squadManifest, {
1384
+ indent: 2,
1385
+ lineWidth: 120,
1386
+ quotingType: '"',
1387
+ });
1388
+ await fs.writeFile(squadYamlPath, updatedContent, 'utf-8');
1389
+ }
1390
+ }
1391
+
1392
+ module.exports = {
1393
+ SquadGenerator,
1394
+ SquadGeneratorError,
1395
+ GeneratorErrorCodes,
1396
+ AVAILABLE_TEMPLATES,
1397
+ AVAILABLE_LICENSES,
1398
+ CONFIG_MODES,
1399
+ DEFAULT_SQUADS_PATH,
1400
+ DEFAULT_DESIGNS_PATH,
1401
+ DEFAULT_grimoire_MIN_VERSION,
1402
+ SQUAD_DESIGN_SCHEMA_PATH,
1403
+ isValidSquadName,
1404
+ getGitUserName,
1405
+ };
1406
+