@skillctl/cli 0.2.0 → 0.3.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/dist/commands/import-cmd.d.ts.map +1 -1
- package/dist/commands/import-cmd.js +94 -12
- package/dist/commands/import-cmd.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +28 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/prompt.d.ts +3 -0
- package/dist/lib/prompt.d.ts.map +1 -0
- package/dist/lib/prompt.js +17 -0
- package/dist/lib/prompt.js.map +1 -0
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/import-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"import-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/import-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyIrD"}
|
|
@@ -1,15 +1,100 @@
|
|
|
1
|
-
import { executeImport } from '@skillctl/import';
|
|
1
|
+
import { executeImport, planImportFromProject } from '@skillctl/import';
|
|
2
2
|
import { handleCommandError } from '../lib/errors.js';
|
|
3
|
+
import { confirm } from '../lib/prompt.js';
|
|
4
|
+
function printPlan(plan) {
|
|
5
|
+
for (const item of plan) {
|
|
6
|
+
const extra = [
|
|
7
|
+
item.specifier ? `spec=${item.specifier}` : '',
|
|
8
|
+
item.localPath ? `path=${item.localPath}` : '',
|
|
9
|
+
item.originalPath ? `from=${item.originalPath}` : '',
|
|
10
|
+
item.note ? item.note : '',
|
|
11
|
+
]
|
|
12
|
+
.filter(Boolean)
|
|
13
|
+
.join(' — ');
|
|
14
|
+
console.log(` ${item.name}: ${item.action}${extra ? ` (${extra})` : ''}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function printDiscoverySummary(discovered) {
|
|
18
|
+
if (!discovered.sources.length) {
|
|
19
|
+
console.log('No agent skill directories with skills found in this project.');
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
console.log('Discovered skill sources in project:');
|
|
23
|
+
for (const src of discovered.sources) {
|
|
24
|
+
console.log(` ${src.projectPath} (${src.adapterName}) → ${src.skills.length} skill(s)`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
3
27
|
export function registerImport(program) {
|
|
4
28
|
const importCmd = program
|
|
5
29
|
.command('import')
|
|
6
|
-
.description('Import skills from npx skills or
|
|
30
|
+
.description('Import skills from npx skills, Python skillctl, or agent directories in the project');
|
|
31
|
+
importCmd
|
|
32
|
+
.command('from-project')
|
|
33
|
+
.description('Import skills from detected agent directories (.codex/skills, .claude/skills, .agents/skills, ...)')
|
|
34
|
+
.option('--dry-run', 'show migration plan only')
|
|
35
|
+
.option('--yes, -y', 'skip confirmation prompts')
|
|
36
|
+
.option('--sync', 'sync agent links after import')
|
|
37
|
+
.option('--no-manifest', 'update lock only (do not write agent-skills.json)')
|
|
38
|
+
.option('--lock-only', 'alias for --no-manifest')
|
|
39
|
+
.option('--sources <list>', 'comma-separated adapter ids (codex,claude-code,cursor,...)')
|
|
40
|
+
.action(async (options) => {
|
|
41
|
+
try {
|
|
42
|
+
const cwd = process.cwd();
|
|
43
|
+
const sources = options.sources
|
|
44
|
+
? String(options.sources)
|
|
45
|
+
.split(',')
|
|
46
|
+
.map((s) => s.trim())
|
|
47
|
+
.filter(Boolean)
|
|
48
|
+
: undefined;
|
|
49
|
+
const { plan, discovered } = await planImportFromProject(cwd, { sources });
|
|
50
|
+
if (options.dryRun) {
|
|
51
|
+
printDiscoverySummary(discovered);
|
|
52
|
+
console.log('Migration plan:');
|
|
53
|
+
printPlan(plan);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (!discovered.sources.length) {
|
|
57
|
+
console.log('No agent skill directories with skills found in this project.');
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
printDiscoverySummary(discovered);
|
|
61
|
+
if (!options.yes) {
|
|
62
|
+
const proceed = await confirm('Import these skills into the canonical store?', true);
|
|
63
|
+
if (!proceed) {
|
|
64
|
+
console.log('Import cancelled.');
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const result = await executeImport({
|
|
69
|
+
source: 'project',
|
|
70
|
+
cwd,
|
|
71
|
+
yes: options.yes,
|
|
72
|
+
sync: options.sync,
|
|
73
|
+
lockOnly: options.lockOnly || options.noManifest,
|
|
74
|
+
sources,
|
|
75
|
+
});
|
|
76
|
+
console.log(`Imported: ${result.imported.join(', ') || '(none)'}`);
|
|
77
|
+
if (result.skipped.length)
|
|
78
|
+
console.log(`Skipped: ${result.skipped.join(', ')}`);
|
|
79
|
+
if (result.errors.length) {
|
|
80
|
+
console.error('Errors:', result.errors.join('; '));
|
|
81
|
+
process.exitCode = 1;
|
|
82
|
+
}
|
|
83
|
+
if (result.imported.length && !options.sync) {
|
|
84
|
+
console.log('Manifest and lock updated. Run `skillctl sync` to refresh agent links.');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
handleCommandError(err, 'import');
|
|
89
|
+
}
|
|
90
|
+
});
|
|
7
91
|
importCmd
|
|
8
92
|
.command('from-npx')
|
|
9
93
|
.description('Migrate from npx skills (skills-lock.json / .agents/skills)')
|
|
10
94
|
.option('--dry-run', 'show migration plan only')
|
|
11
95
|
.option('--yes', 'skip confirmation prompts')
|
|
12
|
-
.option('--
|
|
96
|
+
.option('--sync', 'sync agent links after import')
|
|
97
|
+
.option('--adopt', 'deprecated alias for --sync')
|
|
13
98
|
.option('--write-manifest', 'update agent-skills.json with imported specs')
|
|
14
99
|
.action(async (options) => {
|
|
15
100
|
try {
|
|
@@ -17,14 +102,12 @@ export function registerImport(program) {
|
|
|
17
102
|
source: 'npx',
|
|
18
103
|
dryRun: options.dryRun,
|
|
19
104
|
yes: options.yes,
|
|
20
|
-
|
|
105
|
+
sync: options.sync || options.adopt,
|
|
21
106
|
writeManifest: options.writeManifest,
|
|
22
107
|
});
|
|
23
108
|
if (options.dryRun) {
|
|
24
109
|
console.log('Migration plan:');
|
|
25
|
-
|
|
26
|
-
console.log(` ${item.name}: ${item.action}${item.specifier ? ` (${item.specifier})` : ''}${item.note ? ` — ${item.note}` : ''}`);
|
|
27
|
-
}
|
|
110
|
+
printPlan(result.plan);
|
|
28
111
|
return;
|
|
29
112
|
}
|
|
30
113
|
console.log(`Imported: ${result.imported.join(', ') || '(none)'}`);
|
|
@@ -43,21 +126,20 @@ export function registerImport(program) {
|
|
|
43
126
|
.command('from-skillctl')
|
|
44
127
|
.description('Migrate from Python skillctl (~/.skillctl/repos)')
|
|
45
128
|
.option('--dry-run', 'show migration plan only')
|
|
46
|
-
.option('--
|
|
129
|
+
.option('--sync', 'sync agent links after import')
|
|
130
|
+
.option('--adopt', 'deprecated alias for --sync')
|
|
47
131
|
.option('--write-manifest', 'update agent-skills.json')
|
|
48
132
|
.action(async (options) => {
|
|
49
133
|
try {
|
|
50
134
|
const result = await executeImport({
|
|
51
135
|
source: 'python-skillctl',
|
|
52
136
|
dryRun: options.dryRun,
|
|
53
|
-
|
|
137
|
+
sync: options.sync || options.adopt,
|
|
54
138
|
writeManifest: options.writeManifest,
|
|
55
139
|
});
|
|
56
140
|
if (options.dryRun) {
|
|
57
141
|
console.log('Migration plan:');
|
|
58
|
-
|
|
59
|
-
console.log(` ${item.name}: ${item.action}${item.localPath ? ` (${item.localPath})` : ''}`);
|
|
60
|
-
}
|
|
142
|
+
printPlan(result.plan);
|
|
61
143
|
return;
|
|
62
144
|
}
|
|
63
145
|
console.log(`Imported: ${result.imported.join(', ') || '(none)'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-cmd.js","sourceRoot":"","sources":["../../src/commands/import-cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"import-cmd.js","sourceRoot":"","sources":["../../src/commands/import-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2CnD"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { loadManifest, createDefaultManifest, saveManifest } from '@skillctl/manifest';
|
|
2
|
+
import { discoverProjectSkills, executeImport } from '@skillctl/import';
|
|
3
|
+
import { confirm } from '../lib/prompt.js';
|
|
2
4
|
export function registerInit(program) {
|
|
3
5
|
program
|
|
4
6
|
.command('init')
|
|
5
7
|
.description('Initialize agent-skills.json in current project')
|
|
6
|
-
.
|
|
8
|
+
.option('--no-prompt', 'skip post-init import wizard')
|
|
9
|
+
.action(async (options) => {
|
|
7
10
|
const existing = await loadManifest();
|
|
8
11
|
if (existing) {
|
|
9
12
|
console.log('agent-skills.json already exists');
|
|
@@ -12,7 +15,30 @@ export function registerInit(program) {
|
|
|
12
15
|
const sample = createDefaultManifest('demo-project');
|
|
13
16
|
await saveManifest(sample);
|
|
14
17
|
console.log('Created agent-skills.json');
|
|
15
|
-
|
|
18
|
+
if (options.noPrompt) {
|
|
19
|
+
console.log('Run `skillctl add <spec>` or `skillctl import from-project` to populate, then `install` or `sync`.');
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const { deduped, sources } = await discoverProjectSkills();
|
|
23
|
+
const unmanaged = deduped.length;
|
|
24
|
+
if (!unmanaged || !sources.length) {
|
|
25
|
+
console.log('Run `skillctl add <spec>` to populate, then `install` or `sync`.');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
console.log(`Found ${unmanaged} existing skill(s) in agent directories (${sources.map((s) => s.projectPath).join(', ')}).`);
|
|
29
|
+
const shouldImport = await confirm('Import them into skillctl now?', true);
|
|
30
|
+
if (!shouldImport) {
|
|
31
|
+
console.log('Run `skillctl import from-project` when ready.');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const result = await executeImport({ source: 'project', sync: true });
|
|
35
|
+
console.log(`Imported: ${result.imported.join(', ') || '(none)'}`);
|
|
36
|
+
if (result.errors.length) {
|
|
37
|
+
console.error('Import errors:', result.errors.join('; '));
|
|
38
|
+
}
|
|
39
|
+
if (!result.imported.length) {
|
|
40
|
+
console.log('Run `skillctl add <spec>` to populate, then `install` or `sync`.');
|
|
41
|
+
}
|
|
16
42
|
});
|
|
17
43
|
}
|
|
18
44
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QACrD,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,oGAAoG,CAAC,CAAC;YAClH,OAAO;QACT,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,qBAAqB,EAAE,CAAC;QAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,SAAS,SAAS,4CAA4C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5H,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ import { registerPlugin } from './commands/plugin.js';
|
|
|
19
19
|
const __filename = fileURLToPath(import.meta.url);
|
|
20
20
|
const __dirname = dirname(__filename);
|
|
21
21
|
const pkgPath = join(__dirname, '..', 'package.json');
|
|
22
|
-
let version = '0.
|
|
22
|
+
let version = '0.3.0';
|
|
23
23
|
try {
|
|
24
24
|
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
25
25
|
version = pkg.version || version;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/lib/prompt.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createInterface } from 'node:readline/promises';
|
|
2
|
+
import { stdin as input, stdout as output } from 'node:process';
|
|
3
|
+
export function isInteractive() {
|
|
4
|
+
return Boolean(input.isTTY && output.isTTY);
|
|
5
|
+
}
|
|
6
|
+
export async function confirm(message, defaultYes = true) {
|
|
7
|
+
if (!isInteractive())
|
|
8
|
+
return defaultYes;
|
|
9
|
+
const rl = createInterface({ input, output });
|
|
10
|
+
const suffix = defaultYes ? '[Y/n]' : '[y/N]';
|
|
11
|
+
const answer = (await rl.question(`${message} ${suffix} `)).trim().toLowerCase();
|
|
12
|
+
rl.close();
|
|
13
|
+
if (!answer)
|
|
14
|
+
return defaultYes;
|
|
15
|
+
return answer === 'y' || answer === 'yes';
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/lib/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,UAAU,GAAG,IAAI;IAC9D,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO,UAAU,CAAC;IACxC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjF,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,IAAI,CAAC,MAAM;QAAE,OAAO,UAAU,CAAC;IAC/B,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC;AAC5C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skillctl/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "skillctl CLI - universal manager for Agent Skills",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "skillctl contributors",
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
],
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"commander": "^12.1.0",
|
|
22
|
-
"@skillctl/core": "0.
|
|
23
|
-
"@skillctl/manifest": "0.
|
|
24
|
-
"@skillctl/lockfile": "0.
|
|
25
|
-
"@skillctl/
|
|
26
|
-
"@skillctl/
|
|
27
|
-
"@skillctl/
|
|
28
|
-
"@skillctl/
|
|
29
|
-
"@skillctl/
|
|
30
|
-
"@skillctl/plugin-system": "0.
|
|
22
|
+
"@skillctl/core": "0.3.0",
|
|
23
|
+
"@skillctl/manifest": "0.3.0",
|
|
24
|
+
"@skillctl/lockfile": "0.3.0",
|
|
25
|
+
"@skillctl/registry": "0.3.0",
|
|
26
|
+
"@skillctl/import": "0.3.0",
|
|
27
|
+
"@skillctl/link-manager": "0.3.0",
|
|
28
|
+
"@skillctl/security": "0.3.0",
|
|
29
|
+
"@skillctl/adapters": "0.3.0",
|
|
30
|
+
"@skillctl/plugin-system": "0.3.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^20.14.0",
|