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,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Install Command (Unified)
|
|
3
|
+
*
|
|
4
|
+
* Supports installation from:
|
|
5
|
+
* - GitHub: owner/repo, github.com/owner/repo
|
|
6
|
+
* - Local: ./path, ~/path, /absolute/path
|
|
7
|
+
* - Registry: skill-name
|
|
8
|
+
*
|
|
9
|
+
* Merged from install.ts and add.js for a unified experience.
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
import fs from 'fs-extra';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import ora from 'ora';
|
|
15
|
+
import chalk from 'chalk';
|
|
16
|
+
import { IDE_CONFIG, SUPPORTED_IDES, getInstallPath } from '../config/ides.js';
|
|
17
|
+
import { fetchSkillMeta } from '../registry.js';
|
|
18
|
+
import { writeSkillMetadata, buildRegistryMetadata, buildGitMetadata, buildLocalMetadata } from '../utils/skill-metadata.js';
|
|
19
|
+
import { isGitHubRepo, parseRepoString, normalizeGitHubUrl, findSkillFile, downloadSkillFiles } from '../utils/github.js';
|
|
20
|
+
import { isLocalPath, expandTilde, getBestIDE } from '../utils/platform.js';
|
|
21
|
+
export const installCommand = new Command('install')
|
|
22
|
+
.argument('<source>', 'Skill source: name, owner/repo, or local path')
|
|
23
|
+
.description('Install a skill from registry, GitHub, or local path')
|
|
24
|
+
.option('-i, --ide <ide>', `Target IDE (${SUPPORTED_IDES.join(', ')})`)
|
|
25
|
+
.option('-s, --scope <scope>', 'Installation scope: project or global', 'global')
|
|
26
|
+
.option('--all', 'Install to all supported IDEs')
|
|
27
|
+
.option('-y, --yes', 'Skip prompts, accept defaults')
|
|
28
|
+
.option('--sync', 'Auto-sync after installation')
|
|
29
|
+
.option('--with-deps', 'Install with dependencies')
|
|
30
|
+
.action(async (source, options) => {
|
|
31
|
+
const spinner = ora(`Installing from ${source}...`).start();
|
|
32
|
+
try {
|
|
33
|
+
// Determine target IDEs
|
|
34
|
+
let targetIDEs = [];
|
|
35
|
+
if (options.all) {
|
|
36
|
+
targetIDEs = SUPPORTED_IDES;
|
|
37
|
+
}
|
|
38
|
+
else if (options.ide) {
|
|
39
|
+
if (!SUPPORTED_IDES.includes(options.ide)) {
|
|
40
|
+
spinner.fail(chalk.red(`Unknown IDE: ${options.ide}`));
|
|
41
|
+
console.log(chalk.yellow(`\nSupported IDEs: ${SUPPORTED_IDES.join(', ')}`));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
targetIDEs = [options.ide];
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Auto-detect IDE
|
|
48
|
+
const detectedIDE = getBestIDE(options.scope === 'project' ? 'project' : 'global');
|
|
49
|
+
targetIDEs = [detectedIDE];
|
|
50
|
+
spinner.text = `Detected IDE: ${IDE_CONFIG[detectedIDE].name}`;
|
|
51
|
+
}
|
|
52
|
+
const scope = (options.scope === 'project' ? 'project' : 'global');
|
|
53
|
+
// Determine source type and install accordingly
|
|
54
|
+
let result;
|
|
55
|
+
if (isLocalPath(source)) {
|
|
56
|
+
result = await installFromLocal(source, targetIDEs, scope, spinner);
|
|
57
|
+
}
|
|
58
|
+
else if (isGitHubRepo(source)) {
|
|
59
|
+
result = await installFromGitHub(source, targetIDEs, scope, spinner);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
result = await installFromRegistry(source, targetIDEs, scope, spinner);
|
|
63
|
+
}
|
|
64
|
+
if (result.installed.length === 0) {
|
|
65
|
+
spinner.fail(chalk.red(`Failed to install ${source}`));
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
spinner.succeed(chalk.green(`Installed ${result.skillName}`));
|
|
69
|
+
// Show summary
|
|
70
|
+
console.log(chalk.dim('\n📦 Installation Summary'));
|
|
71
|
+
console.log(chalk.dim('─'.repeat(50)));
|
|
72
|
+
console.log(` ${chalk.bold('Skill:')} ${result.skillName}`);
|
|
73
|
+
console.log(` ${chalk.bold('Source:')} ${result.sourceType}`);
|
|
74
|
+
console.log(` ${chalk.bold('IDEs:')} ${result.installed.join(', ')}`);
|
|
75
|
+
console.log(chalk.dim('─'.repeat(50)));
|
|
76
|
+
// Tips
|
|
77
|
+
console.log(chalk.dim('\n💡 Next steps:'));
|
|
78
|
+
if (!options.sync) {
|
|
79
|
+
console.log(chalk.dim(' killer sync - Make skills discoverable by AI'));
|
|
80
|
+
}
|
|
81
|
+
console.log(chalk.dim(' killer list - View all installed skills'));
|
|
82
|
+
console.log(chalk.dim(' killer update - Update skills from source'));
|
|
83
|
+
// Auto-sync if requested
|
|
84
|
+
if (options.sync) {
|
|
85
|
+
console.log('');
|
|
86
|
+
const syncSpinner = ora('Auto-syncing skills...').start();
|
|
87
|
+
try {
|
|
88
|
+
const { execSync } = await import('child_process');
|
|
89
|
+
execSync('npx killer-skills sync', { stdio: 'pipe' });
|
|
90
|
+
syncSpinner.succeed(chalk.green('Skills synced to AGENTS.md'));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
syncSpinner.warn(chalk.yellow('Auto-sync failed. Run manually: killer sync'));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
spinner.fail(chalk.red(`Failed to install ${source}`));
|
|
99
|
+
console.error(chalk.red(`\nError: ${error.message}`));
|
|
100
|
+
if (error.message.includes('404') || error.message.includes('Not Found')) {
|
|
101
|
+
console.log(chalk.yellow('\n💡 Make sure the repository exists and contains a SKILL.md file.'));
|
|
102
|
+
}
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
/**
|
|
107
|
+
* Install from local path
|
|
108
|
+
*/
|
|
109
|
+
async function installFromLocal(source, targetIDEs, scope, spinner) {
|
|
110
|
+
const localPath = path.resolve(expandTilde(source));
|
|
111
|
+
if (!fs.existsSync(localPath)) {
|
|
112
|
+
throw new Error(`Path not found: ${localPath}`);
|
|
113
|
+
}
|
|
114
|
+
const skillMdPath = fs.statSync(localPath).isDirectory()
|
|
115
|
+
? path.join(localPath, 'SKILL.md')
|
|
116
|
+
: localPath;
|
|
117
|
+
if (!fs.existsSync(skillMdPath)) {
|
|
118
|
+
throw new Error(`No SKILL.md found at ${localPath}`);
|
|
119
|
+
}
|
|
120
|
+
const skillDir = path.dirname(skillMdPath);
|
|
121
|
+
const skillName = path.basename(skillDir);
|
|
122
|
+
spinner.text = `Installing ${skillName} from local path...`;
|
|
123
|
+
const installed = [];
|
|
124
|
+
for (const ide of targetIDEs) {
|
|
125
|
+
const config = IDE_CONFIG[ide];
|
|
126
|
+
try {
|
|
127
|
+
const installPath = getInstallPath(ide, scope, skillName);
|
|
128
|
+
// Copy entire skill directory
|
|
129
|
+
await fs.ensureDir(installPath);
|
|
130
|
+
await fs.copy(skillDir, installPath, { overwrite: true });
|
|
131
|
+
// Write metadata
|
|
132
|
+
const metadata = buildLocalMetadata(skillName, localPath);
|
|
133
|
+
writeSkillMetadata(installPath, metadata);
|
|
134
|
+
installed.push(config.name);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Skip if path not available
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return { skillName, sourceType: 'local', installed };
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Install from GitHub
|
|
144
|
+
*/
|
|
145
|
+
async function installFromGitHub(source, targetIDEs, scope, spinner) {
|
|
146
|
+
spinner.text = 'Parsing repository...';
|
|
147
|
+
const normalizedSource = normalizeGitHubUrl(source);
|
|
148
|
+
const { owner, repo } = parseRepoString(normalizedSource);
|
|
149
|
+
spinner.text = `Finding skill in ${owner}/${repo}...`;
|
|
150
|
+
const skillFile = await findSkillFile(owner, repo);
|
|
151
|
+
const skillDir = path.dirname(skillFile.path);
|
|
152
|
+
const skillName = skillDir === '.' ? repo : path.basename(skillDir);
|
|
153
|
+
spinner.text = `Downloading ${skillName}...`;
|
|
154
|
+
const basePath = skillDir === '.' ? '' : skillDir;
|
|
155
|
+
const files = await downloadSkillFiles(owner, repo, basePath);
|
|
156
|
+
spinner.text = `Installing ${skillName}...`;
|
|
157
|
+
const installed = [];
|
|
158
|
+
for (const ide of targetIDEs) {
|
|
159
|
+
const config = IDE_CONFIG[ide];
|
|
160
|
+
try {
|
|
161
|
+
const installPath = getInstallPath(ide, scope, skillName);
|
|
162
|
+
await fs.ensureDir(installPath);
|
|
163
|
+
// Write all downloaded files
|
|
164
|
+
for (const file of files) {
|
|
165
|
+
const filePath = path.join(installPath, file.path);
|
|
166
|
+
await fs.ensureDir(path.dirname(filePath));
|
|
167
|
+
await fs.writeFile(filePath, file.content);
|
|
168
|
+
}
|
|
169
|
+
// Write metadata
|
|
170
|
+
const repoUrl = `https://github.com/${owner}/${repo}`;
|
|
171
|
+
const metadata = buildGitMetadata(skillName, repoUrl, basePath || undefined);
|
|
172
|
+
writeSkillMetadata(installPath, metadata);
|
|
173
|
+
installed.push(config.name);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// Skip if path not available
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return { skillName, sourceType: 'github', installed };
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Install from registry
|
|
183
|
+
*/
|
|
184
|
+
async function installFromRegistry(skillName, targetIDEs, scope, spinner) {
|
|
185
|
+
spinner.text = 'Checking skill registry...';
|
|
186
|
+
const meta = await fetchSkillMeta(skillName);
|
|
187
|
+
let installed = [];
|
|
188
|
+
if (meta && meta.repo) {
|
|
189
|
+
// Found in registry - download from GitHub
|
|
190
|
+
spinner.text = `Found ${skillName} in registry, downloading...`;
|
|
191
|
+
const result = await installFromGitHub(meta.repo, targetIDEs, scope, spinner);
|
|
192
|
+
// Update metadata to mark as registry source
|
|
193
|
+
for (const ide of targetIDEs) {
|
|
194
|
+
try {
|
|
195
|
+
const installPath = getInstallPath(ide, scope, skillName);
|
|
196
|
+
const metadata = buildRegistryMetadata(skillName, meta.repo);
|
|
197
|
+
writeSkillMetadata(installPath, metadata);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Skip
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
installed = result.installed;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
// Not in registry - create placeholder
|
|
207
|
+
spinner.text = `Creating placeholder for ${skillName}...`;
|
|
208
|
+
const skillContent = `---
|
|
209
|
+
name: ${skillName}
|
|
210
|
+
description: Installed via Killer-Skills CLI
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
# ${skillName}
|
|
214
|
+
|
|
215
|
+
This skill was installed by Killer-Skills.
|
|
216
|
+
`;
|
|
217
|
+
for (const ide of targetIDEs) {
|
|
218
|
+
const config = IDE_CONFIG[ide];
|
|
219
|
+
try {
|
|
220
|
+
const installPath = getInstallPath(ide, scope, skillName);
|
|
221
|
+
await fs.ensureDir(installPath);
|
|
222
|
+
await fs.writeFile(path.join(installPath, 'SKILL.md'), skillContent);
|
|
223
|
+
const metadata = buildRegistryMetadata(skillName, '');
|
|
224
|
+
writeSkillMetadata(installPath, metadata);
|
|
225
|
+
installed.push(config.name);
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
// Skip if path not available
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return { skillName, sourceType: 'registry', installed };
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* List Command (Refactored)
|
|
3
|
+
*
|
|
4
|
+
* Lists all installed skills across all supported IDEs.
|
|
5
|
+
* Uses the unified skills discovery from utils/skills.ts.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare const listCommand: Command;
|
|
9
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SAoElB,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* List Command (Refactored)
|
|
3
|
+
*
|
|
4
|
+
* Lists all installed skills across all supported IDEs.
|
|
5
|
+
* Uses the unified skills discovery from utils/skills.ts.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { findAllSkills } from '../utils/skills.js';
|
|
10
|
+
import { hasSkillMetadata, readSkillMetadata } from '../utils/skill-metadata.js';
|
|
11
|
+
import { dirname } from 'path';
|
|
12
|
+
export const listCommand = new Command('list')
|
|
13
|
+
.description('List all installed skills')
|
|
14
|
+
.option('-i, --ide <ide>', 'Filter by specific IDE')
|
|
15
|
+
.option('--verbose', 'Show detailed information including paths')
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
console.log(chalk.bold('\n📦 Installed Skills\n'));
|
|
18
|
+
const skills = findAllSkills(options.ide);
|
|
19
|
+
if (skills.length === 0) {
|
|
20
|
+
console.log(chalk.yellow('No skills installed yet.'));
|
|
21
|
+
console.log('');
|
|
22
|
+
console.log('Install skills:');
|
|
23
|
+
console.log(chalk.cyan(' killer install <skill-name>'));
|
|
24
|
+
console.log(chalk.cyan(' killer install owner/repo'));
|
|
25
|
+
console.log('');
|
|
26
|
+
console.log('Or run:');
|
|
27
|
+
console.log(chalk.cyan(' killer sync'));
|
|
28
|
+
console.log(chalk.dim(' to make existing skills discoverable by AI'));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Sort: project skills first, then global, alphabetically within each
|
|
32
|
+
const sorted = skills.sort((a, b) => {
|
|
33
|
+
if (a.location !== b.location) {
|
|
34
|
+
return a.location === 'project' ? -1 : 1;
|
|
35
|
+
}
|
|
36
|
+
return a.name.localeCompare(b.name);
|
|
37
|
+
});
|
|
38
|
+
// Group by location
|
|
39
|
+
const projectSkills = sorted.filter(s => s.location === 'project');
|
|
40
|
+
const globalSkills = sorted.filter(s => s.location === 'global');
|
|
41
|
+
// Display project skills
|
|
42
|
+
if (projectSkills.length > 0) {
|
|
43
|
+
console.log(chalk.blue.bold('Project Skills'));
|
|
44
|
+
console.log(chalk.dim('─'.repeat(50)));
|
|
45
|
+
for (const skill of projectSkills) {
|
|
46
|
+
displaySkill(skill, options.verbose);
|
|
47
|
+
}
|
|
48
|
+
console.log('');
|
|
49
|
+
}
|
|
50
|
+
// Display global skills
|
|
51
|
+
if (globalSkills.length > 0) {
|
|
52
|
+
console.log(chalk.dim.bold('Global Skills'));
|
|
53
|
+
console.log(chalk.dim('─'.repeat(50)));
|
|
54
|
+
for (const skill of globalSkills) {
|
|
55
|
+
displaySkill(skill, options.verbose);
|
|
56
|
+
}
|
|
57
|
+
console.log('');
|
|
58
|
+
}
|
|
59
|
+
// Summary
|
|
60
|
+
console.log(chalk.dim('─'.repeat(50)));
|
|
61
|
+
console.log(chalk.dim(`Summary: ${chalk.blue(`${projectSkills.length} project`)}, ` +
|
|
62
|
+
`${chalk.white(`${globalSkills.length} global`)} ` +
|
|
63
|
+
`(${skills.length} total)`));
|
|
64
|
+
// Tips
|
|
65
|
+
console.log('');
|
|
66
|
+
console.log(chalk.dim('💡 Commands:'));
|
|
67
|
+
console.log(chalk.dim(` killer sync - Make skills discoverable by AI`));
|
|
68
|
+
console.log(chalk.dim(` killer read <s> - Read skill content`));
|
|
69
|
+
console.log(chalk.dim(` killer manage - Interactively manage skills`));
|
|
70
|
+
});
|
|
71
|
+
/**
|
|
72
|
+
* Display a single skill entry
|
|
73
|
+
*/
|
|
74
|
+
function displaySkill(skill, verbose) {
|
|
75
|
+
const locationBadge = skill.location === 'project'
|
|
76
|
+
? chalk.blue('●')
|
|
77
|
+
: chalk.dim('○');
|
|
78
|
+
console.log(` ${locationBadge} ${chalk.bold(skill.name)}`);
|
|
79
|
+
if (skill.description) {
|
|
80
|
+
// Truncate long descriptions
|
|
81
|
+
const desc = skill.description.length > 60
|
|
82
|
+
? skill.description.slice(0, 57) + '...'
|
|
83
|
+
: skill.description;
|
|
84
|
+
console.log(chalk.dim(` ${desc}`));
|
|
85
|
+
}
|
|
86
|
+
if (verbose) {
|
|
87
|
+
console.log(chalk.dim(` Path: ${skill.path}`));
|
|
88
|
+
// Check for metadata
|
|
89
|
+
const skillDir = dirname(skill.path);
|
|
90
|
+
if (hasSkillMetadata(skillDir)) {
|
|
91
|
+
const metadata = readSkillMetadata(skillDir);
|
|
92
|
+
if (metadata) {
|
|
93
|
+
console.log(chalk.dim(` Source: ${metadata.sourceType} (${metadata.source})`));
|
|
94
|
+
console.log(chalk.dim(` Installed: ${new Date(metadata.installedAt).toLocaleDateString()}`));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
console.log(chalk.yellow(` ⚠ No metadata (re-install to enable updates)`));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
console.log('');
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage.d.ts","sourceRoot":"","sources":["../../src/commands/manage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,aAAa,SAwHpB,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manage Command
|
|
3
|
+
*
|
|
4
|
+
* Interactively manage (remove) installed skills.
|
|
5
|
+
* Inspired by OpenSkills' manage command.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { rmSync } from 'fs';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import ora from 'ora';
|
|
11
|
+
import { checkbox, confirm } from '@inquirer/prompts';
|
|
12
|
+
import { findAllSkills, getSkillBaseDir } from '../utils/skills.js';
|
|
13
|
+
export const manageCommand = new Command('manage')
|
|
14
|
+
.description('Interactively manage installed skills')
|
|
15
|
+
.option('--remove-all', 'Remove all skills (use with caution)')
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
const skills = findAllSkills();
|
|
18
|
+
if (skills.length === 0) {
|
|
19
|
+
console.log(chalk.yellow('No skills installed.'));
|
|
20
|
+
console.log('');
|
|
21
|
+
console.log('Install skills:');
|
|
22
|
+
console.log(chalk.cyan(' killer install <skill-name>'));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Handle --remove-all flag
|
|
26
|
+
if (options.removeAll) {
|
|
27
|
+
const confirmed = await confirm({
|
|
28
|
+
message: chalk.red(`Are you sure you want to remove ALL ${skills.length} skills?`),
|
|
29
|
+
default: false,
|
|
30
|
+
});
|
|
31
|
+
if (confirmed) {
|
|
32
|
+
const spinner = ora('Removing all skills...').start();
|
|
33
|
+
let removed = 0;
|
|
34
|
+
for (const skill of skills) {
|
|
35
|
+
try {
|
|
36
|
+
const skillDir = getSkillBaseDir(skill.path);
|
|
37
|
+
rmSync(skillDir, { recursive: true, force: true });
|
|
38
|
+
removed++;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Skip errors
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
spinner.succeed(chalk.green(`Removed ${removed} skill(s)`));
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.log(chalk.yellow('Cancelled.'));
|
|
48
|
+
}
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// Sort: project first, then global
|
|
52
|
+
const sorted = skills.sort((a, b) => {
|
|
53
|
+
if (a.location !== b.location) {
|
|
54
|
+
return a.location === 'project' ? -1 : 1;
|
|
55
|
+
}
|
|
56
|
+
return a.name.localeCompare(b.name);
|
|
57
|
+
});
|
|
58
|
+
try {
|
|
59
|
+
// Create choices for checkbox
|
|
60
|
+
const choices = sorted.map(skill => ({
|
|
61
|
+
name: formatSkillChoice(skill),
|
|
62
|
+
value: skill,
|
|
63
|
+
checked: false, // Nothing checked by default
|
|
64
|
+
}));
|
|
65
|
+
console.log('');
|
|
66
|
+
console.log(chalk.dim('Use ↑/↓ to navigate, Space to select, Enter to confirm'));
|
|
67
|
+
console.log('');
|
|
68
|
+
const toRemove = await checkbox({
|
|
69
|
+
message: 'Select skills to remove',
|
|
70
|
+
choices,
|
|
71
|
+
pageSize: 15,
|
|
72
|
+
});
|
|
73
|
+
if (toRemove.length === 0) {
|
|
74
|
+
console.log(chalk.yellow('No skills selected for removal.'));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// Confirm removal
|
|
78
|
+
const confirmed = await confirm({
|
|
79
|
+
message: `Remove ${toRemove.length} skill(s)?`,
|
|
80
|
+
default: true,
|
|
81
|
+
});
|
|
82
|
+
if (!confirmed) {
|
|
83
|
+
console.log(chalk.yellow('Cancelled.'));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
// Remove selected skills
|
|
87
|
+
const spinner = ora('Removing skills...').start();
|
|
88
|
+
let removed = 0;
|
|
89
|
+
for (const skill of toRemove) {
|
|
90
|
+
try {
|
|
91
|
+
const skillDir = getSkillBaseDir(skill.path);
|
|
92
|
+
rmSync(skillDir, { recursive: true, force: true });
|
|
93
|
+
removed++;
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.log(chalk.red(` Failed to remove ${skill.name}: ${error}`));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
spinner.succeed(chalk.green(`Removed ${removed} skill(s)`));
|
|
100
|
+
// Show what was removed
|
|
101
|
+
console.log('');
|
|
102
|
+
console.log(chalk.dim('Removed:'));
|
|
103
|
+
for (const skill of toRemove) {
|
|
104
|
+
const locationLabel = skill.location === 'project'
|
|
105
|
+
? chalk.blue('project')
|
|
106
|
+
: chalk.dim('global');
|
|
107
|
+
console.log(` ${chalk.red('✕')} ${skill.name} (${locationLabel})`);
|
|
108
|
+
}
|
|
109
|
+
// Reminder to sync
|
|
110
|
+
console.log('');
|
|
111
|
+
console.log(chalk.dim('💡 Run `killer sync` to update AGENTS.md'));
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
// Handle Ctrl+C gracefully
|
|
115
|
+
if (error.name === 'ExitPromptError') {
|
|
116
|
+
console.log(chalk.yellow('\n\nCancelled by user'));
|
|
117
|
+
process.exit(0);
|
|
118
|
+
}
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
/**
|
|
123
|
+
* Format skill choice for display
|
|
124
|
+
*/
|
|
125
|
+
function formatSkillChoice(skill) {
|
|
126
|
+
const locationLabel = skill.location === 'project'
|
|
127
|
+
? chalk.blue('(project)')
|
|
128
|
+
: chalk.dim('(global)');
|
|
129
|
+
const name = chalk.bold(skill.name.padEnd(25));
|
|
130
|
+
return `${name} ${locationLabel}`;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=manage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage.js","sourceRoot":"","sources":["../../src/commands/manage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC7C,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,cAAc,EAAE,sCAAsC,CAAC;KAC9D,MAAM,CAAC,KAAK,EAAE,OAAgC,EAAE,EAAE;IAC/C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACzD,OAAO;IACX,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC5B,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,uCAAuC,MAAM,CAAC,MAAM,UAAU,CAAC;YAClF,OAAO,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;YACtD,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnD,OAAO,EAAE,CAAC;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACL,cAAc;gBAClB,CAAC;YACL,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,OAAO,WAAW,CAAC,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO;IACX,CAAC;IAED,mCAAmC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACD,8BAA8B;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC;YAC9B,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,KAAK,EAAE,6BAA6B;SAChD,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC;YAC5B,OAAO,EAAE,yBAAyB;YAClC,OAAO;YACP,QAAQ,EAAE,EAAE;SACf,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC7D,OAAO;QACX,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC5B,OAAO,EAAE,UAAU,QAAQ,CAAC,MAAM,YAAY;YAC9C,OAAO,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YACxC,OAAO;QACX,CAAC;QAED,yBAAyB;QACzB,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QAClD,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7C,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnD,OAAO,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;YACzE,CAAC;QACL,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,OAAO,WAAW,CAAC,CAAC,CAAC;QAE5D,wBAAwB;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS;gBAC9C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBACvB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,GAAG,CAAC,CAAC;QACxE,CAAC;QAED,mBAAmB;QACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;IAEvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,2BAA2B;QAC3B,IAAK,KAAe,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAA8D;IACrF,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS;QAC9C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAE5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE/C,OAAO,GAAG,IAAI,IAAI,aAAa,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outdated Command
|
|
3
|
+
*
|
|
4
|
+
* Check for outdated skills that can be updated.
|
|
5
|
+
* Compares installed skills against their source repositories.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare const outdatedCommand: Command;
|
|
9
|
+
//# sourceMappingURL=outdated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outdated.d.ts","sourceRoot":"","sources":["../../src/commands/outdated.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,eAAO,MAAM,eAAe,SAmItB,CAAC"}
|