superkit-mcp-server 1.2.2 → 1.2.3

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 (170) 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/security-auditor.md +3 -2
  18. package/agents/tester.md +274 -274
  19. package/agents/ui-designer.md +208 -208
  20. package/build/index.js +18 -9
  21. package/build/tools/__tests__/loggerTools.test.js +5 -5
  22. package/build/tools/archTools.js +2 -19
  23. package/build/tools/autoPreview.js +2 -2
  24. package/build/tools/compoundTools.js +4 -4
  25. package/build/tools/docsTools.js +5 -10
  26. package/build/tools/loggerTools.js +1 -1
  27. package/build/tools/todoTools.js +39 -39
  28. package/build/tools/validators/__tests__/apiSchema.test.js +23 -23
  29. package/build/tools/validators/__tests__/convertRules.test.js +5 -5
  30. package/build/tools/validators/__tests__/frontendDesign.test.js +12 -12
  31. package/build/tools/validators/__tests__/geoChecker.test.js +19 -19
  32. package/build/tools/validators/__tests__/mobileAudit.test.js +12 -12
  33. package/build/tools/validators/__tests__/reactPerformanceChecker.test.js +17 -17
  34. package/build/tools/validators/__tests__/securityScan.test.js +6 -6
  35. package/build/tools/validators/__tests__/seoChecker.test.js +16 -16
  36. package/build/tools/validators/__tests__/typeCoverage.test.js +14 -14
  37. package/build/tools/validators/convertRules.js +2 -2
  38. package/commands/README.md +122 -122
  39. package/commands/ask.toml +72 -72
  40. package/commands/brainstorm.toml +119 -119
  41. package/commands/chat.toml +77 -77
  42. package/commands/code-preview.toml +37 -37
  43. package/commands/code.toml +28 -28
  44. package/commands/content.toml +200 -200
  45. package/commands/cook.toml +77 -77
  46. package/commands/copywrite.toml +131 -131
  47. package/commands/db.toml +192 -192
  48. package/commands/debug.toml +166 -166
  49. package/commands/design.toml +158 -158
  50. package/commands/dev-rules.toml +14 -14
  51. package/commands/do.toml +117 -117
  52. package/commands/doc-rules.toml +14 -14
  53. package/commands/docs.toml +148 -148
  54. package/commands/fix.toml +440 -440
  55. package/commands/fullstack.toml +175 -175
  56. package/commands/git.toml +235 -235
  57. package/commands/help.toml +84 -84
  58. package/commands/integrate.toml +127 -127
  59. package/commands/journal.toml +136 -136
  60. package/commands/kit-setup.toml +40 -40
  61. package/commands/mcp.toml +183 -183
  62. package/commands/orchestration.toml +15 -15
  63. package/commands/plan.toml +171 -171
  64. package/commands/pm.toml +148 -148
  65. package/commands/pr.toml +50 -50
  66. package/commands/project.toml +32 -32
  67. package/commands/research.toml +117 -117
  68. package/commands/review-pr.toml +63 -63
  69. package/commands/review.toml +190 -190
  70. package/commands/scout-ext.toml +97 -97
  71. package/commands/scout.toml +79 -79
  72. package/commands/screenshot.toml +65 -65
  73. package/commands/session.toml +102 -102
  74. package/commands/skill.toml +384 -384
  75. package/commands/status.toml +22 -22
  76. package/commands/team.toml +56 -56
  77. package/commands/test.toml +164 -164
  78. package/commands/ticket.toml +70 -70
  79. package/commands/use.toml +106 -106
  80. package/commands/video.toml +83 -83
  81. package/commands/watzup.toml +71 -71
  82. package/commands/workflow.toml +14 -14
  83. package/package.json +35 -35
  84. package/skills/meta/README.md +30 -30
  85. package/skills/meta/api-design/SKILL.md +134 -134
  86. package/skills/meta/code-review/SKILL.md +44 -44
  87. package/skills/meta/code-review/checklists/pre-merge.md +25 -25
  88. package/skills/meta/code-review/workflows/architecture-pass.md +26 -26
  89. package/skills/meta/code-review/workflows/performance-pass.md +27 -27
  90. package/skills/meta/code-review/workflows/security-pass.md +29 -29
  91. package/skills/meta/compound-docs/SKILL.md +133 -133
  92. package/skills/meta/debug/SKILL.md +40 -40
  93. package/skills/meta/debug/templates/bug-report.template.md +31 -31
  94. package/skills/meta/debug/workflows/reproduce-issue.md +20 -20
  95. package/skills/meta/docker/SKILL.md +126 -126
  96. package/skills/meta/examples/supabase/SKILL.md +46 -46
  97. package/skills/meta/examples/supabase/references/best-practices.md +319 -319
  98. package/skills/meta/examples/supabase/references/common-patterns.md +373 -373
  99. package/skills/meta/examples/supabase/templates/migration-template.sql +49 -49
  100. package/skills/meta/examples/supabase/templates/rls-policy-template.sql +77 -77
  101. package/skills/meta/examples/supabase/workflows/debugging.md +260 -260
  102. package/skills/meta/examples/supabase/workflows/migration-workflow.md +211 -211
  103. package/skills/meta/examples/supabase/workflows/rls-policies.md +244 -244
  104. package/skills/meta/examples/supabase/workflows/schema-design.md +321 -321
  105. package/skills/meta/file-todos/SKILL.md +88 -88
  106. package/skills/meta/mobile/SKILL.md +140 -140
  107. package/skills/meta/nextjs/SKILL.md +101 -101
  108. package/skills/meta/performance/SKILL.md +130 -130
  109. package/skills/meta/react-patterns/SKILL.md +83 -83
  110. package/skills/meta/security/SKILL.md +114 -114
  111. package/skills/meta/session-resume/SKILL.md +96 -96
  112. package/skills/meta/tailwind/SKILL.md +139 -139
  113. package/skills/meta/testing/SKILL.md +43 -43
  114. package/skills/meta/testing/references/vitest-patterns.md +45 -45
  115. package/skills/meta/testing/templates/component-test.template.tsx +37 -37
  116. package/skills/tech/alpha-vantage/SKILL.md +142 -142
  117. package/skills/tech/alpha-vantage/references/commodities.md +153 -153
  118. package/skills/tech/alpha-vantage/references/economic-indicators.md +158 -158
  119. package/skills/tech/alpha-vantage/references/forex-crypto.md +154 -154
  120. package/skills/tech/alpha-vantage/references/fundamentals.md +223 -223
  121. package/skills/tech/alpha-vantage/references/intelligence.md +138 -138
  122. package/skills/tech/alpha-vantage/references/options.md +93 -93
  123. package/skills/tech/alpha-vantage/references/technical-indicators.md +374 -374
  124. package/skills/tech/alpha-vantage/references/time-series.md +157 -157
  125. package/skills/tech/doc.md +6 -6
  126. package/skills/tech/financial-modeling/SKILL.md +18 -18
  127. package/skills/tech/financial-modeling/skills/3-statements/SKILL.md +368 -368
  128. package/skills/tech/financial-modeling/skills/3-statements/references/formatting.md +118 -118
  129. package/skills/tech/financial-modeling/skills/3-statements/references/formulas.md +292 -292
  130. package/skills/tech/financial-modeling/skills/3-statements/references/sec-filings.md +125 -125
  131. package/skills/tech/financial-modeling/skills/dcf-model/SKILL.md +1210 -1210
  132. package/skills/tech/financial-modeling/skills/dcf-model/TROUBLESHOOTING.md +40 -40
  133. package/skills/tech/financial-modeling/skills/dcf-model/requirements.txt +8 -8
  134. package/skills/tech/financial-modeling/skills/dcf-model/scripts/validate_dcf.py +292 -292
  135. package/skills/tech/financial-modeling/skills/lbo-model/SKILL.md +236 -236
  136. package/skills/tech/financial-modeling/skills/merger-model/SKILL.md +108 -108
  137. package/skills/workflows/README.md +203 -203
  138. package/skills/workflows/adr.md +174 -174
  139. package/skills/workflows/changelog.md +74 -74
  140. package/skills/workflows/compound.md +323 -323
  141. package/skills/workflows/compound_health.md +74 -74
  142. package/skills/workflows/create-agent-skill.md +138 -139
  143. package/skills/workflows/cycle.md +144 -144
  144. package/skills/workflows/deploy-docs.md +84 -84
  145. package/skills/workflows/development-rules.md +42 -42
  146. package/skills/workflows/doc.md +95 -95
  147. package/skills/workflows/documentation-management.md +34 -34
  148. package/skills/workflows/explore.md +146 -146
  149. package/skills/workflows/generate_command.md +106 -106
  150. package/skills/workflows/heal-skill.md +97 -97
  151. package/skills/workflows/housekeeping.md +229 -229
  152. package/skills/workflows/kit-setup.md +102 -102
  153. package/skills/workflows/map-codebase.md +78 -78
  154. package/skills/workflows/orchestration-protocol.md +43 -43
  155. package/skills/workflows/plan-compound.md +439 -439
  156. package/skills/workflows/plan_review.md +269 -269
  157. package/skills/workflows/primary-workflow.md +37 -37
  158. package/skills/workflows/promote_pattern.md +86 -86
  159. package/skills/workflows/release-docs.md +82 -82
  160. package/skills/workflows/report-bug.md +135 -135
  161. package/skills/workflows/reproduce-bug.md +118 -118
  162. package/skills/workflows/resolve_pr.md +133 -133
  163. package/skills/workflows/resolve_todo.md +128 -128
  164. package/skills/workflows/review-compound.md +376 -376
  165. package/skills/workflows/skill-review.md +127 -127
  166. package/skills/workflows/specs.md +257 -257
  167. package/skills/workflows/triage-sprint.md +102 -102
  168. package/skills/workflows/triage.md +152 -152
  169. package/skills/workflows/work.md +399 -399
  170. 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
