create-specfuse 0.4.0 → 0.5.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 (67) hide show
  1. package/dist/index.js +0 -0
  2. package/dist/templates/design-md-skill.js +9 -9
  3. package/package.json +2 -2
  4. package/dist/design-md/__tests__/archetype-schema.test.d.ts +0 -2
  5. package/dist/design-md/__tests__/archetype-schema.test.d.ts.map +0 -1
  6. package/dist/design-md/__tests__/archetype-schema.test.js +0 -60
  7. package/dist/design-md/__tests__/archetype-schema.test.js.map +0 -1
  8. package/dist/design-md/__tests__/archetypes.test.d.ts +0 -2
  9. package/dist/design-md/__tests__/archetypes.test.d.ts.map +0 -1
  10. package/dist/design-md/__tests__/archetypes.test.js +0 -45
  11. package/dist/design-md/__tests__/archetypes.test.js.map +0 -1
  12. package/dist/design-md/__tests__/fine-tuner.test.d.ts +0 -2
  13. package/dist/design-md/__tests__/fine-tuner.test.d.ts.map +0 -1
  14. package/dist/design-md/__tests__/fine-tuner.test.js +0 -38
  15. package/dist/design-md/__tests__/fine-tuner.test.js.map +0 -1
  16. package/dist/design-md/__tests__/index.test.d.ts +0 -2
  17. package/dist/design-md/__tests__/index.test.d.ts.map +0 -1
  18. package/dist/design-md/__tests__/index.test.js +0 -66
  19. package/dist/design-md/__tests__/index.test.js.map +0 -1
  20. package/dist/design-md/__tests__/matcher.test.d.ts +0 -2
  21. package/dist/design-md/__tests__/matcher.test.d.ts.map +0 -1
  22. package/dist/design-md/__tests__/matcher.test.js +0 -74
  23. package/dist/design-md/__tests__/matcher.test.js.map +0 -1
  24. package/dist/design-md/__tests__/questionnaire.test.d.ts +0 -2
  25. package/dist/design-md/__tests__/questionnaire.test.d.ts.map +0 -1
  26. package/dist/design-md/__tests__/questionnaire.test.js +0 -57
  27. package/dist/design-md/__tests__/questionnaire.test.js.map +0 -1
  28. package/dist/design-md/__tests__/renderer.test.d.ts +0 -2
  29. package/dist/design-md/__tests__/renderer.test.d.ts.map +0 -1
  30. package/dist/design-md/__tests__/renderer.test.js +0 -51
  31. package/dist/design-md/__tests__/renderer.test.js.map +0 -1
  32. package/dist/design-md/__tests__/types.test.d.ts +0 -2
  33. package/dist/design-md/__tests__/types.test.d.ts.map +0 -1
  34. package/dist/design-md/__tests__/types.test.js +0 -63
  35. package/dist/design-md/__tests__/types.test.js.map +0 -1
  36. package/dist/design-md/archetypes.d.ts +0 -3
  37. package/dist/design-md/archetypes.d.ts.map +0 -1
  38. package/dist/design-md/archetypes.js +0 -18
  39. package/dist/design-md/archetypes.js.map +0 -1
  40. package/dist/design-md/fine-tuner.d.ts +0 -4
  41. package/dist/design-md/fine-tuner.d.ts.map +0 -1
  42. package/dist/design-md/fine-tuner.js +0 -13
  43. package/dist/design-md/fine-tuner.js.map +0 -1
  44. package/dist/design-md/index.d.ts +0 -2
  45. package/dist/design-md/index.d.ts.map +0 -1
  46. package/dist/design-md/index.js +0 -49
  47. package/dist/design-md/index.js.map +0 -1
  48. package/dist/design-md/matcher.d.ts +0 -8
  49. package/dist/design-md/matcher.d.ts.map +0 -1
  50. package/dist/design-md/matcher.js +0 -116
  51. package/dist/design-md/matcher.js.map +0 -1
  52. package/dist/design-md/questionnaire.d.ts +0 -15
  53. package/dist/design-md/questionnaire.d.ts.map +0 -1
  54. package/dist/design-md/questionnaire.js +0 -96
  55. package/dist/design-md/questionnaire.js.map +0 -1
  56. package/dist/design-md/renderer.d.ts +0 -3
  57. package/dist/design-md/renderer.d.ts.map +0 -1
  58. package/dist/design-md/renderer.js +0 -43
  59. package/dist/design-md/renderer.js.map +0 -1
  60. package/dist/design-md/schema.d.ts +0 -69
  61. package/dist/design-md/schema.d.ts.map +0 -1
  62. package/dist/design-md/schema.js +0 -30
  63. package/dist/design-md/schema.js.map +0 -1
  64. package/dist/design-md/types.d.ts +0 -33
  65. package/dist/design-md/types.d.ts.map +0 -1
  66. package/dist/design-md/types.js +0 -2
  67. package/dist/design-md/types.js.map +0 -1
