@vibe-agent-toolkit/cli 0.1.26 → 0.1.28-rc.1
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/dist/bin.js +0 -2
- package/dist/bin.js.map +1 -1
- package/dist/commands/skills/build.d.ts.map +1 -1
- package/dist/commands/skills/build.js +8 -1
- package/dist/commands/skills/build.js.map +1 -1
- package/dist/commands/skills/index.d.ts.map +1 -1
- package/dist/commands/skills/index.js +3 -1
- package/dist/commands/skills/index.js.map +1 -1
- package/dist/commands/skills/install.d.ts +33 -0
- package/dist/commands/skills/install.d.ts.map +1 -0
- package/dist/commands/skills/install.js +298 -0
- package/dist/commands/skills/install.js.map +1 -0
- package/dist/commands/skills/list.d.ts +2 -0
- package/dist/commands/skills/list.d.ts.map +1 -1
- package/dist/commands/skills/list.js +66 -3
- package/dist/commands/skills/list.js.map +1 -1
- package/dist/commands/skills/source-resolvers.d.ts +39 -0
- package/dist/commands/skills/source-resolvers.d.ts.map +1 -0
- package/dist/commands/skills/source-resolvers.js +73 -0
- package/dist/commands/skills/source-resolvers.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +75 -1
- package/dist/commands/verify.js.map +1 -1
- package/docs/skills.md +136 -52
- package/package.json +11 -11
- package/dist/commands/install.d.ts +0 -33
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -297
- package/dist/commands/install.js.map +0 -1
package/dist/bin.js
CHANGED
|
@@ -10,7 +10,6 @@ import { createAuditCommand } from './commands/audit.js';
|
|
|
10
10
|
import { createBuildTopLevelCommand } from './commands/build.js';
|
|
11
11
|
import { createClaudeCommand } from './commands/claude/index.js';
|
|
12
12
|
import { doctorCommand } from './commands/doctor.js';
|
|
13
|
-
import { createInstallCommand } from './commands/install.js';
|
|
14
13
|
import { createMCPCommand } from './commands/mcp/index.js';
|
|
15
14
|
import { createRagCommand, showRagVerboseHelp } from './commands/rag/index.js';
|
|
16
15
|
import { createResourcesCommand, showResourcesVerboseHelp } from './commands/resources/index.js';
|
|
@@ -107,7 +106,6 @@ if (process.argv.includes('agent') && process.argv.includes('--verbose')) {
|
|
|
107
106
|
}
|
|
108
107
|
// Add command groups (audit is common, should be first)
|
|
109
108
|
program.addCommand(createAuditCommand());
|
|
110
|
-
program.addCommand(createInstallCommand());
|
|
111
109
|
program.addCommand(createResourcesCommand());
|
|
112
110
|
program.addCommand(createRagCommand());
|
|
113
111
|
program.addCommand(createAgentCommand());
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/build.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/build.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkBH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAaD,wBAAgB,kBAAkB,IAAI,OAAO,CAiD5C"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import { existsSync } from 'node:fs';
|
|
10
10
|
import { rm } from 'node:fs/promises';
|
|
11
11
|
import { dirname } from 'node:path';
|
|
12
|
-
import { packageSkills, validateSkillForPackaging, } from '@vibe-agent-toolkit/agent-skills';
|
|
12
|
+
import { mergeFilesConfig, packageSkills, validateSkillForPackaging, } from '@vibe-agent-toolkit/agent-skills';
|
|
13
13
|
import { safePath } from '@vibe-agent-toolkit/utils';
|
|
14
14
|
import { Command } from 'commander';
|
|
15
15
|
import { handleCommandError } from '../../utils/command-error.js';
|
|
@@ -132,6 +132,13 @@ function mergePackagingConfig(defaults, perSkill) {
|
|
|
132
132
|
result[key] = value;
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
+
// Special merge for files: additive with per-skill dest override
|
|
136
|
+
if (defaults?.files !== undefined || perSkill?.files !== undefined) {
|
|
137
|
+
const mergedFiles = mergeFilesConfig(defaults?.files, perSkill?.files);
|
|
138
|
+
if (mergedFiles.length > 0) {
|
|
139
|
+
result['files'] = mergedFiles;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
135
142
|
return result;
|
|
136
143
|
}
|
|
137
144
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/skills/build.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/skills/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/index.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/index.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,mBAAmB,IAAI,OAAO,CA4B7C"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Command } from 'commander';
|
|
9
9
|
import { createBuildCommand } from './build.js';
|
|
10
|
+
import { createInstallCommand } from './install.js';
|
|
10
11
|
import { listCommand } from './list.js';
|
|
11
12
|
import { createPackageCommand } from './package.js';
|
|
12
13
|
import { createValidateCommand } from './validate-command.js';
|
|
@@ -24,7 +25,7 @@ Examples:
|
|
|
24
25
|
Build & Install Workflow:
|
|
25
26
|
1. Validate: vat skills validate
|
|
26
27
|
2. Build: vat skills build (creates dist/.claude/plugins/)
|
|
27
|
-
3. Install: vat
|
|
28
|
+
3. Install: vat skills install <source> --target claude --scope project
|
|
28
29
|
|
|
29
30
|
For detailed command help:
|
|
30
31
|
$ vat skills <command> --help
|
|
@@ -32,6 +33,7 @@ For detailed command help:
|
|
|
32
33
|
command.addCommand(createValidateCommand());
|
|
33
34
|
command.addCommand(createBuildCommand());
|
|
34
35
|
command.addCommand(createPackageCommand());
|
|
36
|
+
command.addCommand(createInstallCommand());
|
|
35
37
|
command.addCommand(createListCommand());
|
|
36
38
|
return command;
|
|
37
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/skills/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,OAAO;SACJ,WAAW,CAAC,kEAAkE,CAAC;SAC/E,WAAW,CAAC,KAAK,CAAC;SAClB,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;CAazB,CAAC,CAAC;IAED,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO;SACJ,WAAW,CAAC,6CAA6C,CAAC;SAC1D,QAAQ,CAAC,QAAQ,EAAE,uDAAuD,CAAC;SAC3E,MAAM,CAAC,YAAY,EAAE,yCAAyC,CAAC;SAC/D,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,WAAW,CAAC;SACnB,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBzB,CAAC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/skills/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,OAAO;SACJ,WAAW,CAAC,kEAAkE,CAAC;SAC/E,WAAW,CAAC,KAAK,CAAC;SAClB,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;CAazB,CAAC,CAAC;IAED,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO;SACJ,WAAW,CAAC,6CAA6C,CAAC;SAC1D,QAAQ,CAAC,QAAQ,EAAE,uDAAuD,CAAC;SAC3E,MAAM,CAAC,YAAY,EAAE,yCAAyC,CAAC;SAC/D,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;SACpD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,WAAW,CAAC;SACnB,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBzB,CAAC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vat skills install — cross-platform flat skill install command.
|
|
3
|
+
*
|
|
4
|
+
* Installs a SKILL.md-based skill to one of 7 supported platforms, at either
|
|
5
|
+
* user scope (home dir) or project scope (CWD). Pre-verifies with validateSkill()
|
|
6
|
+
* before making any filesystem changes.
|
|
7
|
+
*
|
|
8
|
+
* Supports local directory, ZIP file, .tgz tarball, and npm: package sources.
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from 'commander';
|
|
11
|
+
/**
|
|
12
|
+
* Expected install failure (exit 1).
|
|
13
|
+
*/
|
|
14
|
+
export declare class InstallError extends Error {
|
|
15
|
+
constructor(message: string);
|
|
16
|
+
}
|
|
17
|
+
export interface InstallCommandOptions {
|
|
18
|
+
target: string;
|
|
19
|
+
scope: string;
|
|
20
|
+
/** Override skill name (single-skill sources only). */
|
|
21
|
+
name?: string;
|
|
22
|
+
force?: boolean;
|
|
23
|
+
dryRun?: boolean;
|
|
24
|
+
debug?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Current working directory. Passed explicitly for testability.
|
|
27
|
+
* Defaults to process.cwd() when invoked from the CLI.
|
|
28
|
+
*/
|
|
29
|
+
cwd?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function installCommand(source: string, options: InstallCommandOptions): Promise<void>;
|
|
32
|
+
export declare function createInstallCommand(): Command;
|
|
33
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAuND,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA2Ef;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAkD9C"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vat skills install — cross-platform flat skill install command.
|
|
3
|
+
*
|
|
4
|
+
* Installs a SKILL.md-based skill to one of 7 supported platforms, at either
|
|
5
|
+
* user scope (home dir) or project scope (CWD). Pre-verifies with validateSkill()
|
|
6
|
+
* before making any filesystem changes.
|
|
7
|
+
*
|
|
8
|
+
* Supports local directory, ZIP file, .tgz tarball, and npm: package sources.
|
|
9
|
+
*/
|
|
10
|
+
import { cpSync, existsSync, lstatSync, readdirSync, rmSync } from 'node:fs';
|
|
11
|
+
import { mkdtemp, rm } from 'node:fs/promises';
|
|
12
|
+
import { basename } from 'node:path';
|
|
13
|
+
import { validateSkill } from '@vibe-agent-toolkit/agent-skills';
|
|
14
|
+
import { mkdirSyncReal, normalizedTmpdir, resolveSkillTarget, safePath, toForwardSlash, SKILL_TARGET_NAMES, SKILL_SCOPE_NAMES, } from '@vibe-agent-toolkit/utils';
|
|
15
|
+
import AdmZip from 'adm-zip';
|
|
16
|
+
import { Command } from 'commander';
|
|
17
|
+
import { handleCommandError } from '../../utils/command-error.js';
|
|
18
|
+
import { createLogger } from '../../utils/logger.js';
|
|
19
|
+
import { extractTarballToTemp, findSkillsDirInNpmPackage, resolveNpmOrTarballSource, } from './source-resolvers.js';
|
|
20
|
+
/**
|
|
21
|
+
* Expected install failure (exit 1).
|
|
22
|
+
*/
|
|
23
|
+
export class InstallError extends Error {
|
|
24
|
+
constructor(message) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = 'InstallError';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Locate one or more skills under a source directory.
|
|
31
|
+
* Priority: SKILL.md at root wins over subdirectories.
|
|
32
|
+
*/
|
|
33
|
+
function discoverSkills(sourceDir) {
|
|
34
|
+
const rootSkillMd = safePath.join(sourceDir, 'SKILL.md');
|
|
35
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- caller validated source
|
|
36
|
+
if (existsSync(rootSkillMd)) {
|
|
37
|
+
return [{ dir: sourceDir, name: basename(sourceDir) }];
|
|
38
|
+
}
|
|
39
|
+
// Scan immediate subdirectories for any that contain a SKILL.md.
|
|
40
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- caller validated source
|
|
41
|
+
const entries = readdirSync(sourceDir, { withFileTypes: true });
|
|
42
|
+
const skills = [];
|
|
43
|
+
for (const entry of entries) {
|
|
44
|
+
if (!entry.isDirectory())
|
|
45
|
+
continue;
|
|
46
|
+
const candidate = safePath.join(sourceDir, entry.name);
|
|
47
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- derived from source
|
|
48
|
+
if (existsSync(safePath.join(candidate, 'SKILL.md'))) {
|
|
49
|
+
skills.push({ dir: candidate, name: entry.name });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (skills.length === 0) {
|
|
53
|
+
throw new InstallError(`No SKILL.md found at root or in subdirectories of: ${sourceDir}`);
|
|
54
|
+
}
|
|
55
|
+
return skills;
|
|
56
|
+
}
|
|
57
|
+
async function preVerifySkill(skillDir) {
|
|
58
|
+
const skillMdPath = safePath.join(skillDir, 'SKILL.md');
|
|
59
|
+
const result = await validateSkill({
|
|
60
|
+
skillPath: skillMdPath,
|
|
61
|
+
});
|
|
62
|
+
if (result.status === 'error') {
|
|
63
|
+
const issueSummary = (result.issues ?? [])
|
|
64
|
+
.filter((i) => i.severity === 'error')
|
|
65
|
+
.map((i) => ` - ${i.message}`)
|
|
66
|
+
.join('\n');
|
|
67
|
+
throw new InstallError(`Skill validation failed for ${skillDir}:\n${issueSummary || ' (no details)'}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function buildInstallPlan(skill, installDir, options) {
|
|
71
|
+
const installPath = safePath.join(installDir, skill.name);
|
|
72
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- install path derived from args
|
|
73
|
+
const alreadyExists = existsSync(installPath);
|
|
74
|
+
if (alreadyExists && !options.force && !options.dryRun) {
|
|
75
|
+
throw new InstallError(`Skill "${skill.name}" is already installed at ${installPath}. Use --force to overwrite.`);
|
|
76
|
+
}
|
|
77
|
+
return { skillDir: skill.dir, installPath, alreadyExists };
|
|
78
|
+
}
|
|
79
|
+
function executeInstallPlan(plan, options) {
|
|
80
|
+
if (options.dryRun)
|
|
81
|
+
return;
|
|
82
|
+
if (plan.alreadyExists && options.force) {
|
|
83
|
+
rmSync(plan.installPath, { recursive: true, force: true });
|
|
84
|
+
}
|
|
85
|
+
const parentDir = safePath.join(plan.installPath, '..');
|
|
86
|
+
mkdirSyncReal(parentDir, { recursive: true });
|
|
87
|
+
cpSync(plan.skillDir, plan.installPath, { recursive: true, force: true });
|
|
88
|
+
}
|
|
89
|
+
function emitYamlSummary(args) {
|
|
90
|
+
const statusLine = args.dryRun ? 'status: dry-run' : 'status: success';
|
|
91
|
+
process.stdout.write(`---\n${statusLine}\n`);
|
|
92
|
+
process.stdout.write(`source: ${toForwardSlash(args.source)}\n`);
|
|
93
|
+
process.stdout.write(`target: ${args.target}\n`);
|
|
94
|
+
process.stdout.write(`scope: ${args.scope}\n`);
|
|
95
|
+
process.stdout.write(`skillsInstalled: ${args.skills.length}\n`);
|
|
96
|
+
process.stdout.write(`skills:\n`);
|
|
97
|
+
for (const plan of args.skills) {
|
|
98
|
+
process.stdout.write(` - name: ${basename(plan.installPath)}\n`);
|
|
99
|
+
process.stdout.write(` installPath: ${toForwardSlash(plan.installPath)}\n`);
|
|
100
|
+
if (args.dryRun) {
|
|
101
|
+
process.stdout.write(` alreadyInstalled: ${plan.alreadyExists}\n`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
process.stdout.write(`duration: ${args.duration}ms\n`);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Extract a ZIP file to a temp directory and return the extraction root.
|
|
108
|
+
* Caller is responsible for cleanup.
|
|
109
|
+
*/
|
|
110
|
+
async function extractZipToTemp(zipPath) {
|
|
111
|
+
const tempDir = await mkdtemp(safePath.join(normalizedTmpdir(), 'vat-skills-install-zip-'));
|
|
112
|
+
const zip = new AdmZip(zipPath);
|
|
113
|
+
// eslint-disable-next-line sonarjs/no-unsafe-unzip -- extracted to a dedicated temp dir, not user-visible path
|
|
114
|
+
zip.extractAllTo(tempDir, /* overwrite */ true);
|
|
115
|
+
return tempDir;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Find a skill root inside an extracted ZIP. The ZIP may contain a single
|
|
119
|
+
* top-level directory (e.g. `my-skill/SKILL.md`) or have SKILL.md at the root.
|
|
120
|
+
*/
|
|
121
|
+
function findSkillRootInExtracted(extractedDir) {
|
|
122
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- temp path we just created
|
|
123
|
+
if (existsSync(safePath.join(extractedDir, 'SKILL.md'))) {
|
|
124
|
+
return extractedDir;
|
|
125
|
+
}
|
|
126
|
+
// Otherwise look for a single subdirectory containing SKILL.md
|
|
127
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- temp path
|
|
128
|
+
const entries = readdirSync(extractedDir, { withFileTypes: true });
|
|
129
|
+
for (const entry of entries) {
|
|
130
|
+
if (!entry.isDirectory())
|
|
131
|
+
continue;
|
|
132
|
+
const candidate = safePath.join(extractedDir, entry.name);
|
|
133
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- temp path
|
|
134
|
+
if (existsSync(safePath.join(candidate, 'SKILL.md'))) {
|
|
135
|
+
return candidate;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
throw new InstallError(`ZIP does not contain a SKILL.md at root or in a top-level directory: ${extractedDir}`);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Resolve the source argument to a local directory, extracting ZIPs/tarballs or
|
|
142
|
+
* downloading from npm as needed. Caller must clean up `tempDirs` after use.
|
|
143
|
+
*/
|
|
144
|
+
async function resolveSource(source) {
|
|
145
|
+
// npm: prefix — download from registry
|
|
146
|
+
if (source.startsWith('npm:')) {
|
|
147
|
+
const resolved = await resolveNpmOrTarballSource(source);
|
|
148
|
+
return { dir: resolved.skillsDir, tempDirs: resolved.tempDirs };
|
|
149
|
+
}
|
|
150
|
+
const sourcePath = safePath.resolve(source);
|
|
151
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- user-provided CLI arg
|
|
152
|
+
if (!existsSync(sourcePath)) {
|
|
153
|
+
throw new InstallError(`Source path not found: ${sourcePath}`);
|
|
154
|
+
}
|
|
155
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- validated above
|
|
156
|
+
const stat = lstatSync(sourcePath);
|
|
157
|
+
if (stat.isFile() && sourcePath.endsWith('.zip')) {
|
|
158
|
+
const extractRoot = await extractZipToTemp(sourcePath);
|
|
159
|
+
return { dir: findSkillRootInExtracted(extractRoot), tempDirs: [extractRoot] };
|
|
160
|
+
}
|
|
161
|
+
if (stat.isFile() && (sourcePath.endsWith('.tgz') || sourcePath.endsWith('.tar.gz'))) {
|
|
162
|
+
const { tempDir, packageDir } = await extractTarballToTemp(sourcePath);
|
|
163
|
+
return { dir: findSkillsDirInNpmPackage(packageDir), tempDirs: [tempDir] };
|
|
164
|
+
}
|
|
165
|
+
if (stat.isDirectory()) {
|
|
166
|
+
return { dir: sourcePath, tempDirs: [] };
|
|
167
|
+
}
|
|
168
|
+
throw new InstallError(`Source must be a directory, .zip, .tgz, or npm:@scope/package: ${sourcePath}`);
|
|
169
|
+
}
|
|
170
|
+
function applyNameOverride(discovered, name) {
|
|
171
|
+
// Prevent path traversal: reject names containing slashes, backslashes, or ..
|
|
172
|
+
if (name.includes('/') || name.includes('\\') || name.includes('..')) {
|
|
173
|
+
throw new InstallError(`Invalid skill name "${name}". Name must not contain path separators or "..".`);
|
|
174
|
+
}
|
|
175
|
+
if (discovered.length > 1) {
|
|
176
|
+
throw new InstallError(`--name is only valid for single-skill sources; found ${discovered.length} skills.`);
|
|
177
|
+
}
|
|
178
|
+
const first = discovered[0];
|
|
179
|
+
if (first) {
|
|
180
|
+
discovered[0] = { ...first, name };
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
export async function installCommand(source, options) {
|
|
184
|
+
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
185
|
+
const startTime = Date.now();
|
|
186
|
+
try {
|
|
187
|
+
const cwd = options.cwd ?? process.cwd();
|
|
188
|
+
const target = options.target;
|
|
189
|
+
const scope = options.scope;
|
|
190
|
+
// 1. Resolve source — dispatch by type (directory, ZIP, tgz, npm:).
|
|
191
|
+
// For display: use the raw source string for npm: prefixes, resolved path otherwise.
|
|
192
|
+
const displaySource = source.startsWith('npm:') ? source : safePath.resolve(source);
|
|
193
|
+
const resolved = await resolveSource(source);
|
|
194
|
+
try {
|
|
195
|
+
// 2. Discover skills in source.
|
|
196
|
+
const discovered = discoverSkills(resolved.dir);
|
|
197
|
+
// 3. Apply --name override (only valid for single-skill sources).
|
|
198
|
+
if (options.name !== undefined) {
|
|
199
|
+
applyNameOverride(discovered, options.name);
|
|
200
|
+
}
|
|
201
|
+
// 4. Pre-verify ALL skills before touching the filesystem.
|
|
202
|
+
for (const skill of discovered) {
|
|
203
|
+
await preVerifySkill(skill.dir);
|
|
204
|
+
}
|
|
205
|
+
// 5. Resolve install directory.
|
|
206
|
+
const installDir = resolveSkillTarget(target, scope, cwd);
|
|
207
|
+
// 6. Build and check install plans (detect conflicts before copying).
|
|
208
|
+
const plans = discovered.map((skill) => buildInstallPlan(skill, installDir, options));
|
|
209
|
+
// 7. Execute install (no-op if dry-run).
|
|
210
|
+
for (const plan of plans) {
|
|
211
|
+
executeInstallPlan(plan, options);
|
|
212
|
+
}
|
|
213
|
+
const duration = Date.now() - startTime;
|
|
214
|
+
emitYamlSummary({
|
|
215
|
+
source: displaySource,
|
|
216
|
+
target,
|
|
217
|
+
scope,
|
|
218
|
+
skills: plans,
|
|
219
|
+
dryRun: options.dryRun === true,
|
|
220
|
+
duration,
|
|
221
|
+
});
|
|
222
|
+
if (options.dryRun) {
|
|
223
|
+
logger.info(`\nDry-run complete: ${plans.length} skill(s) would be installed.`);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
logger.info(`\nInstalled ${plans.length} skill(s) to ${toForwardSlash(installDir)}`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
for (const dir of resolved.tempDirs) {
|
|
231
|
+
try {
|
|
232
|
+
await rm(dir, { recursive: true, force: true });
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
// best-effort cleanup
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
if (error instanceof InstallError) {
|
|
242
|
+
const duration = Date.now() - startTime;
|
|
243
|
+
const firstLine = error.message.split('\n')[0] ?? 'Unknown error';
|
|
244
|
+
logger.error(`Install failed: ${error.message}`);
|
|
245
|
+
process.stdout.write(`---\nstatus: error\nerror: ${firstLine}\nduration: ${duration}ms\n`);
|
|
246
|
+
throw error;
|
|
247
|
+
}
|
|
248
|
+
handleCommandError(error, logger, startTime, 'SkillsInstall');
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
export function createInstallCommand() {
|
|
252
|
+
const command = new Command('install');
|
|
253
|
+
command
|
|
254
|
+
.description('Install a skill to one of 7 platform targets (user or project scope)')
|
|
255
|
+
.argument('<source>', 'Source: local directory, ZIP file, or npm:@scope/package')
|
|
256
|
+
.requiredOption('--target <target>', `Platform target: ${SKILL_TARGET_NAMES.join(' | ')}`)
|
|
257
|
+
.requiredOption('--scope <scope>', `Install scope: ${SKILL_SCOPE_NAMES.join(' | ')}`)
|
|
258
|
+
.option('-n, --name <name>', 'Override skill name (single-skill sources only)')
|
|
259
|
+
.option('-f, --force', 'Overwrite existing skill')
|
|
260
|
+
.option('--dry-run', 'Preview install without writing files')
|
|
261
|
+
.action(async (source) => {
|
|
262
|
+
try {
|
|
263
|
+
const opts = command.optsWithGlobals();
|
|
264
|
+
await installCommand(source, opts);
|
|
265
|
+
}
|
|
266
|
+
catch (err) {
|
|
267
|
+
if (err instanceof InstallError) {
|
|
268
|
+
process.exit(1);
|
|
269
|
+
}
|
|
270
|
+
process.exit(2);
|
|
271
|
+
}
|
|
272
|
+
})
|
|
273
|
+
.addHelpText('after', `
|
|
274
|
+
Description:
|
|
275
|
+
Installs a fully-formed skill to a platform-specific directory. Both --target
|
|
276
|
+
and --scope are required — no defaults. Skills are pre-verified before any
|
|
277
|
+
filesystem changes; a validation failure means zero files written.
|
|
278
|
+
|
|
279
|
+
Targets (user path / project path):
|
|
280
|
+
claude ~/.claude/skills/ .claude/skills/
|
|
281
|
+
codex ~/.agents/skills/ .agents/skills/
|
|
282
|
+
copilot ~/.copilot/skills/ .github/skills/
|
|
283
|
+
gemini ~/.gemini/skills/ .gemini/skills/
|
|
284
|
+
cursor ~/.cursor/skills/ .cursor/skills/
|
|
285
|
+
windsurf ~/.codeium/windsurf/skills/ .windsurf/skills/
|
|
286
|
+
agents ~/.agents/skills/ .agents/skills/
|
|
287
|
+
|
|
288
|
+
Exit Codes:
|
|
289
|
+
0 - Install successful (or dry-run complete)
|
|
290
|
+
1 - Install error (validation failed, conflict without --force, bad source)
|
|
291
|
+
2 - System error
|
|
292
|
+
|
|
293
|
+
Example:
|
|
294
|
+
$ vat skills install ./dist/skills/my-skill --target claude --scope user
|
|
295
|
+
`);
|
|
296
|
+
return command;
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/commands/skills/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* List skills in project or user installation
|
|
3
3
|
*
|
|
4
4
|
* By default, lists project skills. Use --user flag to list user-installed skills.
|
|
5
|
+
* Supports npm:@scope/pkg and local .tgz/.tar.gz sources for inspecting packages
|
|
6
|
+
* without installing them.
|
|
5
7
|
*/
|
|
6
8
|
export interface SkillsListCommandOptions {
|
|
7
9
|
user?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/list.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/skills/list.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAwJD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAqDf"}
|
|
@@ -2,20 +2,26 @@
|
|
|
2
2
|
* List skills in project or user installation
|
|
3
3
|
*
|
|
4
4
|
* By default, lists project skills. Use --user flag to list user-installed skills.
|
|
5
|
+
* Supports npm:@scope/pkg and local .tgz/.tar.gz sources for inspecting packages
|
|
6
|
+
* without installing them.
|
|
5
7
|
*/
|
|
6
|
-
import
|
|
8
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
9
|
+
import { rm } from 'node:fs/promises';
|
|
10
|
+
import { basename, dirname } from 'node:path';
|
|
7
11
|
import { scan } from '@vibe-agent-toolkit/discovery';
|
|
12
|
+
import { safePath } from '@vibe-agent-toolkit/utils';
|
|
8
13
|
import { loadConfig } from '../../utils/config-loader.js';
|
|
9
14
|
import { createLogger } from '../../utils/logger.js';
|
|
10
15
|
import { discoverSkills, validateSkillFilename } from '../../utils/skill-discovery.js';
|
|
11
16
|
import { scanUserContext } from '../../utils/user-context-scanner.js';
|
|
17
|
+
import { isNpmOrTarballSource, resolveNpmOrTarballSource } from './source-resolvers.js';
|
|
12
18
|
/**
|
|
13
19
|
* Extract skill name from SKILL.md path
|
|
14
20
|
*/
|
|
15
21
|
function extractSkillName(skillPath) {
|
|
16
22
|
// Extract skill name from path (directory name containing SKILL.md)
|
|
17
|
-
const dir =
|
|
18
|
-
return
|
|
23
|
+
const dir = dirname(skillPath);
|
|
24
|
+
return basename(dir);
|
|
19
25
|
}
|
|
20
26
|
/**
|
|
21
27
|
* Convert discovered skills to DiscoveredSkill format with validation
|
|
@@ -80,9 +86,66 @@ function outputSkillsHuman(skills, logger, options) {
|
|
|
80
86
|
}
|
|
81
87
|
}
|
|
82
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Scan a dist/skills/ directory tree for SKILL.md files and return DiscoveredSkill[].
|
|
91
|
+
* Each immediate subdirectory that contains a SKILL.md is treated as one skill.
|
|
92
|
+
*/
|
|
93
|
+
function scanSkillsDir(skillsDir) {
|
|
94
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- temp path from trusted source
|
|
95
|
+
const entries = readdirSync(skillsDir, { withFileTypes: true });
|
|
96
|
+
const skills = [];
|
|
97
|
+
for (const entry of entries) {
|
|
98
|
+
if (!entry.isDirectory())
|
|
99
|
+
continue;
|
|
100
|
+
const candidate = safePath.join(skillsDir, entry.name);
|
|
101
|
+
const skillMd = safePath.join(candidate, 'SKILL.md');
|
|
102
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- derived from temp path
|
|
103
|
+
if (existsSync(skillMd)) {
|
|
104
|
+
const filenameCheck = validateSkillFilename(skillMd);
|
|
105
|
+
const skill = {
|
|
106
|
+
path: skillMd,
|
|
107
|
+
name: entry.name,
|
|
108
|
+
valid: filenameCheck.valid,
|
|
109
|
+
};
|
|
110
|
+
if (filenameCheck.message !== undefined) {
|
|
111
|
+
skill.warning = filenameCheck.message;
|
|
112
|
+
}
|
|
113
|
+
skills.push(skill);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return skills;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* List skills from an npm: or .tgz/.tar.gz source without installing.
|
|
120
|
+
*/
|
|
121
|
+
async function listFromNpmSource(source, logger, options) {
|
|
122
|
+
logger.info(`📋 Inspecting npm/tgz source: ${source}`);
|
|
123
|
+
const resolved = await resolveNpmOrTarballSource(source);
|
|
124
|
+
try {
|
|
125
|
+
const skills = scanSkillsDir(resolved.skillsDir);
|
|
126
|
+
outputSkillsYaml(skills, 'npm');
|
|
127
|
+
outputSkillsHuman(skills, logger, options);
|
|
128
|
+
process.exit(0);
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
for (const dir of resolved.tempDirs) {
|
|
132
|
+
try {
|
|
133
|
+
await rm(dir, { recursive: true, force: true });
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// best-effort cleanup
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
83
141
|
export async function listCommand(pathArg, options) {
|
|
84
142
|
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
85
143
|
try {
|
|
144
|
+
// npm: or .tgz/.tar.gz source — inspect without installing
|
|
145
|
+
if (pathArg !== undefined && isNpmOrTarballSource(pathArg)) {
|
|
146
|
+
await listFromNpmSource(pathArg, logger, options);
|
|
147
|
+
return; // process.exit(0) called inside listFromNpmSource
|
|
148
|
+
}
|
|
86
149
|
let skills;
|
|
87
150
|
let context;
|
|
88
151
|
if (options.user) {
|