killer-skills 1.6.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.
- package/CHANGELOG.md +156 -0
- package/LICENSE +21 -0
- package/README.md +360 -0
- package/dist/commands/completion.d.ts +8 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +242 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/config.d.ts +24 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +132 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +9 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +361 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/deps.d.ts +8 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +144 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/do.d.ts +13 -0
- package/dist/commands/do.d.ts.map +1 -0
- package/dist/commands/do.js +223 -0
- package/dist/commands/do.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +191 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.d.ts +13 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +234 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +9 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +103 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/manage.d.ts +9 -0
- package/dist/commands/manage.d.ts.map +1 -0
- package/dist/commands/manage.js +132 -0
- package/dist/commands/manage.js.map +1 -0
- package/dist/commands/outdated.d.ts +9 -0
- package/dist/commands/outdated.d.ts.map +1 -0
- package/dist/commands/outdated.js +168 -0
- package/dist/commands/outdated.js.map +1 -0
- package/dist/commands/plugin.d.ts +8 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +98 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/publish.d.ts +8 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +199 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/read.d.ts +9 -0
- package/dist/commands/read.d.ts.map +1 -0
- package/dist/commands/read.js +69 -0
- package/dist/commands/read.js.map +1 -0
- package/dist/commands/search.d.ts +8 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +105 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/stats.d.ts +16 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +137 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/submit.d.ts +9 -0
- package/dist/commands/submit.d.ts.map +1 -0
- package/dist/commands/submit.js +245 -0
- package/dist/commands/submit.js.map +1 -0
- package/dist/commands/sync.d.ts +11 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +134 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/update.d.ts +9 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +175 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config/claude.d.ts +2 -0
- package/dist/config/claude.d.ts.map +1 -0
- package/dist/config/claude.js +19 -0
- package/dist/config/claude.js.map +1 -0
- package/dist/config/cursor.d.ts +2 -0
- package/dist/config/cursor.d.ts.map +1 -0
- package/dist/config/cursor.js +18 -0
- package/dist/config/cursor.js.map +1 -0
- package/dist/config/ides.d.ts +19 -0
- package/dist/config/ides.d.ts.map +1 -0
- package/dist/config/ides.js +221 -0
- package/dist/config/ides.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +11 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +264 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/registry.d.ts +8 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +34 -0
- package/dist/registry.js.map +1 -0
- package/dist/types.d.ts +78 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/agents-md.d.ts +33 -0
- package/dist/utils/agents-md.d.ts.map +1 -0
- package/dist/utils/agents-md.js +137 -0
- package/dist/utils/agents-md.js.map +1 -0
- package/dist/utils/dependencies.d.ts +49 -0
- package/dist/utils/dependencies.d.ts.map +1 -0
- package/dist/utils/dependencies.js +141 -0
- package/dist/utils/dependencies.js.map +1 -0
- package/dist/utils/github.d.ts +58 -0
- package/dist/utils/github.d.ts.map +1 -0
- package/dist/utils/github.js +198 -0
- package/dist/utils/github.js.map +1 -0
- package/dist/utils/platform.d.ts +54 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +154 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/plugins.d.ts +50 -0
- package/dist/utils/plugins.d.ts.map +1 -0
- package/dist/utils/plugins.js +115 -0
- package/dist/utils/plugins.js.map +1 -0
- package/dist/utils/prompt-templates.d.ts +47 -0
- package/dist/utils/prompt-templates.d.ts.map +1 -0
- package/dist/utils/prompt-templates.js +160 -0
- package/dist/utils/prompt-templates.js.map +1 -0
- package/dist/utils/skill-metadata.d.ts +55 -0
- package/dist/utils/skill-metadata.d.ts.map +1 -0
- package/dist/utils/skill-metadata.js +82 -0
- package/dist/utils/skill-metadata.js.map +1 -0
- package/dist/utils/skills.d.ts +27 -0
- package/dist/utils/skills.d.ts.map +1 -0
- package/dist/utils/skills.js +163 -0
- package/dist/utils/skills.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create Command
|
|
3
|
+
*
|
|
4
|
+
* Create a new skill from template or clone from existing.
|
|
5
|
+
* Supports multiple template types for different use cases.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import ora from 'ora';
|
|
10
|
+
import fs from 'fs-extra';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import readline from 'readline';
|
|
13
|
+
import { findSkill } from '../utils/skills.js';
|
|
14
|
+
/**
|
|
15
|
+
* Template content generators
|
|
16
|
+
*/
|
|
17
|
+
const TEMPLATES = {
|
|
18
|
+
minimal: {
|
|
19
|
+
description: 'Single SKILL.md file only',
|
|
20
|
+
files: (name, desc) => ({
|
|
21
|
+
'SKILL.md': `---
|
|
22
|
+
name: ${name}
|
|
23
|
+
description: ${desc}
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# ${toTitleCase(name)}
|
|
27
|
+
|
|
28
|
+
## Overview
|
|
29
|
+
|
|
30
|
+
<!-- Describe what this skill does and when to use it -->
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
<!-- Add instructions for using this skill -->
|
|
35
|
+
`
|
|
36
|
+
})
|
|
37
|
+
},
|
|
38
|
+
standard: {
|
|
39
|
+
description: 'SKILL.md with scripts and references directories',
|
|
40
|
+
files: (name, desc) => ({
|
|
41
|
+
'SKILL.md': `---
|
|
42
|
+
name: ${name}
|
|
43
|
+
description: ${desc}
|
|
44
|
+
version: 1.0.0
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
# ${toTitleCase(name)}
|
|
48
|
+
|
|
49
|
+
## Overview
|
|
50
|
+
|
|
51
|
+
<!-- Describe what this skill does and when to use it -->
|
|
52
|
+
|
|
53
|
+
## Usage
|
|
54
|
+
|
|
55
|
+
<!-- Add instructions for using this skill -->
|
|
56
|
+
|
|
57
|
+
## Examples
|
|
58
|
+
|
|
59
|
+
<!-- Add example use cases -->
|
|
60
|
+
|
|
61
|
+
## References
|
|
62
|
+
|
|
63
|
+
See the \`references/\` directory for additional documentation.
|
|
64
|
+
`,
|
|
65
|
+
'scripts/.gitkeep': '',
|
|
66
|
+
'references/README.md': `# References
|
|
67
|
+
|
|
68
|
+
Additional documentation and resources for ${toTitleCase(name)}.
|
|
69
|
+
`,
|
|
70
|
+
'.gitignore': `# OS
|
|
71
|
+
.DS_Store
|
|
72
|
+
Thumbs.db
|
|
73
|
+
|
|
74
|
+
# IDE
|
|
75
|
+
.idea/
|
|
76
|
+
.vscode/
|
|
77
|
+
*.swp
|
|
78
|
+
*.swo
|
|
79
|
+
|
|
80
|
+
# Dependencies
|
|
81
|
+
node_modules/
|
|
82
|
+
`
|
|
83
|
+
})
|
|
84
|
+
},
|
|
85
|
+
full: {
|
|
86
|
+
description: 'Complete skill with scripts, references, assets, and examples',
|
|
87
|
+
files: (name, desc) => ({
|
|
88
|
+
'SKILL.md': `---
|
|
89
|
+
name: ${name}
|
|
90
|
+
description: ${desc}
|
|
91
|
+
version: 1.0.0
|
|
92
|
+
author: Your Name
|
|
93
|
+
tags: []
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
# ${toTitleCase(name)}
|
|
97
|
+
|
|
98
|
+
## Overview
|
|
99
|
+
|
|
100
|
+
<!-- Describe what this skill does and when to use it -->
|
|
101
|
+
|
|
102
|
+
## When to Use
|
|
103
|
+
|
|
104
|
+
Use this skill when:
|
|
105
|
+
- <!-- Condition 1 -->
|
|
106
|
+
- <!-- Condition 2 -->
|
|
107
|
+
|
|
108
|
+
## Usage
|
|
109
|
+
|
|
110
|
+
### Basic Usage
|
|
111
|
+
|
|
112
|
+
\`\`\`
|
|
113
|
+
<!-- Add basic usage instructions -->
|
|
114
|
+
\`\`\`
|
|
115
|
+
|
|
116
|
+
### Advanced Options
|
|
117
|
+
|
|
118
|
+
<!-- Add advanced options -->
|
|
119
|
+
|
|
120
|
+
## Examples
|
|
121
|
+
|
|
122
|
+
See the \`examples/\` directory for sample implementations.
|
|
123
|
+
|
|
124
|
+
## API Reference
|
|
125
|
+
|
|
126
|
+
See \`references/api.md\` for detailed API documentation.
|
|
127
|
+
|
|
128
|
+
## Scripts
|
|
129
|
+
|
|
130
|
+
The following utility scripts are available in \`scripts/\`:
|
|
131
|
+
|
|
132
|
+
- \`example.py\` - Example Python script
|
|
133
|
+
|
|
134
|
+
## Assets
|
|
135
|
+
|
|
136
|
+
Static assets are available in \`assets/\`.
|
|
137
|
+
`,
|
|
138
|
+
'scripts/example.py': `#!/usr/bin/env python3
|
|
139
|
+
"""
|
|
140
|
+
Example script for ${toTitleCase(name)} skill.
|
|
141
|
+
|
|
142
|
+
Usage:
|
|
143
|
+
python scripts/example.py [args]
|
|
144
|
+
"""
|
|
145
|
+
|
|
146
|
+
def main():
|
|
147
|
+
print("Hello from ${name}!")
|
|
148
|
+
|
|
149
|
+
if __name__ == "__main__":
|
|
150
|
+
main()
|
|
151
|
+
`,
|
|
152
|
+
'references/api.md': `# API Reference
|
|
153
|
+
|
|
154
|
+
## Functions
|
|
155
|
+
|
|
156
|
+
### \`function_name(arg1, arg2)\`
|
|
157
|
+
|
|
158
|
+
Description of the function.
|
|
159
|
+
|
|
160
|
+
**Parameters:**
|
|
161
|
+
- \`arg1\` (type): Description
|
|
162
|
+
- \`arg2\` (type): Description
|
|
163
|
+
|
|
164
|
+
**Returns:**
|
|
165
|
+
- Description of return value
|
|
166
|
+
|
|
167
|
+
**Example:**
|
|
168
|
+
\`\`\`
|
|
169
|
+
function_name("value1", "value2")
|
|
170
|
+
\`\`\`
|
|
171
|
+
`,
|
|
172
|
+
'references/README.md': `# References
|
|
173
|
+
|
|
174
|
+
Additional documentation and resources for ${toTitleCase(name)}.
|
|
175
|
+
|
|
176
|
+
## Contents
|
|
177
|
+
|
|
178
|
+
- \`api.md\` - API Reference documentation
|
|
179
|
+
`,
|
|
180
|
+
'examples/basic.md': `# Basic Example
|
|
181
|
+
|
|
182
|
+
## Setup
|
|
183
|
+
|
|
184
|
+
<!-- Setup instructions -->
|
|
185
|
+
|
|
186
|
+
## Example
|
|
187
|
+
|
|
188
|
+
<!-- Example code or usage -->
|
|
189
|
+
|
|
190
|
+
## Expected Output
|
|
191
|
+
|
|
192
|
+
<!-- Expected output -->
|
|
193
|
+
`,
|
|
194
|
+
'assets/.gitkeep': '',
|
|
195
|
+
'.gitignore': `# OS
|
|
196
|
+
.DS_Store
|
|
197
|
+
Thumbs.db
|
|
198
|
+
|
|
199
|
+
# IDE
|
|
200
|
+
.idea/
|
|
201
|
+
.vscode/
|
|
202
|
+
*.swp
|
|
203
|
+
*.swo
|
|
204
|
+
|
|
205
|
+
# Dependencies
|
|
206
|
+
node_modules/
|
|
207
|
+
|
|
208
|
+
# Build artifacts
|
|
209
|
+
dist/
|
|
210
|
+
build/
|
|
211
|
+
`
|
|
212
|
+
})
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
export const createCommand = new Command('create')
|
|
216
|
+
.argument('<name>', 'Name of the skill to create')
|
|
217
|
+
.description('Create a new skill from template')
|
|
218
|
+
.option('-t, --template <type>', 'Template type: minimal, standard, full', 'standard')
|
|
219
|
+
.option('-d, --description <desc>', 'Description for the skill')
|
|
220
|
+
.option('-p, --path <path>', 'Directory to create the skill in', '.')
|
|
221
|
+
.option('--from <skill>', 'Clone from an existing installed skill')
|
|
222
|
+
.option('-y, --yes', 'Skip prompts, use defaults')
|
|
223
|
+
.action(async (name, options) => {
|
|
224
|
+
const spinner = ora();
|
|
225
|
+
try {
|
|
226
|
+
// Validate skill name
|
|
227
|
+
if (!/^[a-z][a-z0-9-]*$/.test(name)) {
|
|
228
|
+
console.error(chalk.red('Invalid skill name. Use lowercase letters, numbers, and hyphens only.'));
|
|
229
|
+
console.log(chalk.dim('Example: my-awesome-skill'));
|
|
230
|
+
process.exit(1);
|
|
231
|
+
}
|
|
232
|
+
// Determine output path
|
|
233
|
+
const basePath = options.path || process.cwd();
|
|
234
|
+
const skillPath = path.resolve(basePath, name);
|
|
235
|
+
// Check if already exists
|
|
236
|
+
if (await fs.pathExists(skillPath)) {
|
|
237
|
+
console.error(chalk.red(`Directory already exists: ${skillPath}`));
|
|
238
|
+
process.exit(1);
|
|
239
|
+
}
|
|
240
|
+
// Handle clone from existing skill
|
|
241
|
+
if (options.from) {
|
|
242
|
+
await cloneFromSkill(options.from, skillPath, name, spinner);
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
// Get description
|
|
246
|
+
let description = options.description;
|
|
247
|
+
if (!description && !options.yes) {
|
|
248
|
+
description = await prompt(chalk.cyan('? Skill description: '));
|
|
249
|
+
}
|
|
250
|
+
description = description || 'A useful AI agent skill.';
|
|
251
|
+
// Get template type
|
|
252
|
+
const templateType = (options.template || 'standard');
|
|
253
|
+
if (!TEMPLATES[templateType]) {
|
|
254
|
+
console.error(chalk.red(`Unknown template: ${templateType}`));
|
|
255
|
+
console.log(chalk.dim('Available templates: minimal, standard, full'));
|
|
256
|
+
process.exit(1);
|
|
257
|
+
}
|
|
258
|
+
const template = TEMPLATES[templateType];
|
|
259
|
+
// Create skill
|
|
260
|
+
spinner.start(`Creating ${name} with ${templateType} template...`);
|
|
261
|
+
const files = template.files(name, description);
|
|
262
|
+
await fs.ensureDir(skillPath);
|
|
263
|
+
for (const [filePath, content] of Object.entries(files)) {
|
|
264
|
+
const fullPath = path.join(skillPath, filePath);
|
|
265
|
+
await fs.ensureDir(path.dirname(fullPath));
|
|
266
|
+
await fs.writeFile(fullPath, content);
|
|
267
|
+
}
|
|
268
|
+
spinner.succeed(chalk.green('Skill created!'));
|
|
269
|
+
// Print summary
|
|
270
|
+
console.log('');
|
|
271
|
+
console.log(chalk.green('β
Skill created successfully!'));
|
|
272
|
+
console.log(chalk.dim('β'.repeat(50)));
|
|
273
|
+
console.log(` ${chalk.bold('Name:')} ${name}`);
|
|
274
|
+
console.log(` ${chalk.bold('Path:')} ${skillPath}`);
|
|
275
|
+
console.log(` ${chalk.bold('Template:')} ${templateType} (${template.description})`);
|
|
276
|
+
console.log(` ${chalk.bold('Description:')} ${description}`);
|
|
277
|
+
console.log(chalk.dim('β'.repeat(50)));
|
|
278
|
+
// Next steps
|
|
279
|
+
console.log('');
|
|
280
|
+
console.log(chalk.bold('π Next steps:'));
|
|
281
|
+
console.log(` 1. Edit ${chalk.cyan('SKILL.md')} to add your skill instructions`);
|
|
282
|
+
if (templateType === 'standard' || templateType === 'full') {
|
|
283
|
+
console.log(` 2. Add documentation to ${chalk.cyan('references/')}`);
|
|
284
|
+
}
|
|
285
|
+
if (templateType === 'full') {
|
|
286
|
+
console.log(` 3. Add scripts to ${chalk.cyan('scripts/')}`);
|
|
287
|
+
console.log(` 4. Add examples to ${chalk.cyan('examples/')}`);
|
|
288
|
+
}
|
|
289
|
+
console.log(` ${templateType === 'minimal' ? '2' : templateType === 'standard' ? '3' : '5'}. Install locally: ${chalk.cyan(`killer install ${skillPath}`)}`);
|
|
290
|
+
console.log(` ${templateType === 'minimal' ? '3' : templateType === 'standard' ? '4' : '6'}. Publish: ${chalk.cyan(`killer publish ${skillPath}`)}`);
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
spinner.fail(chalk.red('Creation failed'));
|
|
294
|
+
console.error(chalk.red(`\nError: ${error.message}`));
|
|
295
|
+
process.exit(1);
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
/**
|
|
299
|
+
* Clone from an existing skill
|
|
300
|
+
*/
|
|
301
|
+
async function cloneFromSkill(sourceName, targetPath, newName, spinner) {
|
|
302
|
+
spinner.start(`Finding skill ${sourceName}...`);
|
|
303
|
+
const skill = findSkill(sourceName);
|
|
304
|
+
if (!skill) {
|
|
305
|
+
spinner.fail(chalk.red(`Skill not found: ${sourceName}`));
|
|
306
|
+
console.log(chalk.dim('Run `killer list` to see installed skills'));
|
|
307
|
+
process.exit(1);
|
|
308
|
+
}
|
|
309
|
+
const sourceDir = path.dirname(skill.path);
|
|
310
|
+
spinner.text = `Cloning ${sourceName} to ${newName}...`;
|
|
311
|
+
// Copy entire directory
|
|
312
|
+
await fs.copy(sourceDir, targetPath);
|
|
313
|
+
// Update SKILL.md with new name
|
|
314
|
+
const skillMdPath = path.join(targetPath, 'SKILL.md');
|
|
315
|
+
if (await fs.pathExists(skillMdPath)) {
|
|
316
|
+
let content = await fs.readFile(skillMdPath, 'utf-8');
|
|
317
|
+
content = content.replace(/^name:\s*.+$/m, `name: ${newName}`);
|
|
318
|
+
content = content.replace(new RegExp(`# ${escapeRegExp(sourceName)}`, 'gi'), `# ${toTitleCase(newName)}`);
|
|
319
|
+
await fs.writeFile(skillMdPath, content);
|
|
320
|
+
}
|
|
321
|
+
spinner.succeed(chalk.green(`Cloned ${sourceName} to ${newName}`));
|
|
322
|
+
console.log('');
|
|
323
|
+
console.log(chalk.green('β
Skill cloned successfully!'));
|
|
324
|
+
console.log(chalk.dim('β'.repeat(50)));
|
|
325
|
+
console.log(` ${chalk.bold('Source:')} ${sourceName} (${sourceDir})`);
|
|
326
|
+
console.log(` ${chalk.bold('Target:')} ${newName} (${targetPath})`);
|
|
327
|
+
console.log(chalk.dim('β'.repeat(50)));
|
|
328
|
+
console.log('');
|
|
329
|
+
console.log(chalk.dim('π‘ Don\'t forget to update the skill description and content!'));
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Prompt user for input
|
|
333
|
+
*/
|
|
334
|
+
async function prompt(question) {
|
|
335
|
+
const rl = readline.createInterface({
|
|
336
|
+
input: process.stdin,
|
|
337
|
+
output: process.stdout
|
|
338
|
+
});
|
|
339
|
+
return new Promise(resolve => {
|
|
340
|
+
rl.question(question, answer => {
|
|
341
|
+
rl.close();
|
|
342
|
+
resolve(answer.trim());
|
|
343
|
+
});
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Convert name to title case
|
|
348
|
+
*/
|
|
349
|
+
function toTitleCase(str) {
|
|
350
|
+
return str
|
|
351
|
+
.split('-')
|
|
352
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
353
|
+
.join(' ');
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Escape special regex characters
|
|
357
|
+
*/
|
|
358
|
+
function escapeRegExp(str) {
|
|
359
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/commands/deps.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SA2GlB,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deps Command
|
|
3
|
+
*
|
|
4
|
+
* Check and manage skill dependencies.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import ora from 'ora';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import { findAllSkills, findSkill } from '../utils/skills.js';
|
|
11
|
+
import { checkDependencies, displayDependencyStatus, parseDependencies } from '../utils/dependencies.js';
|
|
12
|
+
import { readFileSync } from 'fs';
|
|
13
|
+
export const depsCommand = new Command('deps')
|
|
14
|
+
.description('Check and manage skill dependencies')
|
|
15
|
+
.argument('[skill-name]', 'Specific skill to check (or all if omitted)')
|
|
16
|
+
.option('-t, --tree', 'Show dependency tree')
|
|
17
|
+
.option('-i, --install', 'Install missing dependencies')
|
|
18
|
+
.action(async (skillName, options) => {
|
|
19
|
+
const spinner = ora('Checking dependencies...').start();
|
|
20
|
+
try {
|
|
21
|
+
const allSkills = findAllSkills();
|
|
22
|
+
const installedNames = allSkills.map(s => s.name);
|
|
23
|
+
if (skillName) {
|
|
24
|
+
// Check specific skill
|
|
25
|
+
const skill = findSkill(skillName);
|
|
26
|
+
if (!skill) {
|
|
27
|
+
spinner.fail(chalk.red(`Skill not found: ${skillName}`));
|
|
28
|
+
console.log(chalk.dim('\nRun `killer list` to see installed skills'));
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
const skillDir = path.dirname(skill.path);
|
|
32
|
+
spinner.stop();
|
|
33
|
+
await checkAndDisplaySkill(skill.name, skillDir, installedNames, options.tree);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// Check all skills
|
|
37
|
+
spinner.text = `Checking ${allSkills.length} skill(s)...`;
|
|
38
|
+
const results = [];
|
|
39
|
+
for (const skill of allSkills) {
|
|
40
|
+
const skillDir = path.dirname(skill.path);
|
|
41
|
+
const result = await checkDependencies(skillDir, installedNames);
|
|
42
|
+
results.push({
|
|
43
|
+
name: skill.name,
|
|
44
|
+
satisfied: result.satisfied,
|
|
45
|
+
missingCount: result.missing.length,
|
|
46
|
+
optionalCount: result.optional.length
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
spinner.stop();
|
|
50
|
+
// Display results
|
|
51
|
+
console.log(chalk.bold('\nπ¦ Dependency Status\n'));
|
|
52
|
+
console.log(chalk.dim('β'.repeat(60)));
|
|
53
|
+
const withDeps = results.filter(r => r.missingCount > 0 || r.optionalCount > 0);
|
|
54
|
+
const noDeps = results.filter(r => r.missingCount === 0 && r.optionalCount === 0);
|
|
55
|
+
// Skills with dependencies
|
|
56
|
+
if (withDeps.length > 0) {
|
|
57
|
+
console.log(chalk.bold('\nSkills with dependencies:\n'));
|
|
58
|
+
for (const r of withDeps) {
|
|
59
|
+
const status = r.satisfied ? chalk.green('β') : chalk.red('β');
|
|
60
|
+
const missing = r.missingCount > 0
|
|
61
|
+
? chalk.red(` (${r.missingCount} missing)`)
|
|
62
|
+
: '';
|
|
63
|
+
const optional = r.optionalCount > 0
|
|
64
|
+
? chalk.yellow(` (${r.optionalCount} optional)`)
|
|
65
|
+
: '';
|
|
66
|
+
console.log(` ${status} ${r.name}${missing}${optional}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Skills without dependencies
|
|
70
|
+
if (noDeps.length > 0) {
|
|
71
|
+
console.log(chalk.dim(`\nSkills without dependencies: ${noDeps.length}`));
|
|
72
|
+
if (options.tree) {
|
|
73
|
+
for (const r of noDeps) {
|
|
74
|
+
console.log(chalk.dim(` β’ ${r.name}`));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Summary
|
|
79
|
+
const unsatisfied = results.filter(r => !r.satisfied);
|
|
80
|
+
console.log(chalk.dim('\nβ'.repeat(60)));
|
|
81
|
+
if (unsatisfied.length > 0) {
|
|
82
|
+
console.log(chalk.yellow(`\nβ οΈ ${unsatisfied.length} skill(s) have missing dependencies`));
|
|
83
|
+
console.log(chalk.dim('\nCheck specific skill: killer deps <skill-name>'));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
console.log(chalk.green('\nβ
All skill dependencies satisfied!'));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Install missing deps option
|
|
90
|
+
if (options.install) {
|
|
91
|
+
console.log(chalk.dim('\nπ‘ Install missing dependencies: killer install <skill-name>'));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
spinner.fail(chalk.red('Failed to check dependencies'));
|
|
96
|
+
console.error(chalk.red(`\nError: ${error.message}`));
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* Check and display a single skill's dependencies
|
|
102
|
+
*/
|
|
103
|
+
async function checkAndDisplaySkill(name, skillDir, installedSkills, showTree) {
|
|
104
|
+
const result = await checkDependencies(skillDir, installedSkills);
|
|
105
|
+
const skillMdPath = path.join(skillDir, 'SKILL.md');
|
|
106
|
+
console.log(chalk.bold(`\nπ¦ Dependencies for ${name}\n`));
|
|
107
|
+
console.log(chalk.dim('β'.repeat(60)));
|
|
108
|
+
// Read and parse dependencies
|
|
109
|
+
try {
|
|
110
|
+
const content = readFileSync(skillMdPath, 'utf-8');
|
|
111
|
+
const deps = parseDependencies(content);
|
|
112
|
+
if (deps.requires.length === 0 && deps.optional.length === 0) {
|
|
113
|
+
console.log(chalk.dim(' No dependencies defined'));
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// Required dependencies
|
|
117
|
+
if (deps.requires.length > 0) {
|
|
118
|
+
console.log(chalk.bold('\nRequired:'));
|
|
119
|
+
for (const dep of deps.requires) {
|
|
120
|
+
const installed = installedSkills.some(s => s.toLowerCase() === dep.name.toLowerCase());
|
|
121
|
+
const status = installed ? chalk.green('β') : chalk.red('β');
|
|
122
|
+
const version = dep.version ? chalk.dim(`@${dep.version}`) : '';
|
|
123
|
+
console.log(` ${status} ${dep.name}${version}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Optional dependencies
|
|
127
|
+
if (deps.optional.length > 0) {
|
|
128
|
+
console.log(chalk.bold('\nOptional:'));
|
|
129
|
+
for (const dep of deps.optional) {
|
|
130
|
+
const installed = installedSkills.some(s => s.toLowerCase() === dep.name.toLowerCase());
|
|
131
|
+
const status = installed ? chalk.green('β') : chalk.yellow('β');
|
|
132
|
+
const version = dep.version ? chalk.dim(`@${dep.version}`) : '';
|
|
133
|
+
console.log(` ${status} ${dep.name}${version}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Summary
|
|
137
|
+
console.log(chalk.dim('\nβ'.repeat(60)));
|
|
138
|
+
displayDependencyStatus(name, result);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
console.log(chalk.dim(' Could not read SKILL.md'));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=deps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/commands/deps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Do Command - Natural Language Executor
|
|
3
|
+
*
|
|
4
|
+
* Execute tasks using natural language. Automatically matches
|
|
5
|
+
* the task description to available skills and suggests/executes them.
|
|
6
|
+
*
|
|
7
|
+
* Example:
|
|
8
|
+
* killer do "ε€ηθΏδΈͺ PDF ζδ»Ά"
|
|
9
|
+
* killer do "create algorithmic art"
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
export declare const doCommand: Command;
|
|
13
|
+
//# sourceMappingURL=do.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"do.d.ts","sourceRoot":"","sources":["../../src/commands/do.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,eAAO,MAAM,SAAS,SAyHhB,CAAC"}
|