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.
Files changed (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +363 -0
  3. package/bin/superskills +6 -0
  4. package/dist/catalog/index.d.ts +11 -0
  5. package/dist/catalog/index.d.ts.map +1 -0
  6. package/dist/catalog/index.js +203 -0
  7. package/dist/catalog/index.js.map +1 -0
  8. package/dist/catalog/tools-catalog.json +243 -0
  9. package/dist/catalog/types.d.ts +59 -0
  10. package/dist/catalog/types.d.ts.map +1 -0
  11. package/dist/catalog/types.js +2 -0
  12. package/dist/catalog/types.js.map +1 -0
  13. package/dist/catalog/ui.d.ts +4 -0
  14. package/dist/catalog/ui.d.ts.map +1 -0
  15. package/dist/catalog/ui.js +86 -0
  16. package/dist/catalog/ui.js.map +1 -0
  17. package/dist/cli/colors.d.ts +8 -0
  18. package/dist/cli/colors.d.ts.map +1 -0
  19. package/dist/cli/colors.js +11 -0
  20. package/dist/cli/colors.js.map +1 -0
  21. package/dist/discovery/analyze.d.ts +5 -0
  22. package/dist/discovery/analyze.d.ts.map +1 -0
  23. package/dist/discovery/analyze.js +190 -0
  24. package/dist/discovery/analyze.js.map +1 -0
  25. package/dist/discovery/core.d.ts +16 -0
  26. package/dist/discovery/core.d.ts.map +1 -0
  27. package/dist/discovery/core.js +51 -0
  28. package/dist/discovery/core.js.map +1 -0
  29. package/dist/discovery/index.d.ts +4 -0
  30. package/dist/discovery/index.d.ts.map +1 -0
  31. package/dist/discovery/index.js +233 -0
  32. package/dist/discovery/index.js.map +1 -0
  33. package/dist/discovery/schema.d.ts +111 -0
  34. package/dist/discovery/schema.d.ts.map +1 -0
  35. package/dist/discovery/schema.js +87 -0
  36. package/dist/discovery/schema.js.map +1 -0
  37. package/dist/discovery/types.d.ts +56 -0
  38. package/dist/discovery/types.d.ts.map +1 -0
  39. package/dist/discovery/types.js +2 -0
  40. package/dist/discovery/types.js.map +1 -0
  41. package/dist/index.d.ts +3 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +523 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/scaffold/index.d.ts +4 -0
  46. package/dist/scaffold/index.d.ts.map +1 -0
  47. package/dist/scaffold/index.js +262 -0
  48. package/dist/scaffold/index.js.map +1 -0
  49. package/dist/scaffold/templates/claude-md.d.ts +4 -0
  50. package/dist/scaffold/templates/claude-md.d.ts.map +1 -0
  51. package/dist/scaffold/templates/claude-md.js +229 -0
  52. package/dist/scaffold/templates/claude-md.js.map +1 -0
  53. package/dist/scaffold/templates/claude-settings.d.ts +3 -0
  54. package/dist/scaffold/templates/claude-settings.d.ts.map +1 -0
  55. package/dist/scaffold/templates/claude-settings.js +48 -0
  56. package/dist/scaffold/templates/claude-settings.js.map +1 -0
  57. package/dist/scaffold/templates/env-example.d.ts +3 -0
  58. package/dist/scaffold/templates/env-example.d.ts.map +1 -0
  59. package/dist/scaffold/templates/env-example.js +103 -0
  60. package/dist/scaffold/templates/env-example.js.map +1 -0
  61. package/dist/scaffold/templates/package-json.d.ts +2 -0
  62. package/dist/scaffold/templates/package-json.d.ts.map +1 -0
  63. package/dist/scaffold/templates/package-json.js +56 -0
  64. package/dist/scaffold/templates/package-json.js.map +1 -0
  65. package/dist/scaffold/templates/project-files.d.ts +4 -0
  66. package/dist/scaffold/templates/project-files.d.ts.map +1 -0
  67. package/dist/scaffold/templates/project-files.js +459 -0
  68. package/dist/scaffold/templates/project-files.js.map +1 -0
  69. package/dist/scaffold/templates/skill-agents.d.ts +4 -0
  70. package/dist/scaffold/templates/skill-agents.d.ts.map +1 -0
  71. package/dist/scaffold/templates/skill-agents.js +68 -0
  72. package/dist/scaffold/templates/skill-agents.js.map +1 -0
  73. package/dist/scaffold/templates/skill-commands.d.ts +3 -0
  74. package/dist/scaffold/templates/skill-commands.d.ts.map +1 -0
  75. package/dist/scaffold/templates/skill-commands.js +509 -0
  76. package/dist/scaffold/templates/skill-commands.js.map +1 -0
  77. package/dist/scaffold/templates/teammate-prompts.d.ts +8 -0
  78. package/dist/scaffold/templates/teammate-prompts.d.ts.map +1 -0
  79. package/dist/scaffold/templates/teammate-prompts.js +506 -0
  80. package/dist/scaffold/templates/teammate-prompts.js.map +1 -0
  81. package/dist/scaffold/types.d.ts +68 -0
  82. package/dist/scaffold/types.d.ts.map +1 -0
  83. package/dist/scaffold/types.js +2 -0
  84. package/dist/scaffold/types.js.map +1 -0
  85. package/dist/scaffold/ui.d.ts +5 -0
  86. package/dist/scaffold/ui.d.ts.map +1 -0
  87. package/dist/scaffold/ui.js +127 -0
  88. package/dist/scaffold/ui.js.map +1 -0
  89. package/dist/utils/logger.d.ts +3 -0
  90. package/dist/utils/logger.d.ts.map +1 -0
  91. package/dist/utils/logger.js +8 -0
  92. package/dist/utils/logger.js.map +1 -0
  93. package/package.json +69 -0
@@ -0,0 +1,262 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import { generateClaudeMd } from './templates/claude-md.js';
4
+ import { generateEnvExample } from './templates/env-example.js';
5
+ import { generateClaudeSettings } from './templates/claude-settings.js';
6
+ import { generatePackageJson } from './templates/package-json.js';
7
+ import { generateProjectFiles } from './templates/project-files.js';
8
+ import { generateSkillAgents } from './templates/skill-agents.js';
9
+ import { generateSkillCommands } from './templates/skill-commands.js';
10
+ import { createStrategyPrompt, createDesignPrompt, createTrustPrompt, createEfficiencyPrompt, createTestingPrompt } from './templates/teammate-prompts.js';
11
+ export async function scaffold(input, options) {
12
+ const { discovery, tools } = input;
13
+ const { outputDir } = options;
14
+ const projectName = slugify(discovery.projectName);
15
+ const projectPath = path.resolve(outputDir, projectName);
16
+ // Ensure output directory exists
17
+ await fs.ensureDir(projectPath);
18
+ const filesCreated = [];
19
+ // Generate CLAUDE.md
20
+ const claudeMd = generateClaudeMd(discovery, tools);
21
+ await fs.writeFile(path.join(projectPath, 'CLAUDE.md'), claudeMd);
22
+ filesCreated.push('CLAUDE.md');
23
+ // Generate .env.example
24
+ const envExample = generateEnvExample(tools);
25
+ await fs.writeFile(path.join(projectPath, '.env.example'), envExample);
26
+ filesCreated.push('.env.example');
27
+ // Generate agent team config
28
+ const agentTeam = createAgentTeamConfig(discovery, tools);
29
+ // Generate .claude/settings.json with real hooks
30
+ const claudeSettings = generateClaudeSettings(agentTeam, projectName);
31
+ await fs.ensureDir(path.join(projectPath, '.claude'));
32
+ await fs.writeFile(path.join(projectPath, '.claude', 'settings.json'), JSON.stringify(claudeSettings, null, 2));
33
+ filesCreated.push('.claude/settings.json');
34
+ // Generate .claude/agents/ subagent files
35
+ const agentFiles = generateSkillAgents(discovery, tools);
36
+ for (const [filePath, content] of Object.entries(agentFiles)) {
37
+ const fullPath = path.join(projectPath, filePath);
38
+ await fs.ensureDir(path.dirname(fullPath));
39
+ await fs.writeFile(fullPath, content);
40
+ filesCreated.push(filePath);
41
+ }
42
+ // Generate .claude/skills/ skill command files
43
+ const skillFiles = generateSkillCommands(discovery);
44
+ for (const [filePath, content] of Object.entries(skillFiles)) {
45
+ const fullPath = path.join(projectPath, filePath);
46
+ await fs.ensureDir(path.dirname(fullPath));
47
+ await fs.writeFile(fullPath, content);
48
+ filesCreated.push(filePath);
49
+ }
50
+ // Generate first-run hook script
51
+ const hookScript = generateFirstRunScript();
52
+ const hookScriptPath = path.join(projectPath, '.claude', 'hooks', 'first-run-check.sh');
53
+ await fs.ensureDir(path.dirname(hookScriptPath));
54
+ await fs.writeFile(hookScriptPath, hookScript, { mode: 0o755 });
55
+ filesCreated.push('.claude/hooks/first-run-check.sh');
56
+ // Generate package.json
57
+ const packages = tools.all.map(s => s.tool.sdk).filter((s) => s !== null);
58
+ const packageJson = generatePackageJson(projectName, packages);
59
+ await fs.writeFile(path.join(projectPath, 'package.json'), JSON.stringify(packageJson, null, 2));
60
+ filesCreated.push('package.json');
61
+ // Generate project structure
62
+ const projectFiles = await generateProjectFiles(discovery, tools);
63
+ for (const [filePath, content] of Object.entries(projectFiles)) {
64
+ const fullPath = path.join(projectPath, filePath);
65
+ await fs.ensureDir(path.dirname(fullPath));
66
+ await fs.writeFile(fullPath, content);
67
+ filesCreated.push(filePath);
68
+ }
69
+ // Generate .gitignore
70
+ const gitignore = `node_modules/
71
+ .next/
72
+ .env
73
+ .env.local
74
+ dist/
75
+ .DS_Store
76
+ `;
77
+ await fs.writeFile(path.join(projectPath, '.gitignore'), gitignore);
78
+ filesCreated.push('.gitignore');
79
+ return {
80
+ projectPath,
81
+ filesCreated,
82
+ packagesToInstall: packages,
83
+ envVars: tools.all.flatMap(s => s.tool.envVars),
84
+ agentTeam
85
+ };
86
+ }
87
+ function createAgentTeamConfig(discovery, tools) {
88
+ const skills = [
89
+ {
90
+ name: 'strategy',
91
+ focus: 'EIID alignment, CLAUDE.md sync, architectural decisions',
92
+ triggers: ['every commit', 'new features', 'weekly review'],
93
+ systemPrompt: createStrategyPrompt(discovery)
94
+ },
95
+ {
96
+ name: 'design',
97
+ focus: 'shadcn components, design tokens, brand voice, accessibility',
98
+ triggers: ['changes in components/', 'changes in app/**/page.tsx'],
99
+ systemPrompt: createDesignPrompt(discovery)
100
+ },
101
+ {
102
+ name: 'trust',
103
+ focus: 'OWASP top 10, auth, GDPR, data handling, input validation',
104
+ triggers: ['pre-commit on api/', 'pre-commit on auth/', 'pre-commit on lib/db/'],
105
+ systemPrompt: createTrustPrompt(discovery)
106
+ },
107
+ {
108
+ name: 'efficiency',
109
+ focus: 'Bundle size, Core Web Vitals, N+1 queries, API costs',
110
+ triggers: ['pre-commit', 'weekly cost review'],
111
+ systemPrompt: createEfficiencyPrompt(discovery, tools)
112
+ },
113
+ {
114
+ name: 'testing',
115
+ focus: 'vitest, Playwright E2E, accessibility audits, regression prevention',
116
+ triggers: ['pre-stop', 'task-completed'],
117
+ systemPrompt: createTestingPrompt(discovery)
118
+ }
119
+ ];
120
+ return {
121
+ skills,
122
+ hooks: {
123
+ sessionStart: [{
124
+ matcher: 'startup',
125
+ hooks: [{
126
+ type: 'command',
127
+ command: '"$CLAUDE_PROJECT_DIR"/.claude/hooks/first-run-check.sh',
128
+ statusMessage: 'Checking project setup...'
129
+ }]
130
+ }],
131
+ preToolUse: [{
132
+ matcher: 'Bash',
133
+ hooks: [{
134
+ type: 'prompt',
135
+ prompt: 'Security check for [projectName]. Check if this command is safe: $ARGUMENTS. Look for: hardcoded secrets, rm -rf, SQL injection via shell, exposure of sensitive data. Respond {"ok": true} if safe, {"ok": false, "reason": "..."} if dangerous.',
136
+ timeout: 15
137
+ }]
138
+ }],
139
+ postToolUse: [{
140
+ matcher: 'Write|Edit',
141
+ hooks: [{
142
+ type: 'prompt',
143
+ prompt: 'Security gate for [projectName]. Check this file change for: hardcoded API keys or secrets, SQL injection, XSS, auth bypass, PII in logs or URLs. $ARGUMENTS. Respond {"ok": true} if safe, {"ok": false, "reason": "..."} if a blocking issue is found. Only block on clear violations, not potential issues.',
144
+ timeout: 15
145
+ }]
146
+ }],
147
+ stop: [{
148
+ hooks: [
149
+ {
150
+ type: 'agent',
151
+ prompt: `Test verification for [projectName].
152
+
153
+ Run \`npm test\`. If Playwright tests exist in tests/e2e/, run \`npx playwright test\` too.
154
+
155
+ Read CLAUDE.md, then append results to the "## Test Report" section using the Edit tool:
156
+
157
+ **Date:** [date] | **Passed:** [count] | **Failed:** [count] | **Skipped:** [count]
158
+ [failure details if any]
159
+
160
+ Gate: if tests fail, respond {"ok": false, "reason": "X tests failing: [details]"}. If tests pass, respond {"ok": true}.`,
161
+ timeout: 60
162
+ },
163
+ {
164
+ type: 'agent',
165
+ prompt: `Pre-stop audit for [projectName]. Three checks: trust, strategy, design.
166
+
167
+ ## Trust Deep Scan
168
+
169
+ Scan all files changed in this session for:
170
+ 1. Hardcoded API keys, passwords, tokens, secrets
171
+ 2. SQL injection (unsanitized user input in queries)
172
+ 3. XSS (unescaped user content rendered as HTML)
173
+ 4. Auth bypass (missing auth checks on protected routes)
174
+ 5. PII exposure (personal data in logs, errors, URLs)
175
+ 6. Missing RLS policies on Supabase tables
176
+ 7. Secrets in environment config committed to git
177
+
178
+ ## Strategy Alignment Check
179
+
180
+ Read CLAUDE.md to understand the EIID mapping and project goals.
181
+ Check recent changes against the EIID framework:
182
+ - Do changes support one of the four layers (Enrichment, Inference, Interpretation, Delivery)?
183
+ - Any scope creep?
184
+ - Any new opportunities across the four layers?
185
+
186
+ ## Design Audit
187
+
188
+ Scan all .tsx files for violations of these five rules:
189
+ 1. **shadcnblocks FIRST** — If a shadcnblocks block exists for a UI section, use it. Install: \`npx shadcn add @shadcnblocks/[name]\`.
190
+ 2. **shadcn base SECOND** — If no block fits, use standard shadcn components. Install: \`npx shadcn add [component]\`.
191
+ 3. **NEVER custom CSS classes** — No .my-card, no .custom-header. Tailwind utilities only.
192
+ 4. **Global token file required** — src/app/globals.css defines CSS custom properties. tailwind.config.ts extends from them.
193
+ 5. **Zero inline arbitrary values** — No text-[#FF5733], no p-[13px]. Tailwind scale values and theme classes only.
194
+ Also check: color contrast >= 4.5:1, focus states, alt text, form labels.
195
+
196
+ ## Report to CLAUDE.md
197
+
198
+ Read CLAUDE.md, then append all findings using the Edit tool:
199
+
200
+ ### Security Findings section ("## Security Findings")
201
+ Per issue: **Severity** (BLOCK|HIGH|MEDIUM|LOW), **File** (path:line), **Issue**, **Fix**.
202
+
203
+ ### Architecture Decisions section ("## Architecture Decisions")
204
+ Per finding: **Type** (alignment-check|opportunity|drift-warning), **Layer** (enrichment|inference|interpretation|delivery), **Summary**, **Recommendation**.
205
+
206
+ ### Design Findings section ("## Design Findings")
207
+ Per violation: **Rule Violated** (Rule 1-5 or a11y), **File** (path:line), **Issue**, **Fix** (include CLI command).
208
+
209
+ Advisory only. Respond {"ok": true} when done.`,
210
+ timeout: 60
211
+ }
212
+ ]
213
+ }]
214
+ }
215
+ };
216
+ }
217
+ function generateFirstRunScript() {
218
+ return `#!/bin/bash
219
+ # First-run detection for SuperSkills projects
220
+ # This hook checks if the project has been set up and suggests init skills
221
+
222
+ MISSING=()
223
+
224
+ if [ ! -d "node_modules" ]; then
225
+ MISSING+=("node_modules not found - run: npm install")
226
+ fi
227
+
228
+ if [ ! -f ".env.local" ]; then
229
+ MISSING+=(".env.local not found - run: cp .env.example .env.local")
230
+ fi
231
+
232
+ # Check if globals.css has been customized (design-init not run)
233
+ if [ -f "src/app/globals.css" ]; then
234
+ LINE_COUNT=$(wc -l < "src/app/globals.css")
235
+ if [ "$LINE_COUNT" -lt 10 ]; then
236
+ MISSING+=("Design not configured - run: /design-init")
237
+ fi
238
+ fi
239
+
240
+ # Check if any test files exist
241
+ if [ ! -d "tests" ] && [ ! -d "__tests__" ]; then
242
+ MISSING+=("No tests found - run: /testing-init")
243
+ fi
244
+
245
+ if [ \${#MISSING[@]} -gt 0 ]; then
246
+ echo "{"
247
+ echo " \\"additionalContext\\": \\"This project needs initial setup. Suggest the user run these skills:\\\\n"
248
+ for item in "\${MISSING[@]}"; do
249
+ echo "- $item\\\\n"
250
+ done
251
+ echo "Available init skills: /strategy-init, /design-init, /trust-init, /efficiency-init, /testing-init\\""
252
+ echo "}"
253
+ fi
254
+ `;
255
+ }
256
+ function slugify(text) {
257
+ return text
258
+ .toLowerCase()
259
+ .replace(/[^a-z0-9]+/g, '-')
260
+ .replace(/^-|-$/g, '');
261
+ }
262
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scaffold/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { DiscoveryResult } from '../../discovery/types.js';
2
+ import type { SelectionResult } from '../../catalog/types.js';
3
+ export declare function generateClaudeMd(discovery: DiscoveryResult, tools: SelectionResult): string;
4
+ //# sourceMappingURL=claude-md.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../../src/scaffold/templates/claude-md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAkC3F"}
@@ -0,0 +1,229 @@
1
+ export function generateClaudeMd(discovery, tools) {
2
+ const contextSection = generateContextSection(discovery);
3
+ const strategicSection = generateStrategicSection(discovery);
4
+ const eiidSection = generateEiidSection(discovery);
5
+ const toolsSection = generateToolsSection(tools);
6
+ const architectureSection = generateArchitectureSection();
7
+ const skillsSection = generateSkillsSection();
8
+ return `# ${discovery.projectName}
9
+
10
+ ${contextSection}
11
+
12
+ ${strategicSection}
13
+
14
+ ${eiidSection}
15
+
16
+ ${toolsSection}
17
+
18
+ ${architectureSection}
19
+
20
+ ${skillsSection}
21
+
22
+ ---
23
+
24
+ ## Changelog
25
+
26
+ <!-- strategy skill appends decisions here -->
27
+
28
+ ### ${new Date().toISOString().split('T')[0]} - Project Created
29
+
30
+ - Initial setup via SuperSkills
31
+ - EIID mapping defined
32
+ - Skills configured
33
+ `;
34
+ }
35
+ function generateContextSection(discovery) {
36
+ const ctx = discovery.context;
37
+ let section = `## Context\n\n`;
38
+ if (ctx.forWhom === 'client') {
39
+ section += `**Client:** ${ctx.companyName || 'Not specified'}\n`;
40
+ }
41
+ else if (ctx.forWhom === 'my_company') {
42
+ section += `**Company:** ${ctx.companyName || 'Own company'}\n`;
43
+ }
44
+ else {
45
+ section += `**For:** Personal/freelance project\n`;
46
+ }
47
+ section += `**Business:** ${ctx.businessDescription}\n`;
48
+ if (ctx.industry)
49
+ section += `**Industry:** ${ctx.industry}\n`;
50
+ if (ctx.employees)
51
+ section += `**Size:** ${ctx.employees} employees\n`;
52
+ if (ctx.revenue)
53
+ section += `**Revenue:** ${ctx.revenue}\n`;
54
+ return section;
55
+ }
56
+ function generateStrategicSection(discovery) {
57
+ const sa = discovery.strategicAnalysis;
58
+ return `## Strategic Analysis
59
+
60
+ ### Problem
61
+
62
+ ${discovery.problem}
63
+
64
+ ### Desired Outcome
65
+
66
+ ${discovery.desiredOutcome}
67
+
68
+ ### Industry Context
69
+
70
+ ${sa.industryContext}
71
+
72
+ ### Value Movement
73
+
74
+ ${sa.valueMovement}
75
+
76
+ ### Current Position
77
+
78
+ ${sa.currentPosition}
79
+
80
+ ### Target Position
81
+
82
+ ${sa.targetPosition}
83
+
84
+ ### Opportunities
85
+
86
+ ${sa.opportunities.map(o => `- ${o}`).join('\n')}
87
+ `;
88
+ }
89
+ function generateEiidSection(discovery) {
90
+ const eiid = discovery.eiidMapping;
91
+ return `## AI-Native Architecture (EIID)
92
+
93
+ ### Enrichment
94
+
95
+ **Existing Data:**
96
+ ${eiid.enrichment.existingData.map(d => `- ${d}`).join('\n')}
97
+
98
+ **Missing Data:**
99
+ ${eiid.enrichment.missingData.map(d => `- ${d}`).join('\n')}
100
+
101
+ **Sources:**
102
+ ${eiid.enrichment.sources.map(s => `- ${s}`).join('\n')}
103
+
104
+ ### Inference
105
+
106
+ **Patterns to Detect:**
107
+ ${eiid.inference.patterns.map(p => `- ${p}`).join('\n')}
108
+
109
+ **Predictions:**
110
+ ${eiid.inference.predictions.map(p => `- ${p}`).join('\n')}
111
+
112
+ **Anomalies:**
113
+ ${eiid.inference.anomalies.map(a => `- ${a}`).join('\n')}
114
+
115
+ ### Interpretation
116
+
117
+ **Insights to Generate:**
118
+ ${eiid.interpretation.insights.map(i => `- ${i}`).join('\n')}
119
+
120
+ ### Delivery
121
+
122
+ **Channels:**
123
+ ${eiid.delivery.channels.map(c => `- ${c}`).join('\n')}
124
+
125
+ **Triggers:**
126
+ ${eiid.delivery.triggers.map(t => `- ${t}`).join('\n')}
127
+ `;
128
+ }
129
+ function generateToolsSection(tools) {
130
+ const coreTools = tools.core.map(t => `- **${t.tool.name}**: ${t.tool.description}`).join('\n');
131
+ const deliveryTools = tools.delivery.map(t => `- **${t.tool.name}**: ${t.reason}`).join('\n');
132
+ const enrichmentTools = tools.enrichment.map(t => `- **${t.tool.name}**: ${t.reason}`).join('\n');
133
+ const testingTools = tools.testing.map(t => `- **${t.tool.name}**: ${t.reason}`).join('\n');
134
+ return `## Tools Stack
135
+
136
+ ### Core
137
+
138
+ ${coreTools}
139
+
140
+ ### Delivery
141
+
142
+ ${deliveryTools || '- None selected'}
143
+
144
+ ### Enrichment
145
+
146
+ ${enrichmentTools || '- None selected'}
147
+
148
+ ### Testing
149
+
150
+ ${testingTools || '- None selected'}
151
+ `;
152
+ }
153
+ function generateArchitectureSection() {
154
+ return `## Architecture Decisions
155
+
156
+ <!-- strategy agent appends decisions and opportunity findings here -->
157
+
158
+ ## Security Findings
159
+
160
+ <!-- trust agent appends security findings here automatically after every file change -->
161
+
162
+ ## Design Findings
163
+
164
+ <!-- design audit appends UI violations here automatically before every stop -->
165
+
166
+ ## Test Report
167
+
168
+ <!-- testing agent appends test results here automatically before every stop -->
169
+ `;
170
+ }
171
+ function generateSkillsSection() {
172
+ return `## SuperSkills
173
+
174
+ Five skills amplify this project. Skills are competencies, not agents.
175
+
176
+ ### Entry Point
177
+
178
+ | Skill | Purpose |
179
+ |-------|---------|
180
+ | \`/strategy-start\` | Define project from scratch, map EIID, write CLAUDE.md |
181
+
182
+ ### Init Skills (run once after scaffold)
183
+
184
+ | Skill | Purpose |
185
+ |-------|---------|
186
+ | \`/strategy-init\` | Validate EIID mapping, set priorities |
187
+ | \`/design-init\` | Configure brand, shadcn, design tokens |
188
+ | \`/trust-init\` | Set up auth, RLS, CORS, data sensitivity |
189
+ | \`/efficiency-init\` | Set performance budgets, bundle analysis |
190
+ | \`/testing-init\` | Set up vitest + Playwright, first smoke test |
191
+
192
+ ### Review Skills (run any time)
193
+
194
+ | Skill | Purpose |
195
+ |-------|---------|
196
+ | \`/strategy-review\` | Full EIID alignment analysis |
197
+ | \`/design-review\` | Audit UI, a11y, design tokens |
198
+ | \`/trust-audit\` | OWASP Top 10 + GDPR checklist |
199
+ | \`/efficiency-review\` | Bundle, CWV, N+1, cost report |
200
+ | \`/testing-verify\` | Run full test suite, report failures |
201
+
202
+ ### Subagents
203
+
204
+ Five subagents in \`.claude/agents/\` provide specialized competencies:
205
+ - **strategy** — EIID alignment, CLAUDE.md ownership
206
+ - **design** — UI, shadcn, accessibility, brand
207
+ - **trust** — Security, GDPR, blocking authority
208
+ - **efficiency** — Performance, costs, optimization
209
+ - **testing** — Test verification, regression prevention
210
+
211
+ ### Hooks (autonomous)
212
+
213
+ Fast gates during work, full audit at the end. The Stop agent writes all findings to this file.
214
+
215
+ - **SessionStart**: Detects first run, suggests init skills
216
+ - **PreToolUse (Bash)**: Fast gate on dangerous commands
217
+ - **PostToolUse (Write|Edit)**: Fast gate on obvious security issues (credentials, injection)
218
+ - **Stop**: Full audit agent runs four checks (tests, trust, strategy, design), appends findings to this file, blocks if tests fail
219
+
220
+ ### Rules
221
+
222
+ 1. **strategy** appends to this file (append-only for decisions)
223
+ 2. **trust** can block commits for security issues
224
+ 3. **testing** blocks stop if tests fail
225
+ 4. **design** and **efficiency** advise but don't block
226
+ 5. All skills update CLAUDE.md with their findings
227
+ `;
228
+ }
229
+ //# sourceMappingURL=claude-md.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../../src/scaffold/templates/claude-md.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AgentTeamConfig } from '../types.js';
2
+ export declare function generateClaudeSettings(agentTeam: AgentTeamConfig, projectName: string): object;
3
+ //# sourceMappingURL=claude-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-settings.d.ts","sourceRoot":"","sources":["../../../src/scaffold/templates/claude-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA8C9F"}
@@ -0,0 +1,48 @@
1
+ export function generateClaudeSettings(agentTeam, projectName) {
2
+ return {
3
+ "hooks": {
4
+ "SessionStart": agentTeam.hooks.sessionStart.map(hook => ({
5
+ "matcher": hook.matcher,
6
+ "hooks": hook.hooks.map(h => ({
7
+ "type": h.type,
8
+ "command": h.command,
9
+ ...(h.statusMessage ? { "statusMessage": h.statusMessage } : {})
10
+ }))
11
+ })),
12
+ "PreToolUse": agentTeam.hooks.preToolUse.map(hook => ({
13
+ "matcher": hook.matcher,
14
+ "hooks": hook.hooks.map(h => ({
15
+ "type": h.type,
16
+ "prompt": h.prompt.replace(/\[projectName\]/g, projectName),
17
+ ...(h.timeout ? { "timeout": h.timeout } : {})
18
+ }))
19
+ })),
20
+ "PostToolUse": agentTeam.hooks.postToolUse.map(hook => ({
21
+ "matcher": hook.matcher,
22
+ "hooks": hook.hooks.map(h => ({
23
+ "type": h.type,
24
+ "prompt": h.prompt.replace(/\[projectName\]/g, projectName),
25
+ ...(h.timeout ? { "timeout": h.timeout } : {})
26
+ }))
27
+ })),
28
+ "Stop": agentTeam.hooks.stop.map(hook => ({
29
+ "hooks": hook.hooks.map(h => ({
30
+ "type": h.type,
31
+ "prompt": h.prompt.replace(/\[projectName\]/g, projectName),
32
+ ...(h.timeout ? { "timeout": h.timeout } : {})
33
+ }))
34
+ }))
35
+ },
36
+ "permissions": {
37
+ "allow": [
38
+ "Bash(npm test)",
39
+ "Bash(npx playwright test*)",
40
+ "Bash(npx tsc --noEmit)",
41
+ "Read(*)",
42
+ "Glob(*)",
43
+ "Grep(*)"
44
+ ]
45
+ }
46
+ };
47
+ }
48
+ //# sourceMappingURL=claude-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-settings.js","sourceRoot":"","sources":["../../../src/scaffold/templates/claude-settings.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,SAA0B,EAAE,WAAmB;IACpF,OAAO;QACL,OAAO,EAAE;YACP,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxD,SAAS,EAAE,IAAI,CAAC,OAAO;gBACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC5B,MAAM,EAAE,CAAC,CAAC,IAAI;oBACd,SAAS,EAAE,CAAC,CAAC,OAAO;oBACpB,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACjE,CAAC,CAAC;aACJ,CAAC,CAAC;YACH,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,SAAS,EAAE,IAAI,CAAC,OAAO;gBACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC5B,MAAM,EAAE,CAAC,CAAC,IAAI;oBACd,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC;oBAC3D,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/C,CAAC,CAAC;aACJ,CAAC,CAAC;YACH,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtD,SAAS,EAAE,IAAI,CAAC,OAAO;gBACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC5B,MAAM,EAAE,CAAC,CAAC,IAAI;oBACd,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC;oBAC3D,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/C,CAAC,CAAC;aACJ,CAAC,CAAC;YACH,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC5B,MAAM,EAAE,CAAC,CAAC,IAAI;oBACd,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC;oBAC3D,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/C,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QACD,aAAa,EAAE;YACb,OAAO,EAAE;gBACP,gBAAgB;gBAChB,4BAA4B;gBAC5B,wBAAwB;gBACxB,SAAS;gBACT,SAAS;gBACT,SAAS;aACV;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SelectionResult } from '../../catalog/types.js';
2
+ export declare function generateEnvExample(tools: SelectionResult): string;
3
+ //# sourceMappingURL=env-example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-example.d.ts","sourceRoot":"","sources":["../../../src/scaffold/templates/env-example.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAiGjE"}