@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.
Files changed (78) hide show
  1. package/LICENSE +21 -0
  2. package/dist/commands/begin.d.ts.map +1 -1
  3. package/dist/commands/begin.js +18 -0
  4. package/dist/commands/begin.js.map +1 -1
  5. package/dist/commands/check.d.ts +10 -0
  6. package/dist/commands/check.d.ts.map +1 -1
  7. package/dist/commands/check.js +75 -1
  8. package/dist/commands/check.js.map +1 -1
  9. package/dist/commands/ci.d.ts.map +1 -1
  10. package/dist/commands/ci.js +29 -3
  11. package/dist/commands/ci.js.map +1 -1
  12. package/dist/commands/ci.logic.d.ts +8 -2
  13. package/dist/commands/ci.logic.d.ts.map +1 -1
  14. package/dist/commands/ci.logic.js +17 -3
  15. package/dist/commands/ci.logic.js.map +1 -1
  16. package/dist/commands/context.d.ts +9 -0
  17. package/dist/commands/context.d.ts.map +1 -0
  18. package/dist/commands/context.js +217 -0
  19. package/dist/commands/context.js.map +1 -0
  20. package/dist/commands/fix.d.ts +8 -0
  21. package/dist/commands/fix.d.ts.map +1 -0
  22. package/dist/commands/fix.js +224 -0
  23. package/dist/commands/fix.js.map +1 -0
  24. package/dist/commands/index.d.ts +3 -0
  25. package/dist/commands/index.d.ts.map +1 -1
  26. package/dist/commands/index.js +3 -0
  27. package/dist/commands/index.js.map +1 -1
  28. package/dist/commands/skill.d.ts +9 -0
  29. package/dist/commands/skill.d.ts.map +1 -0
  30. package/dist/commands/skill.js +190 -0
  31. package/dist/commands/skill.js.map +1 -0
  32. package/dist/commands/tokens.d.ts.map +1 -1
  33. package/dist/commands/tokens.js +169 -2
  34. package/dist/commands/tokens.js.map +1 -1
  35. package/dist/fix/applier.d.ts +25 -0
  36. package/dist/fix/applier.d.ts.map +1 -0
  37. package/dist/fix/applier.js +211 -0
  38. package/dist/fix/applier.js.map +1 -0
  39. package/dist/fix/index.d.ts +10 -0
  40. package/dist/fix/index.d.ts.map +1 -0
  41. package/dist/fix/index.js +8 -0
  42. package/dist/fix/index.js.map +1 -0
  43. package/dist/fix/safety.d.ts +30 -0
  44. package/dist/fix/safety.d.ts.map +1 -0
  45. package/dist/fix/safety.js +168 -0
  46. package/dist/fix/safety.js.map +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +59 -13
  49. package/dist/index.js.map +1 -1
  50. package/dist/output/fix-formatters.d.ts +36 -0
  51. package/dist/output/fix-formatters.d.ts.map +1 -0
  52. package/dist/output/fix-formatters.js +247 -0
  53. package/dist/output/fix-formatters.js.map +1 -0
  54. package/dist/output/index.d.ts +1 -0
  55. package/dist/output/index.d.ts.map +1 -1
  56. package/dist/output/index.js +1 -0
  57. package/dist/output/index.js.map +1 -1
  58. package/dist/output/reports.d.ts +154 -0
  59. package/dist/output/reports.d.ts.map +1 -0
  60. package/dist/output/reports.js +392 -0
  61. package/dist/output/reports.js.map +1 -0
  62. package/dist/services/context-generator.d.ts +43 -0
  63. package/dist/services/context-generator.d.ts.map +1 -0
  64. package/dist/services/context-generator.js +252 -0
  65. package/dist/services/context-generator.js.map +1 -0
  66. package/dist/services/skill-export.d.ts +96 -0
  67. package/dist/services/skill-export.d.ts.map +1 -0
  68. package/dist/services/skill-export.js +566 -0
  69. package/dist/services/skill-export.js.map +1 -0
  70. package/dist/wizard/ai-guardrails-generator.d.ts +20 -0
  71. package/dist/wizard/ai-guardrails-generator.d.ts.map +1 -0
  72. package/dist/wizard/ai-guardrails-generator.js +259 -0
  73. package/dist/wizard/ai-guardrails-generator.js.map +1 -0
  74. package/dist/wizard/index.d.ts +1 -0
  75. package/dist/wizard/index.d.ts.map +1 -1
  76. package/dist/wizard/index.js +1 -0
  77. package/dist/wizard/index.js.map +1 -1
  78. 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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"}
@@ -4,4 +4,5 @@
4
4
  export * from './menu.js';
5
5
  export * from './issue-reviewer.js';
6
6
  export * from './ci-generator.js';
7
+ export * from './ai-guardrails-generator.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -4,4 +4,5 @@
4
4
  export * from './menu.js';
5
5
  export * from './issue-reviewer.js';
6
6
  export * from './ci-generator.js';
7
+ export * from './ai-guardrails-generator.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -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.13",
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
+ }