package/dist/index.js CHANGED
File without changes
@@ -1,12 +1,12 @@
1
1
  export function composeDesignMdSkill() {
2
2
  return `---
3
3
  name: design-md
4
- description: Generate a DESIGN.md file for the current project via interactive questionnaire and archetype matching. Use for brownfield projects that need design tokens.
4
+ description: Generate a DESIGN-TOKENS.md file for the current project via interactive questionnaire and archetype matching. Use for brownfield projects that need design tokens.
5
5
  ---
6
6
 
7
- # DESIGN.md Generation Skill
7
+ # DESIGN-TOKENS.md Generation Skill
8
8
 
9
- Generate a comprehensive \`DESIGN.md\` design token document for the current project.
9
+ Generate a comprehensive \`DESIGN-TOKENS.md\` design token document for the current project.
10
10
 
11
11
  **Trigger:** User invokes \`/design-md\` manually, or auto-triggered after \`specfuse init\` for frontend projects.
12
12
 
@@ -182,7 +182,7 @@ Cross-reference format: \`"{category.token}"\` where category is one of colors,
182
182
 
183
183
  ## §4 Output Format
184
184
 
185
- Generate \`DESIGN.md\` with two parts:
185
+ Generate \`DESIGN-TOKENS.md\` with two parts:
186
186
 
187
187
  ### YAML Front Matter
188
188
 
@@ -228,16 +228,16 @@ The Markdown body follows this structure:
228
228
 
229
229
  ## §5 Backup & Overwrite Protection
230
230
 
231
- Before writing \`DESIGN.md\`:
231
+ Before writing \`DESIGN-TOKENS.md\`:
232
232
 
233
- 1. Check if \`DESIGN.md\` already exists in the target directory
233
+ 1. Check if \`DESIGN-TOKENS.md\` already exists in the target directory
234
234
  2. If it exists:
235
- - Ask for overwrite confirmation: "DESIGN.md already exists. Overwrite? (A .bak backup will be created)"
236
- - On confirmation: copy existing file to \`DESIGN.md.bak\`
235
+ - Ask for overwrite confirmation: "DESIGN-TOKENS.md already exists. Overwrite? (A .bak backup will be created)"
236
+ - On confirmation: copy existing file to \`DESIGN-TOKENS.md.bak\`
237
237
  - On rejection: abort without changes
238
238
  3. If it does not exist: proceed directly
239
239
 
240
- Never silently overwrite an existing DESIGN.md file.
240
+ Never silently overwrite an existing DESIGN-TOKENS.md file.
241
241
  `;
242
242
  }
243
243
  //# sourceMappingURL=design-md-skill.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-specfuse",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Scaffold projects with OpenSpec + Superpowers fusion methodology",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,7 +15,7 @@
15
15
  "node": ">=18.0.0"
16
16
  },
