claude-flow-novice 1.3.0 → 1.3.2

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 (305) hide show
  1. package/.claude-flow-novice/preferences/generation.json +147 -0
  2. package/.claude-flow-novice/preferences/language-configs/javascript.json +51 -0
  3. package/.claude-flow-novice/preferences/language-configs/python.json +50 -0
  4. package/.claude-flow-novice/preferences/language-configs/rust.json +237 -0
  5. package/.claude-flow-novice/preferences/language-configs/typescript.json +54 -0
  6. package/.claude-flow-novice/preferences/project-local.json +91 -0
  7. package/.claude-flow-novice/preferences/resource-delegation.json +120 -0
  8. package/.claude-flow-novice/preferences/team-shared.json +195 -0
  9. package/.claude-flow-novice/preferences/user-global.json +247 -0
  10. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-JAVASCRIPT.md +769 -0
  11. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-PYTHON.md +1214 -0
  12. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-RUST.md +475 -0
  13. package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-TYPESCRIPT.md +851 -0
  14. package/.claude-flow-novice/templates/claude-md-templates/README.md +263 -0
  15. package/CLAUDE.md +81 -0
  16. package/README-NPM.md +0 -0
  17. package/package.json +11 -7
  18. package/scripts/build/README.md +167 -0
  19. package/scripts/build/build-config.js +27 -0
  20. package/scripts/build/build-prompt-copier.sh +30 -0
  21. package/scripts/build/performance-monitor.js +869 -0
  22. package/scripts/build/prepare-publish.js +150 -0
  23. package/scripts/build/typescript-fixer.js +621 -0
  24. package/scripts/build/unified-builder.sh +428 -0
  25. package/scripts/build/update-bin-version.js +32 -0
  26. package/scripts/dev/README.md +264 -0
  27. package/scripts/dev/claude-flow-wrapper.sh +35 -0
  28. package/scripts/dev/claude-monitor.py +419 -0
  29. package/scripts/dev/claude-sparc.sh +562 -0
  30. package/scripts/dev/claude-wrapper.sh +17 -0
  31. package/scripts/dev/demo-phase3-compliance.js +172 -0
  32. package/scripts/dev/demo-task-system.ts +224 -0
  33. package/scripts/dev/deployment-validator.js +315 -0
  34. package/scripts/dev/spawn-claude-terminal.sh +32 -0
  35. package/scripts/dev/start-portal.sh +506 -0
  36. package/scripts/dev/start-web-ui.js +15 -0
  37. package/scripts/dev/stop-portal.sh +311 -0
  38. package/scripts/dev/validate-examples.ts +288 -0
  39. package/scripts/dev/validate-phase2.cjs +451 -0
  40. package/scripts/dev/validate-phase2.js +785 -0
  41. package/scripts/dev/validate-phase3.cjs +208 -0
  42. package/scripts/dev/validate-security-remediation.js +1 -0
  43. package/scripts/legacy/README.md +272 -0
  44. package/scripts/legacy/batch-fix-ts.sh +54 -0
  45. package/scripts/legacy/build-migration.sh +105 -0
  46. package/scripts/legacy/build-monitor.js +209 -0
  47. package/scripts/legacy/build-with-filter.sh +84 -0
  48. package/scripts/legacy/build-workaround.sh +71 -0
  49. package/scripts/legacy/fix-ts-advanced.js +358 -0
  50. package/scripts/legacy/fix-ts-final.sh +50 -0
  51. package/scripts/legacy/fix-ts-targeted.sh +49 -0
  52. package/scripts/legacy/fix-typescript-errors.js +305 -0
  53. package/scripts/legacy/force-build.sh +63 -0
  54. package/scripts/legacy/optimize-performance.js +400 -0
  55. package/scripts/legacy/performance-monitor.js +263 -0
  56. package/scripts/legacy/performance-monitoring.js +532 -0
  57. package/scripts/legacy/performance-test-runner.js +645 -0
  58. package/scripts/legacy/quick-fix-ts.js +281 -0
  59. package/scripts/legacy/safe-build.sh +63 -0
  60. package/scripts/migration/README.md +434 -0
  61. package/scripts/migration/install-arm64.js +78 -0
  62. package/scripts/migration/install.js +83 -0
  63. package/scripts/migration/migrate-hooks.js +173 -0
  64. package/scripts/migration/migration-examples.ts +318 -0
  65. package/scripts/optimization/build-optimizer.js +438 -0
  66. package/scripts/optimization/config-validator.js +761 -0
  67. package/scripts/optimization/test-optimization.js +432 -0
  68. package/scripts/optimization/unified-activation.js +839 -0
  69. package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
  70. package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
  71. package/scripts/performance/test-enhanced-backend.sh +504 -0
  72. package/scripts/performance-test-runner.js +698 -0
  73. package/scripts/security/README.md +339 -0
  74. package/scripts/security/install-git-hooks.sh +132 -0
  75. package/scripts/security/ruv-swarm-safe.js +74 -0
  76. package/scripts/test/README.md +236 -0
  77. package/scripts/test/check-links.ts +274 -0
  78. package/scripts/test/check-performance-regression.ts +168 -0
  79. package/scripts/test/coverage-report.ts +692 -0
  80. package/scripts/test/generate-swarm-tests.js +633 -0
  81. package/scripts/test/integration-test-validation.cjs +253 -0
  82. package/scripts/test/load-test-swarm.js +576 -0
  83. package/scripts/test/run-phase3-compliance-tests.js +427 -0
  84. package/scripts/test/test-batch-tasks.ts +29 -0
  85. package/scripts/test/test-byzantine-resolution.js +246 -0
  86. package/scripts/test/test-claude-spawn-options.sh +63 -0
  87. package/scripts/test/test-cli-wizard.js +331 -0
  88. package/scripts/test/test-comprehensive.js +401 -0
  89. package/scripts/test/test-coordination-features.ts +238 -0
  90. package/scripts/test/test-fallback-systems.js +276 -0
  91. package/scripts/test/test-init-command.ts +302 -0
  92. package/scripts/test/test-mcp.ts +251 -0
  93. package/scripts/test/test-runner.ts +568 -0
  94. package/scripts/test/test-swarm-integration.sh +92 -0
  95. package/scripts/test/test-swarm.ts +142 -0
  96. package/scripts/test/validation-summary.ts +408 -0
  97. package/scripts/utils/README.md +261 -0
  98. package/scripts/utils/clean-build-artifacts.sh +94 -0
  99. package/scripts/utils/cleanup-root.sh +69 -0
  100. package/scripts/utils/fix-cliffy-imports.js +307 -0
  101. package/scripts/utils/fix-duplicate-imports.js +114 -0
  102. package/scripts/utils/fix-error-handling.cjs +70 -0
  103. package/scripts/utils/fix-import-paths.js +104 -0
  104. package/scripts/utils/fix-imports.js +116 -0
  105. package/scripts/utils/fix-shebang.js +78 -0
  106. package/scripts/utils/fix-test-modules.js +27 -0
  107. package/scripts/utils/fix-timezone-issue-246.js +200 -0
  108. package/scripts/utils/fix-ts-comprehensive.py +182 -0
  109. package/scripts/utils/fix-ts-targeted-batch.js +250 -0
  110. package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
  111. package/scripts/utils/simple-test-fixer.js +190 -0
  112. package/scripts/utils/validate-metrics-structure.cjs +144 -0
  113. package/scripts/verify-mcp-server.js +86 -0
  114. package/src/cli/simple-commands/__tests__/agent.test.js +291 -0
  115. package/src/cli/simple-commands/__tests__/memory.test.js +8 -0
  116. package/src/cli/simple-commands/__tests__/swarm.test.js +371 -0
  117. package/src/cli/simple-commands/__tests__/task.test.js +8 -0
  118. package/src/cli/simple-commands/agent.js +216 -0
  119. package/src/cli/simple-commands/analysis.js +570 -0
  120. package/src/cli/simple-commands/automation-executor.js +1603 -0
  121. package/src/cli/simple-commands/automation.js +627 -0
  122. package/src/cli/simple-commands/batch-manager.js +338 -0
  123. package/src/cli/simple-commands/claude-telemetry.js +311 -0
  124. package/src/cli/simple-commands/claude-track.js +102 -0
  125. package/src/cli/simple-commands/concurrent-display.js +348 -0
  126. package/src/cli/simple-commands/config.js +319 -0
  127. package/src/cli/simple-commands/coordination.js +307 -0
  128. package/src/cli/simple-commands/enhanced-ui-views.js +654 -0
  129. package/src/cli/simple-commands/enhanced-webui-complete.js +1038 -0
  130. package/src/cli/simple-commands/fix-hook-variables.js +363 -0
  131. package/src/cli/simple-commands/github/gh-coordinator.js +605 -0
  132. package/src/cli/simple-commands/github/github-api.js +624 -0
  133. package/src/cli/simple-commands/github/init.js +543 -0
  134. package/src/cli/simple-commands/github.js +377 -0
  135. package/src/cli/simple-commands/goal.js +145 -0
  136. package/src/cli/simple-commands/hive-mind/auto-save-middleware.js +311 -0
  137. package/src/cli/simple-commands/hive-mind/communication.js +740 -0
  138. package/src/cli/simple-commands/hive-mind/core.js +1031 -0
  139. package/src/cli/simple-commands/hive-mind/db-optimizer.js +872 -0
  140. package/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1364 -0
  141. package/src/cli/simple-commands/hive-mind/memory.js +1292 -0
  142. package/src/cli/simple-commands/hive-mind/performance-optimizer.js +618 -0
  143. package/src/cli/simple-commands/hive-mind/performance-test.js +373 -0
  144. package/src/cli/simple-commands/hive-mind/queen.js +809 -0
  145. package/src/cli/simple-commands/hive-mind/session-manager.js +1223 -0
  146. package/src/cli/simple-commands/hive-mind-optimize.js +361 -0
  147. package/src/cli/simple-commands/hive-mind-wizard.js +281 -0
  148. package/src/cli/simple-commands/hive-mind.js +3112 -0
  149. package/src/cli/simple-commands/hive.js +140 -0
  150. package/src/cli/simple-commands/hook-safety.js +671 -0
  151. package/src/cli/simple-commands/hooks.js +1268 -0
  152. package/src/cli/simple-commands/init/.claude/checkpoints/1756224542.json +7 -0
  153. package/src/cli/simple-commands/init/.claude/checkpoints/1756224544.json +8 -0
  154. package/src/cli/simple-commands/init/README.md +106 -0
  155. package/src/cli/simple-commands/init/VALIDATION_ROLLBACK.md +488 -0
  156. package/src/cli/simple-commands/init/agent-copier.js +347 -0
  157. package/src/cli/simple-commands/init/batch-init.js +663 -0
  158. package/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +438 -0
  159. package/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +876 -0
  160. package/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +356 -0
  161. package/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +501 -0
  162. package/src/cli/simple-commands/init/claude-commands/slash-commands.js +57 -0
  163. package/src/cli/simple-commands/init/claude-commands/sparc-commands.js +296 -0
  164. package/src/cli/simple-commands/init/copy-revised-templates.js +175 -0
  165. package/src/cli/simple-commands/init/executable-wrapper.js +122 -0
  166. package/src/cli/simple-commands/init/gitignore-updater.js +137 -0
  167. package/src/cli/simple-commands/init/help.js +110 -0
  168. package/src/cli/simple-commands/init/hive-mind-init.js +749 -0
  169. package/src/cli/simple-commands/init/index.js +1953 -0
  170. package/src/cli/simple-commands/init/performance-monitor.js +344 -0
  171. package/src/cli/simple-commands/init/rollback/backup-manager.js +542 -0
  172. package/src/cli/simple-commands/init/rollback/index.js +399 -0
  173. package/src/cli/simple-commands/init/rollback/recovery-manager.js +778 -0
  174. package/src/cli/simple-commands/init/rollback/rollback-executor.js +521 -0
  175. package/src/cli/simple-commands/init/rollback/state-tracker.js +486 -0
  176. package/src/cli/simple-commands/init/sparc/roo-readme.js +61 -0
  177. package/src/cli/simple-commands/init/sparc/roomodes-config.js +102 -0
  178. package/src/cli/simple-commands/init/sparc/workflows.js +40 -0
  179. package/src/cli/simple-commands/init/sparc-structure.js +68 -0
  180. package/src/cli/simple-commands/init/template-copier.js +640 -0
  181. package/src/cli/simple-commands/init/templates/CLAUDE.md +1185 -0
  182. package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +265 -0
  183. package/src/cli/simple-commands/init/templates/claude-flow-universal +81 -0
  184. package/src/cli/simple-commands/init/templates/claude-flow.bat +18 -0
  185. package/src/cli/simple-commands/init/templates/claude-flow.ps1 +24 -0
  186. package/src/cli/simple-commands/init/templates/claude-md.js +1101 -0
  187. package/src/cli/simple-commands/init/templates/commands/analysis/bottleneck-detect.md +162 -0
  188. package/src/cli/simple-commands/init/templates/commands/automation/auto-agent.md +122 -0
  189. package/src/cli/simple-commands/init/templates/commands/coordination/swarm-init.md +85 -0
  190. package/src/cli/simple-commands/init/templates/commands/github/github-swarm.md +121 -0
  191. package/src/cli/simple-commands/init/templates/commands/helpers/standard-checkpoint-hooks.sh +179 -0
  192. package/src/cli/simple-commands/init/templates/commands/hooks/notification.md +113 -0
  193. package/src/cli/simple-commands/init/templates/commands/hooks/post-command.md +116 -0
  194. package/src/cli/simple-commands/init/templates/commands/hooks/post-edit.md +117 -0
  195. package/src/cli/simple-commands/init/templates/commands/hooks/post-task.md +112 -0
  196. package/src/cli/simple-commands/init/templates/commands/hooks/pre-command.md +113 -0
  197. package/src/cli/simple-commands/init/templates/commands/hooks/pre-edit.md +113 -0
  198. package/src/cli/simple-commands/init/templates/commands/hooks/pre-search.md +112 -0
  199. package/src/cli/simple-commands/init/templates/commands/hooks/pre-task.md +111 -0
  200. package/src/cli/simple-commands/init/templates/commands/hooks/session-end.md +118 -0
  201. package/src/cli/simple-commands/init/templates/commands/hooks/session-restore.md +118 -0
  202. package/src/cli/simple-commands/init/templates/commands/hooks/session-start.md +117 -0
  203. package/src/cli/simple-commands/init/templates/coordination-md.js +340 -0
  204. package/src/cli/simple-commands/init/templates/coordination.md +16 -0
  205. package/src/cli/simple-commands/init/templates/enhanced-templates.js +2347 -0
  206. package/src/cli/simple-commands/init/templates/github-safe-enhanced.js +331 -0
  207. package/src/cli/simple-commands/init/templates/github-safe.js +106 -0
  208. package/src/cli/simple-commands/init/templates/memory-bank-md.js +259 -0
  209. package/src/cli/simple-commands/init/templates/memory-bank.md +16 -0
  210. package/src/cli/simple-commands/init/templates/readme-files.js +72 -0
  211. package/src/cli/simple-commands/init/templates/safe-hook-patterns.js +430 -0
  212. package/src/cli/simple-commands/init/templates/settings.json +109 -0
  213. package/src/cli/simple-commands/init/templates/settings.json.enhanced +35 -0
  214. package/src/cli/simple-commands/init/templates/sparc-modes.js +1401 -0
  215. package/src/cli/simple-commands/init/templates/verification-claude-md.js +432 -0
  216. package/src/cli/simple-commands/init/validation/config-validator.js +354 -0
  217. package/src/cli/simple-commands/init/validation/health-checker.js +599 -0
  218. package/src/cli/simple-commands/init/validation/index.js +388 -0
  219. package/src/cli/simple-commands/init/validation/mode-validator.js +387 -0
  220. package/src/cli/simple-commands/init/validation/post-init-validator.js +390 -0
  221. package/src/cli/simple-commands/init/validation/pre-init-validator.js +290 -0
  222. package/src/cli/simple-commands/init/validation/test-runner.js +488 -0
  223. package/src/cli/simple-commands/init.js +4 -0
  224. package/src/cli/simple-commands/mcp-health.js +163 -0
  225. package/src/cli/simple-commands/mcp-integration-layer.js +689 -0
  226. package/src/cli/simple-commands/mcp.js +420 -0
  227. package/src/cli/simple-commands/memory-consolidation.js +631 -0
  228. package/src/cli/simple-commands/memory.js +345 -0
  229. package/src/cli/simple-commands/migrate-hooks.js +63 -0
  230. package/src/cli/simple-commands/monitor.js +417 -0
  231. package/src/cli/simple-commands/neural.js +148 -0
  232. package/src/cli/simple-commands/pair-autofix-only.js +755 -0
  233. package/src/cli/simple-commands/pair-basic.js +751 -0
  234. package/src/cli/simple-commands/pair-old.js +623 -0
  235. package/src/cli/simple-commands/pair-working.js +849 -0
  236. package/src/cli/simple-commands/pair.js +849 -0
  237. package/src/cli/simple-commands/performance-hooks.js +149 -0
  238. package/src/cli/simple-commands/performance-metrics.js +601 -0
  239. package/src/cli/simple-commands/process-ui-enhanced.js +821 -0
  240. package/src/cli/simple-commands/process-ui.js +274 -0
  241. package/src/cli/simple-commands/realtime-update-system.js +659 -0
  242. package/src/cli/simple-commands/sparc/architecture.js +1750 -0
  243. package/src/cli/simple-commands/sparc/commands.js +575 -0
  244. package/src/cli/simple-commands/sparc/completion.js +1831 -0
  245. package/src/cli/simple-commands/sparc/coordinator.js +1045 -0
  246. package/src/cli/simple-commands/sparc/index.js +321 -0
  247. package/src/cli/simple-commands/sparc/phase-base.js +430 -0
  248. package/src/cli/simple-commands/sparc/pseudocode.js +984 -0
  249. package/src/cli/simple-commands/sparc/refinement.js +1856 -0
  250. package/src/cli/simple-commands/sparc/specification.js +736 -0
  251. package/src/cli/simple-commands/sparc-modes/architect.js +125 -0
  252. package/src/cli/simple-commands/sparc-modes/ask.js +126 -0
  253. package/src/cli/simple-commands/sparc-modes/code.js +148 -0
  254. package/src/cli/simple-commands/sparc-modes/debug.js +112 -0
  255. package/src/cli/simple-commands/sparc-modes/devops.js +137 -0
  256. package/src/cli/simple-commands/sparc-modes/docs-writer.js +38 -0
  257. package/src/cli/simple-commands/sparc-modes/generic.js +34 -0
  258. package/src/cli/simple-commands/sparc-modes/index.js +201 -0
  259. package/src/cli/simple-commands/sparc-modes/integration.js +55 -0
  260. package/src/cli/simple-commands/sparc-modes/mcp.js +38 -0
  261. package/src/cli/simple-commands/sparc-modes/monitoring.js +38 -0
  262. package/src/cli/simple-commands/sparc-modes/optimization.js +38 -0
  263. package/src/cli/simple-commands/sparc-modes/security-review.js +130 -0
  264. package/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +167 -0
  265. package/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +38 -0
  266. package/src/cli/simple-commands/sparc-modes/supabase-admin.js +149 -0
  267. package/src/cli/simple-commands/sparc-modes/swarm.js +436 -0
  268. package/src/cli/simple-commands/sparc-modes/tdd.js +112 -0
  269. package/src/cli/simple-commands/sparc-modes/tutorial.js +277 -0
  270. package/src/cli/simple-commands/sparc.js +530 -0
  271. package/src/cli/simple-commands/start-ui.js +147 -0
  272. package/src/cli/simple-commands/start-wrapper.js +285 -0
  273. package/src/cli/simple-commands/start.js +2 -0
  274. package/src/cli/simple-commands/status.js +303 -0
  275. package/src/cli/simple-commands/stream-chain-clean.js +221 -0
  276. package/src/cli/simple-commands/stream-chain-fixed.js +89 -0
  277. package/src/cli/simple-commands/stream-chain-real.js +408 -0
  278. package/src/cli/simple-commands/stream-chain-working.js +323 -0
  279. package/src/cli/simple-commands/stream-chain.js +491 -0
  280. package/src/cli/simple-commands/stream-processor.js +340 -0
  281. package/src/cli/simple-commands/swarm-executor.js +253 -0
  282. package/src/cli/simple-commands/swarm-metrics-integration.js +371 -0
  283. package/src/cli/simple-commands/swarm-ui.js +741 -0
  284. package/src/cli/simple-commands/swarm-webui-integration.js +311 -0
  285. package/src/cli/simple-commands/swarm.js +2277 -0
  286. package/src/cli/simple-commands/task.js +228 -0
  287. package/src/cli/simple-commands/templates/mle-star-workflow.json +294 -0
  288. package/src/cli/simple-commands/timestamp-fix.js +104 -0
  289. package/src/cli/simple-commands/token-tracker.js +372 -0
  290. package/src/cli/simple-commands/tool-execution-framework.js +555 -0
  291. package/src/cli/simple-commands/train-and-stream.js +354 -0
  292. package/src/cli/simple-commands/training-pipeline.js +874 -0
  293. package/src/cli/simple-commands/training.js +288 -0
  294. package/src/cli/simple-commands/verification-hooks.js +336 -0
  295. package/src/cli/simple-commands/verification-integration.js +464 -0
  296. package/src/cli/simple-commands/verification-training-integration.js +646 -0
  297. package/src/cli/simple-commands/verification.js +551 -0
  298. package/src/cli/simple-commands/web-server.js +929 -0
  299. package/src/cli/simple-commands/webui-validator.js +136 -0
  300. package/src/language/README.md +503 -0
  301. package/src/language/claude-md-generator.js +618 -0
  302. package/src/language/cli.js +422 -0
  303. package/src/language/example.js +347 -0
  304. package/src/language/integration-system.js +619 -0
  305. package/src/language/language-detector.js +581 -0
