@su-record/vibe 2.6.14 → 2.6.16

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 (233) hide show
  1. package/CLAUDE.md +1 -394
  2. package/LICENSE +21 -21
  3. package/README.md +203 -497
  4. package/agents/architect-low.md +41 -41
  5. package/agents/architect-medium.md +59 -59
  6. package/agents/architect.md +80 -80
  7. package/agents/build-error-resolver.md +115 -115
  8. package/agents/compounder.md +261 -261
  9. package/agents/diagrammer.md +178 -178
  10. package/agents/e2e-tester.md +266 -266
  11. package/agents/explorer-low.md +42 -42
  12. package/agents/explorer-medium.md +59 -59
  13. package/agents/explorer.md +48 -48
  14. package/agents/implementer-low.md +43 -43
  15. package/agents/implementer-medium.md +52 -52
  16. package/agents/implementer.md +54 -54
  17. package/agents/refactor-cleaner.md +143 -143
  18. package/agents/research/best-practices-agent.md +199 -199
  19. package/agents/research/codebase-patterns-agent.md +157 -157
  20. package/agents/research/framework-docs-agent.md +188 -188
  21. package/agents/research/security-advisory-agent.md +213 -213
  22. package/agents/review/architecture-reviewer.md +107 -107
  23. package/agents/review/complexity-reviewer.md +116 -116
  24. package/agents/review/data-integrity-reviewer.md +88 -88
  25. package/agents/review/git-history-reviewer.md +103 -103
  26. package/agents/review/performance-reviewer.md +86 -86
  27. package/agents/review/python-reviewer.md +150 -150
  28. package/agents/review/rails-reviewer.md +139 -139
  29. package/agents/review/react-reviewer.md +144 -144
  30. package/agents/review/security-reviewer.md +80 -80
  31. package/agents/review/simplicity-reviewer.md +140 -140
  32. package/agents/review/test-coverage-reviewer.md +116 -116
  33. package/agents/review/typescript-reviewer.md +127 -127
  34. package/agents/searcher.md +54 -54
  35. package/agents/simplifier.md +120 -120
  36. package/agents/tester.md +49 -49
  37. package/agents/ui-previewer.md +268 -268
  38. package/commands/vibe.analyze.md +356 -356
  39. package/commands/vibe.reason.md +329 -329
  40. package/commands/vibe.review.md +412 -412
  41. package/commands/vibe.run.md +1266 -1266
  42. package/commands/vibe.spec.md +1054 -1054
  43. package/commands/vibe.spec.review.md +319 -319
  44. package/commands/vibe.trace.md +161 -161
  45. package/commands/vibe.utils.md +376 -376
  46. package/commands/vibe.verify.md +375 -375
  47. package/dist/cli/collaborator.js +52 -52
  48. package/dist/cli/detect.js +32 -32
  49. package/dist/cli/hud.js +20 -20
  50. package/dist/cli/index.js +118 -118
  51. package/dist/cli/index.js.map +1 -1
  52. package/dist/cli/llm.js +144 -144
  53. package/dist/cli/mcp.d.ts +49 -0
  54. package/dist/cli/mcp.d.ts.map +1 -0
  55. package/dist/cli/mcp.js +169 -0
  56. package/dist/cli/mcp.js.map +1 -0
  57. package/dist/cli/postinstall.js +858 -858
  58. package/dist/cli/setup/ProjectSetup.d.ts +3 -3
  59. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  60. package/dist/cli/setup/ProjectSetup.js +76 -30
  61. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  62. package/dist/lib/DeepInit.js +24 -24
  63. package/dist/lib/IterationTracker.js +11 -11
  64. package/dist/lib/PythonParser.js +108 -108
  65. package/dist/lib/ReviewRace.js +96 -96
  66. package/dist/lib/SkillFrontmatter.js +28 -28
  67. package/dist/lib/SkillQualityGate.js +9 -9
  68. package/dist/lib/SkillRepository.js +159 -159
  69. package/dist/lib/UltraQA.js +77 -77
  70. package/dist/lib/gemini-api.js +5 -5
  71. package/dist/lib/gemini-mcp.d.ts +10 -0
  72. package/dist/lib/gemini-mcp.d.ts.map +1 -0
  73. package/dist/lib/gemini-mcp.js +353 -0
  74. package/dist/lib/gemini-mcp.js.map +1 -0
  75. package/dist/lib/gpt-api.js +4 -4
  76. package/dist/lib/gpt-mcp.d.ts +10 -0
  77. package/dist/lib/gpt-mcp.d.ts.map +1 -0
  78. package/dist/lib/gpt-mcp.js +352 -0
  79. package/dist/lib/gpt-mcp.js.map +1 -0
  80. package/dist/lib/memory/KnowledgeGraph.js +4 -4
  81. package/dist/lib/memory/MemorySearch.js +20 -20
  82. package/dist/lib/memory/MemoryStorage.js +64 -64
  83. package/dist/orchestrator/AgentManager.js +12 -12
  84. package/dist/orchestrator/MultiLlmResearch.js +8 -8
  85. package/dist/orchestrator/SmartRouter.js +11 -11
  86. package/dist/orchestrator/parallelResearch.js +24 -24
  87. package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
  88. package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
  89. package/dist/tools/analytics/getUsageAnalytics.js +246 -0
  90. package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
  91. package/dist/tools/analytics/index.d.ts +5 -0
  92. package/dist/tools/analytics/index.d.ts.map +1 -0
  93. package/dist/tools/analytics/index.js +5 -0
  94. package/dist/tools/analytics/index.js.map +1 -0
  95. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  96. package/dist/tools/convention/getCodingGuide.d.ts +7 -0
  97. package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
  98. package/dist/tools/convention/getCodingGuide.js +69 -0
  99. package/dist/tools/convention/getCodingGuide.js.map +1 -0
  100. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  101. package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
  102. package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
  103. package/dist/tools/planning/analyzeRequirements.js +171 -0
  104. package/dist/tools/planning/analyzeRequirements.js.map +1 -0
  105. package/dist/tools/planning/createUserStories.d.ts +9 -0
  106. package/dist/tools/planning/createUserStories.d.ts.map +1 -0
  107. package/dist/tools/planning/createUserStories.js +124 -0
  108. package/dist/tools/planning/createUserStories.js.map +1 -0
  109. package/dist/tools/planning/featureRoadmap.d.ts +10 -0
  110. package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
  111. package/dist/tools/planning/featureRoadmap.js +207 -0
  112. package/dist/tools/planning/featureRoadmap.js.map +1 -0
  113. package/dist/tools/planning/generatePrd.d.ts +11 -0
  114. package/dist/tools/planning/generatePrd.d.ts.map +1 -0
  115. package/dist/tools/planning/generatePrd.js +161 -0
  116. package/dist/tools/planning/generatePrd.js.map +1 -0
  117. package/dist/tools/planning/index.d.ts +8 -0
  118. package/dist/tools/planning/index.d.ts.map +1 -0
  119. package/dist/tools/planning/index.js +8 -0
  120. package/dist/tools/planning/index.js.map +1 -0
  121. package/dist/tools/prompt/analyzePrompt.d.ts +7 -0
  122. package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
  123. package/dist/tools/prompt/analyzePrompt.js +150 -0
  124. package/dist/tools/prompt/analyzePrompt.js.map +1 -0
  125. package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
  126. package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
  127. package/dist/tools/prompt/enhancePrompt.js +110 -0
  128. package/dist/tools/prompt/enhancePrompt.js.map +1 -0
  129. package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
  130. package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
  131. package/dist/tools/prompt/enhancePromptGemini.js +332 -0
  132. package/dist/tools/prompt/enhancePromptGemini.js.map +1 -0
  133. package/dist/tools/prompt/index.d.ts +7 -0
  134. package/dist/tools/prompt/index.d.ts.map +1 -0
  135. package/dist/tools/prompt/index.js +7 -0
  136. package/dist/tools/prompt/index.js.map +1 -0
  137. package/dist/tools/reasoning/applyReasoningFramework.d.ts +8 -0
  138. package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
  139. package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
  140. package/dist/tools/reasoning/applyReasoningFramework.js.map +1 -0
  141. package/dist/tools/reasoning/index.d.ts +5 -0
  142. package/dist/tools/reasoning/index.d.ts.map +1 -0
  143. package/dist/tools/reasoning/index.js +5 -0
  144. package/dist/tools/reasoning/index.js.map +1 -0
  145. package/dist/tools/spec/prdParser.test.js +171 -171
  146. package/dist/tools/spec/specGenerator.js +169 -169
  147. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  148. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  149. package/dist/tools/thinking/analyzeProblem.d.ts +7 -0
  150. package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
  151. package/dist/tools/thinking/analyzeProblem.js +55 -0
  152. package/dist/tools/thinking/analyzeProblem.js.map +1 -0
  153. package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
  154. package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
  155. package/dist/tools/thinking/breakDownProblem.js +145 -0
  156. package/dist/tools/thinking/breakDownProblem.js.map +1 -0
  157. package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
  158. package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
  159. package/dist/tools/thinking/createThinkingChain.js +44 -0
  160. package/dist/tools/thinking/createThinkingChain.js.map +1 -0
  161. package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
  162. package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
  163. package/dist/tools/thinking/formatAsPlan.js +78 -0
  164. package/dist/tools/thinking/formatAsPlan.js.map +1 -0
  165. package/dist/tools/thinking/index.d.ts +10 -0
  166. package/dist/tools/thinking/index.d.ts.map +1 -0
  167. package/dist/tools/thinking/index.js +10 -0
  168. package/dist/tools/thinking/index.js.map +1 -0
  169. package/dist/tools/thinking/stepByStepAnalysis.d.ts +8 -0
  170. package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
  171. package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
  172. package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
  173. package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
  174. package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
  175. package/dist/tools/thinking/thinkAloudProcess.js +80 -0
  176. package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
  177. package/hooks/hooks.json +222 -222
  178. package/hooks/scripts/code-check.js +22 -22
  179. package/hooks/scripts/code-review.js +22 -22
  180. package/hooks/scripts/complexity.js +22 -22
  181. package/hooks/scripts/compound.js +23 -23
  182. package/hooks/scripts/context-save.js +33 -33
  183. package/hooks/scripts/gemini-ui-gen.js +281 -281
  184. package/hooks/scripts/generate-brand-assets.js +474 -474
  185. package/hooks/scripts/hud-multiline.js +262 -262
  186. package/hooks/scripts/hud-status.js +291 -291
  187. package/hooks/scripts/keyword-detector.js +214 -214
  188. package/hooks/scripts/llm-orchestrate.js +171 -171
  189. package/hooks/scripts/post-edit.js +97 -97
  190. package/hooks/scripts/post-tool-verify.js +210 -210
  191. package/hooks/scripts/pre-tool-guard.js +125 -125
  192. package/hooks/scripts/recall.js +22 -22
  193. package/hooks/scripts/session-start.js +30 -30
  194. package/hooks/scripts/skill-injector.js +191 -191
  195. package/hooks/scripts/utils.js +97 -97
  196. package/languages/csharp-unity.md +515 -515
  197. package/languages/gdscript-godot.md +470 -470
  198. package/languages/ruby-rails.md +489 -489
  199. package/languages/typescript-angular.md +433 -433
  200. package/languages/typescript-astro.md +416 -416
  201. package/languages/typescript-electron.md +406 -406
  202. package/languages/typescript-nestjs.md +524 -524
  203. package/languages/typescript-svelte.md +407 -407
  204. package/languages/typescript-tauri.md +365 -365
  205. package/package.json +84 -84
  206. package/skills/brand-assets.md +141 -141
  207. package/skills/commerce-patterns.md +361 -361
  208. package/skills/context7-usage.md +102 -102
  209. package/skills/e2e-commerce.md +304 -304
  210. package/skills/frontend-design.md +92 -92
  211. package/skills/git-worktree.md +181 -181
  212. package/skills/parallel-research.md +77 -77
  213. package/skills/priority-todos.md +239 -239
  214. package/skills/seo-checklist.md +244 -244
  215. package/skills/tool-fallback.md +190 -190
  216. package/skills/vibe-capabilities.md +161 -161
  217. package/vibe/constitution.md +227 -227
  218. package/vibe/rules/core/communication-guide.md +98 -98
  219. package/vibe/rules/core/development-philosophy.md +52 -52
  220. package/vibe/rules/core/quick-start.md +102 -102
  221. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  222. package/vibe/rules/quality/checklist.md +276 -276
  223. package/vibe/rules/quality/testing-strategy.md +440 -440
  224. package/vibe/rules/standards/anti-patterns.md +541 -541
  225. package/vibe/rules/standards/code-structure.md +291 -291
  226. package/vibe/rules/standards/complexity-metrics.md +313 -313
  227. package/vibe/rules/standards/naming-conventions.md +198 -198
  228. package/vibe/setup.sh +31 -31
  229. package/vibe/templates/constitution-template.md +252 -252
  230. package/vibe/templates/contract-backend-template.md +526 -526
  231. package/vibe/templates/contract-frontend-template.md +599 -599
  232. package/vibe/templates/feature-template.md +96 -96
  233. package/vibe/templates/spec-template.md +221 -221
