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.
Files changed (136) hide show
  1. package/CHANGELOG.md +156 -0
  2. package/LICENSE +21 -0
  3. package/README.md +360 -0
  4. package/dist/commands/completion.d.ts +8 -0
  5. package/dist/commands/completion.d.ts.map +1 -0
  6. package/dist/commands/completion.js +242 -0
  7. package/dist/commands/completion.js.map +1 -0
  8. package/dist/commands/config.d.ts +24 -0
  9. package/dist/commands/config.d.ts.map +1 -0
  10. package/dist/commands/config.js +132 -0
  11. package/dist/commands/config.js.map +1 -0
  12. package/dist/commands/create.d.ts +9 -0
  13. package/dist/commands/create.d.ts.map +1 -0
  14. package/dist/commands/create.js +361 -0
  15. package/dist/commands/create.js.map +1 -0
  16. package/dist/commands/deps.d.ts +8 -0
  17. package/dist/commands/deps.d.ts.map +1 -0
  18. package/dist/commands/deps.js +144 -0
  19. package/dist/commands/deps.js.map +1 -0
  20. package/dist/commands/do.d.ts +13 -0
  21. package/dist/commands/do.d.ts.map +1 -0
  22. package/dist/commands/do.js +223 -0
  23. package/dist/commands/do.js.map +1 -0
  24. package/dist/commands/init.d.ts +8 -0
  25. package/dist/commands/init.d.ts.map +1 -0
  26. package/dist/commands/init.js +191 -0
  27. package/dist/commands/init.js.map +1 -0
  28. package/dist/commands/install.d.ts +13 -0
  29. package/dist/commands/install.d.ts.map +1 -0
  30. package/dist/commands/install.js +234 -0
  31. package/dist/commands/install.js.map +1 -0
  32. package/dist/commands/list.d.ts +9 -0
  33. package/dist/commands/list.d.ts.map +1 -0
  34. package/dist/commands/list.js +103 -0
  35. package/dist/commands/list.js.map +1 -0
  36. package/dist/commands/manage.d.ts +9 -0
  37. package/dist/commands/manage.d.ts.map +1 -0
  38. package/dist/commands/manage.js +132 -0
  39. package/dist/commands/manage.js.map +1 -0
  40. package/dist/commands/outdated.d.ts +9 -0
  41. package/dist/commands/outdated.d.ts.map +1 -0
  42. package/dist/commands/outdated.js +168 -0
  43. package/dist/commands/outdated.js.map +1 -0
  44. package/dist/commands/plugin.d.ts +8 -0
  45. package/dist/commands/plugin.d.ts.map +1 -0
  46. package/dist/commands/plugin.js +98 -0
  47. package/dist/commands/plugin.js.map +1 -0
  48. package/dist/commands/publish.d.ts +8 -0
  49. package/dist/commands/publish.d.ts.map +1 -0
  50. package/dist/commands/publish.js +199 -0
  51. package/dist/commands/publish.js.map +1 -0
  52. package/dist/commands/read.d.ts +9 -0
  53. package/dist/commands/read.d.ts.map +1 -0
  54. package/dist/commands/read.js +69 -0
  55. package/dist/commands/read.js.map +1 -0
  56. package/dist/commands/search.d.ts +8 -0
  57. package/dist/commands/search.d.ts.map +1 -0
  58. package/dist/commands/search.js +105 -0
  59. package/dist/commands/search.js.map +1 -0
  60. package/dist/commands/stats.d.ts +16 -0
  61. package/dist/commands/stats.d.ts.map +1 -0
  62. package/dist/commands/stats.js +137 -0
  63. package/dist/commands/stats.js.map +1 -0
  64. package/dist/commands/submit.d.ts +9 -0
  65. package/dist/commands/submit.d.ts.map +1 -0
  66. package/dist/commands/submit.js +245 -0
  67. package/dist/commands/submit.js.map +1 -0
  68. package/dist/commands/sync.d.ts +11 -0
  69. package/dist/commands/sync.d.ts.map +1 -0
  70. package/dist/commands/sync.js +134 -0
  71. package/dist/commands/sync.js.map +1 -0
  72. package/dist/commands/update.d.ts +9 -0
  73. package/dist/commands/update.d.ts.map +1 -0
  74. package/dist/commands/update.js +175 -0
  75. package/dist/commands/update.js.map +1 -0
  76. package/dist/config/claude.d.ts +2 -0
  77. package/dist/config/claude.d.ts.map +1 -0
  78. package/dist/config/claude.js +19 -0
  79. package/dist/config/claude.js.map +1 -0
  80. package/dist/config/cursor.d.ts +2 -0
  81. package/dist/config/cursor.d.ts.map +1 -0
  82. package/dist/config/cursor.js +18 -0
  83. package/dist/config/cursor.js.map +1 -0
  84. package/dist/config/ides.d.ts +19 -0
  85. package/dist/config/ides.d.ts.map +1 -0
  86. package/dist/config/ides.js +221 -0
  87. package/dist/config/ides.js.map +1 -0
  88. package/dist/index.d.ts +3 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +57 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/mcp-server.d.ts +11 -0
  93. package/dist/mcp-server.d.ts.map +1 -0
  94. package/dist/mcp-server.js +264 -0
  95. package/dist/mcp-server.js.map +1 -0
  96. package/dist/registry.d.ts +8 -0
  97. package/dist/registry.d.ts.map +1 -0
  98. package/dist/registry.js +34 -0
  99. package/dist/registry.js.map +1 -0
  100. package/dist/types.d.ts +78 -0
  101. package/dist/types.d.ts.map +1 -0
  102. package/dist/types.js +7 -0
  103. package/dist/types.js.map +1 -0
  104. package/dist/utils/agents-md.d.ts +33 -0
  105. package/dist/utils/agents-md.d.ts.map +1 -0
  106. package/dist/utils/agents-md.js +137 -0
  107. package/dist/utils/agents-md.js.map +1 -0
  108. package/dist/utils/dependencies.d.ts +49 -0
  109. package/dist/utils/dependencies.d.ts.map +1 -0
  110. package/dist/utils/dependencies.js +141 -0
  111. package/dist/utils/dependencies.js.map +1 -0
  112. package/dist/utils/github.d.ts +58 -0
  113. package/dist/utils/github.d.ts.map +1 -0
  114. package/dist/utils/github.js +198 -0
  115. package/dist/utils/github.js.map +1 -0
  116. package/dist/utils/platform.d.ts +54 -0
  117. package/dist/utils/platform.d.ts.map +1 -0
  118. package/dist/utils/platform.js +154 -0
  119. package/dist/utils/platform.js.map +1 -0
  120. package/dist/utils/plugins.d.ts +50 -0
  121. package/dist/utils/plugins.d.ts.map +1 -0
  122. package/dist/utils/plugins.js +115 -0
  123. package/dist/utils/plugins.js.map +1 -0
  124. package/dist/utils/prompt-templates.d.ts +47 -0
  125. package/dist/utils/prompt-templates.d.ts.map +1 -0
  126. package/dist/utils/prompt-templates.js +160 -0
  127. package/dist/utils/prompt-templates.js.map +1 -0
  128. package/dist/utils/skill-metadata.d.ts +55 -0
  129. package/dist/utils/skill-metadata.d.ts.map +1 -0
  130. package/dist/utils/skill-metadata.js +82 -0
  131. package/dist/utils/skill-metadata.js.map +1 -0
  132. package/dist/utils/skills.d.ts +27 -0
  133. package/dist/utils/skills.d.ts.map +1 -0
  134. package/dist/utils/skills.js +163 -0
  135. package/dist/utils/skills.js.map +1 -0
  136. 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,8 @@
