@skillsmith/cli 0.2.2 → 0.2.4

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 (35) hide show
  1. package/README.md +147 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/commands/author.d.ts +44 -1
  4. package/dist/src/commands/author.d.ts.map +1 -1
  5. package/dist/src/commands/author.js +524 -4
  6. package/dist/src/commands/author.js.map +1 -1
  7. package/dist/src/commands/index.d.ts +1 -1
  8. package/dist/src/commands/index.d.ts.map +1 -1
  9. package/dist/src/commands/index.js +1 -1
  10. package/dist/src/commands/index.js.map +1 -1
  11. package/dist/src/index.js +16 -6
  12. package/dist/src/index.js.map +1 -1
  13. package/dist/src/templates/index.d.ts +2 -0
  14. package/dist/src/templates/index.d.ts.map +1 -1
  15. package/dist/src/templates/index.js +2 -0
  16. package/dist/src/templates/index.js.map +1 -1
  17. package/dist/src/templates/mcp-server.template.d.ts +97 -0
  18. package/dist/src/templates/mcp-server.template.d.ts.map +1 -0
  19. package/dist/src/templates/mcp-server.template.js +529 -0
  20. package/dist/src/templates/mcp-server.template.js.map +1 -0
  21. package/dist/src/templates/subagent.md.template.d.ts +38 -0
  22. package/dist/src/templates/subagent.md.template.d.ts.map +1 -0
  23. package/dist/src/templates/subagent.md.template.js +128 -0
  24. package/dist/src/templates/subagent.md.template.js.map +1 -0
  25. package/dist/src/utils/tool-analyzer.d.ts +54 -0
  26. package/dist/src/utils/tool-analyzer.d.ts.map +1 -0
  27. package/dist/src/utils/tool-analyzer.js +156 -0
  28. package/dist/src/utils/tool-analyzer.js.map +1 -0
  29. package/dist/tests/author.test.js +419 -0
  30. package/dist/tests/author.test.js.map +1 -1
  31. package/dist/tests/mcp-server-template.test.d.ts +7 -0
  32. package/dist/tests/mcp-server-template.test.d.ts.map +1 -0
  33. package/dist/tests/mcp-server-template.test.js +351 -0
  34. package/dist/tests/mcp-server-template.test.js.map +1 -0
  35. package/package.json +1 -1
