sumulige-claude 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) 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/README.md +280 -529
  48. package/cli.js +19 -3
  49. package/package.json +29 -3
  50. package/template/.codex/README.md +69 -0
  51. package/template/.codex/config.toml +56 -0
  52. package/template/AGENTS.md +94 -0
  53. package/.claude/.kickoff-hint.txt +0 -52
  54. package/.claude/.sumulige-claude-version +0 -1
  55. package/.claude/.version +0 -1
  56. package/.claude/AGENTS.md +0 -42
  57. package/.claude/ANCHORS.md +0 -40
  58. package/.claude/CLAUDE.md +0 -138
  59. package/.claude/MEMORY.md +0 -69
  60. package/.claude/PROJECT_LOG.md +0 -101
  61. package/.claude/THINKING_CHAIN_GUIDE.md +0 -287
  62. package/.claude/USAGE.md +0 -175
  63. package/.claude/boris-optimizations.md +0 -167
  64. package/.claude/handoffs/INDEX.md +0 -21
  65. package/.claude/handoffs/LATEST.md +0 -76
  66. package/.claude/handoffs/handoff_2026-01-22T13-07-04-757Z.md +0 -76
  67. package/.claude/quality-gate.json +0 -82
  68. package/.claude/rag/skill-index.json +0 -135
  69. package/.claude/settings.json +0 -99
  70. package/.claude/settings.local.json +0 -175
  71. package/.claude/templates/PROJECT_KICKOFF.md +0 -89
  72. package/.claude/templates/PROJECT_PROPOSAL.md +0 -227
  73. package/.claude/templates/TASK_PLAN.md +0 -121
  74. package/.claude/templates/hooks/README.md +0 -302
  75. package/.claude/templates/hooks/hook.sh.template +0 -94
  76. package/.claude/templates/hooks/user-prompt-submit.cjs.template +0 -116
  77. package/.claude/templates/hooks/user-response-submit.cjs.template +0 -94
  78. package/.claude/templates/hooks/validate.js +0 -173
  79. package/.claude/templates/tasks/develop.md +0 -69
  80. package/.claude/templates/tasks/research.md +0 -64
  81. package/.claude/templates/tasks/test.md +0 -96
  82. package/.claude/thinking-routes/.last-sync +0 -1
  83. package/.claude/thinking-routes/QUICKREF.md +0 -98
  84. package/.claude/workflow/document-scanner.js +0 -426
  85. package/.claude/workflow/knowledge-engine.js +0 -941
  86. package/.claude/workflow/notebooklm/browser.js +0 -1028
  87. package/.claude/workflow/phases/phase1-research.js +0 -578
  88. package/.claude/workflow/phases/phase1-research.ts +0 -465
  89. package/.claude/workflow/phases/phase2-approve.js +0 -722
  90. package/.claude/workflow/phases/phase3-plan.js +0 -1200
  91. package/.claude/workflow/phases/phase4-develop.js +0 -894
  92. package/.claude/workflow/search-cache.js +0 -230
  93. package/.claude/workflow/templates/approval.md +0 -315
  94. package/.claude/workflow/templates/development.md +0 -377
  95. package/.claude/workflow/templates/planning.md +0 -328
  96. package/.claude/workflow/templates/research.md +0 -250
  97. package/.claude/workflow/types.js +0 -37
  98. package/.claude/workflow/web-search.js +0 -278
  99. package/.claude-plugin/marketplace.json +0 -71
  100. package/.github/workflows/sync-skills.yml +0 -74
  101. package/.versionrc +0 -25
  102. package/AGENTS.md +0 -580
  103. package/CHANGELOG.md +0 -481
  104. package/CLAUDE-template.md +0 -114
  105. package/DEV_TOOLS_GUIDE.md +0 -190
  106. package/PROJECT_STRUCTURE.md +0 -266
  107. package/Q&A.md +0 -325
  108. package/config/defaults.json +0 -34
  109. package/config/official-skills.json +0 -183
  110. package/config/quality-gate.json +0 -67
  111. package/config/skill-categories.json +0 -40
  112. package/config/version-manifest.json +0 -85
  113. package/demos/power-3d-scatter.html +0 -683
  114. package/development/cache/web-search/search_1193d605f8eb364651fc2f2041b58a31.json +0 -36
  115. package/development/cache/web-search/search_3798bf06960edc125f744a1abb5b72c5.json +0 -36
  116. package/development/cache/web-search/search_37c7d4843a53f0d83f1122a6f908a2a3.json +0 -36
  117. package/development/cache/web-search/search_44166fa0153709ee168485a22aa0ab40.json +0 -36
  118. package/development/cache/web-search/search_4deaebb1f77e86a8ca066dc5a49c59fd.json +0 -36
  119. package/development/cache/web-search/search_94da91789466070a7f545612e73c7372.json +0 -36
  120. package/development/cache/web-search/search_dd5de8491b8b803a3cb01339cd210fb0.json +0 -36
  121. package/development/knowledge-base/.index.clean.json +0 -1
  122. package/development/knowledge-base/.index.json +0 -486
  123. package/development/knowledge-base/test-best-practices.md +0 -29
  124. package/development/projects/proj_mkh1pazz_ixmt1/phase1/feasibility-report.md +0 -160
  125. package/development/projects/proj_mkh4jvnb_z7rwf/phase1/feasibility-report.md +0 -160
  126. package/development/projects/proj_mkh4jxkd_ewz5a/phase1/feasibility-report.md +0 -160
  127. package/development/projects/proj_mkh4k84n_ni73k/phase1/feasibility-report.md +0 -160
  128. package/development/projects/proj_mkh4wfyd_u9w88/phase1/feasibility-report.md +0 -160
  129. package/development/projects/proj_mkh4wsbo_iahvf/development/projects/proj_mkh4xbpg_4na5w/phase1/feasibility-report.md +0 -160
  130. package/development/projects/proj_mkh4wsbo_iahvf/phase1/feasibility-report.md +0 -160
  131. package/development/projects/proj_mkh4xulg_1ka8x/phase1/feasibility-report.md +0 -160
  132. package/development/projects/proj_mkh4xwhj_gch8j/phase1/feasibility-report.md +0 -160
  133. package/development/projects/proj_mkh4y2qk_9lm8z/phase1/feasibility-report.md +0 -160
  134. package/development/projects/proj_mkh4y2qk_9lm8z/phase2/requirements.md +0 -226
  135. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/PRD.md +0 -345
  136. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/TASK_PLAN.md +0 -284
  137. package/development/projects/proj_mkh4y2qk_9lm8z/phase3/prototype/README.md +0 -14
  138. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/DEVELOPMENT_LOG.md +0 -35
  139. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/TASKS.md +0 -34
  140. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/.env.example +0 -5
  141. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/README.md +0 -60
  142. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/package.json +0 -25
  143. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/index.js +0 -70
  144. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/src/routes/index.js +0 -48
  145. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/health.test.js +0 -20
  146. package/development/projects/proj_mkh4y2qk_9lm8z/phase4/source/tests/jest.config.js +0 -21
  147. package/development/projects/proj_mkh7veqg_3lypc/phase1/feasibility-report.md +0 -160
  148. package/development/projects/proj_mkh7veqg_3lypc/phase2/requirements.md +0 -226
  149. package/development/projects/proj_mkh7veqg_3lypc/phase3/PRD.md +0 -345
  150. package/development/projects/proj_mkh7veqg_3lypc/phase3/TASK_PLAN.md +0 -284
  151. package/development/projects/proj_mkh7veqg_3lypc/phase3/prototype/README.md +0 -14
  152. package/development/projects/proj_mkh8k8fo_rmqn5/phase1/feasibility-report.md +0 -160
  153. package/development/projects/proj_mkh8xyhy_1vshq/phase1/feasibility-report.md +0 -178
  154. package/development/projects/proj_mkh8zddd_dhamf/phase1/feasibility-report.md +0 -377
  155. package/development/projects/proj_mkh8zddd_dhamf/phase2/requirements.md +0 -442
  156. package/development/projects/proj_mkh8zddd_dhamf/phase3/api-design.md +0 -800
  157. package/development/projects/proj_mkh8zddd_dhamf/phase3/architecture.md +0 -625
  158. package/development/projects/proj_mkh8zddd_dhamf/phase3/data-model.md +0 -830
  159. package/development/projects/proj_mkh8zddd_dhamf/phase3/risks.md +0 -957
  160. package/development/projects/proj_mkh8zddd_dhamf/phase3/wbs.md +0 -381
  161. package/development/todos/.state.json +0 -19
  162. package/development/todos/INDEX.md +0 -63
  163. package/development/todos/active/_README.md +0 -49
  164. package/development/todos/archived/_README.md +0 -11
  165. package/development/todos/backlog/_README.md +0 -11
  166. package/development/todos/backlog/mcp-integration.md +0 -35
  167. package/development/todos/completed/_README.md +0 -11
  168. package/development/todos/completed/boris-optimizations.md +0 -39
  169. package/development/todos/completed/develop/local-knowledge-index.md +0 -85
  170. package/development/todos/completed/develop/todo-system.md +0 -47
  171. package/development/todos/completed/develop/web-search-integration.md +0 -83
  172. package/development/todos/completed/test/phase1-e2e-test.md +0 -103
  173. package/docs/DEVELOPMENT.md +0 -461
  174. package/docs/MARKETPLACE.md +0 -352
  175. package/docs/RELEASE.md +0 -93
  176. package/jest.config.js +0 -63
  177. package/lib/commands.js +0 -3588
  178. package/lib/config-manager.js +0 -441
  179. package/lib/config-schema.js +0 -408
  180. package/lib/config-validator.js +0 -330
  181. package/lib/config.js +0 -122
  182. package/lib/errors.js +0 -305
  183. package/lib/incremental-sync.js +0 -274
  184. package/lib/marketplace.js +0 -487
  185. package/lib/migrations.js +0 -154
  186. package/lib/permission-audit.js +0 -255
  187. package/lib/quality-gate.js +0 -431
  188. package/lib/quality-rules.js +0 -373
  189. package/lib/utils.js +0 -150
  190. package/lib/version-check.js +0 -169
  191. package/lib/version-manifest.js +0 -171
  192. package/project-paradigm.md +0 -313
  193. package/prompts/how-to-find.md +0 -163
  194. package/prompts/linus-architect.md +0 -71
  195. package/prompts/software-architect.md +0 -173
  196. package/prompts/web-designer.md +0 -249
  197. package/scripts/fix-hooks.mjs +0 -97
  198. package/scripts/sync-external.mjs +0 -298
  199. package/scripts/sync-to-home.sh +0 -108
  200. package/scripts/update-registry.mjs +0 -325
  201. package/sources.yaml +0 -83
  202. package/tests/README.md +0 -263
  203. package/tests/commands.test.js +0 -1086
  204. package/tests/config-manager.test.js +0 -677
  205. package/tests/config-schema.test.js +0 -425
  206. package/tests/config-validator.test.js +0 -436
  207. package/tests/config.test.js +0 -100
  208. package/tests/errors.test.js +0 -477
  209. package/tests/manual/phase1-e2e.sh +0 -389
  210. package/tests/manual/phase2-test-cases.md +0 -311
  211. package/tests/manual/phase3-test-cases.md +0 -309
  212. package/tests/manual/phase4-test-cases.md +0 -414
  213. package/tests/manual/test-cases.md +0 -417
  214. package/tests/marketplace.test.js +0 -420
  215. package/tests/migrations.test.js +0 -187
  216. package/tests/quality-gate.test.js +0 -679
  217. package/tests/quality-rules.test.js +0 -619
  218. package/tests/sync-external.test.js +0 -214
  219. package/tests/update-registry.test.js +0 -251
  220. package/tests/utils.test.js +0 -171
  221. package/tests/version-check.test.js +0 -75
  222. package/tests/web-search.test.js +0 -392
  223. 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