@buoy-design/cli 0.1.13 → 0.1.14
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/dist/commands/begin.d.ts.map +1 -1
- package/dist/commands/begin.js +18 -0
- package/dist/commands/begin.js.map +1 -1
- package/dist/commands/check.d.ts +10 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +75 -1
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/ci.d.ts.map +1 -1
- package/dist/commands/ci.js +29 -3
- package/dist/commands/ci.js.map +1 -1
- package/dist/commands/ci.logic.d.ts +8 -2
- package/dist/commands/ci.logic.d.ts.map +1 -1
- package/dist/commands/ci.logic.js +17 -3
- package/dist/commands/ci.logic.js.map +1 -1
- package/dist/commands/context.d.ts +9 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +217 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/fix.d.ts +8 -0
- package/dist/commands/fix.d.ts.map +1 -0
- package/dist/commands/fix.js +224 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/skill.d.ts +9 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +190 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/tokens.d.ts.map +1 -1
- package/dist/commands/tokens.js +169 -2
- package/dist/commands/tokens.js.map +1 -1
- package/dist/fix/applier.d.ts +25 -0
- package/dist/fix/applier.d.ts.map +1 -0
- package/dist/fix/applier.js +211 -0
- package/dist/fix/applier.js.map +1 -0
- package/dist/fix/index.d.ts +10 -0
- package/dist/fix/index.d.ts.map +1 -0
- package/dist/fix/index.js +8 -0
- package/dist/fix/index.js.map +1 -0
- package/dist/fix/safety.d.ts +30 -0
- package/dist/fix/safety.d.ts.map +1 -0
- package/dist/fix/safety.js +168 -0
- package/dist/fix/safety.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +59 -13
- package/dist/index.js.map +1 -1
- package/dist/output/fix-formatters.d.ts +36 -0
- package/dist/output/fix-formatters.d.ts.map +1 -0
- package/dist/output/fix-formatters.js +247 -0
- package/dist/output/fix-formatters.js.map +1 -0
- package/dist/output/index.d.ts +1 -0
- package/dist/output/index.d.ts.map +1 -1
- package/dist/output/index.js +1 -0
- package/dist/output/index.js.map +1 -1
- package/dist/output/reports.d.ts +154 -0
- package/dist/output/reports.d.ts.map +1 -0
- package/dist/output/reports.js +392 -0
- package/dist/output/reports.js.map +1 -0
- package/dist/services/context-generator.d.ts +43 -0
- package/dist/services/context-generator.d.ts.map +1 -0
- package/dist/services/context-generator.js +252 -0
- package/dist/services/context-generator.js.map +1 -0
- package/dist/services/skill-export.d.ts +96 -0
- package/dist/services/skill-export.d.ts.map +1 -0
- package/dist/services/skill-export.js +566 -0
- package/dist/services/skill-export.js.map +1 -0
- package/dist/wizard/ai-guardrails-generator.d.ts +20 -0
- package/dist/wizard/ai-guardrails-generator.d.ts.map +1 -0
- package/dist/wizard/ai-guardrails-generator.js +259 -0
- package/dist/wizard/ai-guardrails-generator.js.map +1 -0
- package/dist/wizard/index.d.ts +1 -0
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +1 -0
- package/dist/wizard/index.js.map +1 -1
- package/package.json +15 -15
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Guardrails setup wizard.
|
|
3
|
+
*
|
|
4
|
+
* Helps users set up AI-friendly design system context:
|
|
5
|
+
* - Skill export for Claude Code
|
|
6
|
+
* - CLAUDE.md context generation
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, mkdirSync, writeFileSync, readFileSync, appendFileSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
import { showMenu, sectionHeader, success, info, bulletList } from './menu.js';
|
|
12
|
+
import { ScanOrchestrator } from '../scan/orchestrator.js';
|
|
13
|
+
import { generateContext, } from '../services/context-generator.js';
|
|
14
|
+
/**
|
|
15
|
+
* Run the AI guardrails setup wizard.
|
|
16
|
+
*/
|
|
17
|
+
export async function setupAIGuardrails(cwd, config) {
|
|
18
|
+
sectionHeader('Set up AI Guardrails');
|
|
19
|
+
info('Help AI coding tools understand your design system.');
|
|
20
|
+
console.log('');
|
|
21
|
+
info('Available options:');
|
|
22
|
+
bulletList([
|
|
23
|
+
'Export as a skill for Claude Code',
|
|
24
|
+
'Generate context for CLAUDE.md',
|
|
25
|
+
]);
|
|
26
|
+
console.log('');
|
|
27
|
+
// Check existing state
|
|
28
|
+
const skillExists = existsSync(join(cwd, '.claude', 'skills', 'design-system', 'SKILL.md'));
|
|
29
|
+
const claudeMdExists = existsSync(join(cwd, 'CLAUDE.md'));
|
|
30
|
+
const hasDesignSystemSection = claudeMdExists &&
|
|
31
|
+
readFileSync(join(cwd, 'CLAUDE.md'), 'utf-8').includes('## Design System Rules');
|
|
32
|
+
if (skillExists) {
|
|
33
|
+
info(`${chalk.dim('Skill already exported at .claude/skills/design-system/')}`);
|
|
34
|
+
}
|
|
35
|
+
if (hasDesignSystemSection) {
|
|
36
|
+
info(`${chalk.dim('CLAUDE.md already has design system context')}`);
|
|
37
|
+
}
|
|
38
|
+
const action = await showMenu('What would you like to set up?', [
|
|
39
|
+
{ label: 'Both (recommended)', value: 'both' },
|
|
40
|
+
{ label: 'Export skill only', value: 'skill' },
|
|
41
|
+
{ label: 'Generate CLAUDE.md context only', value: 'context' },
|
|
42
|
+
{ label: 'Skip for now', value: 'skip' },
|
|
43
|
+
]);
|
|
44
|
+
if (action === 'skip') {
|
|
45
|
+
return { skillExported: false, contextGenerated: false };
|
|
46
|
+
}
|
|
47
|
+
const result = {
|
|
48
|
+
skillExported: false,
|
|
49
|
+
contextGenerated: false,
|
|
50
|
+
};
|
|
51
|
+
// Run scan to get tokens and components
|
|
52
|
+
info('Scanning design system...');
|
|
53
|
+
const orchestrator = new ScanOrchestrator(config, cwd);
|
|
54
|
+
const scanResult = await orchestrator.scan();
|
|
55
|
+
// Get project name
|
|
56
|
+
const projectName = await getProjectName(cwd);
|
|
57
|
+
if (action === 'skill' || action === 'both') {
|
|
58
|
+
const skillResult = await exportSkill(cwd, scanResult, projectName);
|
|
59
|
+
result.skillExported = skillResult.created;
|
|
60
|
+
result.skillPath = skillResult.path;
|
|
61
|
+
}
|
|
62
|
+
if (action === 'context' || action === 'both') {
|
|
63
|
+
const contextResult = await generateClaudeMdContext(cwd, scanResult, projectName);
|
|
64
|
+
result.contextGenerated = contextResult.created;
|
|
65
|
+
result.contextPath = contextResult.path;
|
|
66
|
+
}
|
|
67
|
+
// Show summary
|
|
68
|
+
console.log('');
|
|
69
|
+
sectionHeader('AI Guardrails Summary');
|
|
70
|
+
if (result.skillExported) {
|
|
71
|
+
success(`Skill exported to ${result.skillPath}`);
|
|
72
|
+
}
|
|
73
|
+
if (result.contextGenerated) {
|
|
74
|
+
success(`Context ${result.contextPath === join(cwd, 'CLAUDE.md') ? 'added to' : 'created in'} CLAUDE.md`);
|
|
75
|
+
}
|
|
76
|
+
console.log('');
|
|
77
|
+
info('Now AI tools will know about your design system!');
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Export design system as a skill.
|
|
82
|
+
*/
|
|
83
|
+
async function exportSkill(cwd, scanResult, projectName) {
|
|
84
|
+
const skillDir = join(cwd, '.claude', 'skills', 'design-system');
|
|
85
|
+
const skillPath = join(skillDir, 'SKILL.md');
|
|
86
|
+
// Create directory
|
|
87
|
+
if (!existsSync(skillDir)) {
|
|
88
|
+
mkdirSync(skillDir, { recursive: true });
|
|
89
|
+
}
|
|
90
|
+
// Generate skill content
|
|
91
|
+
const skillContent = generateSkillContent(scanResult, projectName);
|
|
92
|
+
writeFileSync(skillPath, skillContent);
|
|
93
|
+
// Also create token reference files
|
|
94
|
+
await createTokenFiles(skillDir, scanResult.tokens);
|
|
95
|
+
return { created: true, path: skillDir };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Generate SKILL.md content.
|
|
99
|
+
*/
|
|
100
|
+
function generateSkillContent(scanResult, projectName) {
|
|
101
|
+
const tokens = scanResult.tokens;
|
|
102
|
+
const components = scanResult.components;
|
|
103
|
+
const colorTokens = tokens.filter(t => t.category === 'color');
|
|
104
|
+
const spacingTokens = tokens.filter(t => t.category === 'spacing');
|
|
105
|
+
return `---
|
|
106
|
+
name: ${projectName.toLowerCase().replace(/\s+/g, '-')}-design-system
|
|
107
|
+
description: Use when writing UI code for ${projectName}. Provides tokens, components, and patterns to maintain design consistency.
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
# ${projectName} Design System
|
|
111
|
+
|
|
112
|
+
## Quick Reference
|
|
113
|
+
|
|
114
|
+
### Colors
|
|
115
|
+
${colorTokens.length > 0
|
|
116
|
+
? colorTokens.slice(0, 10).map(t => `- \`${t.name}\`: ${t.value.hex || 'N/A'}`).join('\n')
|
|
117
|
+
: '- No color tokens detected'}
|
|
118
|
+
|
|
119
|
+
### Spacing
|
|
120
|
+
${spacingTokens.length > 0
|
|
121
|
+
? spacingTokens.slice(0, 10).map(t => `- \`${t.name}\`: ${t.value.value}${t.value.unit}`).join('\n')
|
|
122
|
+
: '- No spacing tokens detected'}
|
|
123
|
+
|
|
124
|
+
## Components (${components.length})
|
|
125
|
+
${components.slice(0, 20).map(c => `- ${c.name}`).join('\n')}
|
|
126
|
+
|
|
127
|
+
## Rules
|
|
128
|
+
|
|
129
|
+
1. **NEVER hardcode colors** - Always use design tokens
|
|
130
|
+
2. **NEVER hardcode spacing** - Use the spacing scale
|
|
131
|
+
3. **USE existing components** - Check the list above before creating new ones
|
|
132
|
+
4. **RUN validation** - Execute \`buoy check\` before committing
|
|
133
|
+
|
|
134
|
+
## Validation
|
|
135
|
+
|
|
136
|
+
Before committing any UI code:
|
|
137
|
+
\`\`\`bash
|
|
138
|
+
buoy check
|
|
139
|
+
\`\`\`
|
|
140
|
+
|
|
141
|
+
For detailed drift report:
|
|
142
|
+
\`\`\`bash
|
|
143
|
+
buoy drift check
|
|
144
|
+
\`\`\`
|
|
145
|
+
|
|
146
|
+
## More Details
|
|
147
|
+
|
|
148
|
+
See the token files in this directory for complete reference:
|
|
149
|
+
- \`tokens/colors.md\` - All color tokens
|
|
150
|
+
- \`tokens/spacing.md\` - Spacing scale
|
|
151
|
+
`;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Create token reference files.
|
|
155
|
+
*/
|
|
156
|
+
async function createTokenFiles(skillDir, tokens) {
|
|
157
|
+
const typedTokens = tokens;
|
|
158
|
+
const tokensDir = join(skillDir, 'tokens');
|
|
159
|
+
if (!existsSync(tokensDir)) {
|
|
160
|
+
mkdirSync(tokensDir, { recursive: true });
|
|
161
|
+
}
|
|
162
|
+
// Color tokens
|
|
163
|
+
const colorTokens = typedTokens.filter(t => t.category === 'color');
|
|
164
|
+
if (colorTokens.length > 0) {
|
|
165
|
+
const colorContent = `# Color Tokens
|
|
166
|
+
|
|
167
|
+
| Token | Value |
|
|
168
|
+
|-------|-------|
|
|
169
|
+
${colorTokens.map(t => `| \`${t.name}\` | ${t.value.hex || 'N/A'} |`).join('\n')}
|
|
170
|
+
`;
|
|
171
|
+
writeFileSync(join(tokensDir, 'colors.md'), colorContent);
|
|
172
|
+
}
|
|
173
|
+
// Spacing tokens
|
|
174
|
+
const spacingTokens = typedTokens.filter(t => t.category === 'spacing');
|
|
175
|
+
if (spacingTokens.length > 0) {
|
|
176
|
+
const spacingContent = `# Spacing Tokens
|
|
177
|
+
|
|
178
|
+
| Token | Value |
|
|
179
|
+
|-------|-------|
|
|
180
|
+
${spacingTokens.map(t => `| \`${t.name}\` | ${t.value.value}${t.value.unit} |`).join('\n')}
|
|
181
|
+
`;
|
|
182
|
+
writeFileSync(join(tokensDir, 'spacing.md'), spacingContent);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Generate context for CLAUDE.md.
|
|
187
|
+
*/
|
|
188
|
+
async function generateClaudeMdContext(cwd, scanResult, projectName) {
|
|
189
|
+
const claudeMdPath = join(cwd, 'CLAUDE.md');
|
|
190
|
+
// Run drift analysis for anti-patterns
|
|
191
|
+
const { SemanticDiffEngine } = await import('@buoy-design/core/analysis');
|
|
192
|
+
const engine = new SemanticDiffEngine();
|
|
193
|
+
const diffResult = engine.analyzeComponents(scanResult.components, { availableTokens: scanResult.tokens });
|
|
194
|
+
// Prepare context data
|
|
195
|
+
const contextData = {
|
|
196
|
+
tokens: scanResult.tokens,
|
|
197
|
+
components: scanResult.components,
|
|
198
|
+
drifts: diffResult.drifts,
|
|
199
|
+
projectName,
|
|
200
|
+
};
|
|
201
|
+
// Generate context
|
|
202
|
+
const result = generateContext(contextData, {
|
|
203
|
+
detailLevel: 'standard',
|
|
204
|
+
includeTokens: true,
|
|
205
|
+
includeComponents: true,
|
|
206
|
+
includeValidation: true,
|
|
207
|
+
});
|
|
208
|
+
// Handle file operations
|
|
209
|
+
if (existsSync(claudeMdPath)) {
|
|
210
|
+
const existing = readFileSync(claudeMdPath, 'utf-8');
|
|
211
|
+
if (existing.includes('## Design System Rules')) {
|
|
212
|
+
info('CLAUDE.md already has design system context. Skipping.');
|
|
213
|
+
return { created: false, path: claudeMdPath };
|
|
214
|
+
}
|
|
215
|
+
// Append with separator
|
|
216
|
+
const toAppend = '\n\n---\n\n' + result.content;
|
|
217
|
+
appendFileSync(claudeMdPath, toAppend);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
// Create new CLAUDE.md
|
|
221
|
+
const header = `# Project Instructions
|
|
222
|
+
|
|
223
|
+
This file provides guidance to AI tools working with this codebase.
|
|
224
|
+
|
|
225
|
+
`;
|
|
226
|
+
writeFileSync(claudeMdPath, header + result.content);
|
|
227
|
+
}
|
|
228
|
+
return { created: true, path: claudeMdPath };
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Get project name from package.json or directory name.
|
|
232
|
+
*/
|
|
233
|
+
async function getProjectName(cwd) {
|
|
234
|
+
const packageJsonPath = join(cwd, 'package.json');
|
|
235
|
+
if (existsSync(packageJsonPath)) {
|
|
236
|
+
try {
|
|
237
|
+
const content = readFileSync(packageJsonPath, 'utf-8');
|
|
238
|
+
const pkg = JSON.parse(content);
|
|
239
|
+
if (pkg.name) {
|
|
240
|
+
const name = pkg.name.replace(/^@[^/]+\//, '');
|
|
241
|
+
return name
|
|
242
|
+
.split('-')
|
|
243
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
244
|
+
.join(' ');
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
// Ignore parse errors
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Fall back to directory name
|
|
252
|
+
const parts = cwd.split('/');
|
|
253
|
+
const dirName = parts[parts.length - 1] || 'Project';
|
|
254
|
+
return dirName
|
|
255
|
+
.split('-')
|
|
256
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
257
|
+
.join(' ');
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=ai-guardrails-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-guardrails-generator.js","sourceRoot":"","sources":["../../src/wizard/ai-guardrails-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/wizard/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC"}
|
package/dist/wizard/index.js
CHANGED
package/dist/wizard/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buoy-design/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "Buoy CLI - Design drift detection for the AI era",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,20 +30,8 @@
|
|
|
30
30
|
},
|
|
31
31
|
"main": "./dist/index.js",
|
|
32
32
|
"types": "./dist/index.d.ts",
|
|
33
|
-
"scripts": {
|
|
34
|
-
"build": "tsc",
|
|
35
|
-
"dev": "tsc --watch",
|
|
36
|
-
"typecheck": "tsc --noEmit",
|
|
37
|
-
"clean": "rm -rf dist",
|
|
38
|
-
"start": "node ./dist/bin/buoy.js",
|
|
39
|
-
"test": "vitest run",
|
|
40
|
-
"test:watch": "vitest"
|
|
41
|
-
},
|
|
42
33
|
"dependencies": {
|
|
43
34
|
"@anthropic-ai/sdk": "^0.71.2",
|
|
44
|
-
"@buoy-design/core": "^0.1.3",
|
|
45
|
-
"@buoy-design/db": "^0.1.2",
|
|
46
|
-
"@buoy-design/scanners": "^0.1.5",
|
|
47
35
|
"@inquirer/prompts": "^8.1.0",
|
|
48
36
|
"@octokit/rest": "^21.0.0",
|
|
49
37
|
"chalk": "^5.3.0",
|
|
@@ -55,10 +43,22 @@
|
|
|
55
43
|
"ora": "^8.1.1",
|
|
56
44
|
"yaml": "^2.7.0",
|
|
57
45
|
"zod": "^3.24.1",
|
|
58
|
-
"zod-validation-error": "^5.0.0"
|
|
46
|
+
"zod-validation-error": "^5.0.0",
|
|
47
|
+
"@buoy-design/scanners": "0.1.5",
|
|
48
|
+
"@buoy-design/db": "0.1.2",
|
|
49
|
+
"@buoy-design/core": "0.1.3"
|
|
59
50
|
},
|
|
60
51
|
"devDependencies": {
|
|
61
52
|
"@types/node": "^22.10.2",
|
|
62
53
|
"typescript": "^5.7.2"
|
|
54
|
+
},
|
|
55
|
+
"scripts": {
|
|
56
|
+
"build": "tsc",
|
|
57
|
+
"dev": "tsc --watch",
|
|
58
|
+
"typecheck": "tsc --noEmit",
|
|
59
|
+
"clean": "rm -rf dist",
|
|
60
|
+
"start": "node ./dist/bin/buoy.js",
|
|
61
|
+
"test": "vitest run",
|
|
62
|
+
"test:watch": "vitest"
|
|
63
63
|
}
|
|
64
|
-
}
|
|
64
|
+
}
|