+
package/build/index.js CHANGED
@@ -293,25 +293,34 @@ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
293
293
  try {
294
294
  const content = await fs.readFile(safePath, "utf-8");
295
295
  const parsed = toml.parse(content);
296
- const promptText = parsed?.prompt || `Execute the ${promptName} command.`;
296
+ let promptText = parsed?.prompt || `Execute the ${promptName} command.`;
297
+ // Resolve @{path} includes from super-kit package root
298
+ const includePattern = /@\{([^}]+)\}/g;
299
+ let match;
300
+ while ((match = includePattern.exec(promptText)) !== null) {
301
+ const includePath = match[1];
302
+ const resolvedPath = getSafePath(superKitRoot, includePath);
303
+ if (resolvedPath) {
304
+ try {
305
+ const includeContent = await fs.readFile(resolvedPath, "utf-8");
306
+ promptText = promptText.replace(match[0], includeContent);
307
+ }
308
+ catch {
309
+ promptText = promptText.replace(match[0], `[File not found: ${includePath}]`);
310
+ }
311
+ }
312
+ }
297
313
  // Load SUPERKIT.md for systematic inclusion
298
314
  const superKitPath = path.join(superKitRoot, "SUPERKIT.md");
299
315
  const superKitContent = await fs.readFile(superKitPath, "utf-8");