1
+ /**
2
+ * Deps Command
3
+ *
4
+ * Check and manage skill dependencies.
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare const depsCommand: Command;
8
+ //# sourceMappingURL=deps.d.ts.map
@@ -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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KACzC,WAAW,CAAC,qCAAqC,CAAC;KAClD,QAAQ,CAAC,cAAc,EAAE,6CAA6C,CAAC;KACvE,MAAM,CAAC,YAAY,EAAE,sBAAsB,CAAC;KAC5C,MAAM,CAAC,eAAe,EAAE,8BAA8B,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,SAA6B,EAAE,OAG7C,EAAE,EAAE;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;IAExD,IAAI,CAAC;QACD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,SAAS,EAAE,CAAC;YACZ,uBAAuB;YACvB,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,MAAM,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnF,CAAC;aAAM,CAAC;YACJ,mBAAmB;YACnB,OAAO,CAAC,IAAI,GAAG,YAAY,SAAS,CAAC,MAAM,cAAc,CAAC;YAE1D,MAAM,OAAO,GAKR,EAAE,CAAC;YAER,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;oBACnC,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;iBACxC,CAAC,CAAC;YACP,CAAC;YAED,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,kBAAkB;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEvC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;YAChF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC;YAElF,2BAA2B;YAC3B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;gBACzD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACvB,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC/D,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,GAAG,CAAC;wBAC9B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,WAAW,CAAC;wBAC3C,CAAC,CAAC,EAAE,CAAC;oBACT,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC;wBAChC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,YAAY,CAAC;wBAChD,CAAC,CAAC,EAAE,CAAC;oBACT,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC;YAED,8BAA8B;YAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC1E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACf,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;wBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC5C,CAAC;gBACL,CAAC;YACL,CAAC;YAED,UAAU;YACV,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,WAAW,CAAC,MAAM,qCAAqC,CAAC,CAAC,CAAC;gBAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;YACtE,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAC;QAC7F,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAa,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAC/B,IAAY,EACZ,QAAgB,EAChB,eAAyB,EACzB,QAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvC,8BAA8B;IAC9B,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACpD,OAAO;QACX,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACvC,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAC7C,CAAC;gBACF,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACvC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACvC,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAC7C,CAAC;gBACF,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAED,UAAU;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE1C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACxD,CAAC;AACL,CAAC"}
@@ -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"}