@skillsmith/cli 0.4.3 → 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 (75) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/src/commands/audit.d.ts +19 -0
  3. package/dist/src/commands/audit.d.ts.map +1 -0
  4. package/dist/src/commands/audit.js +134 -0
  5. package/dist/src/commands/audit.js.map +1 -0
  6. package/dist/src/commands/audit.test.d.ts +8 -0
  7. package/dist/src/commands/audit.test.d.ts.map +1 -0
  8. package/dist/src/commands/audit.test.js +97 -0
  9. package/dist/src/commands/audit.test.js.map +1 -0
  10. package/dist/src/commands/author/init.d.ts.map +1 -1
  11. package/dist/src/commands/author/init.js +4 -9
  12. package/dist/src/commands/author/init.js.map +1 -1
  13. package/dist/src/commands/create.d.ts +42 -0
  14. package/dist/src/commands/create.d.ts.map +1 -0
  15. package/dist/src/commands/create.js +325 -0
  16. package/dist/src/commands/create.js.map +1 -0
  17. package/dist/src/commands/diff.d.ts +17 -0
  18. package/dist/src/commands/diff.d.ts.map +1 -0
  19. package/dist/src/commands/diff.js +191 -0
  20. package/dist/src/commands/diff.js.map +1 -0
  21. package/dist/src/commands/diff.test.d.ts +6 -0
  22. package/dist/src/commands/diff.test.d.ts.map +1 -0
  23. package/dist/src/commands/diff.test.js +275 -0
  24. package/dist/src/commands/diff.test.js.map +1 -0
  25. package/dist/src/commands/index.d.ts +4 -0
  26. package/dist/src/commands/index.d.ts.map +1 -1
  27. package/dist/src/commands/index.js +7 -0
  28. package/dist/src/commands/index.js.map +1 -1
  29. package/dist/src/commands/manage.d.ts.map +1 -1
  30. package/dist/src/commands/manage.js +16 -8
  31. package/dist/src/commands/manage.js.map +1 -1
  32. package/dist/src/commands/pin.d.ts +24 -0
  33. package/dist/src/commands/pin.d.ts.map +1 -0
  34. package/dist/src/commands/pin.js +123 -0
  35. package/dist/src/commands/pin.js.map +1 -0
  36. package/dist/src/commands/pin.test.d.ts +6 -0
  37. package/dist/src/commands/pin.test.d.ts.map +1 -0
  38. package/dist/src/commands/pin.test.js +206 -0
  39. package/dist/src/commands/pin.test.js.map +1 -0
  40. package/dist/src/commands/sync.d.ts.map +1 -1
  41. package/dist/src/commands/sync.js +3 -2
  42. package/dist/src/commands/sync.js.map +1 -1
  43. package/dist/src/index.js +9 -1
  44. package/dist/src/index.js.map +1 -1
  45. package/dist/src/templates/changelog.md.template.d.ts +8 -0
  46. package/dist/src/templates/changelog.md.template.d.ts.map +1 -0
  47. package/dist/src/templates/changelog.md.template.js +19 -0
  48. package/dist/src/templates/changelog.md.template.js.map +1 -0
  49. package/dist/src/templates/index.d.ts +1 -0
  50. package/dist/src/templates/index.d.ts.map +1 -1
  51. package/dist/src/templates/index.js +1 -0
  52. package/dist/src/templates/index.js.map +1 -1
  53. package/dist/src/templates/skill.md.template.d.ts +1 -1
  54. package/dist/src/templates/skill.md.template.d.ts.map +1 -1
  55. package/dist/src/templates/skill.md.template.js +1 -3
  56. package/dist/src/templates/skill.md.template.js.map +1 -1
  57. package/dist/src/utils/license-validation.js +1 -1
  58. package/dist/src/utils/license-validation.js.map +1 -1
  59. package/dist/src/utils/manifest.d.ts +46 -0
  60. package/dist/src/utils/manifest.d.ts.map +1 -0
  61. package/dist/src/utils/manifest.js +55 -0
  62. package/dist/src/utils/manifest.js.map +1 -0
  63. package/dist/src/utils/skill-name.d.ts +19 -0
  64. package/dist/src/utils/skill-name.d.ts.map +1 -0
  65. package/dist/src/utils/skill-name.js +26 -0
  66. package/dist/src/utils/skill-name.js.map +1 -0
  67. package/dist/src/utils/skills-directory.d.ts +12 -3
  68. package/dist/src/utils/skills-directory.d.ts.map +1 -1
  69. package/dist/src/utils/skills-directory.js +62 -7
  70. package/dist/src/utils/skills-directory.js.map +1 -1
  71. package/dist/tests/create.test.d.ts +5 -0
  72. package/dist/tests/create.test.d.ts.map +1 -0
  73. package/dist/tests/create.test.js +449 -0
  74. package/dist/tests/create.test.js.map +1 -0
  75. package/package.json +2 -2