@@ -0,0 +1,9 @@
1
+ import { ToolResult, ToolDefinition } from '../../types/tool.js';
2
+ export declare const analyzeRequirementsDefinition: ToolDefinition;
3
+ export declare function analyzeRequirements(args: {
4
+ requirements: string;
5
+ stakeholders?: string;
6
+ constraints?: string;
7
+ analysisMethod?: string;
8
+ }): Promise<ToolResult>;
9
+ //# sourceMappingURL=analyzeRequirements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzeRequirements.d.ts","sourceRoot":"","sources":["../../../src/tools/planning/analyzeRequirements.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAejE,eAAO,MAAM,6BAA6B,EAAE,cAqB3C,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,UAAU,CAAC,CA6JtB"}
@@ -0,0 +1,171 @@
1
+ // Planning tool - completely independent
2
+ export const analyzeRequirementsDefinition = {
3
+ name: 'analyze_requirements',
4
+ description: '요구사항 분석|필요한 것들|requirements analysis|what we need|analyze requirements|필수 기능 - Analyze project requirements',
5
+ inputSchema: {
6
+ type: 'object',
7
+ properties: {
8
+ requirements: { type: 'string', description: 'List of requirements to analyze' },
9
+ stakeholders: { type: 'string', description: 'Project stakeholders (e.g., users, admins, developers)' },
10
+ constraints: { type: 'string', description: 'Project constraints (timeline, budget, technical)' },
11
+ analysisMethod: { type: 'string', description: 'Analysis method', enum: ['moscow', 'kano', 'value-effort'], default: 'moscow' }
12
+ },
13
+ required: ['requirements']
14
+ },
15
+ annotations: {
16
+ title: 'Analyze Requirements',
17
+ audience: ['user', 'assistant'],
18
+ readOnlyHint: true,
19
+ destructiveHint: false,
20
+ idempotentHint: true,
21
+ openWorldHint: false
22
+ }
23
+ };
24
+ export async function analyzeRequirements(args) {
25
+ const { requirements, stakeholders = 'end users, product owner, development team', constraints = 'standard timeline and budget constraints', analysisMethod = 'moscow' } = args;
26
+ // Parse requirements
27
+ const requirementList = requirements.split(/[,\n]/).map(r => r.trim()).filter(r => r.length > 0);
28
+ const stakeholderList = stakeholders.split(',').map(s => s.trim());
29
+ const analyzedRequirements = requirementList.map((req, index) => {
30
+ const reqId = `REQ-${String(index + 1).padStart(3, '0')}`;
31
+ // Determine requirement type
32
+ let type = 'functional';
33
+ if (req.toLowerCase().includes('performance') || req.toLowerCase().includes('security') || req.toLowerCase().includes('scalability')) {
34
+ type = 'non-functional';
35
+ }
36
+ else if (req.toLowerCase().includes('business') || req.toLowerCase().includes('revenue') || req.toLowerCase().includes('cost')) {
37
+ type = 'business';
38
+ }
39
+ else if (req.toLowerCase().includes('infrastructure') || req.toLowerCase().includes('architecture') || req.toLowerCase().includes('database')) {
40
+ type = 'technical';
41
+ }
42
+ // Determine priority using MoSCoW
43
+ let priority = 'should-have';
44
+ if (req.toLowerCase().includes('critical') || req.toLowerCase().includes('essential') || req.toLowerCase().includes('required')) {
45
+ priority = 'must-have';
46
+ }
47
+ else if (req.toLowerCase().includes('important') || req.toLowerCase().includes('needed')) {
48
+ priority = 'should-have';
49
+ }
50
+ else if (req.toLowerCase().includes('nice') || req.toLowerCase().includes('optional') || req.toLowerCase().includes('enhancement')) {
51
+ priority = 'could-have';
52
+ }
53
+ else if (req.toLowerCase().includes('future') || req.toLowerCase().includes('later') || req.toLowerCase().includes('v2')) {
54
+ priority = 'wont-have';
55
+ }
56
+ // Assess complexity
57
+ let complexity = 'medium';
58
+ if (req.length > 100 || req.toLowerCase().includes('complex') || req.toLowerCase().includes('integration') || req.toLowerCase().includes('advanced')) {
59
+ complexity = 'high';
60
+ }
61
+ else if (req.length < 50 || req.toLowerCase().includes('simple') || req.toLowerCase().includes('basic')) {
62
+ complexity = 'low';
63
+ }
64
+ // Assess risk
65
+ let risk = 'low';
66
+ if (req.toLowerCase().includes('external') || req.toLowerCase().includes('third-party') || req.toLowerCase().includes('new technology')) {
67
+ risk = 'high';
68
+ }
69
+ else if (req.toLowerCase().includes('integration') || req.toLowerCase().includes('performance') || complexity === 'high') {
70
+ risk = 'medium';
71
+ }
72
+ // Estimate effort
73
+ let estimatedEffort = '3-5 days';
74
+ if (complexity === 'high') {
75
+ estimatedEffort = '1-3 weeks';
76
+ }
77
+ else if (complexity === 'low') {
78
+ estimatedEffort = '1-2 days';
79
+ }
80
+ // Determine relevant stakeholders
81
+ const relevantStakeholders = stakeholderList.filter(stakeholder => {
82
+ if (type === 'business' && stakeholder.toLowerCase().includes('owner'))
83
+ return true;
84
+ if (type === 'technical' && stakeholder.toLowerCase().includes('developer'))
85
+ return true;
86
+ if (type === 'functional' && stakeholder.toLowerCase().includes('user'))
87
+ return true;
88
+ return true; // Include all by default
89
+ });
90
+ return {
91
+ id: reqId,
92
+ title: req.length > 50 ? req.substring(0, 47) + '...' : req,
93
+ description: req,
94
+ type,
95
+ priority,
96
+ complexity,
97
+ risk,
98
+ dependencies: [],
99
+ estimatedEffort,
100
+ stakeholders: relevantStakeholders
101
+ };
102
+ });
103
+ const analysis = {
104
+ action: 'analyze_requirements',
105
+ method: analysisMethod,
106
+ totalRequirements: analyzedRequirements.length,
107
+ requirements: analyzedRequirements,
108
+ priorityBreakdown: {
109
+ mustHave: analyzedRequirements.filter(r => r.priority === 'must-have').length,
110
+ shouldHave: analyzedRequirements.filter(r => r.priority === 'should-have').length,
111
+ couldHave: analyzedRequirements.filter(r => r.priority === 'could-have').length,
112
+ wontHave: analyzedRequirements.filter(r => r.priority === 'wont-have').length
113
+ },
114
+ typeBreakdown: {
115
+ functional: analyzedRequirements.filter(r => r.type === 'functional').length,
116
+ nonFunctional: analyzedRequirements.filter(r => r.type === 'non-functional').length,
117
+ business: analyzedRequirements.filter(r => r.type === 'business').length,
118
+ technical: analyzedRequirements.filter(r => r.type === 'technical').length
119
+ },
120
+ riskAssessment: {
121
+ high: analyzedRequirements.filter(r => r.risk === 'high').length,
122
+ medium: analyzedRequirements.filter(r => r.risk === 'medium').length,
123
+ low: analyzedRequirements.filter(r => r.risk === 'low').length
124
+ },
125
+ recommendations: [
126
+ 'Focus on Must-Have requirements for MVP',
127
+ 'Validate high-risk requirements early',
128
+ 'Consider Should-Have items for post-MVP releases',
129
+ 'Review Could-Have items based on resource availability',
130
+ 'Plan technical requirements to support functional ones'
131
+ ],
132
+ constraints: constraints,
133
+ status: 'success'
134
+ };
135
+ // Format output
136
+ let formattedOutput = `# Requirements Analysis\n\n`;
137
+ formattedOutput += `**Analysis Method:** ${analysisMethod.toUpperCase()} \n`;
138
+ formattedOutput += `**Total Requirements:** ${analysis.totalRequirements} \n`;
139
+ formattedOutput += `**Constraints:** ${constraints}\n\n`;
140
+ formattedOutput += `## Priority Breakdown (MoSCoW)\n`;
141
+ formattedOutput += `- **Must Have:** ${analysis.priorityBreakdown.mustHave}\n`;
142
+ formattedOutput += `- **Should Have:** ${analysis.priorityBreakdown.shouldHave}\n`;
143
+ formattedOutput += `- **Could Have:** ${analysis.priorityBreakdown.couldHave}\n`;
144
+ formattedOutput += `- **Won't Have:** ${analysis.priorityBreakdown.wontHave}\n\n`;
145
+ formattedOutput += `## Risk Assessment\n`;
146
+ formattedOutput += `- **High Risk:** ${analysis.riskAssessment.high} requirements\n`;
147
+ formattedOutput += `- **Medium Risk:** ${analysis.riskAssessment.medium} requirements\n`;
148
+ formattedOutput += `- **Low Risk:** ${analysis.riskAssessment.low} requirements\n\n`;
149
+ formattedOutput += `## Detailed Requirements\n\n`;
150
+ // Group by priority
151
+ const priorities = ['must-have', 'should-have', 'could-have', 'wont-have'];
152
+ priorities.forEach(priority => {
153
+ const reqsForPriority = analyzedRequirements.filter(r => r.priority === priority);
154
+ if (reqsForPriority.length > 0) {
155
+ formattedOutput += `### ${priority.toUpperCase().replace('-', ' ')} (${reqsForPriority.length})\n\n`;
156
+ reqsForPriority.forEach(req => {
157
+ formattedOutput += `**${req.id}:** ${req.title} \n`;
158
+ formattedOutput += `*Type:* ${req.type} | *Complexity:* ${req.complexity} | *Risk:* ${req.risk} | *Effort:* ${req.estimatedEffort} \n`;
159
+ formattedOutput += `*Stakeholders:* ${req.stakeholders.join(', ')}\n\n`;
160
+ });
161
+ }
162
+ });
163
+ formattedOutput += `## Recommendations\n`;
164
+ analysis.recommendations.forEach(rec => {
165
+ formattedOutput += `- ${rec}\n`;
166
+ });
167
+ return {
168
+ content: [{ type: 'text', text: formattedOutput }]
169
+ };
170
+ }
171
+ //# sourceMappingURL=analyzeRequirements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzeRequirements.js","sourceRoot":"","sources":["../../../src/tools/planning/analyzeRequirements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ToolResult, ToolDefinition } from '../../types/tool.js';
2
+ export declare const createUserStoriesDefinition: ToolDefinition;
3
+ export declare function createUserStories(args: {
4
+ features: string;
5
+ userTypes?: string;
6
+ priority?: string;
7
+ includeAcceptanceCriteria?: boolean;
8
+ }): Promise<ToolResult>;
9
+ //# sourceMappingURL=createUserStories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUserStories.d.ts","sourceRoot":"","sources":["../../../src/tools/planning/createUserStories.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAejE,eAAO,MAAM,2BAA2B,EAAE,cAqBzC,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC,GAAG,OAAO,CAAC,UAAU,CAAC,CA+GtB"}
@@ -0,0 +1,124 @@
1
+ // Planning tool - completely independent
2
+ export const createUserStoriesDefinition = {
3
+ name: 'create_user_stories',
4
+ description: '스토리|사용자 스토리|user story|user stories|as a user - Generate user stories from requirements',
5
+ inputSchema: {
6
+ type: 'object',
7
+ properties: {
8
+ features: { type: 'string', description: 'List of features or requirements to convert to user stories' },
9
+ userTypes: { type: 'string', description: 'Types of users (e.g., admin, customer, guest)' },
10
+ priority: { type: 'string', description: 'Default priority level', enum: ['high', 'medium', 'low'] },
11
+ includeAcceptanceCriteria: { type: 'boolean', description: 'Include acceptance criteria for each story' }
12
+ },
13
+ required: ['features']
14
+ },
15
+ annotations: {
16
+ title: 'Create User Stories',
17
+ audience: ['user', 'assistant'],
18
+ readOnlyHint: true,
19
+ destructiveHint: false,
20
+ idempotentHint: true,
21
+ openWorldHint: false
22
+ }
23
+ };
24
+ export async function createUserStories(args) {
25
+ const { features, userTypes = 'user, admin, guest', priority = 'medium', includeAcceptanceCriteria = true } = args;
26
+ // Parse features into individual items
27
+ const featureList = features.split(/[,\n]/).map(f => f.trim()).filter(f => f.length > 0);
28
+ const userTypeList = userTypes.split(',').map(u => u.trim());
29
+ const userStories = featureList.map((feature, index) => {
30
+ const storyId = `US-${String(index + 1).padStart(3, '0')}`;
31
+ // Determine user type based on feature content
32
+ let selectedUserType = userTypeList[0];
33
+ if (feature.toLowerCase().includes('admin') || feature.toLowerCase().includes('manage')) {
34
+ selectedUserType = userTypeList.find(u => u.toLowerCase().includes('admin')) || selectedUserType;
35
+ }
36
+ else if (feature.toLowerCase().includes('guest') || feature.toLowerCase().includes('browse')) {
37
+ selectedUserType = userTypeList.find(u => u.toLowerCase().includes('guest')) || selectedUserType;
38
+ }
39
+ // Extract functionality and benefit
40
+ const functionality = feature;
41
+ let benefit = 'to achieve my goals efficiently';
42
+ // Try to infer benefit from common patterns
43
+ if (feature.toLowerCase().includes('search'))
44
+ benefit = 'to find relevant information quickly';
45
+ else if (feature.toLowerCase().includes('save') || feature.toLowerCase().includes('store'))
46
+ benefit = 'to preserve my data for future use';
47
+ else if (feature.toLowerCase().includes('share'))
48
+ benefit = 'to collaborate with others effectively';
49
+ else if (feature.toLowerCase().includes('track') || feature.toLowerCase().includes('monitor'))
50
+ benefit = 'to stay informed about important changes';
51
+ else if (feature.toLowerCase().includes('customize') || feature.toLowerCase().includes('configure'))
52
+ benefit = 'to tailor the experience to my needs';
53
+ // Generate acceptance criteria
54
+ const acceptanceCriteria = includeAcceptanceCriteria ? [
55
+ `Given I am a ${selectedUserType}, when I access the ${functionality.toLowerCase()} feature, then it should be available and functional`,
56
+ `When I use the ${functionality.toLowerCase()} feature, then it should provide clear feedback about the action`,
57
+ `The ${functionality.toLowerCase()} feature should handle errors gracefully and provide helpful messages`,
58
+ `The feature should be accessible and usable across different devices and browsers`
59
+ ] : [];
60
+ // Determine priority based on feature content
61
+ let storyPriority = priority;
62
+ if (feature.toLowerCase().includes('critical') || feature.toLowerCase().includes('security') || feature.toLowerCase().includes('login')) {
63
+ storyPriority = 'high';
64
+ }
65
+ else if (feature.toLowerCase().includes('nice to have') || feature.toLowerCase().includes('optional')) {
66
+ storyPriority = 'low';
67
+ }
68
+ // Estimate effort based on complexity
69
+ let estimatedEffort = '3-5 days';
70
+ if (feature.length > 100 || feature.toLowerCase().includes('complex') || feature.toLowerCase().includes('integration')) {
71
+ estimatedEffort = '1-2 weeks';
72
+ }
73
+ else if (feature.length < 30 || feature.toLowerCase().includes('simple') || feature.toLowerCase().includes('basic')) {
74
+ estimatedEffort = '1-2 days';
75
+ }
76
+ return {
77
+ id: storyId,
78
+ title: `${selectedUserType} - ${functionality}`,
79
+ story: `As a ${selectedUserType}, I want to ${functionality.toLowerCase()}, so that ${benefit}.`,
80
+ userType: selectedUserType,
81
+ functionality,
82
+ benefit,
83
+ acceptanceCriteria,
84
+ priority: storyPriority,
85
+ estimatedEffort,
86
+ dependencies: []
87
+ };
88
+ });
89
+ const result = {
90
+ action: 'create_user_stories',
91
+ totalStories: userStories.length,
92
+ userTypes: userTypeList,
93
+ stories: userStories,
94
+ summary: {
95
+ high: userStories.filter(s => s.priority === 'high').length,
96
+ medium: userStories.filter(s => s.priority === 'medium').length,
97
+ low: userStories.filter(s => s.priority === 'low').length,
98
+ estimatedTotalEffort: `${userStories.length * 3}-${userStories.length * 7} days`
99
+ },
100
+ status: 'success'
101
+ };
102
+ // Format output
103
+ let formattedOutput = `# User Stories\n\n**Total Stories:** ${result.totalStories} \n**Priority Breakdown:** ${result.summary.high} High, ${result.summary.medium} Medium, ${result.summary.low} Low \n**Estimated Effort:** ${result.summary.estimatedTotalEffort}\n\n`;
104
+ userStories.forEach((story, index) => {
105
+ formattedOutput += `## ${story.id}: ${story.title}\n\n`;
106
+ formattedOutput += `**Story:** ${story.story}\n\n`;
107
+ formattedOutput += `**Priority:** ${story.priority.toUpperCase()} \n`;
108
+ formattedOutput += `**Estimated Effort:** ${story.estimatedEffort}\n\n`;
109
+ if (story.acceptanceCriteria.length > 0) {
110
+ formattedOutput += `**Acceptance Criteria:**\n`;
111
+ story.acceptanceCriteria.forEach((criteria, i) => {
112
+ formattedOutput += `${i + 1}. ${criteria}\n`;
113
+ });
114
+ formattedOutput += '\n';
115
+ }
116
+ if (index < userStories.length - 1) {
117
+ formattedOutput += '---\n\n';
118
+ }
119
+ });
120
+ return {
121
+ content: [{ type: 'text', text: formattedOutput }]
122
+ };
123
+ }
124
+ //# sourceMappingURL=createUserStories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createUserStories.js","sourceRoot":"","sources":["../../../src/tools/planning/createUserStories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ToolResult, ToolDefinition } from '../../types/tool.js';
2
+ export declare const featureRoadmapDefinition: ToolDefinition;
3
+ export declare function featureRoadmap(args: {
4
+ projectName: string;
5
+ features: string;
6
+ timeframe?: string;
7
+ approach?: string;
8
+ teamSize?: number;
9
+ }): Promise<ToolResult>;
10
+ //# sourceMappingURL=featureRoadmap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featureRoadmap.d.ts","sourceRoot":"","sources":["../../../src/tools/planning/featureRoadmap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAuBjE,eAAO,MAAM,wBAAwB,EAAE,cAsBtC,CAAC;AAEF,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4MtB"}
@@ -0,0 +1,207 @@
1
+ // Planning tool - completely independent
2
+ export const featureRoadmapDefinition = {
3
+ name: 'feature_roadmap',
4
+ description: '로드맵|일정|계획표|roadmap|timeline|project plan|development schedule - Generate development roadmap',
5
+ inputSchema: {
6
+ type: 'object',
7
+ properties: {
8
+ projectName: { type: 'string', description: 'Name of the project' },
9
+ features: { type: 'string', description: 'List of features to include in roadmap' },
10
+ timeframe: { type: 'string', description: 'Project timeframe', enum: ['3-months', '6-months', '12-months', 'custom'] },
11
+ approach: { type: 'string', description: 'Development approach', enum: ['mvp-first', 'phased-rollout', 'big-bang'], default: 'mvp-first' },
12
+ teamSize: { type: 'number', description: 'Development team size' }
13
+ },
14
+ required: ['projectName', 'features']
15
+ },
16
+ annotations: {
17
+ title: 'Feature Roadmap',
18
+ audience: ['user', 'assistant'],
19
+ readOnlyHint: true,
20
+ destructiveHint: false,
21
+ idempotentHint: true,
22
+ openWorldHint: false
23
+ }
24
+ };
25
+ export async function featureRoadmap(args) {
26
+ const { projectName, features, timeframe = '6-months', approach = 'mvp-first', teamSize = 3 } = args;
27
+ // Parse features
28
+ const featureList = features.split(/[,\n]/).map(f => f.trim()).filter(f => f.length > 0);
29
+ // Define phases based on approach
30
+ let phaseNames = [];
31
+ if (approach === 'mvp-first') {
32
+ phaseNames = ['MVP Foundation', 'Core Features', 'Advanced Features', 'Optimization & Scaling'];
33
+ }
34
+ else if (approach === 'phased-rollout') {
35
+ phaseNames = ['Phase 1: Core', 'Phase 2: Enhancement', 'Phase 3: Expansion', 'Phase 4: Innovation'];
36
+ }
37
+ else {
38
+ phaseNames = ['Planning & Setup', 'Development Sprint', 'Integration & Testing', 'Launch & Monitoring'];
39
+ }
40
+ // Calculate phase durations
41
+ const totalMonths = timeframe === '3-months' ? 3 : timeframe === '6-months' ? 6 : timeframe === '12-months' ? 12 : 6;
42
+ const monthsPerPhase = Math.ceil(totalMonths / phaseNames.length);
43
+ // Categorize features by priority and complexity
44
+ const roadmapItems = featureList.map((feature, index) => {
45
+ const itemId = `F-${String(index + 1).padStart(3, '0')}`;
46
+ // Determine priority
47
+ let priority = 'medium';
48
+ if (feature.toLowerCase().includes('critical') || feature.toLowerCase().includes('core') || feature.toLowerCase().includes('essential')) {
49
+ priority = 'high';
50
+ }
51
+ else if (feature.toLowerCase().includes('enhancement') || feature.toLowerCase().includes('nice') || feature.toLowerCase().includes('optional')) {
52
+ priority = 'low';
53
+ }
54
+ // Determine phase based on priority and approach
55
+ let phase = phaseNames[1]; // Default to second phase
56
+ if (priority === 'high' || feature.toLowerCase().includes('mvp') || feature.toLowerCase().includes('basic')) {
57
+ phase = phaseNames[0];
58
+ }
59
+ else if (priority === 'low' || feature.toLowerCase().includes('advanced') || feature.toLowerCase().includes('future')) {
60
+ phase = phaseNames[Math.min(2, phaseNames.length - 1)];
61
+ }
62
+ // Estimate duration
63
+ let estimatedDuration = '2-3 weeks';
64
+ if (feature.length > 100 || feature.toLowerCase().includes('complex') || feature.toLowerCase().includes('integration')) {
65
+ estimatedDuration = '4-6 weeks';
66
+ }
67
+ else if (feature.length < 50 || feature.toLowerCase().includes('simple')) {
68
+ estimatedDuration = '1-2 weeks';
69
+ }
70
+ // Generate deliverables
71
+ const deliverables = [
72
+ `${feature} implementation`,
73
+ `Unit and integration tests`,
74
+ `Documentation and user guides`,
75
+ `Code review and quality assurance`
76
+ ];
77
+ // Generate success criteria
78
+ const successCriteria = [
79
+ `Feature functions as specified`,
80
+ `Meets performance requirements`,
81
+ `Passes all test cases`,
82
+ `User acceptance criteria met`
83
+ ];
84
+ // Identify potential risks
85
+ const risks = [];
86
+ if (feature.toLowerCase().includes('external') || feature.toLowerCase().includes('third-party')) {
87
+ risks.push('External dependency risk');
88
+ }
89
+ if (feature.toLowerCase().includes('performance') || feature.toLowerCase().includes('scalability')) {
90
+ risks.push('Performance optimization complexity');
91
+ }
92
+ if (feature.toLowerCase().includes('security') || feature.toLowerCase().includes('authentication')) {
93
+ risks.push('Security implementation complexity');
94
+ }
95
+ if (risks.length === 0) {
96
+ risks.push('Standard development risks');
97
+ }
98
+ return {
99
+ id: itemId,
100
+ title: feature.length > 50 ? feature.substring(0, 47) + '...' : feature,
101
+ description: feature,
102
+ phase,
103
+ priority,
104
+ estimatedDuration,
105
+ dependencies: [],
106
+ deliverables,
107
+ successCriteria,
108
+ risks
109
+ };
110
+ });
111
+ // Group features by phase
112
+ const phases = phaseNames.map((phaseName, index) => {
113
+ const phaseFeatures = roadmapItems.filter(item => item.phase === phaseName);
114
+ const phaseGoals = [];
115
+ if (index === 0) {
116
+ phaseGoals.push('Establish core functionality', 'Validate core assumptions', 'Build foundation for future features');
117
+ }
118
+ else if (index === 1) {
119
+ phaseGoals.push('Enhance user experience', 'Add key differentiating features', 'Improve system reliability');
120
+ }
121
+ else if (index === 2) {
122
+ phaseGoals.push('Scale system capabilities', 'Add advanced features', 'Optimize performance');
123
+ }
124
+ else {
125
+ phaseGoals.push('Continuous improvement', 'Innovation and experimentation', 'Long-term sustainability');
126
+ }
127
+ const milestones = [
128
+ `${phaseName} features delivered`,
129
+ `Quality assurance completed`,
130
+ `User feedback incorporated`,
131
+ `Metrics and KPIs reviewed`
132
+ ];
133
+ return {
134
+ name: phaseName,
135
+ duration: `${monthsPerPhase} month${monthsPerPhase > 1 ? 's' : ''}`,
136
+ goals: phaseGoals,
137
+ features: phaseFeatures,
138
+ milestones
139
+ };
140
+ });
141
+ const roadmap = {
142
+ action: 'feature_roadmap',
143
+ project: projectName,
144
+ timeframe,
145
+ approach,
146
+ teamSize,
147
+ phases,
148
+ summary: {
149
+ totalFeatures: roadmapItems.length,
150
+ totalDuration: `${totalMonths} months`,
151
+ highPriorityFeatures: roadmapItems.filter(f => f.priority === 'high').length,
152
+ mediumPriorityFeatures: roadmapItems.filter(f => f.priority === 'medium').length,
153
+ lowPriorityFeatures: roadmapItems.filter(f => f.priority === 'low').length
154
+ },
155
+ recommendations: [
156
+ 'Review and validate priorities with stakeholders',
157
+ 'Set up regular milestone reviews and adjustments',
158
+ 'Plan for buffer time between phases for testing',
159
+ 'Consider team capacity and external dependencies',
160
+ 'Establish clear success metrics for each phase'
161
+ ],
162
+ status: 'success'
163
+ };
164
+ // Format output
165
+ let formattedOutput = `# ${projectName} - Feature Roadmap\n\n`;
166
+ formattedOutput += `**Timeframe:** ${timeframe} \n`;
167
+ formattedOutput += `**Approach:** ${approach} \n`;
168
+ formattedOutput += `**Team Size:** ${teamSize} developers \n`;
169
+ formattedOutput += `**Total Features:** ${roadmap.summary.totalFeatures}\n\n`;
170
+ formattedOutput += `## Overview\n`;
171
+ formattedOutput += `- **High Priority:** ${roadmap.summary.highPriorityFeatures} features\n`;
172
+ formattedOutput += `- **Medium Priority:** ${roadmap.summary.mediumPriorityFeatures} features\n`;
173
+ formattedOutput += `- **Low Priority:** ${roadmap.summary.lowPriorityFeatures} features\n\n`;
174
+ phases.forEach((phase, index) => {
175
+ formattedOutput += `## ${phase.name}\n`;
176
+ formattedOutput += `**Duration:** ${phase.duration} \n`;
177
+ formattedOutput += `**Features:** ${phase.features.length}\n\n`;
178
+ formattedOutput += `### Goals\n`;
179
+ phase.goals.forEach(goal => {
180
+ formattedOutput += `- ${goal}\n`;
181
+ });
182
+ formattedOutput += '\n';
183
+ if (phase.features.length > 0) {
184
+ formattedOutput += `### Features\n`;
185
+ phase.features.forEach(feature => {
186
+ formattedOutput += `**${feature.id}:** ${feature.title} (${feature.priority.toUpperCase()}) \n`;
187
+ formattedOutput += `*Duration:* ${feature.estimatedDuration} \n`;
188
+ formattedOutput += `*Key Risks:* ${feature.risks.join(', ')}\n\n`;
189
+ });
190
+ }
191
+ formattedOutput += `### Milestones\n`;
192
+ phase.milestones.forEach(milestone => {
193
+ formattedOutput += `- ${milestone}\n`;
194
+ });
195
+ if (index < phases.length - 1) {
196
+ formattedOutput += '\n---\n\n';
197
+ }
198
+ });
199
+ formattedOutput += `\n## Recommendations\n`;
200
+ roadmap.recommendations.forEach(rec => {
201
+ formattedOutput += `- ${rec}\n`;
202
+ });
203
+ return {
204
+ content: [{ type: 'text', text: formattedOutput }]
205
+ };
206
+ }
207
+ //# sourceMappingURL=featureRoadmap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featureRoadmap.js","sourceRoot":"","sources":["../../../src/tools/planning/featureRoadmap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ToolResult, ToolDefinition } from '../../types/tool.js';
2
+ export declare const generatePrdDefinition: ToolDefinition;
3
+ export declare function generatePrd(args: {
4
+ productName: string;
5
+ productVision: string;
6
+ targetAudience?: string;
7
+ businessObjectives?: string;
8
+ functionalRequirements?: string;
9
+ constraints?: string;
10
+ }): Promise<ToolResult>;
11
+ //# sourceMappingURL=generatePrd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePrd.d.ts","sourceRoot":"","sources":["../../../src/tools/planning/generatePrd.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEjE,eAAO,MAAM,qBAAqB,EAAE,cAuBnC,CAAC;AAEF,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgJtB"}