@@ -0,0 +1,351 @@
1
+ /**
2
+ * SMI-1436: MCP Server Template Tests
3
+ *
4
+ * Tests for the MCP server scaffolding template generation.
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import { renderMcpServerTemplates, } from '../src/templates/mcp-server.template.js';
8
+ describe('SMI-1436: MCP Server Template Generation', () => {
9
+ const basicTemplateData = {
10
+ name: 'test-mcp-server',
11
+ description: 'A test MCP server',
12
+ author: 'test-author',
13
+ tools: [],
14
+ };
15
+ describe('renderMcpServerTemplates', () => {
16
+ it('generates all required files', () => {
17
+ const files = renderMcpServerTemplates(basicTemplateData);
18
+ expect(files.has('package.json')).toBe(true);
19
+ expect(files.has('tsconfig.json')).toBe(true);
20
+ expect(files.has('src/index.ts')).toBe(true);
21
+ expect(files.has('src/server.ts')).toBe(true);
22
+ expect(files.has('src/tools/index.ts')).toBe(true);
23
+ expect(files.has('src/tools/example.ts')).toBe(true);
24
+ expect(files.has('README.md')).toBe(true);
25
+ expect(files.has('.gitignore')).toBe(true);
26
+ });
27
+ it('generates exactly 8 files', () => {
28
+ const files = renderMcpServerTemplates(basicTemplateData);
29
+ expect(files.size).toBe(8);
30
+ });
31
+ });
32
+ describe('package.json generation', () => {
33
+ it('includes correct name', () => {
34
+ const files = renderMcpServerTemplates(basicTemplateData);
35
+ const packageJson = JSON.parse(files.get('package.json') || '{}');
36
+ expect(packageJson.name).toBe('test-mcp-server');
37
+ });
38
+ it('includes correct description', () => {
39
+ const files = renderMcpServerTemplates(basicTemplateData);
40
+ const packageJson = JSON.parse(files.get('package.json') || '{}');
41
+ expect(packageJson.description).toBe('A test MCP server');
42
+ });
43
+ it('includes correct author', () => {
44
+ const files = renderMcpServerTemplates(basicTemplateData);
45
+ const packageJson = JSON.parse(files.get('package.json') || '{}');
46
+ expect(packageJson.author).toBe('test-author');
47
+ });
48
+ it('includes MCP SDK dependency', () => {
49
+ const files = renderMcpServerTemplates(basicTemplateData);
50
+ const packageJson = JSON.parse(files.get('package.json') || '{}');
51
+ expect(packageJson.dependencies).toHaveProperty('@modelcontextprotocol/sdk');
52
+ });
53
+ it('includes required dev dependencies', () => {
54
+ const files = renderMcpServerTemplates(basicTemplateData);
55
+ const packageJson = JSON.parse(files.get('package.json') || '{}');
56
+ expect(packageJson.devDependencies).toHaveProperty('@types/node');
57
+ expect(packageJson.devDependencies).toHaveProperty('typescript');
58
+ expect(packageJson.devDependencies).toHaveProperty('tsx');
59
+ });
60
+ it('includes required scripts', () => {
61
+ const files = renderMcpServerTemplates(basicTemplateData);
62
+ const packageJson = JSON.parse(files.get('package.json') || '{}');
63
+ expect(packageJson.scripts).toHaveProperty('build');
64
+ expect(packageJson.scripts).toHaveProperty('start');
65
+ expect(packageJson.scripts).toHaveProperty('dev');
66
+ });
67
+ it('sets type to module', () => {
68
+ const files = renderMcpServerTemplates(basicTemplateData);
69
+ const packageJson = JSON.parse(files.get('package.json') || '{}');
70
+ expect(packageJson.type).toBe('module');
71
+ });
72
+ it('configures bin entry point', () => {
73
+ const files = renderMcpServerTemplates(basicTemplateData);
74
+ const packageJson = JSON.parse(files.get('package.json') || '{}');
75
+ expect(packageJson.bin).toHaveProperty('test-mcp-server');
76
+ });
77
+ });
78
+ describe('tsconfig.json generation', () => {
79
+ it('targets ES2022', () => {
80
+ const files = renderMcpServerTemplates(basicTemplateData);
81
+ const tsconfig = JSON.parse(files.get('tsconfig.json') || '{}');
82
+ expect(tsconfig.compilerOptions.target).toBe('ES2022');
83
+ });
84
+ it('uses NodeNext module resolution', () => {
85
+ const files = renderMcpServerTemplates(basicTemplateData);
86
+ const tsconfig = JSON.parse(files.get('tsconfig.json') || '{}');
87
+ expect(tsconfig.compilerOptions.module).toBe('NodeNext');
88
+ expect(tsconfig.compilerOptions.moduleResolution).toBe('NodeNext');
89
+ });
90
+ it('enables strict mode', () => {
91
+ const files = renderMcpServerTemplates(basicTemplateData);
92
+ const tsconfig = JSON.parse(files.get('tsconfig.json') || '{}');
93
+ expect(tsconfig.compilerOptions.strict).toBe(true);
94
+ });
95
+ it('outputs to dist directory', () => {
96
+ const files = renderMcpServerTemplates(basicTemplateData);
97
+ const tsconfig = JSON.parse(files.get('tsconfig.json') || '{}');
98
+ expect(tsconfig.compilerOptions.outDir).toBe('./dist');
99
+ });
100
+ });
101
+ describe('src/index.ts generation', () => {
102
+ it('includes shebang for npx execution', () => {
103
+ const files = renderMcpServerTemplates(basicTemplateData);
104
+ const indexTs = files.get('src/index.ts') || '';
105
+ expect(indexTs.startsWith('#!/usr/bin/env node')).toBe(true);
106
+ });
107
+ it('includes server name in comments', () => {
108
+ const files = renderMcpServerTemplates(basicTemplateData);
109
+ const indexTs = files.get('src/index.ts') || '';
110
+ expect(indexTs).toContain('test-mcp-server');
111
+ });
112
+ it('imports createServer and createTransport from server module', () => {
113
+ const files = renderMcpServerTemplates(basicTemplateData);
114
+ const indexTs = files.get('src/index.ts') || '';
115
+ expect(indexTs).toContain("import { createServer, createTransport } from './server.js'");
116
+ });
117
+ });
118
+ describe('src/server.ts generation', () => {
119
+ it('includes server name', () => {
120
+ const files = renderMcpServerTemplates(basicTemplateData);
121
+ const serverTs = files.get('src/server.ts') || '';
122
+ expect(serverTs).toContain("name: 'test-mcp-server'");
123
+ });
124
+ it('imports MCP SDK components', () => {
125
+ const files = renderMcpServerTemplates(basicTemplateData);
126
+ const serverTs = files.get('src/server.ts') || '';
127
+ expect(serverTs).toContain('@modelcontextprotocol/sdk/server/index.js');
128
+ expect(serverTs).toContain('@modelcontextprotocol/sdk/server/stdio.js');
129
+ expect(serverTs).toContain('@modelcontextprotocol/sdk/types.js');
130
+ });
131
+ it('sets up tool capabilities', () => {
132
+ const files = renderMcpServerTemplates(basicTemplateData);
133
+ const serverTs = files.get('src/server.ts') || '';
134
+ expect(serverTs).toContain('capabilities:');
135
+ expect(serverTs).toContain('tools: {}');
136
+ });
137
+ });
138
+ describe('tool generation', () => {
139
+ it('generates example tool when no tools provided', () => {
140
+ const files = renderMcpServerTemplates(basicTemplateData);
141
+ const toolsIndex = files.get('src/tools/index.ts') || '';
142
+ expect(toolsIndex).toContain('example');
143
+ });
144
+ it('includes example.ts file', () => {
145
+ const files = renderMcpServerTemplates(basicTemplateData);
146
+ const exampleTool = files.get('src/tools/example.ts') || '';
147
+ expect(exampleTool).toContain("name: 'example'");
148
+ expect(exampleTool).toContain('handleExampleTool');
149
+ });
150
+ it('generates custom tool definitions when tools provided', () => {
151
+ const dataWithTools = {
152
+ ...basicTemplateData,
153
+ tools: [
154
+ {
155
+ name: 'greet',
156
+ description: 'Greet a user',
157
+ parameters: [
158
+ {
159
+ name: 'name',
160
+ type: 'string',
161
+ description: 'Name to greet',
162
+ required: true,
163
+ },
164
+ ],
165
+ },
166
+ ],
167
+ };
168
+ const files = renderMcpServerTemplates(dataWithTools);
169
+ const toolsIndex = files.get('src/tools/index.ts') || '';
170
+ expect(toolsIndex).toContain("name: 'greet'");
171
+ expect(toolsIndex).toContain("description: 'Greet a user'");
172
+ });
173
+ it('includes required parameters in tool definition', () => {
174
+ const dataWithTools = {
175
+ ...basicTemplateData,
176
+ tools: [
177
+ {
178
+ name: 'search',
179
+ description: 'Search for items',
180
+ parameters: [
181
+ {
182
+ name: 'query',
183
+ type: 'string',
184
+ description: 'Search query',
185
+ required: true,
186
+ },
187
+ {
188
+ name: 'limit',
189
+ type: 'number',
190
+ description: 'Max results',
191
+ required: false,
192
+ },
193
+ ],
194
+ },
195
+ ],
196
+ };
197
+ const files = renderMcpServerTemplates(dataWithTools);
198
+ const toolsIndex = files.get('src/tools/index.ts') || '';
199
+ expect(toolsIndex).toContain("'query'");
200
+ expect(toolsIndex).toContain('required:');
201
+ });
202
+ it('generates implementation files for custom tools', () => {
203
+ const dataWithTools = {
204
+ ...basicTemplateData,
205
+ tools: [
206
+ {
207
+ name: 'greet',
208
+ description: 'Greet a user',
209
+ parameters: [
210
+ {
211
+ name: 'name',
212
+ type: 'string',
213
+ description: 'Name to greet',
214
+ required: true,
215
+ },
216
+ ],
217
+ },
218
+ ],
219
+ };
220
+ const files = renderMcpServerTemplates(dataWithTools);
221
+ // Should generate the custom tool file
222
+ expect(files.has('src/tools/greet.ts')).toBe(true);
223
+ const greetTool = files.get('src/tools/greet.ts') || '';
224
+ expect(greetTool).toContain('export interface GreetToolArgs');
225
+ expect(greetTool).toContain('export async function handleGreetTool');
226
+ expect(greetTool).toContain('name: string');
227
+ });
228
+ it('generates correct file count with custom tools', () => {
229
+ const dataWithTools = {
230
+ ...basicTemplateData,
231
+ tools: [
232
+ { name: 'tool1', description: 'First tool' },
233
+ { name: 'tool2', description: 'Second tool' },
234
+ ],
235
+ };
236
+ const files = renderMcpServerTemplates(dataWithTools);
237
+ // 8 base files + 2 custom tool files = 10 files
238
+ expect(files.size).toBe(10);
239
+ expect(files.has('src/tools/tool1.ts')).toBe(true);
240
+ expect(files.has('src/tools/tool2.ts')).toBe(true);
241
+ });
242
+ });
243
+ describe('README.md generation', () => {
244
+ it('includes project name', () => {
245
+ const files = renderMcpServerTemplates(basicTemplateData);
246
+ const readme = files.get('README.md') || '';
247
+ expect(readme).toContain('# test-mcp-server');
248
+ });
249
+ it('includes description', () => {
250
+ const files = renderMcpServerTemplates(basicTemplateData);
251
+ const readme = files.get('README.md') || '';
252
+ expect(readme).toContain('A test MCP server');
253
+ });
254
+ it('includes installation instructions', () => {
255
+ const files = renderMcpServerTemplates(basicTemplateData);
256
+ const readme = files.get('README.md') || '';
257
+ expect(readme).toContain('npm install');
258
+ expect(readme).toContain('npx');
259
+ });
260
+ it('includes Claude configuration example', () => {
261
+ const files = renderMcpServerTemplates(basicTemplateData);
262
+ const readme = files.get('README.md') || '';
263
+ expect(readme).toContain('mcpServers');
264
+ expect(readme).toContain('~/.claude/settings.json');
265
+ });
266
+ it('includes development instructions', () => {
267
+ const files = renderMcpServerTemplates(basicTemplateData);
268
+ const readme = files.get('README.md') || '';
269
+ expect(readme).toContain('npm run dev');
270
+ expect(readme).toContain('npm run build');
271
+ });
272
+ });
273
+ describe('.gitignore generation', () => {
274
+ it('ignores node_modules', () => {
275
+ const files = renderMcpServerTemplates(basicTemplateData);
276
+ const gitignore = files.get('.gitignore') || '';
277
+ expect(gitignore).toContain('node_modules/');
278
+ });
279
+ it('ignores dist directory', () => {
280
+ const files = renderMcpServerTemplates(basicTemplateData);
281
+ const gitignore = files.get('.gitignore') || '';
282
+ expect(gitignore).toContain('dist/');
283
+ });
284
+ it('ignores environment files', () => {
285
+ const files = renderMcpServerTemplates(basicTemplateData);
286
+ const gitignore = files.get('.gitignore') || '';
287
+ expect(gitignore).toContain('.env');
288
+ });
289
+ });
290
+ describe('edge cases', () => {
291
+ it('handles special characters in description', () => {
292
+ const dataWithSpecialChars = {
293
+ ...basicTemplateData,
294
+ description: 'An MCP server for "testing" & validation',
295
+ };
296
+ const files = renderMcpServerTemplates(dataWithSpecialChars);
297
+ const readme = files.get('README.md') || '';
298
+ expect(readme).toContain('An MCP server for "testing" & validation');
299
+ });
300
+ it('escapes single quotes in tool descriptions', () => {
301
+ const dataWithQuotes = {
302
+ ...basicTemplateData,
303
+ tools: [
304
+ {
305
+ name: 'test',
306
+ description: "It's a test tool",
307
+ parameters: [
308
+ {
309
+ name: 'input',
310
+ type: 'string',
311
+ description: "The user's input",
312
+ required: true,
313
+ },
314
+ ],
315
+ },
316
+ ],
317
+ };
318
+ const files = renderMcpServerTemplates(dataWithQuotes);
319
+ const toolsIndex = files.get('src/tools/index.ts') || '';
320
+ // Single quotes should be escaped to prevent syntax errors
321
+ expect(toolsIndex).toContain("\\'s");
322
+ expect(toolsIndex).not.toContain("description: 'It's");
323
+ });
324
+ it('handles hyphenated server names', () => {
325
+ const dataWithHyphens = {
326
+ ...basicTemplateData,
327
+ name: 'my-awesome-mcp-server',
328
+ };
329
+ const files = renderMcpServerTemplates(dataWithHyphens);
330
+ const packageJson = JSON.parse(files.get('package.json') || '{}');
331
+ expect(packageJson.name).toBe('my-awesome-mcp-server');
332
+ expect(packageJson.bin).toHaveProperty('my-awesome-mcp-server');
333
+ });
334
+ it('handles multiple tools', () => {
335
+ const dataWithMultipleTools = {
336
+ ...basicTemplateData,
337
+ tools: [
338
+ { name: 'tool1', description: 'First tool' },
339
+ { name: 'tool2', description: 'Second tool' },
340
+ { name: 'tool3', description: 'Third tool' },
341
+ ],
342
+ };
343
+ const files = renderMcpServerTemplates(dataWithMultipleTools);
344
+ const toolsIndex = files.get('src/tools/index.ts') || '';
345
+ expect(toolsIndex).toContain("name: 'tool1'");
346
+ expect(toolsIndex).toContain("name: 'tool2'");
347
+ expect(toolsIndex).toContain("name: 'tool3'");
348
+ });
349
+ });
350
+ });
351
+ //# sourceMappingURL=mcp-server-template.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-template.test.js","sourceRoot":"","sources":["../../tests/mcp-server-template.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skillsmith/cli",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "CLI tools for Skillsmith skill discovery",
5
5
  "type": "module",
6
6
  "bin": {