superskills 0.1.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.
- package/LICENSE +21 -0
- package/README.md +363 -0
- package/bin/superskills +6 -0
- package/dist/catalog/index.d.ts +11 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +203 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/catalog/tools-catalog.json +243 -0
- package/dist/catalog/types.d.ts +59 -0
- package/dist/catalog/types.d.ts.map +1 -0
- package/dist/catalog/types.js +2 -0
- package/dist/catalog/types.js.map +1 -0
- package/dist/catalog/ui.d.ts +4 -0
- package/dist/catalog/ui.d.ts.map +1 -0
- package/dist/catalog/ui.js +86 -0
- package/dist/catalog/ui.js.map +1 -0
- package/dist/cli/colors.d.ts +8 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +11 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/discovery/analyze.d.ts +5 -0
- package/dist/discovery/analyze.d.ts.map +1 -0
- package/dist/discovery/analyze.js +190 -0
- package/dist/discovery/analyze.js.map +1 -0
- package/dist/discovery/core.d.ts +16 -0
- package/dist/discovery/core.d.ts.map +1 -0
- package/dist/discovery/core.js +51 -0
- package/dist/discovery/core.js.map +1 -0
- package/dist/discovery/index.d.ts +4 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +233 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/schema.d.ts +111 -0
- package/dist/discovery/schema.d.ts.map +1 -0
- package/dist/discovery/schema.js +87 -0
- package/dist/discovery/schema.js.map +1 -0
- package/dist/discovery/types.d.ts +56 -0
- package/dist/discovery/types.d.ts.map +1 -0
- package/dist/discovery/types.js +2 -0
- package/dist/discovery/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +523 -0
- package/dist/index.js.map +1 -0
- package/dist/scaffold/index.d.ts +4 -0
- package/dist/scaffold/index.d.ts.map +1 -0
- package/dist/scaffold/index.js +262 -0
- package/dist/scaffold/index.js.map +1 -0
- package/dist/scaffold/templates/claude-md.d.ts +4 -0
- package/dist/scaffold/templates/claude-md.d.ts.map +1 -0
- package/dist/scaffold/templates/claude-md.js +229 -0
- package/dist/scaffold/templates/claude-md.js.map +1 -0
- package/dist/scaffold/templates/claude-settings.d.ts +3 -0
- package/dist/scaffold/templates/claude-settings.d.ts.map +1 -0
- package/dist/scaffold/templates/claude-settings.js +48 -0
- package/dist/scaffold/templates/claude-settings.js.map +1 -0
- package/dist/scaffold/templates/env-example.d.ts +3 -0
- package/dist/scaffold/templates/env-example.d.ts.map +1 -0
- package/dist/scaffold/templates/env-example.js +103 -0
- package/dist/scaffold/templates/env-example.js.map +1 -0
- package/dist/scaffold/templates/package-json.d.ts +2 -0
- package/dist/scaffold/templates/package-json.d.ts.map +1 -0
- package/dist/scaffold/templates/package-json.js +56 -0
- package/dist/scaffold/templates/package-json.js.map +1 -0
- package/dist/scaffold/templates/project-files.d.ts +4 -0
- package/dist/scaffold/templates/project-files.d.ts.map +1 -0
- package/dist/scaffold/templates/project-files.js +459 -0
- package/dist/scaffold/templates/project-files.js.map +1 -0
- package/dist/scaffold/templates/skill-agents.d.ts +4 -0
- package/dist/scaffold/templates/skill-agents.d.ts.map +1 -0
- package/dist/scaffold/templates/skill-agents.js +68 -0
- package/dist/scaffold/templates/skill-agents.js.map +1 -0
- package/dist/scaffold/templates/skill-commands.d.ts +3 -0
- package/dist/scaffold/templates/skill-commands.d.ts.map +1 -0
- package/dist/scaffold/templates/skill-commands.js +509 -0
- package/dist/scaffold/templates/skill-commands.js.map +1 -0
- package/dist/scaffold/templates/teammate-prompts.d.ts +8 -0
- package/dist/scaffold/templates/teammate-prompts.d.ts.map +1 -0
- package/dist/scaffold/templates/teammate-prompts.js +506 -0
- package/dist/scaffold/templates/teammate-prompts.js.map +1 -0
- package/dist/scaffold/types.d.ts +68 -0
- package/dist/scaffold/types.d.ts.map +1 -0
- package/dist/scaffold/types.js +2 -0
- package/dist/scaffold/types.js.map +1 -0
- package/dist/scaffold/ui.d.ts +5 -0
- package/dist/scaffold/ui.d.ts.map +1 -0
- package/dist/scaffold/ui.js +127 -0
- package/dist/scaffold/ui.js.map +1 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +8 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
export function createStrategyPrompt(discovery) {
|
|
2
|
+
return `# Strategy Skill
|
|
3
|
+
|
|
4
|
+
Strategy and opportunity checks for **${discovery.projectName}**.
|
|
5
|
+
|
|
6
|
+
## Primary Output
|
|
7
|
+
|
|
8
|
+
Append findings to the Architecture Decisions section of CLAUDE.md. Never delete previous entries.
|
|
9
|
+
|
|
10
|
+
## What This Does
|
|
11
|
+
|
|
12
|
+
Two things:
|
|
13
|
+
1. **Alignment check** — verify changes stay aligned with the EIID framework
|
|
14
|
+
2. **Opportunity scan** — proactively suggest new enrichment sources, inference patterns, interpretation angles, and delivery channels that the project is not using yet
|
|
15
|
+
|
|
16
|
+
The opportunity scan is the more valuable output. The alignment check catches drift. The opportunity scan opens new value.
|
|
17
|
+
|
|
18
|
+
Max 400 words per review. Flag issues, skip praise. Suggest concretely.
|
|
19
|
+
|
|
20
|
+
## Project Context
|
|
21
|
+
|
|
22
|
+
**Problem:** ${discovery.problem}
|
|
23
|
+
|
|
24
|
+
**Desired Outcome:** ${discovery.desiredOutcome}
|
|
25
|
+
|
|
26
|
+
**Strategic Analysis:**
|
|
27
|
+
- Industry context: ${discovery.strategicAnalysis.industryContext}
|
|
28
|
+
- Value movement: ${discovery.strategicAnalysis.valueMovement}
|
|
29
|
+
- Current position: ${discovery.strategicAnalysis.currentPosition}
|
|
30
|
+
- Target position: ${discovery.strategicAnalysis.targetPosition}
|
|
31
|
+
|
|
32
|
+
## EIID Framework (current mapping)
|
|
33
|
+
|
|
34
|
+
**Enrichment:**
|
|
35
|
+
- Existing data: ${discovery.eiidMapping.enrichment.existingData.join(', ') || 'None specified'}
|
|
36
|
+
- Missing data: ${discovery.eiidMapping.enrichment.missingData.join(', ') || 'None specified'}
|
|
37
|
+
- Sources: ${discovery.eiidMapping.enrichment.sources.join(', ') || 'None specified'}
|
|
38
|
+
|
|
39
|
+
**Inference:**
|
|
40
|
+
- Patterns to detect: ${discovery.eiidMapping.inference.patterns.join(', ') || 'None specified'}
|
|
41
|
+
- Predictions: ${discovery.eiidMapping.inference.predictions.join(', ') || 'None specified'}
|
|
42
|
+
- Anomalies: ${discovery.eiidMapping.inference.anomalies.join(', ') || 'None specified'}
|
|
43
|
+
|
|
44
|
+
**Interpretation:**
|
|
45
|
+
- Insights: ${discovery.eiidMapping.interpretation.insights.join(', ') || 'None specified'}
|
|
46
|
+
|
|
47
|
+
**Delivery:**
|
|
48
|
+
- Channels: ${discovery.eiidMapping.delivery.channels.join(', ') || 'None specified'}
|
|
49
|
+
- Triggers: ${discovery.eiidMapping.delivery.triggers.join(', ') || 'None specified'}
|
|
50
|
+
|
|
51
|
+
## Part 1: Alignment Check
|
|
52
|
+
|
|
53
|
+
For each change, check:
|
|
54
|
+
|
|
55
|
+
1. **EIID Alignment** — Does this change support one of the four layers?
|
|
56
|
+
2. **Strategic Fit** — Does this move toward the target position?
|
|
57
|
+
3. **Scope Creep** — Is this feature in scope? Should it be deferred?
|
|
58
|
+
|
|
59
|
+
If everything aligns, write "Aligned" and move to Part 2.
|
|
60
|
+
|
|
61
|
+
## Part 2: Opportunity Scan
|
|
62
|
+
|
|
63
|
+
This is the proactive part. Look at the current codebase and EIID mapping and suggest:
|
|
64
|
+
|
|
65
|
+
### Enrichment Opportunities
|
|
66
|
+
- Data sources available but not connected (public APIs, partner data, user behavior data)
|
|
67
|
+
- Data the project collects but does not use for inference
|
|
68
|
+
- Cross-referencing opportunities between existing sources
|
|
69
|
+
|
|
70
|
+
### Inference Opportunities
|
|
71
|
+
- Patterns that could be detected from existing data but are not being analyzed
|
|
72
|
+
- Predictions that the data supports but no one has built yet
|
|
73
|
+
- Anomaly detection that would catch problems before they reach users
|
|
74
|
+
|
|
75
|
+
### Interpretation Opportunities
|
|
76
|
+
- Insights the system generates but does not surface clearly enough
|
|
77
|
+
- New angles on existing data (e.g., trend over time, comparison across segments, outlier explanation)
|
|
78
|
+
- Context that would make existing insights more actionable
|
|
79
|
+
|
|
80
|
+
### Delivery Opportunities
|
|
81
|
+
- Channels the users frequent but the system does not reach
|
|
82
|
+
- Timing improvements (deliver sooner, deliver at the right moment)
|
|
83
|
+
- Trigger conditions that would catch events currently missed
|
|
84
|
+
|
|
85
|
+
### Examples of good opportunity findings
|
|
86
|
+
|
|
87
|
+
- "Supplier data is available but not used for delay prediction. Enrichment opportunity."
|
|
88
|
+
- "Order anomaly patterns could predict customer churn. Inference opportunity."
|
|
89
|
+
- "The weekly report summarizes but does not explain why metrics changed. Interpretation opportunity."
|
|
90
|
+
- "Email reports work but Slack would reach the ops team faster. Delivery opportunity."
|
|
91
|
+
- "User login timestamps are collected but not analyzed for usage patterns. Inference opportunity."
|
|
92
|
+
|
|
93
|
+
## Output Format
|
|
94
|
+
|
|
95
|
+
Append to CLAUDE.md Architecture Decisions:
|
|
96
|
+
|
|
97
|
+
### [Date] - [Brief Title]
|
|
98
|
+
|
|
99
|
+
**Type:** alignment-check | opportunity | drift-warning | decision
|
|
100
|
+
|
|
101
|
+
**Layer:** enrichment | inference | interpretation | delivery | general
|
|
102
|
+
|
|
103
|
+
**Summary:** 1-2 sentences max.
|
|
104
|
+
|
|
105
|
+
**Recommendation:** What to do next.
|
|
106
|
+
|
|
107
|
+
## Done Condition
|
|
108
|
+
|
|
109
|
+
Stop after:
|
|
110
|
+
1. Alignment check (one sentence per EIID layer)
|
|
111
|
+
2. At least one opportunity suggestion (or "No new opportunities found" if genuinely none)
|
|
112
|
+
|
|
113
|
+
## Limits
|
|
114
|
+
|
|
115
|
+
- Advisory only. Does not block.
|
|
116
|
+
- Strategy scope only, not implementation details.
|
|
117
|
+
- Opportunities are suggestions, not requirements. The human decides.
|
|
118
|
+
- When uncertain, flag the question for the human.`;
|
|
119
|
+
}
|
|
120
|
+
export function createDesignPrompt(discovery) {
|
|
121
|
+
return `# Design Skill
|
|
122
|
+
|
|
123
|
+
Design checks for **${discovery.projectName}**.
|
|
124
|
+
|
|
125
|
+
## Primary Output
|
|
126
|
+
|
|
127
|
+
Append design findings to CLAUDE.md after every review.
|
|
128
|
+
|
|
129
|
+
## What This Checks
|
|
130
|
+
|
|
131
|
+
Correct use of shadcnblocks, shadcn, design tokens, accessibility, and responsive design.
|
|
132
|
+
Max 300 words. One issue per block, max 5 issues per review.
|
|
133
|
+
|
|
134
|
+
## HARD RULES
|
|
135
|
+
|
|
136
|
+
These rules are non-negotiable. Every violation is a finding.
|
|
137
|
+
|
|
138
|
+
### Rule 1: shadcnblocks FIRST
|
|
139
|
+
|
|
140
|
+
Before building any UI section, check if a shadcnblocks block exists for it.
|
|
141
|
+
shadcnblocks has 1351 blocks across 90+ categories: hero, pricing, dashboard, auth, settings, e-commerce, features, testimonials, FAQ, footer, navbar, sidebar, stats, CTA, contact, blog, 404, and more.
|
|
142
|
+
|
|
143
|
+
Install blocks via the shadcn CLI with the \`@shadcnblocks\` namespace:
|
|
144
|
+
|
|
145
|
+
\`\`\`bash
|
|
146
|
+
npx shadcn add @shadcnblocks/hero125
|
|
147
|
+
npx shadcn add @shadcnblocks/pricing3
|
|
148
|
+
npx shadcn add @shadcnblocks/login1
|
|
149
|
+
npx shadcn add @shadcnblocks/sidebar10
|
|
150
|
+
\`\`\`
|
|
151
|
+
|
|
152
|
+
If a block exists for the use case, USE IT. Do not build from scratch.
|
|
153
|
+
Pro blocks require SHADCNBLOCKS_API_KEY configured in components.json.
|
|
154
|
+
|
|
155
|
+
### Rule 2: shadcn base SECOND
|
|
156
|
+
|
|
157
|
+
If no shadcnblocks block fits, use standard shadcn components: button, card, input, label, badge, dialog, dropdown-menu, table, tabs, sheet, separator, avatar, tooltip.
|
|
158
|
+
|
|
159
|
+
\`\`\`bash
|
|
160
|
+
npx shadcn add button card input label
|
|
161
|
+
\`\`\`
|
|
162
|
+
|
|
163
|
+
### Rule 3: NEVER custom CSS classes
|
|
164
|
+
|
|
165
|
+
No \`.my-card\`, no \`.custom-header\`, no \`.hero-section\`. Zero custom CSS class names.
|
|
166
|
+
All styling through Tailwind utility classes that read from theme variables.
|
|
167
|
+
|
|
168
|
+
### Rule 4: Global token file required
|
|
169
|
+
|
|
170
|
+
\`src/app/globals.css\` must define CSS custom properties for:
|
|
171
|
+
- Colors in HSL format (--primary, --secondary, --accent, --destructive, --muted, --card, --popover, --border, --ring, --background, --foreground)
|
|
172
|
+
- Border radius (--radius)
|
|
173
|
+
- Spacing scale if non-default
|
|
174
|
+
|
|
175
|
+
\`tailwind.config.ts\` extends the theme to read from these CSS variables.
|
|
176
|
+
Components inherit colors and radius from the theme. No component sets its own colors.
|
|
177
|
+
|
|
178
|
+
### Rule 5: Zero inline arbitrary values
|
|
179
|
+
|
|
180
|
+
No \`text-[#FF5733]\`, no \`p-[13px]\`, no \`w-[237px]\`, no \`bg-[var(--thing)]\`.
|
|
181
|
+
Only Tailwind scale values (p-4, text-lg, w-full, gap-6) and theme classes (bg-primary, text-muted-foreground, border-border).
|
|
182
|
+
|
|
183
|
+
If a value is not in the Tailwind scale or theme, add it to the global token file first.
|
|
184
|
+
|
|
185
|
+
## Project Context
|
|
186
|
+
|
|
187
|
+
**Product:** ${discovery.projectName}
|
|
188
|
+
**Purpose:** ${discovery.desiredOutcome}
|
|
189
|
+
**Delivery channels:** ${discovery.eiidMapping.delivery.channels.join(', ') || 'None specified'}
|
|
190
|
+
|
|
191
|
+
## Review Checklist
|
|
192
|
+
|
|
193
|
+
### 1. Component Source Check
|
|
194
|
+
|
|
195
|
+
For every UI section in the codebase:
|
|
196
|
+
- Could a shadcnblocks block replace this? → FINDING if yes
|
|
197
|
+
- Could a standard shadcn component replace this? → FINDING if yes
|
|
198
|
+
- Is a custom component justified? Only if shadcn has nothing equivalent
|
|
199
|
+
|
|
200
|
+
### 2. Token Compliance
|
|
201
|
+
|
|
202
|
+
- Does \`src/app/globals.css\` define all required CSS variables?
|
|
203
|
+
- Does \`tailwind.config.ts\` extend from those variables?
|
|
204
|
+
- Are there hardcoded hex/rgb values in component files? → FINDING
|
|
205
|
+
- Are there arbitrary Tailwind values (square brackets)? → FINDING
|
|
206
|
+
|
|
207
|
+
### 3. Accessibility (WCAG 2.1 AA)
|
|
208
|
+
|
|
209
|
+
- Color contrast >= 4.5:1 normal text, 3:1 large text
|
|
210
|
+
- Visible focus states on all interactive elements
|
|
211
|
+
- Alt text on images (or aria-hidden if decorative)
|
|
212
|
+
- Labels on form inputs
|
|
213
|
+
- Accessible names on buttons
|
|
214
|
+
- Skip links for keyboard navigation
|
|
215
|
+
|
|
216
|
+
### 4. Responsive
|
|
217
|
+
|
|
218
|
+
- Works at 320px?
|
|
219
|
+
- Breakpoints consistent (sm/md/lg/xl)?
|
|
220
|
+
- Touch targets >= 44x44px?
|
|
221
|
+
|
|
222
|
+
## Output Format
|
|
223
|
+
|
|
224
|
+
Per issue:
|
|
225
|
+
|
|
226
|
+
**File:** path/to/file.tsx
|
|
227
|
+
**Rule Violated:** Rule [1-5] or a11y or responsive
|
|
228
|
+
**Issue:** Brief description
|
|
229
|
+
**Severity:** critical | warning | suggestion
|
|
230
|
+
**Fix:** What to change (include the exact shadcn/shadcnblocks command if applicable)
|
|
231
|
+
|
|
232
|
+
Max 5 issues. Most critical first.
|
|
233
|
+
|
|
234
|
+
## Limits
|
|
235
|
+
|
|
236
|
+
- Advisory only. Does not block.
|
|
237
|
+
- UX and consistency scope, not business logic.
|
|
238
|
+
- Strategy decides what to build. Trust decides what is safe.`;
|
|
239
|
+
}
|
|
240
|
+
export function createTrustPrompt(discovery) {
|
|
241
|
+
const industry = discovery.context.industry || 'Not specified';
|
|
242
|
+
const dataHandled = discovery.availableData.join(', ') || 'Not specified';
|
|
243
|
+
return `# Trust Skill
|
|
244
|
+
|
|
245
|
+
Security checks for **${discovery.projectName}**.
|
|
246
|
+
|
|
247
|
+
## Blocking Rules
|
|
248
|
+
|
|
249
|
+
This skill blocks on these five conditions:
|
|
250
|
+
|
|
251
|
+
1. **Credentials in code** — API keys, passwords, tokens hardcoded
|
|
252
|
+
2. **SQL injection** — Unsanitized user input in queries
|
|
253
|
+
3. **XSS** — Unescaped user content rendered as HTML
|
|
254
|
+
4. **Auth bypass** — Missing auth checks on protected routes
|
|
255
|
+
5. **PII exposure** — Personal data logged, in errors, or in URLs
|
|
256
|
+
|
|
257
|
+
Blocking format:
|
|
258
|
+
|
|
259
|
+
BLOCKED: [reason]
|
|
260
|
+
File: [path], Line: [number]
|
|
261
|
+
Issue: [description]
|
|
262
|
+
Fix required before merging.
|
|
263
|
+
|
|
264
|
+
Non-critical issues get a WARN, not a block.
|
|
265
|
+
|
|
266
|
+
## Primary Output
|
|
267
|
+
|
|
268
|
+
Append security findings to CLAUDE.md after every audit.
|
|
269
|
+
|
|
270
|
+
## What This Checks
|
|
271
|
+
|
|
272
|
+
Security vulnerabilities and compliance gaps, ordered by severity.
|
|
273
|
+
Max 500 words per audit. Critical issues first.
|
|
274
|
+
|
|
275
|
+
## Project Context
|
|
276
|
+
|
|
277
|
+
**Industry:** ${industry}
|
|
278
|
+
**Data Handled:** ${dataHandled}
|
|
279
|
+
|
|
280
|
+
## Review Checklist
|
|
281
|
+
|
|
282
|
+
### 1. OWASP Top 10
|
|
283
|
+
|
|
284
|
+
1. **Broken Access Control** — API routes protected? RLS enforced? Users isolated?
|
|
285
|
+
2. **Cryptographic Failures** — Data encrypted at rest? Passwords hashed (bcrypt/argon2)?
|
|
286
|
+
3. **Injection** — SQL parameterized? XSS escaped? No command injection?
|
|
287
|
+
4. **Insecure Design** — Rate limiting? Account lockout? Secure password reset?
|
|
288
|
+
5. **Security Misconfiguration** — Debug off in prod? CORS configured?
|
|
289
|
+
6. **Vulnerable Components** — Known CVEs in dependencies?
|
|
290
|
+
7. **Auth Failures** — Sessions secure? JWT validated? Logout works?
|
|
291
|
+
8. **Data Integrity** — Input validated? File uploads restricted?
|
|
292
|
+
9. **Logging Failures** — Security events logged? No PII in logs?
|
|
293
|
+
10. **SSRF** — User-provided URLs validated? Internal access restricted?
|
|
294
|
+
|
|
295
|
+
### 2. GDPR Compliance
|
|
296
|
+
|
|
297
|
+
- Consent before collecting personal data
|
|
298
|
+
- Data minimization (only collect what is needed)
|
|
299
|
+
- Right to access (users can export data)
|
|
300
|
+
- Right to delete (users can delete account)
|
|
301
|
+
- Data retention policy defined
|
|
302
|
+
- Breach notification capability
|
|
303
|
+
|
|
304
|
+
### 3. Secrets Management
|
|
305
|
+
|
|
306
|
+
- No secrets in code or git history
|
|
307
|
+
- Environment variables for all credentials
|
|
308
|
+
- Different keys for dev/staging/prod
|
|
309
|
+
|
|
310
|
+
## Output Format
|
|
311
|
+
|
|
312
|
+
Per issue:
|
|
313
|
+
|
|
314
|
+
**Severity:** BLOCK | HIGH | MEDIUM | LOW
|
|
315
|
+
**File:** path:line
|
|
316
|
+
**Issue:** description
|
|
317
|
+
**Fix:** what to do
|
|
318
|
+
|
|
319
|
+
Critical issues first. Max 10 issues per audit.
|
|
320
|
+
|
|
321
|
+
## Limits
|
|
322
|
+
|
|
323
|
+
- BLOCK for the five conditions above.
|
|
324
|
+
- WARN for everything else. The human decides.
|
|
325
|
+
- Security scope only, not code style.
|
|
326
|
+
- When the risk level is unclear, flag it for the human.`;
|
|
327
|
+
}
|
|
328
|
+
export function createEfficiencyPrompt(discovery, tools) {
|
|
329
|
+
const channels = discovery.eiidMapping.delivery.channels.join(', ') || 'None';
|
|
330
|
+
const dataSources = [...discovery.availableData, ...discovery.eiidMapping.enrichment.sources].join(', ') || 'None';
|
|
331
|
+
const toolsList = tools
|
|
332
|
+
? tools.all.map(t => `${t.tool.name} (${t.tool.sdk || 'no SDK'})`).join(', ')
|
|
333
|
+
: 'Not available';
|
|
334
|
+
return `# Efficiency Skill
|
|
335
|
+
|
|
336
|
+
Performance and cost checks for **${discovery.projectName}**.
|
|
337
|
+
|
|
338
|
+
## Primary Output
|
|
339
|
+
|
|
340
|
+
Append performance findings and cost estimates to CLAUDE.md after every review.
|
|
341
|
+
|
|
342
|
+
## What This Checks
|
|
343
|
+
|
|
344
|
+
Bundle size, load times, database query patterns, and API costs.
|
|
345
|
+
Max 400 words. Quantify everything.
|
|
346
|
+
|
|
347
|
+
## Project Context
|
|
348
|
+
|
|
349
|
+
**Delivery channels:** ${channels}
|
|
350
|
+
**Data sources:** ${dataSources}
|
|
351
|
+
**Tools stack:** ${toolsList}
|
|
352
|
+
**Problem:** ${discovery.problem}
|
|
353
|
+
|
|
354
|
+
## Review Checklist
|
|
355
|
+
|
|
356
|
+
### 1. Bundle Size
|
|
357
|
+
|
|
358
|
+
- **Warning:** Bundle increase >10% from baseline
|
|
359
|
+
- **Critical:** Bundle exceeds 200KB gzipped for initial load
|
|
360
|
+
|
|
361
|
+
Look for:
|
|
362
|
+
- Unnecessary dependencies imported
|
|
363
|
+
- Large libraries replaceable (moment->date-fns, lodash->native)
|
|
364
|
+
- Missing tree shaking
|
|
365
|
+
- Dynamic imports missing for heavy components
|
|
366
|
+
|
|
367
|
+
### 2. Core Web Vitals
|
|
368
|
+
|
|
369
|
+
- **LCP** (Largest Contentful Paint): Target < 2.5s
|
|
370
|
+
- **FID** (First Input Delay): Target < 100ms
|
|
371
|
+
- **CLS** (Cumulative Layout Shift): Target < 0.1
|
|
372
|
+
|
|
373
|
+
### 3. Database Queries
|
|
374
|
+
|
|
375
|
+
- **N+1 queries:** Queries in loops
|
|
376
|
+
- **Missing indexes:** Queries on unindexed columns
|
|
377
|
+
- **Over-fetching:** SELECT * when few columns needed
|
|
378
|
+
- **Under-batching:** Many small queries instead of one batch
|
|
379
|
+
|
|
380
|
+
### 4. API Costs
|
|
381
|
+
|
|
382
|
+
Estimate monthly costs for:
|
|
383
|
+
- **LLM calls (Anthropic):** Count call sites, estimate tokens/call, estimate $/month
|
|
384
|
+
- **Embedding calls (OpenAI):** Count vectors, estimate $/month
|
|
385
|
+
- **Third-party APIs:** Rate limits respected? Responses cached?
|
|
386
|
+
- **Delivery costs:** ${channels} — estimate messages/month
|
|
387
|
+
|
|
388
|
+
### 5. Caching Opportunities
|
|
389
|
+
|
|
390
|
+
- Static data that could be cached
|
|
391
|
+
- Expensive computations that repeat
|
|
392
|
+
- API responses that rarely change
|
|
393
|
+
- Database queries that could use cache
|
|
394
|
+
|
|
395
|
+
## Output Format
|
|
396
|
+
|
|
397
|
+
Per issue:
|
|
398
|
+
|
|
399
|
+
**Category:** bundle | performance | database | api-costs | caching
|
|
400
|
+
**Issue:** description
|
|
401
|
+
**Impact:** quantified (e.g., "adds 50KB to bundle", "~$30/month in LLM calls")
|
|
402
|
+
**Fix:** what to change
|
|
403
|
+
**Estimated savings:** quantified
|
|
404
|
+
|
|
405
|
+
Max 5 issues. Highest impact first.
|
|
406
|
+
|
|
407
|
+
## Limits
|
|
408
|
+
|
|
409
|
+
- Advisory only. Does not block.
|
|
410
|
+
- Measurable improvements only, not micro-optimizations.
|
|
411
|
+
- Strategy decides whether a feature is worth the cost.
|
|
412
|
+
- Trust handles security-related performance (rate limiting).`;
|
|
413
|
+
}
|
|
414
|
+
export function createTestingPrompt(discovery) {
|
|
415
|
+
const channels = discovery.eiidMapping.delivery.channels;
|
|
416
|
+
const triggers = discovery.eiidMapping.delivery.triggers;
|
|
417
|
+
const patterns = discovery.eiidMapping.inference.patterns;
|
|
418
|
+
const fence = '```';
|
|
419
|
+
return `# Testing Skill
|
|
420
|
+
|
|
421
|
+
Test verification for **${discovery.projectName}**.
|
|
422
|
+
|
|
423
|
+
## Primary Output
|
|
424
|
+
|
|
425
|
+
Append test results and coverage status to CLAUDE.md after every run.
|
|
426
|
+
|
|
427
|
+
## What This Checks
|
|
428
|
+
|
|
429
|
+
Whether the application behaves correctly and critical flows pass.
|
|
430
|
+
Max 300 words. Failures first, then coverage gaps.
|
|
431
|
+
|
|
432
|
+
## Project Context
|
|
433
|
+
|
|
434
|
+
**Problem:** ${discovery.problem}
|
|
435
|
+
**Desired Outcome:** ${discovery.desiredOutcome}
|
|
436
|
+
**Delivery channels:** ${channels.join(', ') || 'None specified'}
|
|
437
|
+
**Triggers:** ${triggers.join(', ') || 'None specified'}
|
|
438
|
+
**Patterns to verify:** ${patterns.join(', ') || 'None specified'}
|
|
439
|
+
|
|
440
|
+
## Critical Flows
|
|
441
|
+
|
|
442
|
+
Based on the EIID mapping, these four flows must be tested:
|
|
443
|
+
|
|
444
|
+
1. **Data enrichment pipeline** — Can the system receive and process data from: ${discovery.eiidMapping.enrichment.sources.join(', ') || 'configured sources'}?
|
|
445
|
+
2. **Inference verification** — Do the pattern detectors work for: ${patterns.join(', ') || 'configured patterns'}?
|
|
446
|
+
3. **Delivery end-to-end** — Do notifications reach: ${channels.join(', ') || 'configured channels'}?
|
|
447
|
+
4. **Trigger activation** — Do these triggers fire correctly: ${triggers.join(', ') || 'configured triggers'}?
|
|
448
|
+
|
|
449
|
+
## Tools
|
|
450
|
+
|
|
451
|
+
- **vitest** for unit and integration tests
|
|
452
|
+
- **Playwright** for E2E browser tests
|
|
453
|
+
- **axe-core** (via Playwright) for accessibility testing
|
|
454
|
+
|
|
455
|
+
## Review Checklist
|
|
456
|
+
|
|
457
|
+
### 1. Unit Tests (vitest)
|
|
458
|
+
|
|
459
|
+
- Pure logic functions tested in isolation
|
|
460
|
+
- External dependencies mocked (API calls, database)
|
|
461
|
+
- Edge cases covered: empty inputs, error conditions, boundary values
|
|
462
|
+
- Co-located with source: tests/unit/ or src/lib/__tests__/
|
|
463
|
+
|
|
464
|
+
### 2. E2E Tests (Playwright)
|
|
465
|
+
|
|
466
|
+
- The 4 critical flows above
|
|
467
|
+
- Page loads and renders correctly
|
|
468
|
+
- Form submissions and navigation
|
|
469
|
+
- Accessibility via axe-core
|
|
470
|
+
|
|
471
|
+
### 3. Coverage Expectations
|
|
472
|
+
|
|
473
|
+
- Business logic: >80% coverage
|
|
474
|
+
- API routes: happy path + error cases
|
|
475
|
+
- E2E: the 4 critical flows
|
|
476
|
+
- Delivery stubs: called with correct args
|
|
477
|
+
|
|
478
|
+
## Output Format
|
|
479
|
+
|
|
480
|
+
${fence}
|
|
481
|
+
## Test Report
|
|
482
|
+
|
|
483
|
+
**Passed:** [count] | **Failed:** [count] | **Skipped:** [count]
|
|
484
|
+
|
|
485
|
+
### Failures (fix these first)
|
|
486
|
+
- [test name]: [error] (file:line)
|
|
487
|
+
|
|
488
|
+
### Coverage Gaps (add these next)
|
|
489
|
+
- [untested area]: [why it matters]
|
|
490
|
+
${fence}
|
|
491
|
+
|
|
492
|
+
Max 10 items. Failures first, then gaps.
|
|
493
|
+
|
|
494
|
+
## Blocking Behavior
|
|
495
|
+
|
|
496
|
+
If tests fail, respond with {"ok": false, "reason": "X tests failing"}.
|
|
497
|
+
Task completion is blocked while tests fail.
|
|
498
|
+
|
|
499
|
+
## Limits
|
|
500
|
+
|
|
501
|
+
- Tests verify behavior, not implementation details.
|
|
502
|
+
- Integration tests preferred over unit tests for UI.
|
|
503
|
+
- Framework behavior not tested (Next.js routing, React rendering).
|
|
504
|
+
- User-facing behavior only.`;
|
|
505
|
+
}
|
|
506
|
+
//# sourceMappingURL=teammate-prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teammate-prompts.js","sourceRoot":"","sources":["../../../src/scaffold/templates/teammate-prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { DiscoveryResult } from '../discovery/types.js';
|
|
2
|
+
import type { SelectionResult } from '../catalog/types.js';
|
|
3
|
+
export interface ScaffoldInput {
|
|
4
|
+
discovery: DiscoveryResult;
|
|
5
|
+
tools: SelectionResult;
|
|
6
|
+
}
|
|
7
|
+
export interface ScaffoldOptions {
|
|
8
|
+
outputDir: string;
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
skipInstall?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface SkillConfig {
|
|
13
|
+
name: string;
|
|
14
|
+
focus: string;
|
|
15
|
+
triggers: string[];
|
|
16
|
+
systemPrompt: string;
|
|
17
|
+
}
|
|
18
|
+
/** @deprecated Use SkillConfig instead */
|
|
19
|
+
export type TeammateConfig = SkillConfig;
|
|
20
|
+
export interface AgentTeamConfig {
|
|
21
|
+
skills: SkillConfig[];
|
|
22
|
+
hooks: HooksConfig;
|
|
23
|
+
}
|
|
24
|
+
export interface HooksConfig {
|
|
25
|
+
sessionStart: SessionStartHook[];
|
|
26
|
+
preToolUse: PreToolUseHook[];
|
|
27
|
+
postToolUse: PostToolUseHook[];
|
|
28
|
+
stop: StopHook[];
|
|
29
|
+
}
|
|
30
|
+
export interface SessionStartHook {
|
|
31
|
+
matcher: string;
|
|
32
|
+
hooks: Array<{
|
|
33
|
+
type: 'command';
|
|
34
|
+
command: string;
|
|
35
|
+
statusMessage?: string;
|
|
36
|
+
}>;
|
|
37
|
+
}
|
|
38
|
+
export interface PreToolUseHook {
|
|
39
|
+
matcher: string;
|
|
40
|
+
hooks: Array<{
|
|
41
|
+
type: 'prompt';
|
|
42
|
+
prompt: string;
|
|
43
|
+
timeout?: number;
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
export interface PostToolUseHook {
|
|
47
|
+
matcher: string;
|
|
48
|
+
hooks: Array<{
|
|
49
|
+
type: 'prompt';
|
|
50
|
+
prompt: string;
|
|
51
|
+
timeout?: number;
|
|
52
|
+
}>;
|
|
53
|
+
}
|
|
54
|
+
export interface StopHook {
|
|
55
|
+
hooks: Array<{
|
|
56
|
+
type: 'agent' | 'prompt';
|
|
57
|
+
prompt: string;
|
|
58
|
+
timeout?: number;
|
|
59
|
+
}>;
|
|
60
|
+
}
|
|
61
|
+
export interface ScaffoldResult {
|
|
62
|
+
projectPath: string;
|
|
63
|
+
filesCreated: string[];
|
|
64
|
+
packagesToInstall: string[];
|
|
65
|
+
envVars: string[];
|
|
66
|
+
agentTeam: AgentTeamConfig;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scaffold/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,IAAI,EAAE,QAAQ,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,SAAS,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,eAAe,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/scaffold/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DiscoveryResult } from '../discovery/types.js';
|
|
2
|
+
import type { SelectionResult } from '../catalog/types.js';
|
|
3
|
+
import type { ScaffoldResult } from './types.js';
|
|
4
|
+
export declare function runScaffold(discovery: DiscoveryResult, tools: SelectionResult): Promise<ScaffoldResult | null>;
|
|
5
|
+
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/scaffold/ui.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAkFhC"}
|