17
17
  "scripts": {
18
- "build": "tsc && rm -rf dist/design-md/templates && cp -r src/design-md/templates dist/design-md/templates",
18
+ "build": "rm -rf dist && tsc && mkdir -p dist/design-md && cp -r src/design-md/templates dist/design-md/templates",
19
19
  "test": "vitest run",
20
20
  "dev": "tsc --watch"
21
21
  },
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=archetype-schema.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archetype-schema.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/archetype-schema.test.ts"],"names":[],"mappings":""}
@@ -1,60 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { readFileSync, readdirSync } from 'node:fs';
3
- import { join } from 'node:path';
4
- import { parse as parseYaml } from 'yaml';
5
- import { ArchetypeSchema } from '../schema.js';
6
- const TEMPLATES_DIR = join(import.meta.dirname, '..', 'templates');
7
- function loadArchetypeFiles() {
8
- const files = readdirSync(TEMPLATES_DIR).filter((f) => f.endsWith('.yaml') && !f.startsWith('_'));
9
- return files.map((f) => ({
10
- name: f,
11
- content: parseYaml(readFileSync(join(TEMPLATES_DIR, f), 'utf-8')),
12
- }));
13
- }
14
- describe('archetype schema validation', () => {
15
- it('_schema.yaml exists and is valid YAML', () => {
16
- const raw = readFileSync(join(TEMPLATES_DIR, '_schema.yaml'), 'utf-8');
17
- const schema = parseYaml(raw);
18
- expect(schema).toHaveProperty('type', 'object');
19
- expect(schema).toHaveProperty('required');
20
- });
21
- it('all archetype YAML files pass schema validation', () => {
22
- const archetypes = loadArchetypeFiles();
23
- for (const { name, content } of archetypes) {
24
- const result = ArchetypeSchema.safeParse(content);
25
- if (!result.success) {
26
- throw new Error(`${name} failed validation: ${result.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join(', ')}`);
27
- }
28
- }
29
- });
30
- it('rejects archetype with missing required field', () => {
31
- const invalid = { id: 'test', name: 'Test' };
32
- const result = ArchetypeSchema.safeParse(invalid);
33
- expect(result.success).toBe(false);
34
- });
35
- it('rejects dimension value out of range', () => {
36
- const invalid = {
37
- id: 'test',
38
- name: 'Test',
39
- category: 'dashboard',
40
- dimensions: { colorTemp: 6, lightness: 1, density: 1, borderRadius: 1, tone: 1 },
41
- anchors: { primary: 'X', auxiliary: ['Y'] },
42
- template: 'x',
43
- };
44
- const result = ArchetypeSchema.safeParse(invalid);
45
- expect(result.success).toBe(false);
46
- });
47
- it('rejects invalid category', () => {
48
- const invalid = {
49
- id: 'test',
50
- name: 'Test',
51
- category: 'unknown-category',
52
- dimensions: { colorTemp: 1, lightness: 1, density: 1, borderRadius: 1, tone: 1 },
53
- anchors: { primary: 'X', auxiliary: ['Y'] },
54
- template: 'x',
55
- };
56
- const result = ArchetypeSchema.safeParse(invalid);
57
- expect(result.success).toBe(false);
58
- });
59
- });
60
- //# sourceMappingURL=archetype-schema.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archetype-schema.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/archetype-schema.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=archetypes.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archetypes.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/archetypes.test.ts"],"names":[],"mappings":""}
@@ -1,45 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { loadArchetypes } from '../archetypes.js';
3
- describe('loadArchetypes()', () => {
4
- it('returns exactly 15 archetypes', () => {
5
- const archetypes = loadArchetypes();
6
- expect(archetypes).toHaveLength(15);
7
- });
8
- it('each archetype has valid structure', () => {
9
- const archetypes = loadArchetypes();
10
- for (const a of archetypes) {
11
- expect(a.id).toMatch(/^[a-z][a-z0-9-]*$/);
12
- expect(a.name).toBeTruthy();
13
- expect(a.dimensions.colorTemp).toBeGreaterThanOrEqual(1);
14
- expect(a.dimensions.colorTemp).toBeLessThanOrEqual(5);
15
- expect(a.anchors.primary).toBeTruthy();
16
- expect(a.anchors.auxiliary.length).toBeGreaterThanOrEqual(1);
17
- expect(a.anchors.auxiliary.length).toBeLessThanOrEqual(2);
18
- expect(a.template).toBeTruthy();
19
- }
20
- });
21
- it('covers all 9 categories', () => {
22
- const archetypes = loadArchetypes();
23
- const categories = new Set(archetypes.map((a) => a.category));
24
- expect(categories).toContain('internal-tool');
25
- expect(categories).toContain('dashboard');
26
- expect(categories).toContain('consumer');
27
- expect(categories).toContain('developer');
28
- expect(categories).toContain('mobile');
29
- expect(categories).toContain('e-commerce');
30
- expect(categories).toContain('marketing');
31
- expect(categories).toContain('form-heavy');
32
- expect(categories).toContain('content');
33
- });
34
- it('all archetype ids are unique', () => {
35
- const archetypes = loadArchetypes();
36
- const ids = archetypes.map((a) => a.id);
37
- expect(new Set(ids).size).toBe(ids.length);
38
- });
39
- it('returns typed Archetype objects', () => {
40
- const archetypes = loadArchetypes();
41
- const first = archetypes[0];
42
- expect(first).toBeDefined();
43
- });
44
- });
45
- //# sourceMappingURL=archetypes.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archetypes.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/archetypes.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=fine-tuner.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fine-tuner.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/fine-tuner.test.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { applyOverrides } from '../fine-tuner.js';
3
- const baseVector = {
4
- colorTemp: 2,
5
- lightness: 3,
6
- density: 2,
7
- borderRadius: 3,
8
- tone: 2,
9
- };
10
- describe('applyOverrides()', () => {
11
- it('returns original vector when no overrides', () => {
12
- const result = applyOverrides(baseVector, {});
13
- expect(result).toEqual(baseVector);
14
- });
15
- it('applies single dimension override', () => {
16
- const result = applyOverrides(baseVector, { borderRadius: 1 });
17
- expect(result).toEqual({ ...baseVector, borderRadius: 1 });
18
- });
19
- it('applies multiple dimension overrides', () => {
20
- const result = applyOverrides(baseVector, { colorTemp: 5, tone: 4 });
21
- expect(result).toEqual({ ...baseVector, colorTemp: 5, tone: 4 });
22
- });
23
- it('rejects values below 1', () => {
24
- expect(() => applyOverrides(baseVector, { colorTemp: 0 })).toThrow();
25
- });
26
- it('rejects values above 5', () => {
27
- expect(() => applyOverrides(baseVector, { density: 6 })).toThrow();
28
- });
29
- it('rejects non-integer values', () => {
30
- expect(() => applyOverrides(baseVector, { tone: 2.5 })).toThrow();
31
- });
32
- it('does not mutate the original vector', () => {
33
- const original = { ...baseVector };
34
- applyOverrides(baseVector, { colorTemp: 5 });
35
- expect(baseVector).toEqual(original);
36
- });
37
- });
38
- //# sourceMappingURL=fine-tuner.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fine-tuner.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/fine-tuner.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,MAAM,UAAU,GAAoB;IAClC,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;IACV,YAAY,EAAE,CAAC;IACf,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,GAAU,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,QAAQ,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;QACnC,cAAc,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/index.test.ts"],"names":[],"mappings":""}
@@ -1,66 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
- import { mkdtempSync, readFileSync, writeFileSync, existsSync, rmSync } from 'node:fs';
3
- import { join } from 'node:path';
4
- import { tmpdir } from 'node:os';
5
- vi.mock('@inquirer/prompts', () => ({
6
- checkbox: vi.fn(),
7
- select: vi.fn(),
8
- input: vi.fn(),
9
- confirm: vi.fn(),
10
- number: vi.fn(),
11
- }));
12
- describe('generateDesignMd()', () => {
13
- let tempDir;
14
- beforeEach(() => {
15
- tempDir = mkdtempSync(join(tmpdir(), 'design-md-test-'));
16
- });
17
- afterEach(() => {
18
- rmSync(tempDir, { recursive: true, force: true });
19
- vi.resetAllMocks();
20
- vi.resetModules();
21
- });
22
- it('writes DESIGN.md to target directory', async () => {
23
- const { checkbox, select, input, confirm } = await import('@inquirer/prompts');
24
- checkbox.mockResolvedValue(['dashboard', 'internal-tool']);
25
- select.mockResolvedValueOnce('developers'); // audience
26
- select.mockResolvedValueOnce('dark'); // mood
27
- select.mockResolvedValueOnce('compact'); // density
28
- input.mockResolvedValue(''); // reference
29
- confirm.mockResolvedValue(true); // confirm match
30
- select.mockResolvedValueOnce('accept'); // fine-tune action
31
- const { generateDesignMd } = await import('../index.js');
32
- const result = await generateDesignMd(tempDir);
33
- expect(result).toBe(join(tempDir, 'DESIGN.md'));
34
- expect(existsSync(join(tempDir, 'DESIGN.md'))).toBe(true);
35
- const content = readFileSync(join(tempDir, 'DESIGN.md'), 'utf-8');
36
- expect(content).toContain('---');
37
- expect(content).toContain('tokens');
38
- });
39
- it('returns null when user declines overwrite', async () => {
40
- writeFileSync(join(tempDir, 'DESIGN.md'), 'existing content');
41
- const { checkbox, select, input, confirm } = await import('@inquirer/prompts');
42
- confirm.mockResolvedValue(false); // decline overwrite
43
- const { generateDesignMd } = await import('../index.js');
44
- const result = await generateDesignMd(tempDir);
45
- expect(result).toBeNull();
46
- expect(readFileSync(join(tempDir, 'DESIGN.md'), 'utf-8')).toBe('existing content');
47
- });
48
- it('creates backup when overwriting existing DESIGN.md', async () => {
49
- writeFileSync(join(tempDir, 'DESIGN.md'), 'old content');
50
- const { checkbox, select, input, confirm } = await import('@inquirer/prompts');
51
- confirm.mockResolvedValueOnce(true); // confirm overwrite
52
- checkbox.mockResolvedValue(['consumer']);
53
- select.mockResolvedValueOnce('general'); // audience
54
- select.mockResolvedValueOnce('playful'); // mood
55
- select.mockResolvedValueOnce('spacious'); // density
56
- input.mockResolvedValue(''); // reference
57
- confirm.mockResolvedValueOnce(true); // confirm match
58
- select.mockResolvedValueOnce('accept'); // fine-tune action
59
- const { generateDesignMd } = await import('../index.js');
60
- const result = await generateDesignMd(tempDir);
61
- expect(result).toBe(join(tempDir, 'DESIGN.md'));
62
- expect(existsSync(join(tempDir, 'DESIGN.md.bak'))).toBe(true);
63
- expect(readFileSync(join(tempDir, 'DESIGN.md.bak'), 'utf-8')).toBe('old content');
64
- });
65
- });
66
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;IACjB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;IACf,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;IACd,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;CAChB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,EAAE,CAAC,YAAY,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC9E,QAAgB,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;QACnE,MAAc,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW;QAC/D,MAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;QACrD,MAAc,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QAC3D,KAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;QACjD,OAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;QACzD,MAAc,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB;QAEpE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAE9D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC9E,OAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB;QAE/D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;QAEzD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC9E,OAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB;QACjE,QAAgB,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QACjD,MAAc,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QAC5D,MAAc,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QACxD,MAAc,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;QAC5D,KAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;QACjD,OAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;QAC7D,MAAc,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB;QAEpE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=matcher.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matcher.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/matcher.test.ts"],"names":[],"mappings":""}
@@ -1,74 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { deriveVector, matchArchetype } from '../matcher.js';
3
- const sampleAnswers = {
4
- productType: ['dashboard', 'internal-tool'],
5
- audience: 'developers',
6
- mood: 'dark',
7
- density: 'compact',
8
- reference: null,
9
- };
10
- describe('deriveVector()', () => {
11
- it('returns a valid DimensionVector with values 1-5', () => {
12
- const vec = deriveVector(sampleAnswers);
13
- for (const key of ['colorTemp', 'lightness', 'density', 'borderRadius', 'tone']) {
14
- expect(vec[key]).toBeGreaterThanOrEqual(1);
15
- expect(vec[key]).toBeLessThanOrEqual(5);
16
- expect(Number.isInteger(vec[key])).toBe(true);
17
- }
18
- });
19
- it('same input produces same output (deterministic)', () => {
20
- const a = deriveVector(sampleAnswers);
21
- const b = deriveVector(sampleAnswers);
22
- expect(a).toEqual(b);
23
- });
24
- it('different inputs produce different vectors', () => {
25
- const other = {
26
- productType: ['marketing'],
27
- audience: 'general',
28
- mood: 'playful',
29
- density: 'spacious',
30
- reference: null,
31
- };
32
- const a = deriveVector(sampleAnswers);
33
- const b = deriveVector(other);
34
- expect(a).not.toEqual(b);
35
- });
36
- });
37
- describe('matchArchetype()', () => {
38
- it('returns all 15 archetypes ranked', () => {
39
- const results = matchArchetype(sampleAnswers);
40
- expect(results).toHaveLength(15);
41
- });
42
- it('results are sorted by ascending distance (best first)', () => {
43
- const results = matchArchetype(sampleAnswers);
44
- for (let i = 1; i < results.length; i++) {
45
- expect(results[i].distance).toBeGreaterThanOrEqual(results[i - 1].distance);
46
- }
47
- });
48
- it('category bonus applied to matching categories', () => {
49
- const dashboardAnswers = {
50
- productType: ['dashboard'],
51
- audience: 'business',
52
- mood: 'serious',
53
- density: 'compact',
54
- reference: null,
55
- };
56
- const results = matchArchetype(dashboardAnswers);
57
- const dashboardResults = results.filter((r) => r.archetype.category === 'dashboard');
58
- expect(dashboardResults.length).toBeGreaterThan(0);
59
- // dashboard archetypes should rank highly for dashboard-focused answers
60
- const topIds = results.slice(0, 5).map((r) => r.archetype.id);
61
- const hasDashboard = topIds.some((id) => id.includes('dashboard') || id.includes('monitoring') || id.includes('analytics'));
62
- expect(hasDashboard).toBe(true);
63
- });
64
- it('each result has archetype and distance', () => {
65
- const results = matchArchetype(sampleAnswers);
66
- for (const r of results) {
67
- expect(r.archetype).toBeDefined();
68
- expect(r.archetype.id).toBeTruthy();
69
- expect(typeof r.distance).toBe('number');
70
- expect(r.distance).toBeGreaterThanOrEqual(0);
71
- }
72
- });
73
- });
74
- //# sourceMappingURL=matcher.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matcher.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/matcher.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=questionnaire.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"questionnaire.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/questionnaire.test.ts"],"names":[],"mappings":""}
@@ -1,57 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { QUESTIONS, } from '../questionnaire.js';
3
- describe('questionnaire definitions', () => {
4
- it('exports exactly 5 questions (Q1-Q5)', () => {
5
- expect(QUESTIONS).toHaveLength(5);
6
- });
7
- it('Q1 is multi-select product type', () => {
8
- const q1 = QUESTIONS[0];
9
- expect(q1.id).toBe('productType');
10
- expect(q1.type).toBe('checkbox');
11
- expect(q1.choices.length).toBeGreaterThanOrEqual(9);
12
- });
13
- it('Q2 is single-select audience', () => {
14
- const q2 = QUESTIONS[1];
15
- expect(q2.id).toBe('audience');
16
- expect(q2.type).toBe('select');
17
- expect(q2.choices.length).toBeGreaterThanOrEqual(3);
18
- });
19
- it('Q3 is multi-select mood keywords', () => {
20
- const q3 = QUESTIONS[2];
21
- expect(q3.id).toBe('mood');
22
- expect(q3.type).toBe('checkbox');
23
- expect(q3.choices.length).toBeGreaterThanOrEqual(4);
24
- });
25
- it('Q4 is single-select density preference', () => {
26
- const q4 = QUESTIONS[3];
27
- expect(q4.id).toBe('density');
28
- expect(q4.type).toBe('select');
29
- expect(q4.choices.length).toBeGreaterThanOrEqual(3);
30
- });
31
- it('Q5 is optional text input for reference product', () => {
32
- const q5 = QUESTIONS[4];
33
- expect(q5.id).toBe('reference');
34
- expect(q5.type).toBe('input');
35
- expect(q5.required).toBe(false);
36
- });
37
- it('all questions have message and id', () => {
38
- for (const q of QUESTIONS) {
39
- expect(q.id).toBeTruthy();
40
- expect(q.message).toBeTruthy();
41
- }
42
- });
43
- it('Q1 choices cover all archetype categories', () => {
44
- const q1 = QUESTIONS[0];
45
- const values = q1.choices.map((c) => c.value);
46
- expect(values).toContain('internal-tool');
47
- expect(values).toContain('dashboard');
48
- expect(values).toContain('consumer');
49
- expect(values).toContain('developer');
50
- expect(values).toContain('mobile');
51
- expect(values).toContain('e-commerce');
52
- expect(values).toContain('marketing');
53
- expect(values).toContain('form-heavy');
54
- expect(values).toContain('content');
55
- });
56
- });
57
- //# sourceMappingURL=questionnaire.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"questionnaire.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/questionnaire.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=renderer.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/renderer.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { renderDesignMd } from '../renderer.js';
3
- import { loadArchetypes } from '../archetypes.js';
4
- import { parse as parseYaml } from 'yaml';
5
- const archetypes = loadArchetypes();
6
- const testArchetype = archetypes[0];
7
- const testVector = { colorTemp: 2, lightness: 3, density: 2, borderRadius: 3, tone: 2 };
8
- describe('renderDesignMd()', () => {
9
- it('output starts and ends YAML front matter with --- delimiters', () => {
10
- const output = renderDesignMd(testArchetype, testVector);
11
- const lines = output.split('\n');
12
- expect(lines[0]).toBe('---');
13
- const secondDelimiter = lines.indexOf('---', 1);
14
- expect(secondDelimiter).toBeGreaterThan(1);
15
- });
16
- it('YAML front matter contains tokens key', () => {
17
- const output = renderDesignMd(testArchetype, testVector);
18
- const yamlBlock = output.split('---')[1];
19
- const parsed = parseYaml(yamlBlock);
20
- expect(parsed).toHaveProperty('tokens');
21
- });
22
- it('YAML front matter contains archetype metadata', () => {
23
- const output = renderDesignMd(testArchetype, testVector);
24
- const yamlBlock = output.split('---')[1];
25
- const parsed = parseYaml(yamlBlock);
26
- expect(parsed).toHaveProperty('archetype');
27
- expect(parsed.archetype).toBe(testArchetype.id);
28
- });
29
- it('YAML front matter contains dimensions', () => {
30
- const output = renderDesignMd(testArchetype, testVector);
31
- const yamlBlock = output.split('---')[1];
32
- const parsed = parseYaml(yamlBlock);
33
- expect(parsed).toHaveProperty('dimensions');
34
- expect(parsed.dimensions).toEqual(testVector);
35
- });
36
- it('markdown body contains required sections', () => {
37
- const output = renderDesignMd(testArchetype, testVector);
38
- const parts = output.split('---');
39
- const markdown = parts.slice(2).join('---');
40
- expect(markdown).toContain('# Style Direction');
41
- expect(markdown).toContain('## Color Palette');
42
- expect(markdown).toContain('## Typography');
43
- expect(markdown).toContain('## Spacing');
44
- expect(markdown).toContain('## Components');
45
- });
46
- it('output is valid non-empty string', () => {
47
- const output = renderDesignMd(testArchetype, testVector);
48
- expect(output.length).toBeGreaterThan(100);
49
- });
50
- });
51
- //# sourceMappingURL=renderer.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/renderer.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/types.test.ts"],"names":[],"mappings":""}