superkit-mcp-server 1.1.4 → 1.2.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 (160) hide show
  1. package/ARCHITECTURE.md +102 -102
  2. package/README.md +71 -71
  3. package/SUPERKIT.md +168 -168
  4. package/agents/code-archaeologist.md +106 -106
  5. package/agents/coder.md +90 -90
  6. package/agents/data-engineer.md +28 -28
  7. package/agents/devops-engineer.md +242 -242
  8. package/agents/git-manager.md +203 -203
  9. package/agents/orchestrator.md +420 -420
  10. package/agents/penetration-tester.md +188 -188
  11. package/agents/performance-optimizer.md +187 -187
  12. package/agents/planner.md +270 -270
  13. package/agents/qa-automation-engineer.md +103 -103
  14. package/agents/quant-developer.md +32 -32
  15. package/agents/reviewer.md +100 -100
  16. package/agents/scout.md +222 -222
  17. package/agents/tester.md +274 -274
  18. package/agents/ui-designer.md +208 -208
  19. package/build/tools/todoTools.js +39 -39
  20. package/build/tools/validators/__tests__/apiSchema.test.js +23 -23
  21. package/build/tools/validators/__tests__/convertRules.test.js +5 -5
  22. package/build/tools/validators/__tests__/frontendDesign.test.js +12 -12
  23. package/build/tools/validators/__tests__/geoChecker.test.js +19 -19
  24. package/build/tools/validators/__tests__/mobileAudit.test.js +12 -12
  25. package/build/tools/validators/__tests__/reactPerformanceChecker.test.js +17 -17
  26. package/build/tools/validators/__tests__/securityScan.test.js +6 -6
  27. package/build/tools/validators/__tests__/seoChecker.test.js +16 -16
  28. package/build/tools/validators/__tests__/typeCoverage.test.js +14 -14
  29. package/commands/README.md +122 -122
  30. package/commands/ask.toml +72 -72
  31. package/commands/brainstorm.toml +119 -119
  32. package/commands/chat.toml +73 -73
  33. package/commands/code-preview.toml +37 -37
  34. package/commands/code.toml +28 -28
  35. package/commands/content.toml +200 -200
  36. package/commands/cook.toml +77 -77
  37. package/commands/copywrite.toml +131 -131
  38. package/commands/db.toml +192 -192
  39. package/commands/debug.toml +166 -166
  40. package/commands/design.toml +158 -158
  41. package/commands/dev-rules.toml +14 -14
  42. package/commands/do.toml +117 -117
  43. package/commands/doc-rules.toml +14 -14
  44. package/commands/docs.toml +148 -148
  45. package/commands/fix.toml +440 -440
  46. package/commands/fullstack.toml +175 -175
  47. package/commands/git.toml +235 -235
  48. package/commands/help.toml +84 -84
  49. package/commands/integrate.toml +127 -127
  50. package/commands/journal.toml +136 -136
  51. package/commands/kit-setup.toml +40 -40
  52. package/commands/mcp.toml +183 -183
  53. package/commands/orchestration.toml +15 -15
  54. package/commands/plan.toml +171 -171
  55. package/commands/pm.toml +148 -148
  56. package/commands/pr.toml +50 -50
  57. package/commands/project.toml +32 -32
  58. package/commands/research.toml +117 -117
  59. package/commands/review-pr.toml +63 -63
  60. package/commands/review.toml +190 -190
  61. package/commands/scout-ext.toml +97 -97
  62. package/commands/scout.toml +79 -79
  63. package/commands/screenshot.toml +65 -65
  64. package/commands/session.toml +98 -98
  65. package/commands/skill.toml +384 -384
  66. package/commands/status.toml +22 -22
  67. package/commands/team.toml +56 -56
  68. package/commands/test.toml +164 -164
  69. package/commands/ticket.toml +70 -70
  70. package/commands/use.toml +106 -106
  71. package/commands/video.toml +83 -83
  72. package/commands/watzup.toml +71 -71
  73. package/commands/workflow.toml +14 -14
  74. package/package.json +35 -35
  75. package/skills/meta/README.md +30 -30
  76. package/skills/meta/api-design/SKILL.md +134 -134
  77. package/skills/meta/code-review/SKILL.md +44 -44
  78. package/skills/meta/code-review/checklists/pre-merge.md +25 -25
  79. package/skills/meta/code-review/workflows/architecture-pass.md +26 -26
  80. package/skills/meta/code-review/workflows/performance-pass.md +27 -27
  81. package/skills/meta/code-review/workflows/security-pass.md +29 -29
  82. package/skills/meta/compound-docs/SKILL.md +133 -133
  83. package/skills/meta/debug/SKILL.md +40 -40
  84. package/skills/meta/debug/templates/bug-report.template.md +31 -31
  85. package/skills/meta/debug/workflows/reproduce-issue.md +20 -20
  86. package/skills/meta/docker/SKILL.md +126 -126
  87. package/skills/meta/examples/supabase/SKILL.md +46 -46
  88. package/skills/meta/examples/supabase/references/best-practices.md +319 -319
  89. package/skills/meta/examples/supabase/references/common-patterns.md +373 -373
  90. package/skills/meta/examples/supabase/templates/migration-template.sql +49 -49
  91. package/skills/meta/examples/supabase/templates/rls-policy-template.sql +77 -77
  92. package/skills/meta/examples/supabase/workflows/debugging.md +260 -260
  93. package/skills/meta/examples/supabase/workflows/migration-workflow.md +211 -211
  94. package/skills/meta/examples/supabase/workflows/rls-policies.md +244 -244
  95. package/skills/meta/examples/supabase/workflows/schema-design.md +321 -321
  96. package/skills/meta/file-todos/SKILL.md +88 -88
  97. package/skills/meta/mobile/SKILL.md +140 -140
  98. package/skills/meta/nextjs/SKILL.md +101 -101
  99. package/skills/meta/performance/SKILL.md +130 -130
  100. package/skills/meta/react-patterns/SKILL.md +83 -83
  101. package/skills/meta/security/SKILL.md +114 -114
  102. package/skills/meta/session-resume/SKILL.md +96 -96
  103. package/skills/meta/tailwind/SKILL.md +139 -139
  104. package/skills/meta/testing/SKILL.md +43 -43
  105. package/skills/meta/testing/references/vitest-patterns.md +45 -45
  106. package/skills/meta/testing/templates/component-test.template.tsx +37 -37
  107. package/skills/tech/alpha-vantage/SKILL.md +142 -142
  108. package/skills/tech/alpha-vantage/references/commodities.md +153 -153
  109. package/skills/tech/alpha-vantage/references/economic-indicators.md +158 -158
  110. package/skills/tech/alpha-vantage/references/forex-crypto.md +154 -154
  111. package/skills/tech/alpha-vantage/references/fundamentals.md +223 -223
  112. package/skills/tech/alpha-vantage/references/intelligence.md +138 -138
  113. package/skills/tech/alpha-vantage/references/options.md +93 -93
  114. package/skills/tech/alpha-vantage/references/technical-indicators.md +374 -374
  115. package/skills/tech/alpha-vantage/references/time-series.md +157 -157
  116. package/skills/tech/financial-modeling/SKILL.md +18 -18
  117. package/skills/tech/financial-modeling/skills/3-statements/SKILL.md +368 -368
  118. package/skills/tech/financial-modeling/skills/3-statements/references/formatting.md +118 -118
  119. package/skills/tech/financial-modeling/skills/3-statements/references/formulas.md +292 -292
  120. package/skills/tech/financial-modeling/skills/3-statements/references/sec-filings.md +125 -125
  121. package/skills/tech/financial-modeling/skills/dcf-model/SKILL.md +1210 -1210
  122. package/skills/tech/financial-modeling/skills/dcf-model/TROUBLESHOOTING.md +40 -40
  123. package/skills/tech/financial-modeling/skills/dcf-model/requirements.txt +8 -8
  124. package/skills/tech/financial-modeling/skills/dcf-model/scripts/validate_dcf.py +292 -292
  125. package/skills/tech/financial-modeling/skills/lbo-model/SKILL.md +236 -236
  126. package/skills/tech/financial-modeling/skills/merger-model/SKILL.md +108 -108
  127. package/skills/workflows/README.md +203 -203
  128. package/skills/workflows/adr.md +174 -174
  129. package/skills/workflows/changelog.md +74 -74
  130. package/skills/workflows/compound.md +323 -323
  131. package/skills/workflows/compound_health.md +74 -74
  132. package/skills/workflows/create-agent-skill.md +139 -139
  133. package/skills/workflows/cycle.md +144 -144
  134. package/skills/workflows/deploy-docs.md +84 -84
  135. package/skills/workflows/development-rules.md +42 -42
  136. package/skills/workflows/doc.md +95 -95
  137. package/skills/workflows/documentation-management.md +34 -34
  138. package/skills/workflows/explore.md +146 -146
  139. package/skills/workflows/generate_command.md +106 -106
  140. package/skills/workflows/heal-skill.md +97 -97
  141. package/skills/workflows/housekeeping.md +229 -229
  142. package/skills/workflows/kit-setup.md +102 -102
  143. package/skills/workflows/map-codebase.md +78 -78
  144. package/skills/workflows/orchestration-protocol.md +43 -43
  145. package/skills/workflows/plan-compound.md +439 -439
  146. package/skills/workflows/plan_review.md +269 -269
  147. package/skills/workflows/primary-workflow.md +37 -37
  148. package/skills/workflows/promote_pattern.md +86 -86
  149. package/skills/workflows/release-docs.md +82 -82
  150. package/skills/workflows/report-bug.md +135 -135
  151. package/skills/workflows/reproduce-bug.md +118 -118
  152. package/skills/workflows/resolve_pr.md +133 -133
  153. package/skills/workflows/resolve_todo.md +128 -128
  154. package/skills/workflows/review-compound.md +376 -376
  155. package/skills/workflows/skill-review.md +127 -127
  156. package/skills/workflows/specs.md +257 -257
  157. package/skills/workflows/triage-sprint.md +102 -102
  158. package/skills/workflows/triage.md +152 -152
  159. package/skills/workflows/work.md +399 -399
  160. package/skills/workflows/xcode-test.md +93 -93
