skilldex-cli 0.1.0 → 1.0.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/README.md +147 -5
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +115 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/install-action.d.ts.map +1 -1
- package/dist/cli/commands/install-action.js +71 -0
- package/dist/cli/commands/install-action.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +4 -1
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list-action.d.ts.map +1 -1
- package/dist/cli/commands/list-action.js +5 -1
- package/dist/cli/commands/list-action.js.map +1 -1
- package/dist/cli/commands/publish.d.ts.map +1 -1
- package/dist/cli/commands/publish.js +118 -4
- package/dist/cli/commands/publish.js.map +1 -1
- package/dist/cli/commands/search-action.d.ts +7 -0
- package/dist/cli/commands/search-action.d.ts.map +1 -0
- package/dist/cli/commands/search-action.js +61 -0
- package/dist/cli/commands/search-action.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +14 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/skillset-init-action.d.ts +2 -0
- package/dist/cli/commands/skillset-init-action.d.ts.map +1 -0
- package/dist/cli/commands/skillset-init-action.js +65 -0
- package/dist/cli/commands/skillset-init-action.js.map +1 -0
- package/dist/cli/commands/skillset-install-action.d.ts +7 -0
- package/dist/cli/commands/skillset-install-action.d.ts.map +1 -0
- package/dist/cli/commands/skillset-install-action.js +174 -0
- package/dist/cli/commands/skillset-install-action.js.map +1 -0
- package/dist/cli/commands/skillset-list-action.d.ts +6 -0
- package/dist/cli/commands/skillset-list-action.d.ts.map +1 -0
- package/dist/cli/commands/skillset-list-action.js +46 -0
- package/dist/cli/commands/skillset-list-action.js.map +1 -0
- package/dist/cli/commands/skillset-publish-action.d.ts +7 -0
- package/dist/cli/commands/skillset-publish-action.d.ts.map +1 -0
- package/dist/cli/commands/skillset-publish-action.js +113 -0
- package/dist/cli/commands/skillset-publish-action.js.map +1 -0
- package/dist/cli/commands/skillset-uninstall-action.d.ts +6 -0
- package/dist/cli/commands/skillset-uninstall-action.d.ts.map +1 -0
- package/dist/cli/commands/skillset-uninstall-action.js +24 -0
- package/dist/cli/commands/skillset-uninstall-action.js.map +1 -0
- package/dist/cli/commands/skillset-update-action.d.ts +7 -0
- package/dist/cli/commands/skillset-update-action.d.ts.map +1 -0
- package/dist/cli/commands/skillset-update-action.js +84 -0
- package/dist/cli/commands/skillset-update-action.js.map +1 -0
- package/dist/cli/commands/skillset-validate-action.d.ts +4 -0
- package/dist/cli/commands/skillset-validate-action.d.ts.map +1 -0
- package/dist/cli/commands/skillset-validate-action.js +49 -0
- package/dist/cli/commands/skillset-validate-action.js.map +1 -0
- package/dist/cli/commands/skillset.d.ts +3 -0
- package/dist/cli/commands/skillset.d.ts.map +1 -0
- package/dist/cli/commands/skillset.js +70 -0
- package/dist/cli/commands/skillset.js.map +1 -0
- package/dist/cli/commands/update-action.d.ts +7 -0
- package/dist/cli/commands/update-action.d.ts.map +1 -0
- package/dist/cli/commands/update-action.js +65 -0
- package/dist/cli/commands/update-action.js.map +1 -0
- package/dist/cli/commands/update.d.ts +3 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +13 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +9 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/core/config.d.ts +18 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +42 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/installer.d.ts +2 -0
- package/dist/core/installer.d.ts.map +1 -1
- package/dist/core/installer.js.map +1 -1
- package/dist/core/manifest.d.ts +3 -1
- package/dist/core/manifest.d.ts.map +1 -1
- package/dist/core/manifest.js +27 -0
- package/dist/core/manifest.js.map +1 -1
- package/dist/core/resolver.d.ts.map +1 -1
- package/dist/core/resolver.js +2 -0
- package/dist/core/resolver.js.map +1 -1
- package/dist/core/skillset-installer.d.ts +21 -0
- package/dist/core/skillset-installer.d.ts.map +1 -0
- package/dist/core/skillset-installer.js +116 -0
- package/dist/core/skillset-installer.js.map +1 -0
- package/dist/core/skillset-validator.d.ts +4 -0
- package/dist/core/skillset-validator.d.ts.map +1 -0
- package/dist/core/skillset-validator.js +272 -0
- package/dist/core/skillset-validator.js.map +1 -0
- package/dist/core/suggest-agent.d.ts.map +1 -1
- package/dist/core/suggest-agent.js +23 -22
- package/dist/core/suggest-agent.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +111 -6
- package/dist/mcp/server.js.map +1 -1
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/sources/github.d.ts.map +1 -1
- package/dist/registry/sources/github.js +11 -3
- package/dist/registry/sources/github.js.map +1 -1
- package/dist/registry/sources/registry.d.ts +108 -0
- package/dist/registry/sources/registry.d.ts.map +1 -0
- package/dist/registry/sources/registry.js +124 -0
- package/dist/registry/sources/registry.js.map +1 -0
- package/dist/types/manifest.d.ts +13 -0
- package/dist/types/manifest.d.ts.map +1 -1
- package/dist/types/scope.d.ts +1 -0
- package/dist/types/scope.d.ts.map +1 -1
- package/dist/types/skillset.d.ts +26 -0
- package/dist/types/skillset.d.ts.map +1 -0
- package/dist/types/skillset.js +2 -0
- package/dist/types/skillset.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import ora from 'ora';
|
|
2
|
+
import { uninstallSkillset } from '../../core/skillset-installer.js';
|
|
3
|
+
import { printJson, printError, printSuccess } from '../ui/output.js';
|
|
4
|
+
export async function runSkillsetUninstall(name, options) {
|
|
5
|
+
const spinner = options.json ? null : ora(`Uninstalling skillset "${name}"...`).start();
|
|
6
|
+
try {
|
|
7
|
+
await uninstallSkillset(name, options.scope);
|
|
8
|
+
if (spinner)
|
|
9
|
+
spinner.succeed(`Uninstalled skillset "${name}" from ${options.scope} scope`);
|
|
10
|
+
if (options.json) {
|
|
11
|
+
printJson({ uninstalled: true, skillsetName: name, scope: options.scope });
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
printSuccess(`Skillset "${name}" and its skills removed from ${options.scope} scope`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
catch (e) {
|
|
18
|
+
if (spinner)
|
|
19
|
+
spinner.fail();
|
|
20
|
+
printError(e instanceof Error ? e.message : String(e));
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=skillset-uninstall-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillset-uninstall-action.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset-uninstall-action.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAErE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,OAA6C;IAE7C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;IAEvF,IAAI,CAAC;QACH,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAE5C,IAAI,OAAO;YAAE,OAAO,CAAC,OAAO,CAAC,yBAAyB,IAAI,UAAU,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;QAE1F,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;QAC5E,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,aAAa,IAAI,iCAAiC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAA;QACvF,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,EAAE,CAAA;QAC3B,UAAU,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ScopeLevel } from '../../types/scope.js';
|
|
2
|
+
export declare function runSkillsetUpdate(skillsetName: string | undefined, options: {
|
|
3
|
+
scope: ScopeLevel;
|
|
4
|
+
all: boolean;
|
|
5
|
+
json: boolean;
|
|
6
|
+
}): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=skillset-update-action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillset-update-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset-update-action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAMtD,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1D,OAAO,CAAC,IAAI,CAAC,CAsFf"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import ora from 'ora';
|
|
2
|
+
import { resolveScope } from '../../core/resolver.js';
|
|
3
|
+
import { readManifest } from '../../core/manifest.js';
|
|
4
|
+
import { printJson, printError, printSuccess, printWarning, printInfo } from '../ui/output.js';
|
|
5
|
+
export async function runSkillsetUpdate(skillsetName, options) {
|
|
6
|
+
if (!skillsetName && !options.all) {
|
|
7
|
+
printError('Specify a skillset name or pass --all to update all skillsets in scope.');
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
const scopeConfig = await resolveScope(options.scope);
|
|
11
|
+
const manifest = await readManifest(scopeConfig);
|
|
12
|
+
const skillsets = Object.values(manifest.skillsets);
|
|
13
|
+
const toUpdate = options.all
|
|
14
|
+
? skillsets
|
|
15
|
+
: skillsets.filter(s => s.name === skillsetName);
|
|
16
|
+
if (toUpdate.length === 0) {
|
|
17
|
+
const msg = options.all
|
|
18
|
+
? `No skillsets installed at ${options.scope} scope.`
|
|
19
|
+
: `Skillset "${skillsetName}" is not installed at ${options.scope} scope.`;
|
|
20
|
+
printError(msg);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
const results = [];
|
|
24
|
+
for (const skillset of toUpdate) {
|
|
25
|
+
if (!skillset.sourceUrl) {
|
|
26
|
+
printWarning(`"${skillset.name}" has no source URL (local skillset) — skipping.`);
|
|
27
|
+
results.push({ name: skillset.name, status: 'skipped', detail: 'no source URL' });
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const spinner = options.json ? null : ora(`Updating "${skillset.name}" from ${skillset.sourceUrl}...`).start();
|
|
31
|
+
const { mkdtemp, rm } = await import('node:fs/promises');
|
|
32
|
+
const path = await import('node:path');
|
|
33
|
+
const os = await import('node:os');
|
|
34
|
+
const { simpleGit } = await import('simple-git');
|
|
35
|
+
const { parseGitUrl } = await import('../../registry/sources/github.js');
|
|
36
|
+
const { installSkillsetFromPath } = await import('../../core/skillset-installer.js');
|
|
37
|
+
const tmpDir = await mkdtemp(path.join(os.tmpdir(), 'skilldex-skillset-update-'));
|
|
38
|
+
try {
|
|
39
|
+
const parsed = parseGitUrl(`git+${skillset.sourceUrl}`);
|
|
40
|
+
const git = simpleGit();
|
|
41
|
+
const cloneOpts = parsed.branch ? ['--branch', parsed.branch, '--depth', '1'] : ['--depth', '1'];
|
|
42
|
+
await git.clone(parsed.repoUrl, tmpDir, cloneOpts);
|
|
43
|
+
const searchRoot = parsed.subPath ? path.join(tmpDir, parsed.subPath) : tmpDir;
|
|
44
|
+
const result = await installSkillsetFromPath(searchRoot, {
|
|
45
|
+
scope: options.scope,
|
|
46
|
+
force: true,
|
|
47
|
+
sourceUrl: skillset.sourceUrl,
|
|
48
|
+
});
|
|
49
|
+
const allSkills = [
|
|
50
|
+
...result.embeddedResults.map(r => r.skillName),
|
|
51
|
+
...result.remoteResults.map(r => r.skillName),
|
|
52
|
+
];
|
|
53
|
+
const detail = `score: ${result.validation.score}/100${allSkills.length ? `, skills: ${allSkills.join(', ')}` : ''}`;
|
|
54
|
+
if (spinner)
|
|
55
|
+
spinner.succeed(`Updated "${skillset.name}" (${detail})`);
|
|
56
|
+
results.push({ name: skillset.name, status: 'updated', detail });
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
if (spinner)
|
|
60
|
+
spinner.fail();
|
|
61
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
62
|
+
printError(`Failed to update "${skillset.name}": ${msg}`);
|
|
63
|
+
results.push({ name: skillset.name, status: 'error', detail: msg });
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
await rm(tmpDir, { recursive: true, force: true });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (options.json) {
|
|
70
|
+
printJson(results);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const updated = results.filter(r => r.status === 'updated').length;
|
|
74
|
+
const failed = results.filter(r => r.status === 'error').length;
|
|
75
|
+
const skipped = results.filter(r => r.status === 'skipped').length;
|
|
76
|
+
console.log('');
|
|
77
|
+
if (updated > 0)
|
|
78
|
+
printSuccess(`${updated} skillset(s) updated`);
|
|
79
|
+
if (skipped > 0)
|
|
80
|
+
printInfo(`${skipped} skillset(s) skipped`);
|
|
81
|
+
if (failed > 0)
|
|
82
|
+
printWarning(`${failed} skillset(s) failed`);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=skillset-update-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillset-update-action.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset-update-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillset-validate-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset-validate-action.ts"],"names":[],"mappings":"AAIA,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAiDf"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { validateSkillset } from '../../core/skillset-validator.js';
|
|
2
|
+
import { printJson, printError, printSuccess, printWarning } from '../ui/output.js';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
export async function runSkillsetValidate(skillsetPath, options) {
|
|
5
|
+
try {
|
|
6
|
+
const result = await validateSkillset(skillsetPath);
|
|
7
|
+
if (options.json) {
|
|
8
|
+
printJson(result);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
for (const diag of result.diagnostics) {
|
|
12
|
+
const loc = diag.line !== undefined ? `line ${diag.line}: ` : '';
|
|
13
|
+
const severity = diag.severity === 'error'
|
|
14
|
+
? chalk.red('error ')
|
|
15
|
+
: diag.severity === 'warning'
|
|
16
|
+
? chalk.yellow('warn ')
|
|
17
|
+
: chalk.green('pass ');
|
|
18
|
+
console.log(` ${severity} ${loc}${diag.message}`);
|
|
19
|
+
}
|
|
20
|
+
console.log('');
|
|
21
|
+
const scoreColor = result.score >= 80 ? chalk.green : result.score >= 50 ? chalk.yellow : chalk.red;
|
|
22
|
+
console.log(`Format conformance score: ${scoreColor(String(result.score))}/100`);
|
|
23
|
+
console.log(`Validated against: skillset-format v${result.specVersion}`);
|
|
24
|
+
if (result.embeddedSkills.length > 0) {
|
|
25
|
+
console.log(`Embedded skills: ${result.embeddedSkills.join(', ')}`);
|
|
26
|
+
}
|
|
27
|
+
if (result.remoteSkills.length > 0) {
|
|
28
|
+
console.log(`Remote skills: ${result.remoteSkills.map((s) => s.name).join(', ')}`);
|
|
29
|
+
}
|
|
30
|
+
if (result.errorCount > 0) {
|
|
31
|
+
console.log('');
|
|
32
|
+
printError(`${result.errorCount} error(s) found — skillset cannot be installed`);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
else if (result.warnCount > 0) {
|
|
36
|
+
console.log('');
|
|
37
|
+
printWarning(`${result.warnCount} warning(s) found`);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
console.log('');
|
|
41
|
+
printSuccess('Skillset is valid');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
printError(e instanceof Error ? e.message : String(e));
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=skillset-validate-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillset-validate-action.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset-validate-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillset.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/skillset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2EvD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export function registerSkillset(program) {
|
|
3
|
+
const skillset = new Command('skillset').description('Manage skillsets — bundles of skills for a specific agent');
|
|
4
|
+
skillset
|
|
5
|
+
.command('init [name]')
|
|
6
|
+
.description('Scaffold a new skillset directory with a SKILLSET.md template')
|
|
7
|
+
.action(async (name) => {
|
|
8
|
+
const { runSkillsetInit } = await import('./skillset-init-action.js');
|
|
9
|
+
await runSkillsetInit(name);
|
|
10
|
+
});
|
|
11
|
+
skillset
|
|
12
|
+
.command('install <source>')
|
|
13
|
+
.description('Install a skillset from a local path, git URL, or registry')
|
|
14
|
+
.option('-s, --scope <scope>', 'Installation scope: global, shared, or project', 'project')
|
|
15
|
+
.option('-f, --force', 'Overwrite if already installed', false)
|
|
16
|
+
.option('--json', 'Output as JSON')
|
|
17
|
+
.action(async (source, options) => {
|
|
18
|
+
const { runSkillsetInstall } = await import('./skillset-install-action.js');
|
|
19
|
+
await runSkillsetInstall(source, options);
|
|
20
|
+
});
|
|
21
|
+
skillset
|
|
22
|
+
.command('publish')
|
|
23
|
+
.description('Publish a skillset to the Skilldex registry')
|
|
24
|
+
.option('--source-url <url>', 'GitHub URL of the skillset (auto-detected from git remote if omitted)')
|
|
25
|
+
.option('--tags <tags>', 'Comma-separated tags (e.g. forensics,ctf)')
|
|
26
|
+
.option('--update', 'Re-fetch and re-score an already-published skillset')
|
|
27
|
+
.option('--json', 'Output as JSON')
|
|
28
|
+
.action(async (options) => {
|
|
29
|
+
const { runSkillsetPublish } = await import('./skillset-publish-action.js');
|
|
30
|
+
await runSkillsetPublish(options);
|
|
31
|
+
});
|
|
32
|
+
skillset
|
|
33
|
+
.command('list')
|
|
34
|
+
.description('List installed skillsets')
|
|
35
|
+
.option('-s, --scope <scope>', 'Filter by scope: global, shared, or project')
|
|
36
|
+
.option('--json', 'Output as JSON')
|
|
37
|
+
.action(async (options) => {
|
|
38
|
+
const { runSkillsetList } = await import('./skillset-list-action.js');
|
|
39
|
+
await runSkillsetList(options);
|
|
40
|
+
});
|
|
41
|
+
skillset
|
|
42
|
+
.command('validate [path]')
|
|
43
|
+
.description('Validate a skillset directory structure and score SKILLSET.md')
|
|
44
|
+
.option('--json', 'Output as JSON')
|
|
45
|
+
.action(async (skillsetPath, options) => {
|
|
46
|
+
const { runSkillsetValidate } = await import('./skillset-validate-action.js');
|
|
47
|
+
await runSkillsetValidate(skillsetPath ?? process.cwd(), options);
|
|
48
|
+
});
|
|
49
|
+
skillset
|
|
50
|
+
.command('uninstall <name>')
|
|
51
|
+
.description('Remove an installed skillset and its skills')
|
|
52
|
+
.option('-s, --scope <scope>', 'Scope to uninstall from: global, shared, or project', 'project')
|
|
53
|
+
.option('--json', 'Output as JSON')
|
|
54
|
+
.action(async (name, options) => {
|
|
55
|
+
const { runSkillsetUninstall } = await import('./skillset-uninstall-action.js');
|
|
56
|
+
await runSkillsetUninstall(name, options);
|
|
57
|
+
});
|
|
58
|
+
skillset
|
|
59
|
+
.command('update [skillset-name]')
|
|
60
|
+
.description('Re-fetch and reinstall an installed skillset from its source URL')
|
|
61
|
+
.option('-s, --scope <scope>', 'Scope to update in: global, shared, or project', 'project')
|
|
62
|
+
.option('--all', 'Update all skillsets in the specified scope')
|
|
63
|
+
.option('--json', 'Output as JSON')
|
|
64
|
+
.action(async (skillsetName, options) => {
|
|
65
|
+
const { runSkillsetUpdate } = await import('./skillset-update-action.js');
|
|
66
|
+
await runSkillsetUpdate(skillsetName, options);
|
|
67
|
+
});
|
|
68
|
+
program.addCommand(skillset);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=skillset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillset.js","sourceRoot":"","sources":["../../../src/cli/commands/skillset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-action.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update-action.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAMtD,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1D,OAAO,CAAC,IAAI,CAAC,CAgEf"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import ora from 'ora';
|
|
2
|
+
import { resolveScope } from '../../core/resolver.js';
|
|
3
|
+
import { readManifest } from '../../core/manifest.js';
|
|
4
|
+
import { printJson, printError, printSuccess, printWarning, printInfo } from '../ui/output.js';
|
|
5
|
+
export async function runUpdate(skillName, options) {
|
|
6
|
+
if (!skillName && !options.all) {
|
|
7
|
+
printError('Specify a skill name or pass --all to update all skills in scope.');
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
const scopeConfig = await resolveScope(options.scope);
|
|
11
|
+
const manifest = await readManifest(scopeConfig);
|
|
12
|
+
const skills = Object.values(manifest.skills);
|
|
13
|
+
const toUpdate = options.all
|
|
14
|
+
? skills
|
|
15
|
+
: skills.filter(s => s.name === skillName);
|
|
16
|
+
if (toUpdate.length === 0) {
|
|
17
|
+
const msg = options.all
|
|
18
|
+
? `No skills installed at ${options.scope} scope.`
|
|
19
|
+
: `Skill "${skillName}" is not installed at ${options.scope} scope.`;
|
|
20
|
+
printError(msg);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
const results = [];
|
|
24
|
+
for (const skill of toUpdate) {
|
|
25
|
+
if (!skill.sourceUrl) {
|
|
26
|
+
printWarning(`"${skill.name}" has no source URL (local skill) — skipping.`);
|
|
27
|
+
results.push({ name: skill.name, status: 'skipped', detail: 'no source URL' });
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const spinner = options.json ? null : ora(`Updating "${skill.name}" from ${skill.sourceUrl}...`).start();
|
|
31
|
+
try {
|
|
32
|
+
const { installFromGitUrl } = await import('../../registry/sources/github.js');
|
|
33
|
+
const result = await installFromGitUrl(`git+${skill.sourceUrl}`, scopeConfig, {
|
|
34
|
+
scope: options.scope,
|
|
35
|
+
force: true,
|
|
36
|
+
sourceUrl: skill.sourceUrl,
|
|
37
|
+
});
|
|
38
|
+
if (spinner)
|
|
39
|
+
spinner.succeed(`Updated "${skill.name}" (score: ${result.validation.score}/100)`);
|
|
40
|
+
results.push({ name: skill.name, status: 'updated', detail: `score: ${result.validation.score}/100` });
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
if (spinner)
|
|
44
|
+
spinner.fail();
|
|
45
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
46
|
+
printError(`Failed to update "${skill.name}": ${msg}`);
|
|
47
|
+
results.push({ name: skill.name, status: 'error', detail: msg });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (options.json) {
|
|
51
|
+
printJson(results);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const updated = results.filter(r => r.status === 'updated').length;
|
|
55
|
+
const failed = results.filter(r => r.status === 'error').length;
|
|
56
|
+
const skipped = results.filter(r => r.status === 'skipped').length;
|
|
57
|
+
console.log('');
|
|
58
|
+
if (updated > 0)
|
|
59
|
+
printSuccess(`${updated} skill(s) updated`);
|
|
60
|
+
if (skipped > 0)
|
|
61
|
+
printInfo(`${skipped} skill(s) skipped`);
|
|
62
|
+
if (failed > 0)
|
|
63
|
+
printWarning(`${failed} skill(s) failed`);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=update-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-action.js","sourceRoot":"","sources":["../../../src/cli/commands/update-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgBrD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function registerUpdate(program) {
|
|
2
|
+
program
|
|
3
|
+
.command('update [skill-name]')
|
|
4
|
+
.description('Re-fetch and reinstall an installed skill from its source URL')
|
|
5
|
+
.option('--scope <scope>', 'Scope to update in: global, shared, or project', 'project')
|
|
6
|
+
.option('--all', 'Update all skills in the specified scope')
|
|
7
|
+
.option('--json', 'Output as JSON')
|
|
8
|
+
.action(async (skillName, options) => {
|
|
9
|
+
const { runUpdate } = await import('./update-action.js');
|
|
10
|
+
await runUpdate(skillName, options);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,EAAE,SAAS,CAAC;SACtF,MAAM,CAAC,OAAO,EAAE,0CAA0C,CAAC;SAC3D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CACL,KAAK,EACH,SAA6B,EAC7B,OAA2D,EAC3D,EAAE;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;QACxD,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC,CACF,CAAA;AACL,CAAC"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYnC,wBAAgB,SAAS,IAAI,OAAO,CA8BnC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -5,19 +5,27 @@ import { registerList } from './commands/list.js';
|
|
|
5
5
|
import { registerValidate } from './commands/validate.js';
|
|
6
6
|
import { registerSuggest } from './commands/suggest.js';
|
|
7
7
|
import { registerPublish } from './commands/publish.js';
|
|
8
|
+
import { registerSearch } from './commands/search.js';
|
|
9
|
+
import { registerSkillset } from './commands/skillset.js';
|
|
10
|
+
import { registerUpdate } from './commands/update.js';
|
|
11
|
+
import { registerConfig } from './commands/config.js';
|
|
8
12
|
export function createCli() {
|
|
9
13
|
const program = new Command();
|
|
10
14
|
program
|
|
11
15
|
.name('skillpm')
|
|
12
16
|
.description('Package manager for Claude skill packages')
|
|
13
|
-
.version('
|
|
17
|
+
.version('1.0.0')
|
|
14
18
|
.option('--no-color', 'Disable colored output');
|
|
15
19
|
registerInstall(program);
|
|
16
20
|
registerUninstall(program);
|
|
21
|
+
registerUpdate(program);
|
|
17
22
|
registerList(program);
|
|
18
23
|
registerValidate(program);
|
|
19
24
|
registerSuggest(program);
|
|
20
25
|
registerPublish(program);
|
|
26
|
+
registerSearch(program);
|
|
27
|
+
registerSkillset(program);
|
|
28
|
+
registerConfig(program);
|
|
21
29
|
// Hidden MCP server command
|
|
22
30
|
program
|
|
23
31
|
.command('mcp', { hidden: true })
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAE7B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CAAC,2CAA2C,CAAC;SACxD,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAA;IAEjD,eAAe,CAAC,OAAO,CAAC,CAAA;IACxB,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC1B,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACzB,eAAe,CAAC,OAAO,CAAC,CAAA;IACxB,eAAe,CAAC,OAAO,CAAC,CAAA;IACxB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACzB,cAAc,CAAC,OAAO,CAAC,CAAA;IAEvB,4BAA4B;IAC5B,OAAO;SACJ,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAChC,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC3D,MAAM,cAAc,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IAEJ,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface SkilldexConfig {
|
|
2
|
+
registryUrl?: string;
|
|
3
|
+
token?: string;
|
|
4
|
+
anthropicApiKey?: string;
|
|
5
|
+
defaultScope?: 'global' | 'shared' | 'project';
|
|
6
|
+
}
|
|
7
|
+
export declare function readConfig(): Promise<SkilldexConfig>;
|
|
8
|
+
export declare function writeConfig(config: SkilldexConfig): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Get a config value. Environment variables always win over config file values.
|
|
11
|
+
* Keys map as follows:
|
|
12
|
+
* registryUrl → SKILLDEX_REGISTRY_URL
|
|
13
|
+
* token → SKILLDEX_TOKEN
|
|
14
|
+
* anthropicApiKey → ANTHROPIC_API_KEY
|
|
15
|
+
* defaultScope → SKILLDEX_DEFAULT_SCOPE
|
|
16
|
+
*/
|
|
17
|
+
export declare function getConfigValue<K extends keyof SkilldexConfig>(key: K): Promise<SkilldexConfig[K] | undefined>;
|
|
18
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;CAC/C;AAMD,wBAAsB,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAO1D;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,MAAM,cAAc,EACjE,GAAG,EAAE,CAAC,GACL,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAaxC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
function getConfigPath() {
|
|
5
|
+
return path.join(os.homedir(), '.skilldex', 'config.json');
|
|
6
|
+
}
|
|
7
|
+
export async function readConfig() {
|
|
8
|
+
try {
|
|
9
|
+
const raw = await readFile(getConfigPath(), 'utf8');
|
|
10
|
+
return JSON.parse(raw);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return {};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export async function writeConfig(config) {
|
|
17
|
+
const configPath = getConfigPath();
|
|
18
|
+
await mkdir(path.dirname(configPath), { recursive: true });
|
|
19
|
+
await writeFile(configPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get a config value. Environment variables always win over config file values.
|
|
23
|
+
* Keys map as follows:
|
|
24
|
+
* registryUrl → SKILLDEX_REGISTRY_URL
|
|
25
|
+
* token → SKILLDEX_TOKEN
|
|
26
|
+
* anthropicApiKey → ANTHROPIC_API_KEY
|
|
27
|
+
* defaultScope → SKILLDEX_DEFAULT_SCOPE
|
|
28
|
+
*/
|
|
29
|
+
export async function getConfigValue(key) {
|
|
30
|
+
const envMap = {
|
|
31
|
+
registryUrl: 'SKILLDEX_REGISTRY_URL',
|
|
32
|
+
token: 'SKILLDEX_TOKEN',
|
|
33
|
+
anthropicApiKey: 'ANTHROPIC_API_KEY',
|
|
34
|
+
defaultScope: 'SKILLDEX_DEFAULT_SCOPE',
|
|
35
|
+
};
|
|
36
|
+
const envVal = process.env[envMap[key]];
|
|
37
|
+
if (envVal !== undefined)
|
|
38
|
+
return envVal;
|
|
39
|
+
const config = await readConfig();
|
|
40
|
+
return config[key];
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAA;AASxB,SAAS,aAAa;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAA;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAA;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAsB;IACtD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1D,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;AAC7E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAM;IAEN,MAAM,MAAM,GAAyC;QACnD,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE,gBAAgB;QACvB,eAAe,EAAE,mBAAmB;QACpC,YAAY,EAAE,wBAAwB;KACvC,CAAA;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IACvC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAA2B,CAAA;IAE5D,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;IACjC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;AACpB,CAAC"}
|
package/dist/core/installer.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export interface InstallOptions {
|
|
|
5
5
|
force?: boolean;
|
|
6
6
|
dryRun?: boolean;
|
|
7
7
|
sourceUrl?: string;
|
|
8
|
+
/** Called when a repo contains multiple skill folders. Return the name of the folder to install. */
|
|
9
|
+
onMultipleSkills?: (names: string[]) => Promise<string>;
|
|
8
10
|
}
|
|
9
11
|
export interface InstallResult {
|
|
10
12
|
skillName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/core/installer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAKzD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,UAAU,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/core/installer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAKzD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,UAAU,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oGAAoG;IACpG,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CACxD;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,UAAU,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,gBAAgB,CAAA;IAC5B,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC,CA4DxB;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/core/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,IAAI,MAAM,WAAW,CAAA;AAI5B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/core/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/core/manifest.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { SkillManifest, InstalledSkill } from '../types/manifest.js';
|
|
1
|
+
import type { SkillManifest, InstalledSkill, InstalledSkillset } from '../types/manifest.js';
|
|
2
2
|
import type { ScopeConfig } from '../types/scope.js';
|
|
3
3
|
export declare function createEmptyManifest(scope: SkillManifest['scope']): SkillManifest;
|
|
4
4
|
export declare function readManifest(scopeConfig: ScopeConfig): Promise<SkillManifest>;
|
|
5
5
|
export declare function writeManifest(scopeConfig: ScopeConfig, manifest: SkillManifest): Promise<void>;
|
|
6
6
|
export declare function addSkillToManifest(scopeConfig: ScopeConfig, skill: InstalledSkill): Promise<void>;
|
|
7
7
|
export declare function removeSkillFromManifest(scopeConfig: ScopeConfig, skillName: string): Promise<void>;
|
|
8
|
+
export declare function addSkillsetToManifest(scopeConfig: ScopeConfig, skillset: InstalledSkillset): Promise<void>;
|
|
9
|
+
export declare function removeSkillsetFromManifest(scopeConfig: ScopeConfig, skillsetName: string): Promise<void>;
|
|
8
10
|
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAoCpD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAQhF;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAWnF;AAED,wBAAsB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAMpG;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAOf"}
|