@@ -0,0 +1,736 @@
1
+ // SPARC Specification Phase
2
+ // Gather requirements, define acceptance criteria, and establish project scope
3
+
4
+ import { SparcPhase } from './phase-base.js';
5
+
6
+ export class SparcSpecification extends SparcPhase {
7
+ constructor(taskDescription, options) {
8
+ super('specification', taskDescription, options);
9
+ this.requirements = [];
10
+ this.acceptanceCriteria = [];
11
+ this.userStories = [];
12
+ this.constraints = [];
13
+ this.assumptions = [];
14
+ }
15
+
16
+ /**
17
+ * Execute specification phase
18
+ */
19
+ async execute() {
20
+ console.log('📋 Starting Specification Phase');
21
+
22
+ await this.initializePhase();
23
+
24
+ const result = {
25
+ requirements: [],
26
+ acceptanceCriteria: [],
27
+ userStories: [],
28
+ constraints: [],
29
+ assumptions: [],
30
+ stakeholders: [],
31
+ businessValue: '',
32
+ scope: {
33
+ included: [],
34
+ excluded: [],
35
+ },
36
+ timeline: {
37
+ estimated: '',
38
+ phases: [],
39
+ },
40
+ risks: [],
41
+ dependencies: [],
42
+ };
43
+
44
+ try {
45
+ // Analyze task description
46
+ const analysis = await this.analyzeTaskDescription();
47
+ result.analysis = analysis;
48
+
49
+ // Extract requirements
50
+ result.requirements = await this.extractRequirements(analysis);
51
+
52
+ // Define acceptance criteria
53
+ result.acceptanceCriteria = await this.defineAcceptanceCriteria(result.requirements);
54
+
55
+ // Create user stories
56
+ result.userStories = await this.createUserStories(result.requirements);
57
+
58
+ // Identify constraints
59
+ result.constraints = await this.identifyConstraints();
60
+
61
+ // Document assumptions
62
+ result.assumptions = await this.documentAssumptions();
63
+
64
+ // Identify stakeholders
65
+ result.stakeholders = await this.identifyStakeholders();
66
+
67
+ // Define business value
68
+ result.businessValue = await this.defineBusiness();
69
+
70
+ // Define scope
71
+ result.scope = await this.defineScope(result.requirements);
72
+
73
+ // Estimate timeline
74
+ result.timeline = await this.estimateTimeline(result.requirements);
75
+
76
+ // Identify risks
77
+ result.risks = await this.identifyRisks(result.requirements);
78
+
79
+ // Identify dependencies
80
+ result.dependencies = await this.identifyDependencies(result.requirements);
81
+
82
+ // Generate specification document
83
+ await this.generateSpecificationDocument(result);
84
+
85
+ // Store in memory
86
+ await this.storeInMemory('specification_complete', result);
87
+
88
+ console.log('✅ Specification phase completed');
89
+ return result;
90
+ } catch (error) {
91
+ console.error('❌ Specification phase failed:', error.message);
92
+ throw error;
93
+ }
94
+ }
95
+
96
+ /**
97
+ * Analyze task description to extract key information
98
+ */
99
+ async analyzeTaskDescription() {
100
+ const analysis = {
101
+ type: this.categorizeTask(),
102
+ complexity: this.assessComplexity(),
103
+ domain: this.identifyDomain(),
104
+ keywords: this.extractKeywords(),
105
+ verbs: this.extractActionVerbs(),
106
+ entities: this.extractEntities(),
107
+ };
108
+
109
+ return analysis;
110
+ }
111
+
112
+ /**
113
+ * Categorize the task type
114
+ */
115
+ categorizeTask() {
116
+ const taskLower = this.taskDescription.toLowerCase();
117
+
118
+ if (
119
+ taskLower.includes('api') ||
120
+ taskLower.includes('endpoint') ||
121
+ taskLower.includes('service')
122
+ ) {
123
+ return 'api_development';
124
+ } else if (
125
+ taskLower.includes('ui') ||
126
+ taskLower.includes('frontend') ||
127
+ taskLower.includes('interface')
128
+ ) {
129
+ return 'frontend_development';
130
+ } else if (
131
+ taskLower.includes('database') ||
132
+ taskLower.includes('data') ||
133
+ taskLower.includes('storage')
134
+ ) {
135
+ return 'data_management';
136
+ } else if (taskLower.includes('test') || taskLower.includes('testing')) {
137
+ return 'testing';
138
+ } else if (taskLower.includes('deploy') || taskLower.includes('infrastructure')) {
139
+ return 'deployment';
140
+ } else if (taskLower.includes('refactor') || taskLower.includes('optimize')) {
141
+ return 'refactoring';
142
+ } else {
143
+ return 'general_development';
144
+ }
145
+ }
146
+
147
+ /**
148
+ * Assess task complexity
149
+ */
150
+ assessComplexity() {
151
+ const wordCount = this.taskDescription.split(' ').length;
152
+ const complexityKeywords = [
153
+ 'integrate',
154
+ 'complex',
155
+ 'multiple',
156
+ 'advanced',
157
+ 'enterprise',
158
+ 'scalable',
159
+ ];
160
+ const hasComplexityKeywords = complexityKeywords.some((keyword) =>
161
+ this.taskDescription.toLowerCase().includes(keyword),
162
+ );
163
+
164
+ if (wordCount > 20 || hasComplexityKeywords) {
165
+ return 'high';
166
+ } else if (wordCount > 10) {
167
+ return 'medium';
168
+ } else {
169
+ return 'low';
170
+ }
171
+ }
172
+
173
+ /**
174
+ * Identify domain
175
+ */
176
+ identifyDomain() {
177
+ const domains = {
178
+ web: ['web', 'website', 'html', 'css', 'javascript'],
179
+ mobile: ['mobile', 'app', 'android', 'ios'],
180
+ data: ['data', 'analytics', 'ml', 'ai', 'machine learning'],
181
+ security: ['security', 'auth', 'authentication', 'encryption'],
182
+ devops: ['deploy', 'ci/cd', 'docker', 'kubernetes'],
183
+ backend: ['api', 'server', 'database', 'backend'],
184
+ frontend: ['ui', 'ux', 'frontend', 'interface'],
185
+ };
186
+
187
+ const taskLower = this.taskDescription.toLowerCase();
188
+
189
+ for (const [domain, keywords] of Object.entries(domains)) {
190
+ if (keywords.some((keyword) => taskLower.includes(keyword))) {
191
+ return domain;
192
+ }
193
+ }
194
+
195
+ return 'general';
196
+ }
197
+
198
+ /**
199
+ * Extract keywords from task description
200
+ */
201
+ extractKeywords() {
202
+ const words = this.taskDescription.toLowerCase().split(/\s+/);
203
+ const stopWords = [
204
+ 'the',
205
+ 'a',
206
+ 'an',
207
+ 'and',
208
+ 'or',
209
+ 'but',
210
+ 'in',
211
+ 'on',
212
+ 'at',
213
+ 'to',
214
+ 'for',
215
+ 'of',
216
+ 'with',
217
+ 'by',
218
+ ];
219
+
220
+ return words
221
+ .filter((word) => word.length > 2 && !stopWords.includes(word))
222
+ .filter((word, index, arr) => arr.indexOf(word) === index) // Remove duplicates
223
+ .slice(0, 10); // Top 10 keywords
224
+ }
225
+
226
+ /**
227
+ * Extract action verbs
228
+ */
229
+ extractActionVerbs() {
230
+ const verbs = [
231
+ 'create',
232
+ 'build',
233
+ 'develop',
234
+ 'implement',
235
+ 'design',
236
+ 'setup',
237
+ 'configure',
238
+ 'deploy',
239
+ 'test',
240
+ 'optimize',
241
+ 'refactor',
242
+ 'integrate',
243
+ ];
244
+ const taskLower = this.taskDescription.toLowerCase();
245
+
246
+ return verbs.filter((verb) => taskLower.includes(verb));
247
+ }
248
+
249
+ /**
250
+ * Extract entities
251
+ */
252
+ extractEntities() {
253
+ const entities = [];
254
+ const words = this.taskDescription.split(/\s+/);
255
+
256
+ // Look for capitalized words (potential entities)
257
+ for (const word of words) {
258
+ if (
259
+ word.length > 2 &&
260
+ word[0] === word[0].toUpperCase() &&
261
+ word.slice(1) === word.slice(1).toLowerCase()
262
+ ) {
263
+ entities.push(word);
264
+ }
265
+ }
266
+
267
+ return entities;
268
+ }
269
+
270
+ /**
271
+ * Extract requirements from analysis
272
+ */
273
+ async extractRequirements(analysis) {
274
+ const requirements = [];
275
+
276
+ // Functional requirements based on task type
277
+ switch (analysis.type) {
278
+ case 'api_development':
279
+ requirements.push(
280
+ 'System must provide REST API endpoints',
281
+ 'API must handle authentication and authorization',
282
+ 'API must return appropriate HTTP status codes',
283
+ 'API must validate input data',
284
+ 'API must handle errors gracefully',
285
+ );
286
+ break;
287
+
288
+ case 'frontend_development':
289
+ requirements.push(
290
+ 'Interface must be responsive and mobile-friendly',
291
+ 'User interface must be intuitive and accessible',
292
+ 'Application must handle user input validation',
293
+ 'Interface must provide feedback for user actions',
294
+ 'Application must be cross-browser compatible',
295
+ );
296
+ break;
297
+
298
+ case 'data_management':
299
+ requirements.push(
300
+ 'System must ensure data integrity',
301
+ 'Data must be properly normalized',
302
+ 'System must handle concurrent access',
303
+ 'Data must be backed up regularly',
304
+ 'System must provide data recovery mechanisms',
305
+ );
306
+ break;
307
+
308
+ case 'testing':
309
+ requirements.push(
310
+ 'Test suite must achieve minimum 80% code coverage',
311
+ 'Tests must be automated and repeatable',
312
+ 'Tests must validate all critical paths',
313
+ 'Test data must be properly managed',
314
+ 'Tests must run efficiently',
315
+ );
316
+ break;
317
+
318
+ default:
319
+ requirements.push(
320
+ 'System must be reliable and performant',
321
+ 'Code must be maintainable and well-documented',
322
+ 'System must handle edge cases gracefully',
323
+ 'Implementation must follow best practices',
324
+ 'System must be secure and robust',
325
+ );
326
+ }
327
+
328
+ // Add complexity-specific requirements
329
+ if (analysis.complexity === 'high') {
330
+ requirements.push(
331
+ 'System must be scalable and handle high load',
332
+ 'Architecture must be modular and extensible',
333
+ 'System must have comprehensive monitoring',
334
+ 'Implementation must include performance optimization',
335
+ );
336
+ }
337
+
338
+ return requirements;
339
+ }
340
+
341
+ /**
342
+ * Define acceptance criteria
343
+ */
344
+ async defineAcceptanceCriteria(requirements) {
345
+ const criteria = [];
346
+
347
+ for (const requirement of requirements) {
348
+ const criterion = {
349
+ requirement: requirement,
350
+ given: this.generateGivenCondition(requirement),
351
+ when: this.generateWhenCondition(requirement),
352
+ then: this.generateThenCondition(requirement),
353
+ priority: this.assessRequirementPriority(requirement),
354
+ testable: true,
355
+ };
356
+
357
+ criteria.push(criterion);
358
+ }
359
+
360
+ return criteria;
361
+ }
362
+
363
+ /**
364
+ * Generate Given condition for acceptance criteria
365
+ */
366
+ generateGivenCondition(requirement) {
367
+ if (requirement.includes('API')) {
368
+ return 'Given a valid API client';
369
+ } else if (requirement.includes('user')) {
370
+ return 'Given a valid user session';
371
+ } else if (requirement.includes('data')) {
372
+ return 'Given valid input data';
373
+ } else {
374
+ return 'Given a properly configured system';
375
+ }
376
+ }
377
+
378
+ /**
379
+ * Generate When condition for acceptance criteria
380
+ */
381
+ generateWhenCondition(requirement) {
382
+ if (requirement.includes('provide')) {
383
+ return 'When the service is requested';
384
+ } else if (requirement.includes('handle')) {
385
+ return 'When the condition occurs';
386
+ } else if (requirement.includes('ensure')) {
387
+ return 'When the system operates';
388
+ } else {
389
+ return 'When the feature is used';
390
+ }
391
+ }
392
+
393
+ /**
394
+ * Generate Then condition for acceptance criteria
395
+ */
396
+ generateThenCondition(requirement) {
397
+ if (requirement.includes('must')) {
398
+ return 'Then the requirement must be satisfied';
399
+ } else {
400
+ return 'Then the expected behavior occurs';
401
+ }
402
+ }
403
+
404
+ /**
405
+ * Assess requirement priority
406
+ */
407
+ assessRequirementPriority(requirement) {
408
+ const highPriorityKeywords = [
409
+ 'must',
410
+ 'critical',
411
+ 'security',
412
+ 'authentication',
413
+ 'data integrity',
414
+ ];
415
+ const mediumPriorityKeywords = ['should', 'performance', 'optimization', 'monitoring'];
416
+
417
+ const reqLower = requirement.toLowerCase();
418
+
419
+ if (highPriorityKeywords.some((keyword) => reqLower.includes(keyword))) {
420
+ return 'high';
421
+ } else if (mediumPriorityKeywords.some((keyword) => reqLower.includes(keyword))) {
422
+ return 'medium';
423
+ } else {
424
+ return 'low';
425
+ }
426
+ }
427
+
428
+ /**
429
+ * Create user stories
430
+ */
431
+ async createUserStories(requirements) {
432
+ const stories = [];
433
+
434
+ for (const requirement of requirements) {
435
+ const story = {
436
+ title: this.generateStoryTitle(requirement),
437
+ narrative: this.generateStoryNarrative(requirement),
438
+ acceptanceCriteria: this.generateStoryAcceptanceCriteria(requirement),
439
+ priority: this.assessRequirementPriority(requirement),
440
+ estimation: this.estimateStoryPoints(requirement),
441
+ };
442
+
443
+ stories.push(story);
444
+ }
445
+
446
+ return stories;
447
+ }
448
+
449
+ /**
450
+ * Generate story title
451
+ */
452
+ generateStoryTitle(requirement) {
453
+ const words = requirement.split(' ');
454
+ const actionWord = words.find((word) =>
455
+ ['provide', 'handle', 'ensure', 'validate'].includes(word.toLowerCase()),
456
+ );
457
+ const objectWord = words.find((word) => ['API', 'data', 'user', 'system'].includes(word));
458
+
459
+ return `${actionWord || 'Implement'} ${objectWord || 'functionality'}`;
460
+ }
461
+
462
+ /**
463
+ * Generate story narrative
464
+ */
465
+ generateStoryNarrative(requirement) {
466
+ return `As a user, I want the system to ${requirement.toLowerCase()} so that I can achieve my goals effectively.`;
467
+ }
468
+
469
+ /**
470
+ * Generate story acceptance criteria
471
+ */
472
+ generateStoryAcceptanceCriteria(requirement) {
473
+ return [`The system ${requirement.toLowerCase()}`];
474
+ }
475
+
476
+ /**
477
+ * Estimate story points
478
+ */
479
+ estimateStoryPoints(requirement) {
480
+ const complexity = this.assessComplexity();
481
+ const priority = this.assessRequirementPriority(requirement);
482
+
483
+ if (complexity === 'high' && priority === 'high') {
484
+ return 8;
485
+ } else if (complexity === 'high' || priority === 'high') {
486
+ return 5;
487
+ } else if (complexity === 'medium' || priority === 'medium') {
488
+ return 3;
489
+ } else {
490
+ return 1;
491
+ }
492
+ }
493
+
494
+ /**
495
+ * Identify constraints
496
+ */
497
+ async identifyConstraints() {
498
+ return [
499
+ 'Files must be under 500 lines',
500
+ 'No hardcoded environment variables',
501
+ 'Must follow security best practices',
502
+ 'Must be compatible with existing systems',
503
+ 'Must maintain backward compatibility',
504
+ 'Must handle concurrent users',
505
+ 'Must have proper error handling',
506
+ 'Must include comprehensive logging',
507
+ ];
508
+ }
509
+
510
+ /**
511
+ * Document assumptions
512
+ */
513
+ async documentAssumptions() {
514
+ return [
515
+ 'Development environment is properly configured',
516
+ 'Required dependencies are available',
517
+ 'Database schema is stable',
518
+ 'Network connectivity is reliable',
519
+ 'Third-party APIs are stable',
520
+ 'Security protocols are established',
521
+ 'Backup procedures are in place',
522
+ 'Monitoring systems are operational',
523
+ ];
524
+ }
525
+
526
+ /**
527
+ * Identify stakeholders
528
+ */
529
+ async identifyStakeholders() {
530
+ return [
531
+ { role: 'Product Owner', responsibility: 'Requirements definition' },
532
+ { role: 'Development Team', responsibility: 'Implementation' },
533
+ { role: 'QA Team', responsibility: 'Testing and validation' },
534
+ { role: 'DevOps Team', responsibility: 'Deployment and operations' },
535
+ { role: 'Security Team', responsibility: 'Security review' },
536
+ { role: 'End Users', responsibility: 'Feedback and acceptance' },
537
+ ];
538
+ }
539
+
540
+ /**
541
+ * Define business value
542
+ */
543
+ async defineBusiness() {
544
+ const analysis = await this.analyzeTaskDescription();
545
+
546
+ switch (analysis.type) {
547
+ case 'api_development':
548
+ return 'Enables system integration and data exchange, improving operational efficiency';
549
+ case 'frontend_development':
550
+ return 'Improves user experience and engagement, potentially increasing user satisfaction';
551
+ case 'data_management':
552
+ return 'Ensures data integrity and availability, supporting business decisions';
553
+ case 'testing':
554
+ return 'Reduces bugs and improves software quality, minimizing support costs';
555
+ default:
556
+ return 'Addresses business requirements and improves system capabilities';
557
+ }
558
+ }
559
+
560
+ /**
561
+ * Define scope
562
+ */
563
+ async defineScope(requirements) {
564
+ const included = requirements.slice(0, Math.ceil(requirements.length * 0.8));
565
+ const excluded = [
566
+ 'Performance optimization beyond basic requirements',
567
+ 'Advanced security features not specified',
568
+ 'Integration with non-specified external systems',
569
+ 'Custom UI themes and branding',
570
+ 'Advanced analytics and reporting',
571
+ 'Mobile-specific optimizations',
572
+ 'Legacy system migration',
573
+ 'Third-party plugin development',
574
+ ];
575
+
576
+ return { included, excluded };
577
+ }
578
+
579
+ /**
580
+ * Estimate timeline
581
+ */
582
+ async estimateTimeline(requirements) {
583
+ const totalStoryPoints = requirements.length * 3; // Average 3 points per requirement
584
+ const developmentVelocity = 10; // Points per sprint
585
+ const sprintsNeeded = Math.ceil(totalStoryPoints / developmentVelocity);
586
+
587
+ return {
588
+ estimated: `${sprintsNeeded * 2} weeks`,
589
+ phases: [
590
+ { name: 'Specification', duration: '1 week' },
591
+ { name: 'Architecture', duration: '1 week' },
592
+ { name: 'Development', duration: `${sprintsNeeded} weeks` },
593
+ { name: 'Testing', duration: '1 week' },
594
+ { name: 'Deployment', duration: '1 week' },
595
+ ],
596
+ };
597
+ }
598
+
599
+ /**
600
+ * Identify risks
601
+ */
602
+ async identifyRisks(requirements) {
603
+ return [
604
+ {
605
+ risk: 'Technical complexity higher than estimated',
606
+ probability: 'Medium',
607
+ impact: 'High',
608
+ mitigation: 'Conduct proof of concept before full implementation',
609
+ },
610
+ {
611
+ risk: 'Requirements change during development',
612
+ probability: 'High',
613
+ impact: 'Medium',
614
+ mitigation: 'Implement agile development with regular reviews',
615
+ },
616
+ {
617
+ risk: 'Integration issues with external systems',
618
+ probability: 'Medium',
619
+ impact: 'High',
620
+ mitigation: 'Early integration testing and API validation',
621
+ },
622
+ {
623
+ risk: 'Performance issues under load',
624
+ probability: 'Low',
625
+ impact: 'High',
626
+ mitigation: 'Load testing and performance monitoring',
627
+ },
628
+ ];
629
+ }
630
+
631
+ /**
632
+ * Identify dependencies
633
+ */
634
+ async identifyDependencies(requirements) {
635
+ const dependencies = [];
636
+
637
+ for (const requirement of requirements) {
638
+ if (requirement.includes('API')) {
639
+ dependencies.push('Database schema definition');
640
+ dependencies.push('Authentication service');
641
+ }
642
+ if (requirement.includes('data')) {
643
+ dependencies.push('Data model design');
644
+ dependencies.push('Database setup');
645
+ }
646
+ if (requirement.includes('security')) {
647
+ dependencies.push('Security policy definition');
648
+ dependencies.push('Certificate management');
649
+ }
650
+ }
651
+
652
+ return [...new Set(dependencies)]; // Remove duplicates
653
+ }
654
+
655
+ /**
656
+ * Generate specification document
657
+ */
658
+ async generateSpecificationDocument(result) {
659
+ const document = `# ${this.taskDescription} - Specification
660
+
661
+ ## Overview
662
+ ${result.businessValue}
663
+
664
+ ## Requirements
665
+ ${result.requirements.map((req, index) => `${index + 1}. ${req}`).join('\n')}
666
+
667
+ ## Acceptance Criteria
668
+ ${result.acceptanceCriteria
669
+ .map(
670
+ (criteria, index) => `
671
+ ### ${index + 1}. ${criteria.requirement}
672
+ - **Given**: ${criteria.given}
673
+ - **When**: ${criteria.when}
674
+ - **Then**: ${criteria.then}
675
+ - **Priority**: ${criteria.priority}
676
+ `,
677
+ )
678
+ .join('\n')}
679
+
680
+ ## User Stories
681
+ ${result.userStories
682
+ .map(
683
+ (story, index) => `
684
+ ### ${index + 1}. ${story.title}
685
+ ${story.narrative}
686
+ **Acceptance Criteria**: ${story.acceptanceCriteria.join(', ')}
687
+ **Priority**: ${story.priority}
688
+ **Estimation**: ${story.estimation} points
689
+ `,
690
+ )
691
+ .join('\n')}
692
+
693
+ ## Constraints
694
+ ${result.constraints.map((constraint, index) => `${index + 1}. ${constraint}`).join('\n')}
695
+
696
+ ## Assumptions
697
+ ${result.assumptions.map((assumption, index) => `${index + 1}. ${assumption}`).join('\n')}
698
+
699
+ ## Scope
700
+ ### Included
701
+ ${result.scope.included.map((item, index) => `${index + 1}. ${item}`).join('\n')}
702
+
703
+ ### Excluded
704
+ ${result.scope.excluded.map((item, index) => `${index + 1}. ${item}`).join('\n')}
705
+
706
+ ## Timeline
707
+ **Estimated Duration**: ${result.timeline.estimated}
708
+
709
+ ${result.timeline.phases.map((phase) => `- ${phase.name}: ${phase.duration}`).join('\n')}
710
+
711
+ ## Risks
712
+ ${result.risks
713
+ .map(
714
+ (risk, index) => `
715
+ ### ${index + 1}. ${risk.risk}
716
+ - **Probability**: ${risk.probability}
717
+ - **Impact**: ${risk.impact}
718
+ - **Mitigation**: ${risk.mitigation}
719
+ `,
720
+ )
721
+ .join('\n')}
722
+
723
+ ## Dependencies
724
+ ${result.dependencies.map((dep, index) => `${index + 1}. ${dep}`).join('\n')}
725
+
726
+ ## Stakeholders
727
+ ${result.stakeholders.map((stakeholder) => `- **${stakeholder.role}**: ${stakeholder.responsibility}`).join('\n')}
728
+ `;
729
+
730
+ // Save document
731
+ await this.saveArtifact('specification.md', document);
732
+ return document;
733
+ }
734
+ }
735
+
736
+ export default SparcSpecification;