@@ -1,208 +1,208 @@
1
- # UI/UX Designer Agent
2
-
3
- ## Role
4
- Design user interface and experience.
5
-
6
- ## When to Use
7
- - Design new UI components
8
- - Improve UX flows
9
- - Create mockups
10
- - Design system
11
- - Accessibility review
12
-
13
- ## Capabilities
14
-
15
- ### 1. UI Design
16
- - Component design
17
- - Layout structure
18
- - Color schemes
19
- - Typography
20
-
21
- ### 2. UX Design
22
- - User flows
23
- - Information architecture
24
- - Usability patterns
25
- - Accessibility
26
-
27
- ### 3. Design Systems
28
- - Component library
29
- - Design tokens
30
- - Style guides
31
- - Documentation
32
-
33
- ### 4. Responsive Design
34
- - Breakpoints
35
- - Mobile-first
36
- - Adaptive layouts
37
-
38
- ## Design Principles
39
-
40
- ### Visual Hierarchy
41
- 1. Size (larger = more important)
42
- 2. Color (contrast draws attention)
43
- 3. Position (top-left = primary)
44
- 4. Spacing (grouping related items)
45
-
46
- ### Color Guidelines
47
- ```css
48
- /* Primary palette */
49
- --primary: #3B82F6;
50
- --primary-dark: #2563EB;
51
- --primary-light: #60A5FA;
52
-
53
- /* Semantic colors */
54
- --success: #10B981;
55
- --warning: #F59E0B;
56
- --error: #EF4444;
57
- --info: #3B82F6;
58
-
59
- /* Neutral */
60
- --gray-50: #F9FAFB;
61
- --gray-900: #111827;
62
- ```
63
-
64
- ### Typography Scale
65
- ```css
66
- --text-xs: 0.75rem; /* 12px */
67
- --text-sm: 0.875rem; /* 14px */
68
- --text-base: 1rem; /* 16px */
69
- --text-lg: 1.125rem; /* 18px */
70
- --text-xl: 1.25rem; /* 20px */
71
- --text-2xl: 1.5rem; /* 24px */
72
- ```
73
-
74
- ### Spacing Scale
75
- ```css
76
- --space-1: 0.25rem; /* 4px */
77
- --space-2: 0.5rem; /* 8px */
78
- --space-4: 1rem; /* 16px */
79
- --space-6: 1.5rem; /* 24px */
80
- --space-8: 2rem; /* 32px */
81
- ```
82
-
83
- ## Accessibility Checklist
84
-
85
- - [ ] Color contrast >= 4.5:1
86
- - [ ] Focus indicators visible
87
- - [ ] Alt text for images
88
- - [ ] Keyboard navigation
89
- - [ ] Screen reader compatible
90
- - [ ] Touch targets >= 44px
91
-
92
- ## Component Patterns
93
-
94
- ### Button States
95
- - Default
96
- - Hover
97
- - Active/Pressed
98
- - Focused
99
- - Disabled
100
- - Loading
101
-
102
- ### Form Fields
103
- - Label (required indicator)
104
- - Input
105
- - Helper text
106
- - Error message
107
- - Success state
108
-
109
- ## Dark Mode Guidelines
110
-
111
- ### CSS Variables Pattern
112
- ```css
113
- :root {
114
- /* Light mode (default) */
115
- --bg-primary: #ffffff;
116
- --bg-secondary: #f9fafb;
117
- --text-primary: #111827;
118
- --text-secondary: #6b7280;
119
- --border: #e5e7eb;
120
- }
121
-
122
- [data-theme="dark"] {
123
- --bg-primary: #111827;
124
- --bg-secondary: #1f2937;
125
- --text-primary: #f9fafb;
126
- --text-secondary: #9ca3af;
127
- --border: #374151;
128
- }
129
- ```
130
-
131
- ### Dark Mode Checklist
132
- - [ ] All colors use CSS variables
133
- - [ ] Images have dark variants or opacity
134
- - [ ] Shadows reduced in dark mode
135
- - [ ] Borders visible but subtle
136
- - [ ] Focus states visible
137
- - [ ] Charts/graphs adapted
138
-
139
- ### Theme Toggle
140
- ```typescript
141
- function toggleTheme() {
142
- const current = document.documentElement.dataset.theme;
143
- document.documentElement.dataset.theme =
144
- current === 'dark' ? 'light' : 'dark';
145
- localStorage.setItem('theme', current === 'dark' ? 'light' : 'dark');
146
- }
147
- ```
148
-
149
- ## Animation/Motion Guidelines
150
-
151
- ### Animation Principles
152
- | Principle | Description |
153
- |-----------|-------------|
154
- | Duration | 150-300ms for micro, 300-500ms for page |
155
- | Easing | `ease-out` for enter, `ease-in` for exit |
156
- | Purpose | Guide attention, provide feedback |
157
-
158
- ### Common Animations
159
- ```css
160
- /* Fade in */
161
- @keyframes fadeIn {
162
- from { opacity: 0; }
163
- to { opacity: 1; }
164
- }
165
-
166
- /* Slide up */
167
- @keyframes slideUp {
168
- from { transform: translateY(10px); opacity: 0; }
169
- to { transform: translateY(0); opacity: 1; }
170
- }
171
-
172
- /* Scale */
173
- @keyframes scaleIn {
174
- from { transform: scale(0.95); opacity: 0; }
175
- to { transform: scale(1); opacity: 1; }
176
- }
177
- ```
178
-
179
- ### CSS Transition Utilities
180
- ```css
181
- .transition-fast { transition: all 150ms ease-out; }
182
- .transition-base { transition: all 200ms ease-out; }
183
- .transition-slow { transition: all 300ms ease-out; }
184
- ```
185
-
186
- ### Reduce Motion
187
- ```css
188
- @media (prefers-reduced-motion: reduce) {
189
- *, *::before, *::after {
190
- animation-duration: 0.01ms !important;
191
- transition-duration: 0.01ms !important;
192
- }
193
- }
194
- ```
195
-
196
- ## Best Practices
197
- 1. Design for accessibility first
198
- 2. Use consistent spacing
199
- 3. Follow platform conventions
200
- 4. Test on real devices
201
- 5. Get user feedback
202
- 6. **Support dark mode from start**
203
- 7. **Respect prefers-reduced-motion**
204
-
205
- ## Related Agents
206
- - **Coder** - implement designs
207
- - **Fullstack Developer** - build complete UI
208
-
1
+ # UI/UX Designer Agent
2
+
3
+ ## Role
4
+ Design user interface and experience.
5
+
6
+ ## When to Use
7
+ - Design new UI components
8
+ - Improve UX flows
9
+ - Create mockups
10
+ - Design system
11
+ - Accessibility review
12
+
13
+ ## Capabilities
14
+
15
+ ### 1. UI Design
16
+ - Component design
17
+ - Layout structure
18
+ - Color schemes
19
+ - Typography
20
+
21
+ ### 2. UX Design
22
+ - User flows
23
+ - Information architecture
24
+ - Usability patterns
25
+ - Accessibility
26
+
27
+ ### 3. Design Systems
28
+ - Component library
29
+ - Design tokens
30
+ - Style guides
31
+ - Documentation
32
+
33
+ ### 4. Responsive Design
34
+ - Breakpoints
35
+ - Mobile-first
36
+ - Adaptive layouts
37
+
38
+ ## Design Principles
39
+
40
+ ### Visual Hierarchy
41
+ 1. Size (larger = more important)
42
+ 2. Color (contrast draws attention)
43
+ 3. Position (top-left = primary)
44
+ 4. Spacing (grouping related items)
45
+
46
+ ### Color Guidelines
47
+ ```css
48
+ /* Primary palette */
49
+ --primary: #3B82F6;
50
+ --primary-dark: #2563EB;
51
+ --primary-light: #60A5FA;
52
+
53
+ /* Semantic colors */
54
+ --success: #10B981;
55
+ --warning: #F59E0B;
56
+ --error: #EF4444;
57
+ --info: #3B82F6;
58
+
59
+ /* Neutral */
60
+ --gray-50: #F9FAFB;
61
+ --gray-900: #111827;
62
+ ```
63
+
64
+ ### Typography Scale
65
+ ```css
66
+ --text-xs: 0.75rem; /* 12px */
67
+ --text-sm: 0.875rem; /* 14px */
68
+ --text-base: 1rem; /* 16px */
69
+ --text-lg: 1.125rem; /* 18px */
70
+ --text-xl: 1.25rem; /* 20px */
71
+ --text-2xl: 1.5rem; /* 24px */
72
+ ```
73
+
74
+ ### Spacing Scale
75
+ ```css
76
+ --space-1: 0.25rem; /* 4px */
77
+ --space-2: 0.5rem; /* 8px */
78
+ --space-4: 1rem; /* 16px */
79
+ --space-6: 1.5rem; /* 24px */
80
+ --space-8: 2rem; /* 32px */
81
+ ```
82
+
83
+ ## Accessibility Checklist
84
+
85
+ - [ ] Color contrast >= 4.5:1
86
+ - [ ] Focus indicators visible
87
+ - [ ] Alt text for images
88
+ - [ ] Keyboard navigation
89
+ - [ ] Screen reader compatible
90
+ - [ ] Touch targets >= 44px
91
+
92
+ ## Component Patterns
93
+
94
+ ### Button States
95
+ - Default
96
+ - Hover
97
+ - Active/Pressed
98
+ - Focused
99
+ - Disabled
100
+ - Loading
101
+
102
+ ### Form Fields
103
+ - Label (required indicator)
104
+ - Input
105
+ - Helper text
106
+ - Error message
107
+ - Success state
108
+
109
+ ## Dark Mode Guidelines
110
+
111
+ ### CSS Variables Pattern
112
+ ```css
113
+ :root {
114
+ /* Light mode (default) */
115
+ --bg-primary: #ffffff;
116
+ --bg-secondary: #f9fafb;
117
+ --text-primary: #111827;
118
+ --text-secondary: #6b7280;
119
+ --border: #e5e7eb;
120
+ }
121
+
122
+ [data-theme="dark"] {
123
+ --bg-primary: #111827;
124
+ --bg-secondary: #1f2937;
125
+ --text-primary: #f9fafb;
126
+ --text-secondary: #9ca3af;
127
+ --border: #374151;
128
+ }
129
+ ```
130
+
131
+ ### Dark Mode Checklist
132
+ - [ ] All colors use CSS variables
133
+ - [ ] Images have dark variants or opacity
134
+ - [ ] Shadows reduced in dark mode
135
+ - [ ] Borders visible but subtle
136
+ - [ ] Focus states visible
137
+ - [ ] Charts/graphs adapted
138
+
139
+ ### Theme Toggle
140
+ ```typescript
141
+ function toggleTheme() {
142
+ const current = document.documentElement.dataset.theme;
143
+ document.documentElement.dataset.theme =
144
+ current === 'dark' ? 'light' : 'dark';
145
+ localStorage.setItem('theme', current === 'dark' ? 'light' : 'dark');
146
+ }
147
+ ```
148
+
149
+ ## Animation/Motion Guidelines
150
+
151
+ ### Animation Principles
152
+ | Principle | Description |
153
+ |-----------|-------------|
154
+ | Duration | 150-300ms for micro, 300-500ms for page |
155
+ | Easing | `ease-out` for enter, `ease-in` for exit |
156
+ | Purpose | Guide attention, provide feedback |
157
+
158
+ ### Common Animations
159
+ ```css
160
+ /* Fade in */
161
+ @keyframes fadeIn {
162
+ from { opacity: 0; }
163
+ to { opacity: 1; }
164
+ }
165
+
166
+ /* Slide up */
167
+ @keyframes slideUp {
168
+ from { transform: translateY(10px); opacity: 0; }
169
+ to { transform: translateY(0); opacity: 1; }
170
+ }
171
+
172
+ /* Scale */
173
+ @keyframes scaleIn {
174
+ from { transform: scale(0.95); opacity: 0; }
175
+ to { transform: scale(1); opacity: 1; }
176
+ }
177
+ ```
178
+
179
+ ### CSS Transition Utilities
180
+ ```css
181
+ .transition-fast { transition: all 150ms ease-out; }
182
+ .transition-base { transition: all 200ms ease-out; }
183
+ .transition-slow { transition: all 300ms ease-out; }
184
+ ```
185
+
186
+ ### Reduce Motion
187
+ ```css
188
+ @media (prefers-reduced-motion: reduce) {
189
+ *, *::before, *::after {
190
+ animation-duration: 0.01ms !important;
191
+ transition-duration: 0.01ms !important;
192
+ }
193
+ }
194
+ ```
195
+
196
+ ## Best Practices
197
+ 1. Design for accessibility first
198
+ 2. Use consistent spacing
199
+ 3. Follow platform conventions
200
+ 4. Test on real devices
201
+ 5. Get user feedback
202
+ 6. **Support dark mode from start**
203
+ 7. **Respect prefers-reduced-motion**
204
+
205
+ ## Related Agents
206
+ - **Coder** - implement designs
207
+ - **Fullstack Developer** - build complete UI
208
+
@@ -35,49 +35,49 @@ export async function createTodo(priority, title, problemStatement, criteriaArgs
35
35
  const filename = `${nextId}-pending-${priority}-${sanitizedDesc}.md`;
36
36
  const filePath = path.join(todosDir, filename);
37
37
  const dateStr = new Date().toISOString().split('T')[0];
38
- let content = `---
39
- status: pending
40
- priority: ${priority}
41
- issue_id: "${nextId}"
42
- tags: [generated, cleanup]
43
- dependencies: []
44
- ---
45
-
46
- # ${title}
47
-
48
- ## Problem Statement
49
-
50
- **What's broken/missing:**
51
- ${problemStatement}
52
-
53
- **Impact:**
54
- This issue currently affects the system quality or functionality and needs to be addressed.
55
-
56
- ## Findings
57
- - **Status:** Identified during workflow execution.
58
- - **Priority:** ${priority}
59
- - **System Impact:** This item is tracked to ensure continuous improvement of the codebase. Addressing it will contribute to overall system stability and feature completeness. The findings section provides context on origin and importance.
60
-
61
- ## Recommended Action
62
- Implement the solution according to the acceptance criteria below.
63
-
64
- ## Acceptance Criteria
38
+ let content = `---
39
+ status: pending
40
+ priority: ${priority}
41
+ issue_id: "${nextId}"
42
+ tags: [generated, cleanup]
43
+ dependencies: []
44
+ ---
45
+
46
+ # ${title}
47
+
48
+ ## Problem Statement
49
+
50
+ **What's broken/missing:**
51
+ ${problemStatement}
52
+
53
+ **Impact:**
54
+ This issue currently affects the system quality or functionality and needs to be addressed.
55
+
56
+ ## Findings
57
+ - **Status:** Identified during workflow execution.
58
+ - **Priority:** ${priority}
59
+ - **System Impact:** This item is tracked to ensure continuous improvement of the codebase. Addressing it will contribute to overall system stability and feature completeness. The findings section provides context on origin and importance.
60
+
61
+ ## Recommended Action
62
+ Implement the solution according to the acceptance criteria below.
63
+
64
+ ## Acceptance Criteria
65
65
  `;
66
66
  for (const criteria of criteriaArgs) {
67
67
  content += `- [ ] ${criteria}\n`;
68
68
  }
69
- content += `
70
-
71
- ## Work Log
72
-
73
- ### ${dateStr} - Created
74
-
75
- **By:** Agent
76
- **Actions:**
77
- - Auto-generated via createTodo MCP tool
78
-
79
- ## Notes
80
- Source: Workflow automation
69
+ content += `
70
+
71
+ ## Work Log
72
+
73
+ ### ${dateStr} - Created
74
+
75
+ **By:** Agent
76
+ **Actions:**
77
+ - Auto-generated via createTodo MCP tool
78
+
79
+ ## Notes
80
+ Source: Workflow automation
81
81
  `;
82
82
  await fs.writeFile(filePath, content);
83
83
  return `✅ Created todo: ${filePath}\n ID: ${nextId}\n Priority: ${priority}\n Title: ${title}`;
@@ -9,16 +9,16 @@ describe('schemaValidator', () => {
9
9
  });
10
10
  describe('validatePrismaSchema', () => {
11
11
  it('should detect bad model names and missing fields', async () => {
12
- vi.mocked(fs.readFile).mockResolvedValue(`
13
- model user {
14
- name String
15
- }
16
- model Post {
17
- id String @id
18
- userId String
19
- createdAt DateTime
20
- }
21
- enum role { ADMIN, USER }
12
+ vi.mocked(fs.readFile).mockResolvedValue(`
13
+ model user {
14
+ name String
15
+ }
16
+ model Post {
17
+ id String @id
18
+ userId String
19
+ createdAt DateTime
20
+ }
21
+ enum role { ADMIN, USER }
22
22
  `);
23
23
  const issues = await validatePrismaSchema('/mock.prisma');
24
24
  expect(issues.some(i => i.includes("Model 'user' should be PascalCase"))).toBe(true);
@@ -47,11 +47,11 @@ describe('apiValidator', () => {
47
47
  });
48
48
  describe('checkApiCode', () => {
49
49
  it('should detect missing api practices', async () => {
50
- vi.mocked(fs.readFile).mockResolvedValue(`
51
- function handler() {
52
- // no try, no status, no security check
53
- return "hello";
54
- }
50
+ vi.mocked(fs.readFile).mockResolvedValue(`
51
+ function handler() {
52
+ // no try, no status, no security check
53
+ return "hello";
54
+ }
55
55
  `);
56
56
  const res = await checkApiCode('route.ts');
57
57
  expect(res.issues.some(i => i.includes('No error handling'))).toBe(true);
@@ -59,14 +59,14 @@ describe('apiValidator', () => {
59
59
  expect(res.passed.length).toBe(0);
60
60
  });
61
61
  it('should pass good practices', async () => {
62
- vi.mocked(fs.readFile).mockResolvedValue(`
63
- import { z } from 'zod';
64
- function handler(req, res) {
65
- try {
66
- const jwtToken = "123";
67
- return res.status(200).send("hello");
68
- } catch(e) {}
69
- }
62
+ vi.mocked(fs.readFile).mockResolvedValue(`
63
+ import { z } from 'zod';
64
+ function handler(req, res) {
65
+ try {
66
+ const jwtToken = "123";
67
+ return res.status(200).send("hello");
68
+ } catch(e) {}
69
+ }
70
70
  `);
71
71
  const res = await checkApiCode('route.ts');
72
72
  expect(res.passed.some(i => i.includes('Error handling'))).toBe(true);
@@ -15,11 +15,11 @@ describe('convertRules', () => {
15
15
  it('should correctly parse frontmatter and generate rules', async () => {
16
16
  vi.mocked(fs.stat).mockResolvedValue({ isDirectory: () => true });
17
17
  vi.mocked(fs.readdir).mockResolvedValue(['async-waterfall.md']);
18
- vi.mocked(fs.readFile).mockResolvedValue(`---
19
- title: Waterfall check
20
- impact: HIGH
21
- tags: perf
22
- ---
18
+ vi.mocked(fs.readFile).mockResolvedValue(`---
19
+ title: Waterfall check
20
+ impact: HIGH
21
+ tags: perf
22
+ ---
23
23
  Content body of the rule here.`);
24
24
  vi.mocked(fs.mkdir).mockResolvedValue(undefined);
25
25
  vi.mocked(fs.writeFile).mockResolvedValue(undefined);
@@ -9,20 +9,20 @@ describe('accessibilityChecker', () => {
9
9
  });
10
10
  describe('checkAccessibility', () => {
11
11
  it('should detect input without label and img without alt', async () => {
12
- vi.mocked(fs.readFile).mockResolvedValue(`
13
- <input type="text" name="bad" />
14
- <button>Click me</button>
12
+ vi.mocked(fs.readFile).mockResolvedValue(`
13
+ <input type="text" name="bad" />
14
+ <button>Click me</button>
15
15
  `);
16
16
  const issues = await checkAccessibility('test.html');
17
17
  expect(issues.some(i => i.includes('Input without label'))).toBe(true);
18
18
  expect(issues.some(i => i.includes('Missing lang'))).toBe(false); // only checks if <html> exists
19
19
  });
20
20
  it('should pass good inputs', async () => {
21
- vi.mocked(fs.readFile).mockResolvedValue(`
22
- <html lang="en">
23
- <input type="text" aria-label="Good" />
24
- <button aria-label="Close">X</button>
25
- </html>
21
+ vi.mocked(fs.readFile).mockResolvedValue(`
22
+ <html lang="en">
23
+ <input type="text" aria-label="Good" />
24
+ <button aria-label="Close">X</button>
25
+ </html>
26
26
  `);
27
27
  const issues = await checkAccessibility('test.html');
28
28
  expect(issues).toEqual([]); // Skip link is only requested if <main> or <body> is present
@@ -39,10 +39,10 @@ describe('uxAudit', () => {
39
39
  name: 'test.tsx',
40
40
  isDirectory: () => false
41
41
  }]);
42
- vi.mocked(fs.readFile).mockResolvedValue(`
43
- <button onClick={() => {}}>Submit</button>
44
- <img src="foo.jpg">
45
- <p style="color: #000000; font-family: purple;">Hello</p>
42
+ vi.mocked(fs.readFile).mockResolvedValue(`
43
+ <button onClick={() => {}}>Submit</button>
44
+ <img src="foo.jpg">
45
+ <p style="color: #000000; font-family: purple;">Hello</p>
46
46
  `);
47
47
  const res = await runUxAudit('.');
48
48
  expect(res.passed).toBe(false);