@@ -0,0 +1,449 @@
1
+ /**
2
+ * SMI-3083: skillsmith create command tests
3
+ */
4
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
5
+ import { Command } from 'commander';
6
+ // Mock file system
7
+ vi.mock('fs/promises', () => ({
8
+ mkdir: vi.fn(),
9
+ writeFile: vi.fn(),
10
+ stat: vi.fn(),
11
+ }));
12
+ // Mock inquirer
13
+ vi.mock('@inquirer/prompts', () => ({
14
+ input: vi.fn(),
15
+ confirm: vi.fn(),
16
+ select: vi.fn(),
17
+ }));
18
+ // Mock ora
19
+ vi.mock('ora', () => ({
20
+ default: vi.fn(() => ({
21
+ start: vi.fn().mockReturnThis(),
22
+ stop: vi.fn().mockReturnThis(),
23
+ succeed: vi.fn().mockReturnThis(),
24
+ fail: vi.fn().mockReturnThis(),
25
+ warn: vi.fn().mockReturnThis(),
26
+ text: '',
27
+ })),
28
+ }));
29
+ // ---------------------------------------------------------------------------
30
+ // validateSkillName (re-exported from utils/skill-name via create.ts)
31
+ // ---------------------------------------------------------------------------
32
+ describe('SMI-3083: validateSkillName', () => {
33
+ it('accepts valid lowercase-hyphen names', async () => {
34
+ const { validateSkillName } = await import('../src/commands/create.js');
35
+ expect(validateSkillName('my-skill')).toBe(true);
36
+ expect(validateSkillName('skill')).toBe(true);
37
+ expect(validateSkillName('a1b2-c3')).toBe(true);
38
+ });
39
+ it('rejects names with uppercase letters', async () => {
40
+ const { validateSkillName } = await import('../src/commands/create.js');
41
+ const result = validateSkillName('My-Skill');
42
+ expect(result).not.toBe(true);
43
+ expect(typeof result).toBe('string');
44
+ });
45
+ it('rejects names with spaces', async () => {
46
+ const { validateSkillName } = await import('../src/commands/create.js');
47
+ expect(validateSkillName('my skill')).not.toBe(true);
48
+ });
49
+ it('rejects names starting with a digit', async () => {
50
+ const { validateSkillName } = await import('../src/commands/create.js');
51
+ expect(validateSkillName('1skill')).not.toBe(true);
52
+ });
53
+ it('rejects empty string', async () => {
54
+ const { validateSkillName } = await import('../src/commands/create.js');
55
+ expect(validateSkillName('')).not.toBe(true);
56
+ });
57
+ it('rejects names with underscores', async () => {
58
+ const { validateSkillName } = await import('../src/commands/create.js');
59
+ expect(validateSkillName('my_skill')).not.toBe(true);
60
+ });
61
+ });
62
+ // ---------------------------------------------------------------------------
63
+ // createCreateCommand structure
64
+ // ---------------------------------------------------------------------------
65
+ describe('SMI-3083: createCreateCommand', () => {
66
+ it('creates a command with name "create"', async () => {
67
+ const { createCreateCommand } = await import('../src/commands/create.js');
68
+ const cmd = createCreateCommand();
69
+ expect(cmd).toBeInstanceOf(Command);
70
+ expect(cmd.name()).toBe('create');
71
+ });
72
+ it('has --output option with no baked-in default', async () => {
73
+ const { createCreateCommand } = await import('../src/commands/create.js');
74
+ const cmd = createCreateCommand();
75
+ const opt = cmd.options.find((o) => o.long === '--output');
76
+ expect(opt).toBeDefined();
77
+ // default must be undefined — resolved lazily inside createSkill()
78
+ expect(opt?.defaultValue).toBeUndefined();
79
+ });
80
+ it('has --type option', async () => {
81
+ const { createCreateCommand } = await import('../src/commands/create.js');
82
+ const cmd = createCreateCommand();
83
+ expect(cmd.options.find((o) => o.long === '--type')).toBeDefined();
84
+ });
85
+ it('has --behavior option', async () => {
86
+ const { createCreateCommand } = await import('../src/commands/create.js');
87
+ const cmd = createCreateCommand();
88
+ expect(cmd.options.find((o) => o.long === '--behavior')).toBeDefined();
89
+ });
90
+ it('has --description option', async () => {
91
+ const { createCreateCommand } = await import('../src/commands/create.js');
92
+ const cmd = createCreateCommand();
93
+ expect(cmd.options.find((o) => o.long === '--description')).toBeDefined();
94
+ });
95
+ it('has --author option', async () => {
96
+ const { createCreateCommand } = await import('../src/commands/create.js');
97
+ const cmd = createCreateCommand();
98
+ expect(cmd.options.find((o) => o.long === '--author')).toBeDefined();
99
+ });
100
+ it('has --category option', async () => {
101
+ const { createCreateCommand } = await import('../src/commands/create.js');
102
+ const cmd = createCreateCommand();
103
+ expect(cmd.options.find((o) => o.long === '--category')).toBeDefined();
104
+ });
105
+ it('has --scripts flag', async () => {
106
+ const { createCreateCommand } = await import('../src/commands/create.js');
107
+ const cmd = createCreateCommand();
108
+ expect(cmd.options.find((o) => o.long === '--scripts')).toBeDefined();
109
+ });
110
+ it('has --yes flag', async () => {
111
+ const { createCreateCommand } = await import('../src/commands/create.js');
112
+ const cmd = createCreateCommand();
113
+ expect(cmd.options.find((o) => o.long === '--yes')).toBeDefined();
114
+ });
115
+ it('has --dry-run flag', async () => {
116
+ const { createCreateCommand } = await import('../src/commands/create.js');
117
+ const cmd = createCreateCommand();
118
+ expect(cmd.options.find((o) => o.long === '--dry-run')).toBeDefined();
119
+ });
120
+ it('has description mentioning ~/.claude/skills', async () => {
121
+ const { createCreateCommand } = await import('../src/commands/create.js');
122
+ const cmd = createCreateCommand();
123
+ expect(cmd.description()).toContain('~/.claude/skills');
124
+ });
125
+ it('has description mentioning skillsmith author init', async () => {
126
+ const { createCreateCommand } = await import('../src/commands/create.js');
127
+ const cmd = createCreateCommand();
128
+ expect(cmd.description()).toContain('author init');
129
+ });
130
+ });
131
+ // ---------------------------------------------------------------------------
132
+ // createSkill scaffold behaviour
133
+ // ---------------------------------------------------------------------------
134
+ describe('SMI-3083: createSkill scaffold', () => {
135
+ beforeEach(() => {
136
+ vi.clearAllMocks();
137
+ });
138
+ afterEach(() => {
139
+ vi.restoreAllMocks();
140
+ });
141
+ /**
142
+ * Set up prompt mocks for tests that provide type/behavior/scripts via options.
143
+ * Prompt order (when those options are not provided via flags):
144
+ * input: description, author
145
+ * select: category, [type, behavior if not in options]
146
+ * confirm: [scripts if not in options], [overwrite if dir exists and !yes]
147
+ */
148
+ async function setupMocks(overrides = {}) {
149
+ const { mkdir, writeFile, stat } = await import('fs/promises');
150
+ const { input, confirm, select } = await import('@inquirer/prompts');
151
+ if (overrides.statRejects !== false) {
152
+ vi.mocked(stat).mockRejectedValue(new Error('ENOENT'));
153
+ }
154
+ else {
155
+ vi.mocked(stat).mockResolvedValue({ isDirectory: () => true });
156
+ }
157
+ vi.mocked(mkdir).mockResolvedValue(undefined);
158
+ vi.mocked(writeFile).mockResolvedValue(undefined);
159
+ // Defaults assume type/behavior/scripts are passed via options (skips those prompts).
160
+ // Only description (input), author (input), and category (select) are prompted.
161
+ const selectResponses = overrides.selectResponses ?? ['development'];
162
+ const confirmResponses = overrides.confirmResponses ?? [];
163
+ const inputResponses = overrides.inputResponses ?? ['A test skill', 'testuser'];
164
+ for (const val of selectResponses) {
165
+ vi.mocked(select).mockResolvedValueOnce(val);
166
+ }
167
+ for (const val of confirmResponses) {
168
+ vi.mocked(confirm).mockResolvedValueOnce(val);
169
+ }
170
+ for (const val of inputResponses) {
171
+ vi.mocked(input).mockResolvedValueOnce(val);
172
+ }
173
+ return { mkdir, writeFile, stat };
174
+ }
175
+ it('scaffolds exactly 4 files when scripts=false (SKILL.md, README.md, CHANGELOG.md, .gitignore)', async () => {
176
+ const { writeFile } = await setupMocks();
177
+ const { createSkill } = await import('../src/commands/create.js');
178
+ await createSkill('test-skill', {
179
+ output: '/tmp/test-skills',
180
+ type: 'basic',
181
+ behavior: 'autonomous',
182
+ scripts: false,
183
+ });
184
+ expect(vi.mocked(writeFile)).toHaveBeenCalledTimes(4);
185
+ });
186
+ it('scaffolds exactly 5 files when scripts=true (+ scripts/example.js)', async () => {
187
+ const { writeFile } = await setupMocks();
188
+ const { createSkill } = await import('../src/commands/create.js');
189
+ await createSkill('test-skill', {
190
+ output: '/tmp/test-skills',
191
+ type: 'basic',
192
+ behavior: 'autonomous',
193
+ scripts: true,
194
+ });
195
+ expect(vi.mocked(writeFile)).toHaveBeenCalledTimes(5);
196
+ });
197
+ it('creates resources/ directory', async () => {
198
+ const { mkdir } = await setupMocks();
199
+ const { createSkill } = await import('../src/commands/create.js');
200
+ await createSkill('test-skill', {
201
+ output: '/tmp/test-skills',
202
+ type: 'basic',
203
+ behavior: 'autonomous',
204
+ scripts: false,
205
+ });
206
+ const mkdirCalls = vi.mocked(mkdir).mock.calls.map((c) => c[0]);
207
+ expect(mkdirCalls.some((p) => p.endsWith('resources'))).toBe(true);
208
+ });
209
+ it('CHANGELOG.md content contains [1.0.0]', async () => {
210
+ const { writeFile } = await setupMocks();
211
+ const { createSkill } = await import('../src/commands/create.js');
212
+ await createSkill('test-skill', {
213
+ output: '/tmp/test-skills',
214
+ type: 'basic',
215
+ behavior: 'autonomous',
216
+ scripts: false,
217
+ });
218
+ const call = vi
219
+ .mocked(writeFile)
220
+ .mock.calls.find((c) => c[0].endsWith('CHANGELOG.md'));
221
+ expect(call).toBeDefined();
222
+ expect(call[1]).toContain('[1.0.0]');
223
+ });
224
+ it('SKILL.md content contains Behavioral Classification section', async () => {
225
+ const { writeFile } = await setupMocks();
226
+ const { createSkill } = await import('../src/commands/create.js');
227
+ await createSkill('test-skill', {
228
+ output: '/tmp/test-skills',
229
+ type: 'advanced',
230
+ behavior: 'guided',
231
+ scripts: false,
232
+ });
233
+ const call = vi.mocked(writeFile).mock.calls.find((c) => c[0].endsWith('SKILL.md'));
234
+ expect(call).toBeDefined();
235
+ expect(call[1]).toContain('Behavioral Classification');
236
+ });
237
+ it('.gitignore is written with node_modules entry', async () => {
238
+ const { writeFile } = await setupMocks();
239
+ const { createSkill } = await import('../src/commands/create.js');
240
+ await createSkill('test-skill', {
241
+ output: '/tmp/test-skills',
242
+ type: 'basic',
243
+ behavior: 'autonomous',
244
+ scripts: false,
245
+ });
246
+ const call = vi
247
+ .mocked(writeFile)
248
+ .mock.calls.find((c) => c[0].endsWith('.gitignore'));
249
+ expect(call).toBeDefined();
250
+ expect(call[1]).toContain('node_modules/');
251
+ });
252
+ it('scripts/example.js uses JSON.stringify (safe for skill names with quotes)', async () => {
253
+ const { writeFile } = await setupMocks();
254
+ const { createSkill } = await import('../src/commands/create.js');
255
+ await createSkill('test-skill', {
256
+ output: '/tmp/test-skills',
257
+ type: 'basic',
258
+ behavior: 'autonomous',
259
+ scripts: true,
260
+ });
261
+ const call = vi
262
+ .mocked(writeFile)
263
+ .mock.calls.find((c) => c[0].endsWith('example.js'));
264
+ expect(call).toBeDefined();
265
+ // JSON.stringify wraps the string in double quotes — no raw single-quote interpolation
266
+ expect(call[1]).toContain('"test-skill script executed"');
267
+ });
268
+ it('does not write files when user declines overwrite', async () => {
269
+ // stat resolves (dir exists); confirm returns false (decline)
270
+ const { writeFile, stat } = await setupMocks({
271
+ statRejects: false,
272
+ confirmResponses: [false],
273
+ });
274
+ vi.mocked(stat).mockResolvedValue({ isDirectory: () => true });
275
+ const { createSkill } = await import('../src/commands/create.js');
276
+ await createSkill('existing-skill', {
277
+ output: '/tmp/test-skills',
278
+ type: 'basic',
279
+ behavior: 'autonomous',
280
+ scripts: false,
281
+ });
282
+ expect(vi.mocked(writeFile)).not.toHaveBeenCalled();
283
+ });
284
+ it('--yes always overwrites without prompting even if directory exists', async () => {
285
+ const { writeFile, stat, mkdir } = await setupMocks();
286
+ vi.mocked(stat).mockResolvedValue({ isDirectory: () => true });
287
+ vi.mocked(mkdir).mockResolvedValue(undefined);
288
+ vi.mocked(writeFile).mockResolvedValue(undefined);
289
+ const { createSkill } = await import('../src/commands/create.js');
290
+ const { confirm } = await import('@inquirer/prompts');
291
+ await createSkill('existing-skill', {
292
+ output: '/tmp/test-skills',
293
+ type: 'basic',
294
+ behavior: 'autonomous',
295
+ scripts: false,
296
+ yes: true,
297
+ });
298
+ expect(vi.mocked(confirm)).not.toHaveBeenCalled();
299
+ expect(vi.mocked(writeFile)).toHaveBeenCalledTimes(4);
300
+ });
301
+ it('--dry-run prints preview without writing any files', async () => {
302
+ await setupMocks();
303
+ const { createSkill } = await import('../src/commands/create.js');
304
+ const { writeFile, mkdir } = await import('fs/promises');
305
+ await createSkill('test-skill', {
306
+ output: '/tmp/test-skills',
307
+ type: 'basic',
308
+ behavior: 'autonomous',
309
+ scripts: false,
310
+ dryRun: true,
311
+ });
312
+ expect(vi.mocked(writeFile)).not.toHaveBeenCalled();
313
+ expect(vi.mocked(mkdir)).not.toHaveBeenCalled();
314
+ });
315
+ it('supports fully non-interactive mode via --description, --author, --category, --type, --behavior, --scripts', async () => {
316
+ const { mkdir, writeFile, stat } = await import('fs/promises');
317
+ const { input, confirm, select } = await import('@inquirer/prompts');
318
+ vi.mocked(stat).mockRejectedValue(new Error('ENOENT'));
319
+ vi.mocked(mkdir).mockResolvedValue(undefined);
320
+ vi.mocked(writeFile).mockResolvedValue(undefined);
321
+ const { createSkill } = await import('../src/commands/create.js');
322
+ await createSkill('test-skill', {
323
+ output: '/tmp/test-skills',
324
+ description: 'A test skill',
325
+ author: 'testuser',
326
+ category: 'development',
327
+ type: 'basic',
328
+ behavior: 'autonomous',
329
+ scripts: false,
330
+ });
331
+ // No prompts should have been called
332
+ expect(vi.mocked(input)).not.toHaveBeenCalled();
333
+ expect(vi.mocked(select)).not.toHaveBeenCalled();
334
+ expect(vi.mocked(confirm)).not.toHaveBeenCalled();
335
+ expect(vi.mocked(writeFile)).toHaveBeenCalledTimes(4);
336
+ });
337
+ it('calls spinner.fail and rethrows when mkdir fails', async () => {
338
+ const { mkdir, writeFile, stat } = await import('fs/promises');
339
+ const { input, select } = await import('@inquirer/prompts');
340
+ const ora = await import('ora');
341
+ const failMock = vi.fn().mockReturnThis();
342
+ vi.mocked(ora.default).mockReturnValue({
343
+ start: vi.fn().mockReturnThis(),
344
+ stop: vi.fn().mockReturnThis(),
345
+ succeed: vi.fn().mockReturnThis(),
346
+ fail: failMock,
347
+ warn: vi.fn().mockReturnThis(),
348
+ text: '',
349
+ });
350
+ vi.mocked(stat).mockRejectedValue(new Error('ENOENT'));
351
+ vi.mocked(mkdir).mockRejectedValue(new Error('Permission denied'));
352
+ vi.mocked(writeFile).mockResolvedValue(undefined);
353
+ // All input prompts return a valid value; all select prompts return a valid category
354
+ vi.mocked(input).mockResolvedValue('desc');
355
+ vi.mocked(select).mockResolvedValue('development');
356
+ const { createSkill } = await import('../src/commands/create.js');
357
+ await expect(createSkill('fail-skill', {
358
+ output: '/tmp/test-skills',
359
+ type: 'basic',
360
+ behavior: 'autonomous',
361
+ scripts: false,
362
+ })).rejects.toThrow();
363
+ expect(failMock).toHaveBeenCalled();
364
+ });
365
+ });
366
+ // ---------------------------------------------------------------------------
367
+ // Validation — CLI flag guards
368
+ // ---------------------------------------------------------------------------
369
+ describe('SMI-3083: createSkill validation guards', () => {
370
+ beforeEach(() => {
371
+ vi.clearAllMocks();
372
+ });
373
+ it('rejects invalid --type value and exits', async () => {
374
+ const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
375
+ throw new Error('process.exit called');
376
+ });
377
+ const { createSkill } = await import('../src/commands/create.js');
378
+ await expect(createSkill('test-skill', {
379
+ output: '/tmp/test-skills',
380
+ type: 'invalid-type',
381
+ behavior: 'autonomous',
382
+ description: 'desc',
383
+ author: 'testuser',
384
+ category: 'development',
385
+ scripts: false,
386
+ })).rejects.toThrow();
387
+ expect(exitSpy).toHaveBeenCalledWith(1);
388
+ exitSpy.mockRestore();
389
+ });
390
+ it('rejects invalid --behavior value and exits', async () => {
391
+ const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
392
+ throw new Error('process.exit called');
393
+ });
394
+ const { createSkill } = await import('../src/commands/create.js');
395
+ await expect(createSkill('test-skill', {
396
+ output: '/tmp/test-skills',
397
+ type: 'basic',
398
+ behavior: 'invalid-behavior',
399
+ description: 'desc',
400
+ author: 'testuser',
401
+ category: 'development',
402
+ scripts: false,
403
+ })).rejects.toThrow();
404
+ expect(exitSpy).toHaveBeenCalledWith(1);
405
+ exitSpy.mockRestore();
406
+ });
407
+ it('rejects invalid --category value and exits', async () => {
408
+ const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {
409
+ throw new Error('process.exit called');
410
+ });
411
+ const { createSkill } = await import('../src/commands/create.js');
412
+ await expect(createSkill('test-skill', {
413
+ output: '/tmp/test-skills',
414
+ type: 'basic',
415
+ behavior: 'autonomous',
416
+ description: 'desc',
417
+ author: 'testuser',
418
+ category: 'invalid-category',
419
+ scripts: false,
420
+ })).rejects.toThrow();
421
+ expect(exitSpy).toHaveBeenCalledWith(1);
422
+ exitSpy.mockRestore();
423
+ });
424
+ });
425
+ // ---------------------------------------------------------------------------
426
+ // Template exports
427
+ // ---------------------------------------------------------------------------
428
+ describe('SMI-3083: CHANGELOG_MD_TEMPLATE', () => {
429
+ it('is exported from templates/index', async () => {
430
+ const { CHANGELOG_MD_TEMPLATE } = await import('../src/templates/index.js');
431
+ expect(typeof CHANGELOG_MD_TEMPLATE).toBe('string');
432
+ });
433
+ it('contains [1.0.0] placeholder pattern', async () => {
434
+ const { CHANGELOG_MD_TEMPLATE } = await import('../src/templates/index.js');
435
+ expect(CHANGELOG_MD_TEMPLATE).toContain('[1.0.0]');
436
+ });
437
+ it('contains {{name}} and {{date}} placeholders', async () => {
438
+ const { CHANGELOG_MD_TEMPLATE } = await import('../src/templates/index.js');
439
+ expect(CHANGELOG_MD_TEMPLATE).toContain('{{name}}');
440
+ expect(CHANGELOG_MD_TEMPLATE).toContain('{{date}}');
441
+ });
442
+ });
443
+ describe('SMI-3083: SKILL_MD_TEMPLATE has {{behavioralClassification}} placeholder', () => {
444
+ it('contains {{behavioralClassification}} for create/init branching', async () => {
445
+ const { SKILL_MD_TEMPLATE } = await import('../src/templates/index.js');
446
+ expect(SKILL_MD_TEMPLATE).toContain('{{behavioralClassification}}');
447
+ });
448
+ });
449
+ //# sourceMappingURL=create.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.test.js","sourceRoot":"","sources":["../../tests/create.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,mBAAmB;AACnB,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;IACd,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;IAClB,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;CACd,CAAC,CAAC,CAAA;AAEH,gBAAgB;AAChB,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;IACd,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;CAChB,CAAC,CAAC,CAAA;AAEH,WAAW;AACX,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACpB,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC/B,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC9B,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACjC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC9B,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC9B,IAAI,EAAE,EAAE;KACT,CAAC,CAAC;CACJ,CAAC,CAAC,CAAA;AAEH,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAE9E,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACvE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChD,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7C,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACvE,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACvE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACvE,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACvE,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACvE,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QAC1D,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;QACzB,mEAAmE;QACnE,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,aAAa,EAAE,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IAC3E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACzE,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF;;;;;;OAMG;IACH,KAAK,UAAU,UAAU,CACvB,YAKI,EAAE;QAEN,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;QAC9D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAEpE,IAAI,SAAS,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YACpC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxD,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,EAE1D,CAAC,CAAA;QACJ,CAAC;QAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAC7C,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAEjD,sFAAsF;QACtF,gFAAgF;QAChF,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,IAAI,CAAC,aAAa,CAAC,CAAA;QACpE,MAAM,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,IAAI,EAAE,CAAA;QACzD,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;QAE/E,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YAClC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,GAAuB,CAAC,CAAA;QAClE,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,GAAuB,CAAC,CAAA;QACnE,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,GAAuB,CAAC,CAAA;QACjE,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;IACnC,CAAC;IAED,EAAE,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;QAC5G,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,EAAE,CAAA;QACxC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAEjE,MAAM,WAAW,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,EAAE,CAAA;QACxC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAEjE,MAAM,WAAW,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,UAAU,EAAE,CAAA;QACpC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAEjE,MAAM,WAAW,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,CAAA;QACzE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,EAAE,CAAA;QACxC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAEjE,MAAM,WAAW,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,EAAE;aACZ,MAAM,CAAC,SAAS,CAAC;aACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,CAAC,CAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAA;QACpE,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAK,CAAC,CAAC,CAAW,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,EAAE,CAAA;QACxC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAEjE,MAAM,WAAW,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,CAAC,CAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;QAC/F,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAK,CAAC,CAAC,CAAW,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,EAAE,CAAA;QACxC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAEjE,MAAM,WAAW,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,EAAE;aACZ,MAAM,CAAC,SAAS,CAAC;aACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,CAAC,CAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;QAClE,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAK,CAAC,CAAC,CAAW,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,EAAE,CAAA;QACxC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAEjE,MAAM,WAAW,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,EAAE;aACZ,MAAM,CAAC,SAAS,CAAC;aACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,CAAC,CAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;QAClE,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;QAC1B,uFAAuF;QACvF,MAAM,CAAC,IAAK,CAAC,CAAC,CAAW,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,8DAA8D;QAC9D,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC;YAC3C,WAAW,EAAE,KAAK;YAClB,gBAAgB,EAAE,CAAC,KAAK,CAAC;SAC1B,CAAC,CAAA;QACF,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,EAE1D,CAAC,CAAA;QAEF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACjE,MAAM,WAAW,CAAC,gBAAgB,EAAE;YAClC,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,UAAU,EAAE,CAAA;QACrD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,EAE1D,CAAC,CAAA;QACF,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAC7C,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAEjD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACjE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAErD,MAAM,WAAW,CAAC,gBAAgB,EAAE;YAClC,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,KAAK;YACd,GAAG,EAAE,IAAI;SACV,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACjD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,UAAU,EAAE,CAAA;QAClB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACjE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;QAExD,MAAM,WAAW,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACnD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4GAA4G,EAAE,KAAK,IAAI,EAAE;QAC1H,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;QAC9D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;QACpE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtD,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAC7C,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAEjD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACjE,MAAM,WAAW,CAAC,YAAY,EAAE;YAC9B,MAAM,EAAE,kBAAkB;YAC1B,WAAW,EAAE,cAAc;YAC3B,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QAEF,qCAAqC;QACrC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QAC/C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QAChD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACjD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;QAC9D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAC3D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAA;QAE/B,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE,CAAA;QACzC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC;YACrC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAC/B,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAC9B,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YACjC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAC9B,IAAI,EAAE,EAAE;SACoC,CAAC,CAAA;QAE/C,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtD,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAA;QAClE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAEjD,qFAAqF;QACrF,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,MAA0B,CAAC,CAAA;QAC9D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,aAAiC,CAAC,CAAA;QAEtE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAEjE,MAAM,MAAM,CACV,WAAW,CAAC,YAAY,EAAE;YACxB,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,KAAK;SACf,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QAEnB,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAChE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACjE,MAAM,MAAM,CACV,WAAW,CAAC,YAAY,EAAE;YACxB,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,YAAY;YACtB,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,KAAK;SACf,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QAEnB,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAA;QACvC,OAAO,CAAC,WAAW,EAAE,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAChE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACjE,MAAM,MAAM,CACV,WAAW,CAAC,YAAY,EAAE;YACxB,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,kBAAkB;YAC5B,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,KAAK;SACf,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QAEnB,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAA;QACvC,OAAO,CAAC,WAAW,EAAE,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAChE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACjE,MAAM,MAAM,CACV,WAAW,CAAC,YAAY,EAAE;YACxB,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,YAAY;YACtB,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,kBAAkB;YAC5B,OAAO,EAAE,KAAK;SACf,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QAEnB,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAA;QACvC,OAAO,CAAC,WAAW,EAAE,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAC3E,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAC3E,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QAC3E,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QACnD,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,0EAA0E,EAAE,GAAG,EAAE;IACxF,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAA;QACvE,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skillsmith/cli",
3
- "version": "0.4.3",
3
+ "version": "0.5.0",
4
4
  "description": "CLI tools for Skillsmith skill discovery and authentication",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "@inquirer/prompts": "7.10.1",
19
- "@skillsmith/core": "0.4.14",
19
+ "@skillsmith/core": "0.4.15",
20
20
  "chalk": "5.6.2",
21
21
  "cli-table3": "0.6.5",
22
22
  "commander": "12.1.0",