sumulige-claude 1.5.1 → 1.5.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 (219) hide show
  1. package/.claude/hooks/hook-registry.json +0 -15
  2. package/.claude/rules/coding-style.md +18 -7
  3. package/.claude/rules/hooks.md +15 -4
  4. package/.claude/rules/performance.md +15 -5
  5. package/.claude/rules/security.md +140 -4
  6. package/.claude/rules/testing.md +138 -9
  7. package/.claude/rules/web-design-standard.md +16 -5
  8. package/.claude/skills/algorithmic-art/metadata.yaml +28 -0
  9. package/.claude/skills/api-tester/SKILL.md +61 -0
  10. package/.claude/skills/api-tester/examples/basic.md +3 -0
  11. package/.claude/skills/api-tester/metadata.yaml +30 -0
  12. package/.claude/skills/api-tester/templates/default.md +3 -0
  13. package/.claude/skills/brand-guidelines/metadata.yaml +26 -0
  14. package/.claude/skills/canvas-design/metadata.yaml +27 -0
  15. package/.claude/skills/code-reviewer-123/SKILL.md +61 -0
  16. package/.claude/skills/code-reviewer-123/examples/basic.md +3 -0
  17. package/.claude/skills/code-reviewer-123/metadata.yaml +30 -0
  18. package/.claude/skills/code-reviewer-123/templates/default.md +3 -0
  19. package/.claude/skills/doc-coauthoring/metadata.yaml +27 -0
  20. package/.claude/skills/docx/metadata.yaml +30 -0
  21. package/.claude/skills/frontend-design/metadata.yaml +28 -0
  22. package/.claude/skills/internal-comms/metadata.yaml +28 -0
  23. package/.claude/skills/mcp-builder/metadata.yaml +26 -0
  24. package/.claude/skills/my-skill/SKILL.md +61 -0
  25. package/.claude/skills/my-skill/examples/basic.md +3 -0
  26. package/.claude/skills/my-skill/metadata.yaml +30 -0
  27. package/.claude/skills/my-skill/templates/default.md +3 -0
  28. package/.claude/skills/pdf/metadata.yaml +29 -0
  29. package/.claude/skills/pptx/metadata.yaml +29 -0
  30. package/.claude/skills/react-best-practices/metadata.yaml +26 -0
  31. package/.claude/skills/react-node-practices/SKILL.md +409 -0
  32. package/.claude/skills/react-node-practices/metadata.yaml +56 -0
  33. package/.claude/skills/skill-creator/metadata.yaml +25 -0
  34. package/.claude/skills/slack-gif-creator/metadata.yaml +28 -0
  35. package/.claude/skills/test-skill-name/SKILL.md +61 -0
  36. package/.claude/skills/test-skill-name/examples/basic.md +3 -0
  37. package/.claude/skills/test-skill-name/metadata.yaml +30 -0
  38. package/.claude/skills/test-skill-name/templates/default.md +3 -0
  39. package/.claude/skills/test-workflow/metadata.yaml +32 -0
  40. package/.claude/skills/theme-factory/metadata.yaml +26 -0
  41. package/.claude/skills/threejs-fundamentals/metadata.yaml +27 -0
  42. package/.claude/skills/web-artifacts-builder/metadata.yaml +30 -0
  43. package/.claude/skills/web-design-guidelines/metadata.yaml +26 -0
  44. package/.claude/skills/webapp-testing/metadata.yaml +26 -0
  45. package/.claude/skills/xlsx/metadata.yaml +29 -0
  46. package/LICENSE +21 -0
  47. package/cli.js +1 -1
  48. package/package.json +25 -3
  49. package/.claude/.kickoff-hint.txt +0 -52
  50. package/.claude/.sumulige-claude-version +0 -1
  51. package/.claude/.version +0 -1
  52. package/.claude/AGENTS.md +0 -42
  53. package/.claude/ANCHORS.md +0 -40
  54. package/.claude/CLAUDE.md +0 -138
  55. package/.claude/MEMORY.md +0 -69
  56. package/.claude/PROJECT_LOG.md +0 -101
  57. package/.claude/THINKING_CHAIN_GUIDE.md +0 -287
  58. package/.claude/USAGE.md +0 -175
  59. package/.claude/boris-optimizations.md +0 -167
  60. package/.claude/handoffs/INDEX.md +0 -21
  61. package/.claude/handoffs/LATEST.md +0 -76
  62. package/.claude/handoffs/handoff_2026-01-22T13-07-04-757Z.md +0 -76
  63. package/.claude/quality-gate.json +0 -82
  64. package/.claude/rag/skill-index.json +0 -135
  65. package/.claude/settings.json +0 -99
  66. package/.claude/settings.local.json +0 -175
  67. package/.claude/templates/PROJECT_KICKOFF.md +0 -89
  68. package/.claude/templates/PROJECT_PROPOSAL.md +0 -227
  69. package/.claude/templates/TASK_PLAN.md +0 -121
  70. package/.claude/templates/hooks/README.md +0 -302
  71. package/.claude/templates/hooks/hook.sh.template +0 -94
  72. package/.claude/templates/hooks/user-prompt-submit.cjs.template +0 -116
  73. package/.claude/templates/hooks/user-response-submit.cjs.template +0 -94
  74. package/.claude/templates/hooks/validate.js +0 -173
  75. package/.claude/templates/tasks/develop.md +0 -69
  76. package/.claude/templates/tasks/research.md +0 -64
  77. package/.claude/templates/tasks/test.md +0 -96
  78. package/.claude/thinking-routes/.last-sync +0 -1
  79. package/.claude/thinking-routes/QUICKREF.md +0 -98
  80. package/.claude/workflow/document-scanner.js +0 -426
  81. package/.claude/workflow/knowledge-engine.js +0 -941
  82. package/.claude/workflow/notebooklm/browser.js +0 -1028
  83. package/.claude/workflow/phases/phase1-research.js +0 -578
  84. package/.claude/workflow/phases/phase1-research.ts +0 -465
  85. package/.claude/workflow/phases/phase2-approve.js +0 -722
  86. package/.claude/workflow/phases/phase3-plan.js +0 -1200
  87. package/.claude/workflow/phases/phase4-develop.js +0 -894
  88. package/.claude/workflow/search-cache.js +0 -230
  89. package/.claude/workflow/templates/approval.md +0 -315
  90. package/.claude/workflow/templates/development.md +0 -377
  91. package/.claude/workflow/templates/planning.md +0 -328
  92. package/.claude/workflow/templates/research.md +0 -250
  93. package/.claude/workflow/types.js +0 -37
  94. package/.claude/workflow/web-search.js +0 -278
  95. package/.claude-plugin/marketplace.json +0 -71
  96. package/.github/workflows/sync-skills.yml +0 -74
  97. package/.versionrc +0 -25
  98. package/AGENTS.md +0 -580
  99. package/CHANGELOG.md +0 -481
  100. package/CLAUDE-template.md +0 -114
  101. package/DEV_TOOLS_GUIDE.md +0 -190
  102. package/PROJECT_STRUCTURE.md +0 -266
  103. package/Q&A.md +0 -325
  104. package/config/defaults.json +0 -34
  105. package/config/official-skills.json +0 -183
  106. package/config/quality-gate.json +0 -67
  107. package/config/skill-categories.json +0 -40
  108. package/config/version-manifest.json +0 -85
  109. package/demos/power-3d-scatter.html +0 -683
  110. package/development/cache/web-search/search_1193d605f8eb364651fc2f2041b58a31.json +0 -36
  111. package/development/cache/web-search/search_3798bf06960edc125f744a1abb5b72c5.json +0 -36
  112. package/development/cache/web-search/search_37c7d4843a53f0d83f1122a6f908a2a3.json +0 -36
  113. package/development/cache/web-search/search_44166fa0153709ee168485a22aa0ab40.json +0 -36
  114. package/development/cache/web-search/search_4deaebb1f77e86a8ca066dc5a49c59fd.json +0 -36
  115. package/development/cache/web-search/search_94da91789466070a7f545612e73c7372.json +0 -36
  116. package/development/cache/web-search/search_dd5de8491b8b803a3cb01339cd210fb0.json +0 -36
  117. package/development/knowledge-base/.index.clean.json +0 -1
  118. package/development/knowledge-base/.index.json +0 -486
  119. package/development/knowledge-base/test-best-practices.md +0 -29
  120. package/development/projects/proj_mkh1pazz_ixmt1/phase1/feasibility-report.md +0 -160
  121. package/development/projects/proj_mkh4jvnb_z7rwf/phase1/feasibility-report.md +0 -160
  122. package/development/projects/proj_mkh4jxkd_ewz5a/phase1/feasibility-report.md +0 -160
  123. package/development/projects/proj_mkh4k84n_ni73k/phase1/feasibility-report.md +0 -160
  124. package/development/projects/proj_mkh4wfyd_u9w88/phase1/feasibility-report.md +0 -160
  125. package/development/projects/proj_mkh4wsbo_iahvf/development/projects/proj_mkh4xbpg_4na5w/phase1/feasibility-report.md +0 -160
  126. package/development/projects/proj_mkh4wsbo_iahvf/phase1/feasibility-report.md +0 -160
  127. package/development/projects/proj_mkh4xulg_1ka8x/phase1/feasibility-report.md +0 -160
  128. package/development/projects/proj_mkh4xwhj_gch8j/phase1/feasibility-report.md +0 -160
  129. package/development/projects/proj_mkh4y2qk_9lm8z/phase1/feasibility-report.md +0 -160
  130. package/development/projects/proj_mkh4y2qk_9lm8z/phase2/requirements.md +0 -226
  131. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/PRD.md +0 -345
  132. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/TASK_PLAN.md +0 -284
  133. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/prototype/README.md +0 -14
  134. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/DEVELOPMENT_LOG.md +0 -35
  135. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/TASKS.md +0 -34
  136. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/.env.example +0 -5
  137. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/README.md +0 -60
  138. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/package.json +0 -25
  139. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/index.js +0 -70
  140. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/routes/index.js +0 -48
  141. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/health.test.js +0 -20
  142. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/jest.config.js +0 -21
  143. package/development/projects/proj_mkh7veqg_3lypc/phase1/feasibility-report.md +0 -160
  144. package/development/projects/proj_mkh7veqg_3lypc/phase2/requirements.md +0 -226
  145. package/development/projects/proj_mkh7veqg_3lypc/phase3/PRD.md +0 -345
  146. package/development/projects/proj_mkh7veqg_3lypc/phase3/TASK_PLAN.md +0 -284
  147. package/development/projects/proj_mkh7veqg_3lypc/phase3/prototype/README.md +0 -14
  148. package/development/projects/proj_mkh8k8fo_rmqn5/phase1/feasibility-report.md +0 -160
  149. package/development/projects/proj_mkh8xyhy_1vshq/phase1/feasibility-report.md +0 -178
  150. package/development/projects/proj_mkh8zddd_dhamf/phase1/feasibility-report.md +0 -377
  151. package/development/projects/proj_mkh8zddd_dhamf/phase2/requirements.md +0 -442
  152. package/development/projects/proj_mkh8zddd_dhamf/phase3/api-design.md +0 -800
  153. package/development/projects/proj_mkh8zddd_dhamf/phase3/architecture.md +0 -625
  154. package/development/projects/proj_mkh8zddd_dhamf/phase3/data-model.md +0 -830
  155. package/development/projects/proj_mkh8zddd_dhamf/phase3/risks.md +0 -957
  156. package/development/projects/proj_mkh8zddd_dhamf/phase3/wbs.md +0 -381
  157. package/development/todos/.state.json +0 -19
  158. package/development/todos/INDEX.md +0 -63
  159. package/development/todos/active/_README.md +0 -49
  160. package/development/todos/archived/_README.md +0 -11
  161. package/development/todos/backlog/_README.md +0 -11
  162. package/development/todos/backlog/mcp-integration.md +0 -35
  163. package/development/todos/completed/_README.md +0 -11
  164. package/development/todos/completed/boris-optimizations.md +0 -39
  165. package/development/todos/completed/develop/local-knowledge-index.md +0 -85
  166. package/development/todos/completed/develop/todo-system.md +0 -47
  167. package/development/todos/completed/develop/web-search-integration.md +0 -83
  168. package/development/todos/completed/test/phase1-e2e-test.md +0 -103
  169. package/docs/DEVELOPMENT.md +0 -461
  170. package/docs/MARKETPLACE.md +0 -352
  171. package/docs/RELEASE.md +0 -93
  172. package/jest.config.js +0 -63
  173. package/lib/commands.js +0 -3588
  174. package/lib/config-manager.js +0 -441
  175. package/lib/config-schema.js +0 -408
  176. package/lib/config-validator.js +0 -330
  177. package/lib/config.js +0 -122
  178. package/lib/errors.js +0 -305
  179. package/lib/incremental-sync.js +0 -274
  180. package/lib/marketplace.js +0 -487
  181. package/lib/migrations.js +0 -154
  182. package/lib/permission-audit.js +0 -255
  183. package/lib/quality-gate.js +0 -431
  184. package/lib/quality-rules.js +0 -373
  185. package/lib/utils.js +0 -150
  186. package/lib/version-check.js +0 -169
  187. package/lib/version-manifest.js +0 -171
  188. package/project-paradigm.md +0 -313
  189. package/prompts/how-to-find.md +0 -163
  190. package/prompts/linus-architect.md +0 -71
  191. package/prompts/software-architect.md +0 -173
  192. package/prompts/web-designer.md +0 -249
  193. package/scripts/fix-hooks.mjs +0 -97
  194. package/scripts/sync-external.mjs +0 -298
  195. package/scripts/sync-to-home.sh +0 -108
  196. package/scripts/update-registry.mjs +0 -325
  197. package/sources.yaml +0 -83
  198. package/tests/README.md +0 -263
  199. package/tests/commands.test.js +0 -1086
  200. package/tests/config-manager.test.js +0 -677
  201. package/tests/config-schema.test.js +0 -425
  202. package/tests/config-validator.test.js +0 -436
  203. package/tests/config.test.js +0 -100
  204. package/tests/errors.test.js +0 -477
  205. package/tests/manual/phase1-e2e.sh +0 -389
  206. package/tests/manual/phase2-test-cases.md +0 -311
  207. package/tests/manual/phase3-test-cases.md +0 -309
  208. package/tests/manual/phase4-test-cases.md +0 -414
  209. package/tests/manual/test-cases.md +0 -417
  210. package/tests/marketplace.test.js +0 -420
  211. package/tests/migrations.test.js +0 -187
  212. package/tests/quality-gate.test.js +0 -679
  213. package/tests/quality-rules.test.js +0 -619
  214. package/tests/sync-external.test.js +0 -214
  215. package/tests/update-registry.test.js +0 -251
  216. package/tests/utils.test.js +0 -171
  217. package/tests/version-check.test.js +0 -75
  218. package/tests/web-search.test.js +0 -392
  219. package/thinkinglens-silent.md +0 -138