300
316
  return {
301
317
  description: parsed?.description || `Loaded command: ${promptName}`,
302
318
  messages: [
303
- {
304
- role: "system", // Try standard system role if supported by the client
305
- content: {
306
- type: "text",
307
- text: superKitContent,
308
- },
309
- },
310
319
  {
311
320
  role: "user",
312
321
  content: {
313
322
  type: "text",
314
- text: promptText,
323
+ text: `[SYSTEM INSTRUCTIONS - Follow these strictly]\n\n${superKitContent}\n\n[USER TASK]\n\n${promptText}`,
315
324
  },
316
325
  },
317
326
  ],
@@ -17,7 +17,7 @@ describe('Logger Tools', () => {
17
17
  vi.setSystemTime(new Date('2026-03-04T00:00:00Z'));
18
18
  const result = await logSkill('test-skill', 'manual', 'context', tempDir);
19
19
  expect(result).toBe('Successfully logged skill usage for test-skill');
20
- const logFile = path.join(tempDir, '.agent', 'logs', 'skill_usage.log');
20
+ const logFile = path.join(tempDir, 'docs', 'agents', 'logs', 'skill_usage.log');
21
21
  const content = await fs.readFile(logFile, 'utf-8');
22
22
  expect(content).toContain('2026-03-04T00:00:00Z|test-skill|manual|context\n');
23
23
  vi.useRealTimers();
@@ -27,7 +27,7 @@ describe('Logger Tools', () => {
27
27
  vi.setSystemTime(new Date('2026-03-04T00:00:00Z'));
28
28
  const result = await logWorkflow('test-workflow', 'session-123', tempDir);
29
29
  expect(result).toBe('Successfully logged workflow usage for test-workflow');
30
- const logFile = path.join(tempDir, '.agent', 'logs', 'workflow_usage.log');
30
+ const logFile = path.join(tempDir, 'docs', 'agents', 'logs', 'workflow_usage.log');
31
31
  const content = await fs.readFile(logFile, 'utf-8');
32
32
  expect(content).toContain('2026-03-04T00:00:00Z|test-workflow|session-123\n');
33
33
  vi.useRealTimers();
@@ -36,13 +36,13 @@ describe('Logger Tools', () => {
36
36
  vi.useFakeTimers();
37
37
  vi.setSystemTime(new Date('2026-03-04T00:00:00Z')); // 1772582400 in seconds
38
38
  await logWorkflow('test-workflow', '', tempDir);
39
- const logFile = path.join(tempDir, '.agent', 'logs', 'workflow_usage.log');
39
+ const logFile = path.join(tempDir, 'docs', 'agents', 'logs', 'workflow_usage.log');
40
40
  const content = await fs.readFile(logFile, 'utf-8');
41
41
  expect(content).toContain('2026-03-04T00:00:00Z|test-workflow|1772582400\n');
42
42
  vi.useRealTimers();
43
43
  });
44
44
  it('should rotate logs older than retention days', async () => {
45
- const logDir = path.join(tempDir, '.agent', 'logs');
45
+ const logDir = path.join(tempDir, 'docs', 'agents', 'logs');
46
46
  await fs.mkdir(logDir, { recursive: true });
47
47
  // Old log line (e.g. 100 days old)
48
48
  const oldTimestamp = new Date();
@@ -61,7 +61,7 @@ describe('Logger Tools', () => {
61
61
  expect(finalContent).toContain('context2');
62
62
  });
63
63
  it('should report if no logs need rotation', async () => {
64
- const logDir = path.join(tempDir, '.agent', 'logs');
64
+ const logDir = path.join(tempDir, 'docs', 'agents', 'logs');
65
65
  await fs.mkdir(logDir, { recursive: true });
66
66
  const newTimestamp = new Date();
67
67
  newTimestamp.setDate(newTimestamp.getDate() - 10);
@@ -102,29 +102,16 @@ export async function validateArchitecture(projectPath = '.') {
102
102
  };
103
103
  const expSkills = getExpected('skills');
104
104
  const expWorkflows = getExpected('workflows');
105
- const expScripts = getExpected('scripts');
106
105
  const expPatterns = getExpected('patterns');
107
- let actSkills = 0, actWorkflows = 0, actScripts = 0, actPatterns = 0;
106
+ let actSkills = 0, actWorkflows = 0, actPatterns = 0;
108
107
  try {
109
108
  actSkills = (await fs.readdir(path.join(projectPath, 'skills'))).length;
110
109
  }
111
110
  catch { }
112
111
  try {
113
- const wfs = await fs.readdir(path.join(projectPath, '.agent/workflows'));
112
+ const wfs = await fs.readdir(path.join(projectPath, 'skills', 'workflows'));
114
113
  actWorkflows = wfs.filter(f => f.endsWith('.md') && f !== 'README.md').length;
115
114
  }
116
- catch {
117
- // Fallback to workflows/
118
- try {
119
- const wfs = await fs.readdir(path.join(projectPath, 'workflows'));
120
- actWorkflows = wfs.filter(f => f.endsWith('.md') && f !== 'README.md').length;
121
- }
122
- catch { }
123
- }
124
- try {
125
- const scripts = await fs.readdir(path.join(projectPath, 'scripts'));
126
- actScripts = scripts.filter(f => f.endsWith('.sh') || f.endsWith('.js') || f.endsWith('.ts')).length;
127
- }
128
115
  catch { }
129
116
  try {
130
117
  const patternsCont = await fs.readFile(path.join(projectPath, 'docs/solutions/patterns/critical-patterns.md'), 'utf8');
@@ -141,10 +128,6 @@ export async function validateArchitecture(projectPath = '.') {
141
128
  out += `❌ Workflows mismatch: Doc says ${expWorkflows}, Found ${actWorkflows}\n`;
142
129
  fail = true;
143
130
  }
144
- if (actScripts !== expScripts) {
145
- out += `❌ Scripts mismatch: Doc says ${expScripts}, Found ${actScripts}\n`;
146
- fail = true;
147
- }
148
131
  if (actPatterns !== expPatterns) {
149
132
  out += `❌ Patterns mismatch: Doc says ${expPatterns}, Found ${actPatterns}\n`;
150
133
  fail = true;
@@ -2,12 +2,12 @@ import * as fs from 'fs/promises';
2
2
  import { existsSync } from 'fs';
3
3
  import * as path from 'path';
4
4
  import { spawn, execSync } from 'child_process';
5
- const AGENT_DIR = path.resolve('.agent');
5
+ const AGENT_DIR = path.resolve('docs', 'agents');
6
6
  const PID_FILE = path.join(AGENT_DIR, 'preview.pid');
7
7
  const LOG_FILE = path.join(AGENT_DIR, 'preview.log');
8
8
  export async function manageAutoPreview(action, port = 3000) {
9
9
  const root = path.resolve('.');
10
- // Ensure .agent dir exists
10
+ // Ensure docs/agents dir exists
11
11
  if (!existsSync(AGENT_DIR)) {
12
12
  await fs.mkdir(AGENT_DIR, { recursive: true });
13
13
  }
@@ -4,8 +4,8 @@ export async function compoundSearch(terms, projectPath = '.') {
4
4
  const searchDirs = ['docs/solutions', 'docs/explorations', 'docs/decisions'].map(d => path.join(projectPath, d));
5
5
  // Log usage
6
6
  const logLine = `${new Date().toISOString().replace(/\.[0-9]{3}Z$/, 'Z')}|compound-search|manual|${terms.join(',')}\n`;
7
- await fs.mkdir(path.join(projectPath, '.agent', 'logs'), { recursive: true });
8
- await fs.appendFile(path.join(projectPath, '.agent', 'logs', 'compound_usage.log'), logLine);
7
+ await fs.mkdir(path.join(projectPath, 'docs', 'agents', 'logs'), { recursive: true });
8
+ await fs.appendFile(path.join(projectPath, 'docs', 'agents', 'logs', 'compound_usage.log'), logLine);
9
9
  const results = new Set();
10
10
  async function searchInDir(dir) {
11
11
  try {
@@ -54,8 +54,8 @@ export async function updateSolutionRef(files, projectPath = '.') {
54
54
  const today = new Date().toISOString().split('T')[0];
55
55
  let count = 0;
56
56
  const logLine = `${new Date().toISOString().replace(/\.[0-9]{3}Z$/, 'Z')}|update-solution-ref|manual|${files.join(',')}\n`;
57
- await fs.mkdir(path.join(projectPath, '.agent', 'logs'), { recursive: true });
58
- await fs.appendFile(path.join(projectPath, '.agent', 'logs', 'compound_usage.log'), logLine);
57
+ await fs.mkdir(path.join(projectPath, 'docs', 'agents', 'logs'), { recursive: true });
58
+ await fs.appendFile(path.join(projectPath, 'docs', 'agents', 'logs', 'compound_usage.log'), logLine);
59
59
  let output = '';
60
60
  for (const file of files) {
61
61
  const fullPath = path.resolve(projectPath, file);
@@ -66,14 +66,9 @@ export async function checkDocsFreshness(skipDocs = false, projectPath = '.') {
66
66
  let warnings = 0;
67
67
  let output = `🔍 Checking documentation freshness for: ${commitMsg}\n`;
68
68
  const changedFiles = changedFilesStr.split('\n');
69
- const newScripts = changedFiles.filter(f => f.startsWith('scripts/') && f !== 'scripts/README.md');
70
- if (newScripts.length > 0 && !changedFiles.includes('scripts/README.md')) {
71
- output += "⚠️ Scripts modified but scripts/README.md not updated.\n";
72
- warnings++;
73
- }
74
- const newWorkflows = changedFiles.filter(f => f.startsWith('.agent/workflows/') && f !== '.agent/workflows/README.md');
75
- if (newWorkflows.length > 0 && !changedFiles.includes('.agent/workflows/README.md')) {
76
- output += "⚠️ Workflows modified but .agent/workflows/README.md not updated.\n";
69
+ const newWorkflows = changedFiles.filter(f => f.startsWith('skills/workflows/') && f !== 'skills/workflows/README.md');
70
+ if (newWorkflows.length > 0 && !changedFiles.includes('skills/workflows/README.md')) {
71
+ output += "⚠️ Workflows modified but skills/workflows/README.md not updated.\n";
77
72
  warnings++;
78
73
  }
79
74
  const codeChanged = changedFiles.some(f => /^(src|components|lib|app)\//.test(f));
@@ -91,7 +86,7 @@ export async function checkDocsFreshness(skipDocs = false, projectPath = '.') {
91
86
  return output;
92
87
  }
93
88
  export async function discoverUndocumentedFolders(projectPath = '.') {
94
- const roots = ["app", "lib", "backend", "scripts", "src"];
89
+ const roots = ["app", "lib", "backend", "src"];
95
90
  const exclusions = ["node_modules", "__pycache__", ".git", "__tests__", "archive", ".vercel", ".next", "dist"];
96
91
  const undocumented = [];
97
92
  async function scanDir(dir, depth) {
@@ -132,7 +127,7 @@ export async function discoverUndocumentedFolders(projectPath = '.') {
132
127
  return "✅ All key folders have README documentation.";
133
128
  }
134
129
  export async function validateFolderDocs(strict = false, targetFolders = [], projectPath = '.') {
135
- const coreFolders = ["src", "scripts", "docs/solutions", "docs/architecture", ".agent/workflows"];
130
+ const coreFolders = ["src", "docs/solutions", "docs/architecture", "skills/workflows", "agents"];
136
131
  const foldersToCheck = targetFolders.length > 0 ? targetFolders : coreFolders;
137
132
  let exitCode = 0;
138
133
  let output = "🔍 Validating hierarchical documentation...\n";
@@ -1,7 +1,7 @@
1
1
  import * as fs from 'fs/promises';
2
2
  import * as path from 'path';
3
3
  function getLogDir(projectPath = '.') {
4
- return path.join(projectPath, '.agent', 'logs');
4
+ return path.join(projectPath, 'docs', 'agents', 'logs');
5
5
  }
6
6
  export async function logSkill(skill, trigger = 'manual', context = '', projectPath = '.') {
7
7
  // Format timestamp like 2026-03-04T00:12:42Z (ISO 8601 without milliseconds)