@asnd/skill-creator 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -125
- package/dist/cli/dynamic.d.ts +26 -0
- package/dist/cli/dynamic.js +136 -0
- package/dist/cli/dynamic.js.map +1 -0
- package/dist/cli/main.d.ts +2 -4
- package/dist/cli/main.js +376 -1530
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/parse.d.ts +9 -0
- package/dist/cli/parse.js +38 -0
- package/dist/cli/parse.js.map +1 -0
- package/dist/commands/agents.d.ts +96 -0
- package/dist/commands/agents.js +116 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/install.d.ts +12 -0
- package/dist/commands/install.js +229 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/core/cache.d.ts +3 -0
- package/dist/core/cache.js +52 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/coerce.d.ts +8 -0
- package/dist/core/coerce.js +128 -0
- package/dist/core/coerce.js.map +1 -0
- package/dist/core/filter.d.ts +7 -0
- package/dist/core/filter.js +16 -0
- package/dist/core/filter.js.map +1 -0
- package/dist/core/listing.d.ts +11 -0
- package/dist/core/listing.js +31 -0
- package/dist/core/listing.js.map +1 -0
- package/dist/core/names.d.ts +1 -0
- package/dist/core/names.js +7 -0
- package/dist/core/names.js.map +1 -0
- package/dist/core/output.d.ts +12 -0
- package/dist/core/output.js +34 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/secrets.d.ts +1 -0
- package/dist/core/secrets.js +21 -0
- package/dist/core/secrets.js.map +1 -0
- package/dist/core/types.d.ts +37 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/usage.d.ts +13 -0
- package/dist/core/usage.js +33 -0
- package/dist/core/usage.js.map +1 -0
- package/dist/graphql/execute.d.ts +8 -0
- package/dist/graphql/execute.js +133 -0
- package/dist/graphql/execute.js.map +1 -0
- package/dist/graphql/extract.d.ts +6 -0
- package/dist/graphql/extract.js +109 -0
- package/dist/graphql/extract.js.map +1 -0
- package/dist/graphql/load.d.ts +11 -0
- package/dist/graphql/load.js +95 -0
- package/dist/graphql/load.js.map +1 -0
- package/dist/mcp/extract.d.ts +8 -0
- package/dist/mcp/extract.js +40 -0
- package/dist/mcp/extract.js.map +1 -0
- package/dist/mcp/http.d.ts +8 -0
- package/dist/mcp/http.js +80 -0
- package/dist/mcp/http.js.map +1 -0
- package/dist/mcp/stdio.d.ts +9 -0
- package/dist/mcp/stdio.js +67 -0
- package/dist/mcp/stdio.js.map +1 -0
- package/dist/openapi/execute.d.ts +12 -0
- package/dist/openapi/execute.js +44 -0
- package/dist/openapi/execute.js.map +1 -0
- package/dist/openapi/extract.d.ts +2 -0
- package/dist/openapi/extract.js +123 -0
- package/dist/openapi/extract.js.map +1 -0
- package/dist/openapi/load.d.ts +11 -0
- package/dist/openapi/load.js +52 -0
- package/dist/openapi/load.js.map +1 -0
- package/dist/openapi/params.d.ts +12 -0
- package/dist/openapi/params.js +47 -0
- package/dist/openapi/params.js.map +1 -0
- package/dist/openapi/refs.d.ts +1 -0
- package/dist/openapi/refs.js +8 -0
- package/dist/openapi/refs.js.map +1 -0
- package/dist/skills/agents.d.ts +77 -0
- package/dist/skills/agents.js +85 -0
- package/dist/skills/agents.js.map +1 -0
- package/dist/skills/generate.d.ts +1 -0
- package/dist/skills/generate.js +494 -0
- package/dist/skills/generate.js.map +1 -0
- package/package.json +7 -11
- package/prompts/skill-creator.md +169 -0
- package/dist/cli/package-4N3JKWJZ.js +0 -90
- package/dist/cli/package-4N3JKWJZ.js.map +0 -1
- package/prompts/generate-skill.md +0 -22
- package/skills/skill-creator/SKILL.md +0 -260
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
import { printSchema } from 'graphql';
|
|
2
|
+
import { execFile } from 'node:child_process';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { chmod, mkdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
5
|
+
import { extname, join } from 'node:path';
|
|
6
|
+
import { promisify } from 'node:util';
|
|
7
|
+
import { resolveSecret } from '../core/secrets.js';
|
|
8
|
+
import { loadGraphqlSchema } from '../graphql/load.js';
|
|
9
|
+
import { AGENT_INSTALL_TARGETS, assertValidSkillName, isAgentId, listAgentIds, resolveAgentSkillDir, } from './agents.js';
|
|
10
|
+
const execFileAsync = promisify(execFile);
|
|
11
|
+
export async function runGenerate(argv) {
|
|
12
|
+
const args = await completeInteractiveOptions(parseGenerateArgs(argv));
|
|
13
|
+
if (args.help) {
|
|
14
|
+
printGenerateHelp();
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (args.name === undefined)
|
|
18
|
+
throw new Error('--name is required');
|
|
19
|
+
if (args.agent === undefined || args.scope === undefined) {
|
|
20
|
+
throw new Error('--agent and --scope are required when prompts are unavailable');
|
|
21
|
+
}
|
|
22
|
+
const template = normalizeTemplate(args);
|
|
23
|
+
assertValidSkillName(args.name);
|
|
24
|
+
const scriptName = args.script ?? args.name;
|
|
25
|
+
assertValidSkillName(scriptName);
|
|
26
|
+
const skillRoot = resolveAgentSkillDir(args.agent, args.scope);
|
|
27
|
+
const skillDir = join(skillRoot, args.name);
|
|
28
|
+
await assertWritableTarget(skillDir, args.force);
|
|
29
|
+
const scriptsDir = join(skillDir, 'scripts');
|
|
30
|
+
await mkdir(scriptsDir, { recursive: true });
|
|
31
|
+
const scriptPath = join(scriptsDir, scriptName);
|
|
32
|
+
let skillMd;
|
|
33
|
+
if (template === 'openapi') {
|
|
34
|
+
const specSource = required(args.spec, '--spec is required for --template openapi');
|
|
35
|
+
const referencesDir = join(skillDir, 'references');
|
|
36
|
+
await mkdir(referencesDir, { recursive: true });
|
|
37
|
+
const specFileName = `openapi-spec-${formatDateForFile(new Date())}${openApiSpecExtension(specSource)}`;
|
|
38
|
+
await writeFile(join(referencesDir, specFileName), await readSource(specSource));
|
|
39
|
+
await writeFile(scriptPath, renderOpenApiScript(specFileName, args));
|
|
40
|
+
skillMd = renderOpenApiSkillMd(specFileName, scriptName, args);
|
|
41
|
+
}
|
|
42
|
+
else if (template === 'graphql') {
|
|
43
|
+
const endpoint = required(args.graphql, '--graphql is required for --template graphql');
|
|
44
|
+
const referencesDir = join(skillDir, 'references');
|
|
45
|
+
await mkdir(referencesDir, { recursive: true });
|
|
46
|
+
const schemaFileName = await saveGraphqlSchema(referencesDir, args);
|
|
47
|
+
await writeFile(scriptPath, renderGraphqlScript(endpoint, schemaFileName, args));
|
|
48
|
+
skillMd = renderGraphqlSkillMd(schemaFileName, scriptName, args);
|
|
49
|
+
}
|
|
50
|
+
else if (template === 'mcp-http') {
|
|
51
|
+
const endpoint = required(args.mcp, '--mcp is required for --template mcp-http');
|
|
52
|
+
await writeFile(scriptPath, renderMcpHttpScript(endpoint, args));
|
|
53
|
+
skillMd = renderMcpSkillMd(scriptName, args, 'http');
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const command = required(args.mcpStdio, '--mcp-stdio is required for --template mcp-stdio');
|
|
57
|
+
await writeFile(scriptPath, renderMcpStdioScript(command));
|
|
58
|
+
skillMd = renderMcpSkillMd(scriptName, args, 'stdio');
|
|
59
|
+
}
|
|
60
|
+
await chmod(scriptPath, 0o755);
|
|
61
|
+
await writeFile(join(skillDir, 'SKILL.md'), skillMd);
|
|
62
|
+
if (!args.noTest)
|
|
63
|
+
await smokeTestScript(scriptPath);
|
|
64
|
+
console.log(`Generated skill: ${skillDir}`);
|
|
65
|
+
console.log(`Agent: ${AGENT_INSTALL_TARGETS[args.agent].displayName}`);
|
|
66
|
+
console.log(`Scope: ${args.scope}`);
|
|
67
|
+
console.log(`Try: ${join('.', 'scripts', scriptName)} --list`);
|
|
68
|
+
}
|
|
69
|
+
function parseGenerateArgs(argv) {
|
|
70
|
+
const args = {
|
|
71
|
+
force: false,
|
|
72
|
+
yes: false,
|
|
73
|
+
noTest: false,
|
|
74
|
+
authHeaders: [],
|
|
75
|
+
help: false,
|
|
76
|
+
};
|
|
77
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
78
|
+
const token = argv[index];
|
|
79
|
+
if (token === undefined)
|
|
80
|
+
continue;
|
|
81
|
+
switch (token) {
|
|
82
|
+
case '--help':
|
|
83
|
+
case '-h':
|
|
84
|
+
args.help = true;
|
|
85
|
+
break;
|
|
86
|
+
case '--template':
|
|
87
|
+
args.template = requireValue(argv, ++index, token);
|
|
88
|
+
break;
|
|
89
|
+
case '--name':
|
|
90
|
+
args.name = requireValue(argv, ++index, token);
|
|
91
|
+
break;
|
|
92
|
+
case '--script':
|
|
93
|
+
args.script = requireValue(argv, ++index, token);
|
|
94
|
+
break;
|
|
95
|
+
case '--spec':
|
|
96
|
+
args.spec = requireValue(argv, ++index, token);
|
|
97
|
+
break;
|
|
98
|
+
case '--graphql':
|
|
99
|
+
args.graphql = requireValue(argv, ++index, token);
|
|
100
|
+
break;
|
|
101
|
+
case '--graphql-schema':
|
|
102
|
+
args.graphqlSchema = requireValue(argv, ++index, token);
|
|
103
|
+
break;
|
|
104
|
+
case '--mcp':
|
|
105
|
+
args.mcp = requireValue(argv, ++index, token);
|
|
106
|
+
break;
|
|
107
|
+
case '--mcp-stdio':
|
|
108
|
+
args.mcpStdio = requireValue(argv, ++index, token);
|
|
109
|
+
break;
|
|
110
|
+
case '--agent':
|
|
111
|
+
args.agent = parseAgent(requireValue(argv, ++index, token));
|
|
112
|
+
break;
|
|
113
|
+
case '--scope':
|
|
114
|
+
args.scope = parseScope(requireValue(argv, ++index, token));
|
|
115
|
+
break;
|
|
116
|
+
case '--auth-header':
|
|
117
|
+
args.authHeaders.push(requireValue(argv, ++index, token));
|
|
118
|
+
break;
|
|
119
|
+
case '--base-url':
|
|
120
|
+
args.baseUrl = requireValue(argv, ++index, token);
|
|
121
|
+
break;
|
|
122
|
+
case '--description':
|
|
123
|
+
args.description = requireValue(argv, ++index, token);
|
|
124
|
+
break;
|
|
125
|
+
case '--force':
|
|
126
|
+
args.force = true;
|
|
127
|
+
break;
|
|
128
|
+
case '--yes':
|
|
129
|
+
case '-y':
|
|
130
|
+
args.yes = true;
|
|
131
|
+
break;
|
|
132
|
+
case '--no-test':
|
|
133
|
+
args.noTest = true;
|
|
134
|
+
break;
|
|
135
|
+
case 'agent':
|
|
136
|
+
args.agent = parseAgent(requireValue(argv, ++index, token));
|
|
137
|
+
break;
|
|
138
|
+
case 'scope':
|
|
139
|
+
args.scope = parseScope(requireValue(argv, ++index, token));
|
|
140
|
+
break;
|
|
141
|
+
default:
|
|
142
|
+
if (token.startsWith('-'))
|
|
143
|
+
throw new Error(`unknown generate option: ${token}`);
|
|
144
|
+
throw new Error(`unexpected generate argument: ${token}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return args;
|
|
148
|
+
}
|
|
149
|
+
async function completeInteractiveOptions(args) {
|
|
150
|
+
if (args.help || (args.agent !== undefined && args.scope !== undefined))
|
|
151
|
+
return args;
|
|
152
|
+
if (args.yes || !process.stdin.isTTY || !process.stdout.isTTY)
|
|
153
|
+
return args;
|
|
154
|
+
const readline = await import('node:readline/promises');
|
|
155
|
+
const rl = readline.createInterface({
|
|
156
|
+
input: process.stdin,
|
|
157
|
+
output: process.stdout,
|
|
158
|
+
});
|
|
159
|
+
try {
|
|
160
|
+
const completed = { ...args };
|
|
161
|
+
if (completed.agent === undefined) {
|
|
162
|
+
const agentChoices = listAgentIds();
|
|
163
|
+
console.log(`Agents: ${agentChoices.join(', ')}`);
|
|
164
|
+
completed.agent = parseAgent(await rl.question('Agent to install for: '));
|
|
165
|
+
}
|
|
166
|
+
if (completed.scope === undefined) {
|
|
167
|
+
completed.scope = parseScope(await rl.question('Install scope (project/global): '));
|
|
168
|
+
}
|
|
169
|
+
return completed;
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
rl.close();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function normalizeTemplate(args) {
|
|
176
|
+
if (args.template === 'mcp') {
|
|
177
|
+
if (args.mcp !== undefined && args.mcpStdio === undefined)
|
|
178
|
+
return 'mcp-http';
|
|
179
|
+
if (args.mcpStdio !== undefined && args.mcp === undefined)
|
|
180
|
+
return 'mcp-stdio';
|
|
181
|
+
throw new Error('--template mcp requires exactly one of --mcp or --mcp-stdio');
|
|
182
|
+
}
|
|
183
|
+
if (args.template === 'openapi' ||
|
|
184
|
+
args.template === 'graphql' ||
|
|
185
|
+
args.template === 'mcp-http' ||
|
|
186
|
+
args.template === 'mcp-stdio') {
|
|
187
|
+
return args.template;
|
|
188
|
+
}
|
|
189
|
+
throw new Error('--template must be one of: openapi, graphql, mcp-http, mcp-stdio, mcp');
|
|
190
|
+
}
|
|
191
|
+
async function assertWritableTarget(skillDir, force) {
|
|
192
|
+
if (!existsSync(skillDir))
|
|
193
|
+
return;
|
|
194
|
+
if (!force)
|
|
195
|
+
throw new Error(`skill target already exists: ${skillDir}. Use --force to overwrite.`);
|
|
196
|
+
await rm(skillDir, { recursive: true, force: true });
|
|
197
|
+
}
|
|
198
|
+
async function readSource(source) {
|
|
199
|
+
if (source.startsWith('http://') || source.startsWith('https://')) {
|
|
200
|
+
const response = await fetch(source);
|
|
201
|
+
if (!response.ok)
|
|
202
|
+
throw new Error(`failed to download source: HTTP ${response.status}`);
|
|
203
|
+
return Buffer.from(await response.arrayBuffer());
|
|
204
|
+
}
|
|
205
|
+
return readFile(source);
|
|
206
|
+
}
|
|
207
|
+
async function saveGraphqlSchema(referencesDir, args) {
|
|
208
|
+
const schemaSource = args.graphqlSchema;
|
|
209
|
+
const schemaFileName = `graphql-schema-${formatDateForFile(new Date())}${graphqlSchemaExtension(schemaSource)}`;
|
|
210
|
+
const schemaPath = join(referencesDir, schemaFileName);
|
|
211
|
+
if (schemaSource !== undefined) {
|
|
212
|
+
await writeFile(schemaPath, await readSource(schemaSource));
|
|
213
|
+
return schemaFileName;
|
|
214
|
+
}
|
|
215
|
+
const endpoint = required(args.graphql, '--graphql is required for --template graphql');
|
|
216
|
+
const schema = await loadGraphqlSchema(endpoint, {
|
|
217
|
+
authHeaders: await resolveAuthHeaders(args.authHeaders),
|
|
218
|
+
refresh: true,
|
|
219
|
+
});
|
|
220
|
+
await writeFile(schemaPath, `${printSchema(schema)}\n`);
|
|
221
|
+
return schemaFileName;
|
|
222
|
+
}
|
|
223
|
+
function renderOpenApiScript(specFileName, args) {
|
|
224
|
+
const optionLines = [`--spec "\${SKILL_DIR}/references/${specFileName}"`];
|
|
225
|
+
if (args.baseUrl !== undefined) {
|
|
226
|
+
optionLines.push(`--base-url "${shellDoubleQuote(args.baseUrl)}"`);
|
|
227
|
+
}
|
|
228
|
+
appendAuthHeaderOptions(optionLines, args.authHeaders);
|
|
229
|
+
return renderSkillCreatorScript(optionLines);
|
|
230
|
+
}
|
|
231
|
+
function renderGraphqlScript(endpoint, schemaFileName, args) {
|
|
232
|
+
const optionLines = [
|
|
233
|
+
`--graphql "${shellDoubleQuote(endpoint)}"`,
|
|
234
|
+
`--graphql-schema "\${SKILL_DIR}/references/${schemaFileName}"`,
|
|
235
|
+
];
|
|
236
|
+
appendAuthHeaderOptions(optionLines, args.authHeaders);
|
|
237
|
+
return renderSkillCreatorScript(optionLines);
|
|
238
|
+
}
|
|
239
|
+
function renderMcpHttpScript(endpoint, args) {
|
|
240
|
+
const optionLines = [`--mcp "${shellDoubleQuote(endpoint)}"`];
|
|
241
|
+
appendAuthHeaderOptions(optionLines, args.authHeaders);
|
|
242
|
+
return renderSkillCreatorScript(optionLines);
|
|
243
|
+
}
|
|
244
|
+
function renderMcpStdioScript(command) {
|
|
245
|
+
return renderSkillCreatorScript([`--mcp-stdio "${shellDoubleQuote(command)}"`]);
|
|
246
|
+
}
|
|
247
|
+
function renderSkillCreatorScript(optionLines) {
|
|
248
|
+
return [
|
|
249
|
+
'#!/usr/bin/env bash',
|
|
250
|
+
'set -euo pipefail',
|
|
251
|
+
'',
|
|
252
|
+
'SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"',
|
|
253
|
+
'SKILL_DIR="$(cd -- "${SCRIPT_DIR}/.." && pwd)"',
|
|
254
|
+
'',
|
|
255
|
+
'exec npx -y @asnd/skill-creator \\',
|
|
256
|
+
...optionLines.map((line) => ` ${line} \\`),
|
|
257
|
+
' "$@"',
|
|
258
|
+
'',
|
|
259
|
+
].join('\n');
|
|
260
|
+
}
|
|
261
|
+
function renderOpenApiSkillMd(specFileName, scriptName, args) {
|
|
262
|
+
const apiName = titleWithSuffix(args.name ?? scriptName, 'API');
|
|
263
|
+
const description = args.description ??
|
|
264
|
+
`Use ${apiName} commands from a bundled OpenAPI spec. Use when the user needs to list, inspect, test, or call ${apiName} operations from the command line.`;
|
|
265
|
+
return renderApiSkillMd({
|
|
266
|
+
name: args.name ?? scriptName,
|
|
267
|
+
title: apiName,
|
|
268
|
+
description,
|
|
269
|
+
scriptName,
|
|
270
|
+
referenceLine: `- \`references/${specFileName}\` — bundled OpenAPI spec used by \`scripts/${scriptName}\`.`,
|
|
271
|
+
workflowIntro: `Use the bundled wrapper script to discover and call ${apiName} operations. Global skill-creator options go before the subcommand; operation-specific options go after it.`,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
function renderGraphqlSkillMd(schemaFileName, scriptName, args) {
|
|
275
|
+
const apiName = titleWithSuffix(args.name ?? scriptName, 'GraphQL API');
|
|
276
|
+
const description = args.description ??
|
|
277
|
+
`Use ${apiName} commands from a saved GraphQL schema. Use when the user needs to list, inspect, query, or mutate ${apiName} operations from the command line.`;
|
|
278
|
+
return renderApiSkillMd({
|
|
279
|
+
name: args.name ?? scriptName,
|
|
280
|
+
title: apiName,
|
|
281
|
+
description,
|
|
282
|
+
scriptName,
|
|
283
|
+
referenceLine: `- \`references/${schemaFileName}\` — saved GraphQL schema used by \`scripts/${scriptName}\`.`,
|
|
284
|
+
workflowIntro: `Use the bundled wrapper script to discover and call ${apiName} operations. Global skill-creator options go before the subcommand; operation-specific options go after it.`,
|
|
285
|
+
extraGotchas: [
|
|
286
|
+
'- Use `--fields` to keep GraphQL selection sets precise and avoid oversized nested responses.',
|
|
287
|
+
'- Use `--stdin` for complex GraphQL variables that are easier to pass as JSON.',
|
|
288
|
+
],
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
function renderApiSkillMd(options) {
|
|
292
|
+
return `---
|
|
293
|
+
name: ${options.name}
|
|
294
|
+
description: ${options.description}
|
|
295
|
+
compatibility: Requires Node.js/npm; wrapper scripts use npx -y @asnd/skill-creator and network access for API calls.
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
# ${options.title}
|
|
299
|
+
|
|
300
|
+
${options.workflowIntro}
|
|
301
|
+
|
|
302
|
+
## Usage
|
|
303
|
+
|
|
304
|
+
\`\`\`bash
|
|
305
|
+
./scripts/${options.scriptName} --list
|
|
306
|
+
./scripts/${options.scriptName} --search '<topic>'
|
|
307
|
+
./scripts/${options.scriptName} <command> --help
|
|
308
|
+
./scripts/${options.scriptName} --pretty <command> <flags>
|
|
309
|
+
\`\`\`
|
|
310
|
+
|
|
311
|
+
## Workflows
|
|
312
|
+
|
|
313
|
+
1. Start with \`./scripts/${options.scriptName} --list\` or \`./scripts/${options.scriptName} --search '<topic>'\`.
|
|
314
|
+
2. Inspect the chosen command with \`./scripts/${options.scriptName} <command> --help\`.
|
|
315
|
+
3. Test read-only commands first. Use \`--pretty\` for readable JSON and \`--head 3\` to preview large array responses.
|
|
316
|
+
|
|
317
|
+
## Gotchas
|
|
318
|
+
|
|
319
|
+
- Keep secrets in environment variables or files and pass them through wrapper-auth flags such as \`env:API_TOKEN\`; do not put raw tokens in commands.
|
|
320
|
+
- Do not run write/delete operations unless the user explicitly asks and provides safe test data.
|
|
321
|
+
- For binary or non-JSON responses, use \`--raw > output.ext\` instead of printing to the terminal.
|
|
322
|
+
${options.extraGotchas?.join('\n') ?? ''}
|
|
323
|
+
|
|
324
|
+
## References
|
|
325
|
+
|
|
326
|
+
${options.referenceLine}
|
|
327
|
+
`;
|
|
328
|
+
}
|
|
329
|
+
function renderMcpSkillMd(scriptName, args, transport) {
|
|
330
|
+
const title = titleWithSuffix(args.name ?? scriptName, 'MCP');
|
|
331
|
+
const transportLabel = transport === 'stdio' ? 'stdio' : 'HTTP/SSE';
|
|
332
|
+
const description = args.description ??
|
|
333
|
+
`Use ${title} tools over MCP ${transportLabel}. Use when the user needs to list, inspect, or call ${title} tools from the command line.`;
|
|
334
|
+
return `---
|
|
335
|
+
name: ${args.name ?? scriptName}
|
|
336
|
+
description: ${description}
|
|
337
|
+
compatibility: Requires Node.js/npm; wrapper scripts use npx -y @asnd/skill-creator and network access or local MCP server access.
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
# ${title}
|
|
341
|
+
|
|
342
|
+
Use the bundled wrapper script to discover and call ${title} tools over MCP ${transportLabel}.
|
|
343
|
+
|
|
344
|
+
## Usage
|
|
345
|
+
|
|
346
|
+
\`\`\`bash
|
|
347
|
+
./scripts/${scriptName} --list
|
|
348
|
+
./scripts/${scriptName} --search '<topic>'
|
|
349
|
+
./scripts/${scriptName} <tool> --help
|
|
350
|
+
./scripts/${scriptName} --pretty <tool> <flags>
|
|
351
|
+
\`\`\`
|
|
352
|
+
|
|
353
|
+
## Workflows
|
|
354
|
+
|
|
355
|
+
1. Start with \`./scripts/${scriptName} --list\` or \`./scripts/${scriptName} --search '<topic>'\`.
|
|
356
|
+
2. Inspect the chosen tool with \`./scripts/${scriptName} <tool> --help\`.
|
|
357
|
+
3. Test read-only tools first. Use \`--pretty\` for readable JSON and \`--head 3\` to preview large array responses.
|
|
358
|
+
|
|
359
|
+
## Gotchas
|
|
360
|
+
|
|
361
|
+
- Do not run write/delete tools unless the user explicitly asks and provides safe test data.
|
|
362
|
+
- MCP ${transportLabel} tool lists can change at runtime; rerun \`--list\` when a tool is missing.
|
|
363
|
+
- Keep secrets in environment variables or files and pass them through wrapper-auth flags such as \`env:API_TOKEN\`; do not put raw tokens in commands.
|
|
364
|
+
`;
|
|
365
|
+
}
|
|
366
|
+
async function smokeTestScript(scriptPath) {
|
|
367
|
+
try {
|
|
368
|
+
await execFileAsync(scriptPath, ['--list'], { timeout: 120_000 });
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
372
|
+
throw new Error(`generated script smoke test failed: ${message}`);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
function appendAuthHeaderOptions(optionLines, authHeaders) {
|
|
376
|
+
for (const header of authHeaders) {
|
|
377
|
+
optionLines.push(`--auth-header "${shellDoubleQuote(header)}"`);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
async function resolveAuthHeaders(headers) {
|
|
381
|
+
return Promise.all(headers.map(async (header) => {
|
|
382
|
+
const [key, value] = parseHeader(header);
|
|
383
|
+
return [key, await resolveSecret(value)];
|
|
384
|
+
}));
|
|
385
|
+
}
|
|
386
|
+
function parseHeader(header) {
|
|
387
|
+
const colon = header.indexOf(':');
|
|
388
|
+
if (colon === -1)
|
|
389
|
+
throw new Error(`invalid auth header format: ${header}`);
|
|
390
|
+
return [header.slice(0, colon).trim(), header.slice(colon + 1).trim()];
|
|
391
|
+
}
|
|
392
|
+
function parseAgent(value) {
|
|
393
|
+
if (isAgentId(value))
|
|
394
|
+
return value;
|
|
395
|
+
throw new Error(`unknown agent: ${value}. Valid agents: ${listAgentIds().join(', ')}`);
|
|
396
|
+
}
|
|
397
|
+
function parseScope(value) {
|
|
398
|
+
if (value === 'project' || value === 'global')
|
|
399
|
+
return value;
|
|
400
|
+
throw new Error('--scope must be project or global');
|
|
401
|
+
}
|
|
402
|
+
function requireValue(argv, index, option) {
|
|
403
|
+
const value = argv[index];
|
|
404
|
+
if (value === undefined || value.startsWith('--'))
|
|
405
|
+
throw new Error(`missing value for ${option}`);
|
|
406
|
+
return value;
|
|
407
|
+
}
|
|
408
|
+
function required(value, message) {
|
|
409
|
+
if (value === undefined)
|
|
410
|
+
throw new Error(message);
|
|
411
|
+
return value;
|
|
412
|
+
}
|
|
413
|
+
function openApiSpecExtension(source) {
|
|
414
|
+
const pathname = urlPathnameOrSource(source);
|
|
415
|
+
const ext = extname(pathname).toLowerCase();
|
|
416
|
+
return ext === '.yaml' || ext === '.yml' ? '.yaml' : '.json';
|
|
417
|
+
}
|
|
418
|
+
function graphqlSchemaExtension(source) {
|
|
419
|
+
if (source === undefined)
|
|
420
|
+
return '.graphql';
|
|
421
|
+
const ext = extname(urlPathnameOrSource(source)).toLowerCase();
|
|
422
|
+
return ext === '.json' ? '.json' : '.graphql';
|
|
423
|
+
}
|
|
424
|
+
function urlPathnameOrSource(source) {
|
|
425
|
+
return source.startsWith('http://') || source.startsWith('https://')
|
|
426
|
+
? new URL(source).pathname
|
|
427
|
+
: source;
|
|
428
|
+
}
|
|
429
|
+
function formatDateForFile(date) {
|
|
430
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
431
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
432
|
+
const year = String(date.getFullYear());
|
|
433
|
+
return `${month}-${day}-${year}`;
|
|
434
|
+
}
|
|
435
|
+
function titleWithSuffix(skillName, suffix) {
|
|
436
|
+
const name = displayName(skillName);
|
|
437
|
+
if (name.endsWith(suffix))
|
|
438
|
+
return name;
|
|
439
|
+
if (suffix === 'GraphQL API' && name.endsWith(' GraphQL'))
|
|
440
|
+
return `${name} API`;
|
|
441
|
+
return `${name} ${suffix}`;
|
|
442
|
+
}
|
|
443
|
+
function displayName(skillName) {
|
|
444
|
+
if (skillName.toLowerCase() === 'youtube')
|
|
445
|
+
return 'YouTube';
|
|
446
|
+
return skillName
|
|
447
|
+
.split('-')
|
|
448
|
+
.filter((part) => part.length > 0)
|
|
449
|
+
.map(formatDisplayPart)
|
|
450
|
+
.join(' ');
|
|
451
|
+
}
|
|
452
|
+
function formatDisplayPart(part) {
|
|
453
|
+
const acronyms = {
|
|
454
|
+
api: 'API',
|
|
455
|
+
graphql: 'GraphQL',
|
|
456
|
+
http: 'HTTP',
|
|
457
|
+
mcp: 'MCP',
|
|
458
|
+
};
|
|
459
|
+
return acronyms[part.toLowerCase()] ?? `${part[0]?.toUpperCase() ?? ''}${part.slice(1)}`;
|
|
460
|
+
}
|
|
461
|
+
function shellDoubleQuote(value) {
|
|
462
|
+
return value.replace(/[\\"$`]/g, (character) => `\\${character}`);
|
|
463
|
+
}
|
|
464
|
+
function printGenerateHelp() {
|
|
465
|
+
console.log(`npx @asnd/skill-creator generate --template TEMPLATE --name NAME --agent AGENT --scope project|global
|
|
466
|
+
|
|
467
|
+
Templates:
|
|
468
|
+
openapi Requires --spec URL|FILE
|
|
469
|
+
graphql Requires --graphql URL; optionally --graphql-schema URL|FILE
|
|
470
|
+
mcp-http Requires --mcp URL
|
|
471
|
+
mcp-stdio Requires --mcp-stdio CMD
|
|
472
|
+
mcp Alias; chooses mcp-http or mcp-stdio from provided source flag
|
|
473
|
+
|
|
474
|
+
Options:
|
|
475
|
+
--template TEMPLATE openapi|graphql|mcp-http|mcp-stdio|mcp
|
|
476
|
+
--name NAME Spec-compliant skill name, e.g. youtube
|
|
477
|
+
--script NAME Script name (defaults to --name)
|
|
478
|
+
--spec URL|FILE OpenAPI spec to bundle into references/
|
|
479
|
+
--graphql URL GraphQL endpoint URL
|
|
480
|
+
--graphql-schema SRC SDL or introspection JSON schema to save into references/
|
|
481
|
+
--mcp URL MCP HTTP/SSE endpoint URL
|
|
482
|
+
--mcp-stdio CMD MCP stdio server command
|
|
483
|
+
--agent AGENT Target agent, e.g. pi, codex, claude-code, cursor
|
|
484
|
+
--scope SCOPE Install scope: project|global
|
|
485
|
+
--auth-header K:V Add auth header to generated wrapper (repeatable)
|
|
486
|
+
--base-url URL Add OpenAPI base URL override to generated wrapper
|
|
487
|
+
--description TEXT Override generated SKILL.md description
|
|
488
|
+
--force Overwrite an existing skill directory
|
|
489
|
+
--yes, -y Non-interactive mode; requires --agent and --scope
|
|
490
|
+
--no-test Skip generated script smoke test
|
|
491
|
+
--help, -h Show this help
|
|
492
|
+
`);
|
|
493
|
+
}
|
|
494
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/skills/generate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asnd/skill-creator",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Turn any MCP server, OpenAPI spec, or GraphQL endpoint into a CLI at runtime.",
|
|
5
5
|
"keywords": [
|
|
6
|
+
"commands",
|
|
6
7
|
"graphql",
|
|
7
8
|
"mcp",
|
|
8
9
|
"openapi",
|
|
@@ -19,27 +20,25 @@
|
|
|
19
20
|
"url": "git+https://github.com/sandiiarov/skill-creator.git"
|
|
20
21
|
},
|
|
21
22
|
"bin": {
|
|
22
|
-
"sc": "dist/cli/main.js",
|
|
23
23
|
"skill-creator": "dist/cli/main.js"
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
"dist",
|
|
27
|
-
"skills",
|
|
28
27
|
"prompts",
|
|
29
28
|
"LICENSE",
|
|
30
29
|
"README.md"
|
|
31
30
|
],
|
|
32
31
|
"type": "module",
|
|
33
32
|
"scripts": {
|
|
34
|
-
"build": "
|
|
33
|
+
"build": "tsgo -p tsconfig.build.json",
|
|
35
34
|
"dev": "tsx src/cli/main.ts",
|
|
36
35
|
"fmt": "oxfmt",
|
|
37
36
|
"fmt:check": "oxfmt --check",
|
|
38
37
|
"lint": "oxlint",
|
|
39
|
-
"lint:fix": "oxlint --fix",
|
|
38
|
+
"lint:fix": "oxlint --fix --fix-suggestions --fix-dangerously",
|
|
40
39
|
"test": "vitest run",
|
|
41
40
|
"test:watch": "vitest",
|
|
42
|
-
"typecheck": "
|
|
41
|
+
"typecheck": "tsgo --noEmit"
|
|
43
42
|
},
|
|
44
43
|
"dependencies": {
|
|
45
44
|
"@apidevtools/json-schema-ref-parser": "^14.2.1",
|
|
@@ -62,22 +61,19 @@
|
|
|
62
61
|
"devDependencies": {
|
|
63
62
|
"@types/cacache": "^20.0.1",
|
|
64
63
|
"@types/node": "^24.10.1",
|
|
64
|
+
"@typescript/native-preview": "7.0.0-dev.20260521.1",
|
|
65
65
|
"execa": "^9.6.0",
|
|
66
66
|
"oxfmt": "^0.51.0",
|
|
67
67
|
"oxlint": "^1.66.0",
|
|
68
|
-
"tsup": "^8.5.1",
|
|
69
68
|
"tsx": "^4.20.6",
|
|
70
69
|
"typescript": "^5.9.3",
|
|
71
70
|
"vitest": "^4.0.14"
|
|
72
71
|
},
|
|
73
72
|
"engines": {
|
|
74
|
-
"node": ">=
|
|
73
|
+
"node": ">=26"
|
|
75
74
|
},
|
|
76
75
|
"packageManager": "pnpm@10.1.0",
|
|
77
76
|
"pi": {
|
|
78
|
-
"skills": [
|
|
79
|
-
"./skills"
|
|
80
|
-
],
|
|
81
77
|
"prompts": [
|
|
82
78
|
"./prompts"
|
|
83
79
|
]
|