@@ -1,230 +0,0 @@
1
- /**
2
- * Search Result Cache
3
- *
4
- * Caches web search results to avoid redundant API calls
5
- * and improve performance for repeated queries.
6
- */
7
-
8
- const fs = require('fs');
9
- const path = require('path');
10
- const crypto = require('crypto');
11
-
12
- // ============================================================================
13
- // Configuration
14
- // ============================================================================
15
-
16
- const CACHE_DIR = path.join(process.cwd(), 'development/cache/web-search');
17
- const CACHE_TTL = 24 * 60 * 60 * 1000; // 24 hours in milliseconds
18
-
19
- // ============================================================================
20
- // Search Cache Class
21
- // ============================================================================
22
-
23
- class SearchCache {
24
- /**
25
- * Ensure cache directory exists
26
- */
27
- static ensureCacheDir() {
28
- if (!fs.existsSync(CACHE_DIR)) {
29
- fs.mkdirSync(CACHE_DIR, { recursive: true });
30
- }
31
- }
32
-
33
- /**
34
- * Generate cache key from query
35
- */
36
- static getCacheKey(query) {
37
- const hash = crypto
38
- .createHash('md5')
39
- .update(query.toLowerCase().trim())
40
- .digest('hex');
41
- return `search_${hash}.json`;
42
- }
43
-
44
- /**
45
- * Get cache file path for a query
46
- */
47
- static getCachePath(query) {
48
- this.ensureCacheDir();
49
- const key = this.getCacheKey(query);
50
- return path.join(CACHE_DIR, key);
51
- }
52
-
53
- /**
54
- * Check if cached result is still valid
55
- */
56
- static isValid(cachedResult) {
57
- if (!cachedResult || !cachedResult.timestamp) return false;
58
- const age = Date.now() - cachedResult.timestamp;
59
- return age < CACHE_TTL;
60
- }
61
-
62
- /**
63
- * Get cached results for a query
64
- */
65
- static get(query) {
66
- const cachePath = this.getCachePath(query);
67
-
68
- if (!fs.existsSync(cachePath)) {
69
- return null;
70
- }
71
-
72
- try {
73
- const content = fs.readFileSync(cachePath, 'utf-8');
74
- const cached = JSON.parse(content);
75
-
76
- if (!this.isValid(cached)) {
77
- // Cache expired, remove it
78
- fs.unlinkSync(cachePath);
79
- return null;
80
- }
81
-
82
- return cached.results;
83
- } catch (error) {
84
- // Invalid cache file, remove it
85
- try {
86
- fs.unlinkSync(cachePath);
87
- } catch (e) {}
88
- return null;
89
- }
90
- }
91
-
92
- /**
93
- * Set cache results for a query
94
- */
95
- static set(query, results) {
96
- const cachePath = this.getCachePath(query);
97
-
98
- try {
99
- const cacheData = {
100
- query,
101
- results,
102
- timestamp: Date.now()
103
- };
104
-
105
- fs.writeFileSync(
106
- cachePath,
107
- JSON.stringify(cacheData, null, 2),
108
- 'utf-8'
109
- );
110
- } catch (error) {
111
- // Fail silently if cache write fails
112
- console.warn(`Failed to write cache: ${error.message}`);
113
- }
114
- }
115
-
116
- /**
117
- * Clear all cache
118
- */
119
- static clear() {
120
- this.ensureCacheDir();
121
-
122
- if (!fs.existsSync(CACHE_DIR)) {
123
- return 0;
124
- }
125
-
126
- const files = fs.readdirSync(CACHE_DIR);
127
- let cleared = 0;
128
-
129
- for (const file of files) {
130
- if (file.endsWith('.json')) {
131
- try {
132
- fs.unlinkSync(path.join(CACHE_DIR, file));
133
- cleared++;
134
- } catch (error) {
135
- // Skip files that can't be deleted
136
- }
137
- }
138
- }
139
-
140
- return cleared;
141
- }
142
-
143
- /**
144
- * Clean expired cache entries
145
- */
146
- static clean() {
147
- this.ensureCacheDir();
148
-
149
- if (!fs.existsSync(CACHE_DIR)) {
150
- return 0;
151
- }
152
-
153
- const files = fs.readdirSync(CACHE_DIR);
154
- let cleaned = 0;
155
-
156
- for (const file of files) {
157
- if (file.endsWith('.json')) {
158
- const filePath = path.join(CACHE_DIR, file);
159
- try {
160
- const content = fs.readFileSync(filePath, 'utf-8');
161
- const cached = JSON.parse(content);
162
-
163
- if (!this.isValid(cached)) {
164
- fs.unlinkSync(filePath);
165
- cleaned++;
166
- }
167
- } catch (error) {
168
- // Remove invalid cache files
169
- try {
170
- fs.unlinkSync(filePath);
171
- cleaned++;
172
- } catch (e) {}
173
- }
174
- }
175
- }
176
-
177
- return cleaned;
178
- }
179
-
180
- /**
181
- * Get cache statistics
182
- */
183
- static getStats() {
184
- this.ensureCacheDir();
185
-
186
- if (!fs.existsSync(CACHE_DIR)) {
187
- return { totalEntries: 0, validEntries: 0, totalSize: 0 };
188
- }
189
-
190
- const files = fs.readdirSync(CACHE_DIR);
191
- let validEntries = 0;
192
- let totalSize = 0;
193
-
194
- for (const file of files) {
195
- if (file.endsWith('.json')) {
196
- const filePath = path.join(CACHE_DIR, file);
197
- try {
198
- const stats = fs.statSync(filePath);
199
- totalSize += stats.size;
200
-
201
- const content = fs.readFileSync(filePath, 'utf-8');
202
- const cached = JSON.parse(content);
203
-
204
- if (this.isValid(cached)) {
205
- validEntries++;
206
- }
207
- } catch (error) {
208
- // Skip invalid files
209
- }
210
- }
211
- }
212
-
213
- return {
214
- totalEntries: files.length,
215
- validEntries,
216
- totalSize,
217
- cacheDir: CACHE_DIR
218
- };
219
- }
220
- }
221
-
222
- // ============================================================================
223
- // Exports
224
- // ============================================================================
225
-
226
- module.exports = {
227
- SearchCache,
228
- CACHE_DIR,
229
- CACHE_TTL
230
- };
@@ -1,315 +0,0 @@
1
- # Phase 2 Approval Prompt Template
2
-
3
- > **Role**: Requirements Analyst & Facilitator
4
- > **Goal**: Transform feasibility analysis into clear, executable requirements
5
-
6
- ---
7
-
8
- ## System Context
9
-
10
- You are the **Phase 2 Approval Engine** for a 5-phase AI-assisted development workflow. Your role is to:
11
-
12
- 1. **Review** the Phase 1 feasibility analysis thoroughly
13
- 2. **Clarify** any ambiguities through targeted questions
14
- 3. **Facilitate** consensus between stakeholders
15
- 4. **Define** clear, testable requirements
16
-
17
- **Key Principle**: You bridge the gap between "what's possible" (Phase 1) and "what to build" (Phase 3). Requirements must be unambiguous and testable.
18
-
19
- ---
20
-
21
- ## Input Format
22
-
23
- ```
24
- PHASE 1 FEASIBILITY REPORT: {{phase1ReportPath}}
25
-
26
- CONTENT:
27
- {{phase1ReportContent}}
28
-
29
- ADDITIONAL CONTEXT:
30
- {{userContext}}
31
- ```
32
-
33
- ---
34
-
35
- ## Approval Process
36
-
37
- ### Step 1: Review Feasibility Analysis (15 minutes)
38
-
39
- Read and analyze the Phase 1 report:
40
-
41
- 1. **Understand the core problem** being solved
42
- 2. **Review recommended tech stack** and rationale
43
- 3. **Assess identified risks** and mitigation strategies
44
- 4. **Note any assumptions** that need validation
45
-
46
- Key questions to consider:
47
- - Is the problem statement clear?
48
- - Are the recommended technologies justified?
49
- - Are the time estimates realistic?
50
- - What risks need more detail?
51
-
52
- Output format:
53
- ```markdown
54
- ## Feasibility Review
55
-
56
- ### Problem Understanding
57
- [Summarize the problem in your own words]
58
-
59
- ### Tech Stack Assessment
60
- [Comment on the recommended technology choices]
61
-
62
- ### Risk Analysis
63
- [Highlight any risks that need attention]
64
-
65
- ### Areas Needing Clarification
66
- [Identify what's unclear or needs more detail]
67
- ```
68
-
69
- ---
70
-
71
- ### Step 2: Generate Clarification Questions (30 minutes)
72
-
73
- Based on the feasibility review, generate targeted questions:
74
-
75
- #### Scope Questions
76
- - What is the MVP scope?
77
- - What features are essential vs. nice-to-have?
78
- - What is explicitly out of scope?
79
-
80
- #### Technical Questions
81
- - Are there integration points with existing systems?
82
- - Are there technical constraints not considered?
83
- - Does the team have the required skills?
84
-
85
- #### Success Questions
86
- - How will success be measured?
87
- - What are the key performance indicators?
88
- - What does "done" look like?
89
-
90
- #### Constraint Questions
91
- - Are there deadline constraints?
92
- - Are there budget/resource limitations?
93
- - Are there regulatory/compliance requirements?
94
-
95
- Output format:
96
- ```markdown
97
- ## Clarification Questions
98
-
99
- ### Scope & Priorities
100
- 1. **MVP Scope**: [Question]
101
- - Why this matters: [Rationale]
102
- - Suggested answer: [Proposed response]
103
-
104
- ### Technical Decisions
105
- 2. **[Question]**: [Details]
106
- - Why this matters: [Rationale]
107
- - Suggested answer: [Proposed response]
108
-
109
- [Continue for each category...]
110
- ```
111
-
112
- ---
113
-
114
- ### Step 3: Define Functional Requirements (45 minutes)
115
-
116
- For each requirement, provide:
117
-
118
- **Requirement Template**:
119
- ```markdown
120
- ### FR-XXX: [Title]
121
-
122
- **Description**: [What the system should do - clear and unambiguous]
123
-
124
- **User Story**: As a [user type], I want [action], so that [benefit]
125
-
126
- **Priority**: Must Have / Should Have / Could Have / Won't Have
127
-
128
- **Acceptance Criteria**:
129
- - Given [context], when [action], then [outcome]
130
- - Given [context], when [action], then [outcome]
131
- - Given [context], when [action], then [outcome]
132
-
133
- **Dependencies**: [Other requirements this depends on]
134
-
135
- **Notes**: [Any additional context]
136
- ```
137
-
138
- **Best Practices**:
139
- - Each requirement should be independently testable
140
- - Use "Given-When-Then" format for acceptance criteria
141
- - Assign unique IDs (FR-001, FR-002, etc.)
142
- - Specify priority using MoSCoW method
143
-
144
- ---
145
-
146
- ### Step 4: Define Non-Functional Requirements (30 minutes)
147
-
148
- Cover these categories:
149
-
150
- #### Performance
151
- - Response times (e.g., API < 200ms p95)
152
- - Throughput (e.g., 1000 concurrent users)
153
- - Resource limits
154
-
155
- #### Security
156
- - Authentication method (JWT, OAuth, etc.)
157
- - Authorization model (RBAC, ABAC, etc.)
158
- - Data protection requirements
159
-
160
- #### Reliability
161
- - Uptime target (e.g., 99.9%)
162
- - Failure handling strategy
163
- - Backup/recovery requirements
164
-
165
- #### Maintainability
166
- - Code quality standards
167
- - Test coverage requirements
168
- - Documentation requirements
169
-
170
- #### Compatibility
171
- - Browser/platform support
172
- - API versioning strategy
173
- - Backward compatibility needs
174
-
175
- Output format:
176
- ```markdown
177
- ## Non-Functional Requirements
178
-
179
- ### Performance
180
- | Metric | Target | How to Measure |
181
- |--------|--------|----------------|
182
- | API Response Time | < 200ms p95 | Load testing |
183
-
184
- ### Security
185
- - Authentication: JWT tokens with 24h expiry
186
- - Authorization: Role-based access control (Admin, User, Guest)
187
- - Data: TLS 1.3 for transit, AES-256 for rest
188
-
189
- [Continue for other categories...]
190
- ```
191
-
192
- ---
193
-
194
- ### Step 5: Define Success Metrics (15 minutes)
195
-
196
- Define quantifiable metrics across three dimensions:
197
-
198
- #### User Engagement
199
- - DAU/MAU (Daily/Monthly Active Users)
200
- - Session duration
201
- - Feature adoption rate
202
-
203
- #### Technical Performance
204
- - Page load times
205
- - Error rates
206
- - API latency
207
-
208
- #### Business Outcomes
209
- - Conversion rates
210
- - Customer satisfaction (NPS)
211
- - Revenue impact
212
-
213
- Output format:
214
- ```markdown
215
- ## Success Metrics
216
-
217
- ### User Engagement
218
- | Metric | Target | Measurement |
219
- |--------|--------|-------------|
220
- | Daily Active Users | 1000 by day 30 | Analytics |
221
-
222
- ### Technical Performance
223
- | Metric | Target | Measurement |
224
- |--------|--------|-------------|
225
- | API P95 Latency | < 200ms | Monitoring |
226
-
227
- ### Business Outcomes
228
- | Metric | Target | Measurement |
229
- |--------|--------|-------------|
230
- | NPS Score | > 50 | Quarterly Survey |
231
- ```
232
-
233
- ---
234
-
235
- ### Step 6: Identify Edge Cases (15 minutes)
236
-
237
- Think about:
238
- - Empty states (no data)
239
- - Error conditions (API failures, network issues)
240
- - Boundary conditions (max/min values)
241
- - Concurrent operations
242
- - Invalid user input
243
-
244
- Output format:
245
- ```markdown
246
- ## Edge Cases & Constraints
247
-
248
- ### Edge Cases
249
- | Scenario | Handling Strategy |
250
- |----------|-------------------|
251
- | Empty data state | Show friendly onboarding |
252
- | API timeout | Retry with exponential backoff |
253
- | Invalid input | Real-time validation with helpful messages |
254
-
255
- ### Constraints
256
- - **Technical**: [Known technical limitations]
257
- - **Business**: [Business rule constraints]
258
- - **Legal**: [Compliance requirements]
259
- ```
260
-
261
- ---
262
-
263
- ## Quality Checklist
264
-
265
- Before finalizing, ensure:
266
-
267
- - [ ] Each requirement has a unique ID (FR-XXX)
268
- - [ ] Each requirement has testable acceptance criteria
269
- - [ ] Priorities are assigned using MoSCoW method
270
- - [ ] Non-functional requirements cover all 5 categories
271
- - [ ] Success metrics are quantifiable
272
- - [ ] Edge cases are identified with handling strategies
273
- - [ ] Assumptions and dependencies are documented
274
- - [ ] Out-of-scope items are explicitly listed
275
-
276
- ---
277
-
278
- ## Validation Criteria
279
-
280
- The requirements document will be validated against:
281
-
282
- | Check | Description |
283
- |-------|-------------|
284
- | Clear Requirements | Each requirement is unambiguous |
285
- | Acceptance Criteria | Every requirement has testable criteria |
286
- | Tech Rationale | Technology choices are justified |
287
- | Success Metrics | Quantifiable metrics are defined |
288
- | Edge Cases | Boundary conditions are identified |
289
-
290
- **Passing Score**: ≥ 80% with zero blockers
291
-
292
- ---
293
-
294
- ## Output Format
295
-
296
- Final output should be saved as `requirements.md` in:
297
- ```
298
- development/projects/{projectId}/phase2/requirements.md
299
- ```
300
-
301
- ---
302
-
303
- ## Example Output
304
-
305
- See `development/projects/examples/phase2/requirements.md` for a complete example.
306
-
307
- ---
308
-
309
- ## Notes for AI
310
-
311
- - **Be specific**: Vague requirements lead to implementation problems
312
- - **Think testable**: If you can't test it, it's not a good requirement
313
- - **Consider constraints**: Every real project has limitations
314
- - **Involve stakeholders**: Requirements reflect consensus, not assumptions
315
- - **Look ahead**: Phase 3 will need detailed requirements - provide enough detail