skillpkg-cli 0.1.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/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +119 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/export.d.ts +13 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +117 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/import.d.ts +12 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +126 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/info.d.ts +10 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +118 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +161 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.d.ts +10 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +190 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +10 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +74 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts +22 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +100 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/publish.d.ts +12 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +161 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/search.d.ts +13 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +94 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/sync.d.ts +10 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +162 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/uninstall.d.ts +10 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +48 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/ui/index.d.ts +8 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +8 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/logger.d.ts +43 -0
- package/dist/ui/logger.d.ts.map +1 -0
- package/dist/ui/logger.js +77 -0
- package/dist/ui/logger.js.map +1 -0
- package/dist/ui/prompt.d.ts +35 -0
- package/dist/ui/prompt.d.ts.map +1 -0
- package/dist/ui/prompt.js +66 -0
- package/dist/ui/prompt.js.map +1 -0
- package/dist/ui/spinner.d.ts +16 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/spinner.js +30 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/ui/table.d.ts +20 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +46 -0
- package/dist/ui/table.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* publish command - Publish a skill to the registry
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync } from 'fs';
|
|
5
|
+
import { readFile } from 'fs/promises';
|
|
6
|
+
import { resolve } from 'path';
|
|
7
|
+
import { parse, createRegistryClient, createExporter, isAuthenticated, RegistryError, DEFAULT_REGISTRY_URL, } from 'skillpkg-core';
|
|
8
|
+
import { logger, colors, withSpinner, confirm } from '../ui/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* publish command handler
|
|
11
|
+
*/
|
|
12
|
+
export async function publishCommand(options) {
|
|
13
|
+
const registryUrl = options.registry || DEFAULT_REGISTRY_URL;
|
|
14
|
+
logger.header('Publish Skill');
|
|
15
|
+
// Check authentication
|
|
16
|
+
if (!(await isAuthenticated(registryUrl))) {
|
|
17
|
+
logger.error('Not logged in');
|
|
18
|
+
logger.log(`Run ${colors.cyan('skillpkg login')} first`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
// Find skill.yaml
|
|
22
|
+
const skillPath = resolve(process.cwd(), 'skill.yaml');
|
|
23
|
+
if (!existsSync(skillPath)) {
|
|
24
|
+
logger.error('No skill.yaml found in current directory');
|
|
25
|
+
logger.log(`Run ${colors.cyan('skillpkg init')} to create one`);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
// Parse skill.yaml
|
|
29
|
+
let skill;
|
|
30
|
+
try {
|
|
31
|
+
const content = await readFile(skillPath, 'utf-8');
|
|
32
|
+
const result = parse(content);
|
|
33
|
+
if (!result.success || !result.data) {
|
|
34
|
+
logger.error('Failed to parse skill.yaml:');
|
|
35
|
+
result.errors?.forEach((e) => logger.error(` ${e.message}`));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
skill = result.data;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
logger.error(`Failed to read skill.yaml: ${error instanceof Error ? error.message : error}`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
// Validate required fields
|
|
45
|
+
const errors = validateForPublish(skill);
|
|
46
|
+
if (errors.length > 0) {
|
|
47
|
+
logger.error('Skill validation failed:');
|
|
48
|
+
errors.forEach((e) => logger.error(` • ${e}`));
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
logger.log(`Publishing ${colors.cyan(skill.name)}@${colors.cyan(skill.version)}`);
|
|
52
|
+
if (skill.description) {
|
|
53
|
+
logger.log(colors.dim(skill.description));
|
|
54
|
+
}
|
|
55
|
+
logger.blank();
|
|
56
|
+
// Dry run mode
|
|
57
|
+
if (options.dryRun) {
|
|
58
|
+
logger.info('Dry run mode - not actually publishing');
|
|
59
|
+
logger.blank();
|
|
60
|
+
logger.log('Would publish:');
|
|
61
|
+
logger.log(` Name: ${skill.name}`);
|
|
62
|
+
logger.log(` Version: ${skill.version}`);
|
|
63
|
+
logger.log(` Tag: ${options.tag || 'latest'}`);
|
|
64
|
+
logger.log(` Access: ${options.access || 'public'}`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// Confirm publish
|
|
68
|
+
const shouldPublish = await confirm(`Publish ${skill.name}@${skill.version} to ${registryUrl}?`, true);
|
|
69
|
+
if (!shouldPublish) {
|
|
70
|
+
logger.info('Publish cancelled');
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// Create tarball
|
|
74
|
+
const exporter = createExporter();
|
|
75
|
+
let tarball;
|
|
76
|
+
try {
|
|
77
|
+
tarball = await withSpinner('Creating package', async () => {
|
|
78
|
+
const result = await exporter.export(skill, { format: 'pack' });
|
|
79
|
+
if (!result.success) {
|
|
80
|
+
throw new Error(result.error || 'Failed to create package');
|
|
81
|
+
}
|
|
82
|
+
// Read the tarball from disk
|
|
83
|
+
const tarballPath = result.outputPath;
|
|
84
|
+
return readFile(tarballPath);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
logger.error(`Failed to create package: ${error instanceof Error ? error.message : error}`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
// Publish to registry
|
|
92
|
+
const client = createRegistryClient({ registryUrl });
|
|
93
|
+
const publishOptions = {};
|
|
94
|
+
if (options.tag) {
|
|
95
|
+
publishOptions.tag = options.tag;
|
|
96
|
+
}
|
|
97
|
+
if (options.access) {
|
|
98
|
+
publishOptions.access = options.access;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const result = await withSpinner('Publishing to registry', () => client.publish(tarball, publishOptions));
|
|
102
|
+
logger.blank();
|
|
103
|
+
logger.success(`Published ${colors.cyan(skill.name)}@${colors.cyan(skill.version)}`);
|
|
104
|
+
logger.blank();
|
|
105
|
+
logger.log(`View at: ${colors.cyan(result.url)}`);
|
|
106
|
+
logger.blank();
|
|
107
|
+
logger.log('Install with:');
|
|
108
|
+
logger.log(` ${colors.cyan(`skillpkg install ${skill.name}`)}`);
|
|
109
|
+
logger.blank();
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
if (error instanceof RegistryError) {
|
|
113
|
+
switch (error.code) {
|
|
114
|
+
case 'AUTH_REQUIRED':
|
|
115
|
+
logger.error('Authentication required');
|
|
116
|
+
logger.log(`Run ${colors.cyan('skillpkg login')} first`);
|
|
117
|
+
break;
|
|
118
|
+
case 'VERSION_EXISTS':
|
|
119
|
+
logger.error(`Version ${skill.version} already exists`);
|
|
120
|
+
logger.log('Update the version in skill.yaml and try again');
|
|
121
|
+
break;
|
|
122
|
+
case 'AUTH_FAILED':
|
|
123
|
+
logger.error('Permission denied');
|
|
124
|
+
logger.log('You may not have permission to publish this skill');
|
|
125
|
+
break;
|
|
126
|
+
default:
|
|
127
|
+
logger.error(`Publish failed: ${error.message}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
logger.error(`Publish failed: ${error instanceof Error ? error.message : error}`);
|
|
132
|
+
}
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Validate skill for publishing
|
|
138
|
+
*/
|
|
139
|
+
function validateForPublish(skill) {
|
|
140
|
+
const errors = [];
|
|
141
|
+
if (!skill.name) {
|
|
142
|
+
errors.push('name is required');
|
|
143
|
+
}
|
|
144
|
+
else if (!/^[a-z0-9-]+$/.test(skill.name)) {
|
|
145
|
+
errors.push('name must be lowercase alphanumeric with hyphens only');
|
|
146
|
+
}
|
|
147
|
+
if (!skill.version) {
|
|
148
|
+
errors.push('version is required');
|
|
149
|
+
}
|
|
150
|
+
else if (!/^\d+\.\d+\.\d+/.test(skill.version)) {
|
|
151
|
+
errors.push('version must be a valid semver (e.g., 1.0.0)');
|
|
152
|
+
}
|
|
153
|
+
if (!skill.description) {
|
|
154
|
+
errors.push('description is recommended for publishing');
|
|
155
|
+
}
|
|
156
|
+
if (!skill.instructions || skill.instructions.trim() === '') {
|
|
157
|
+
errors.push('instructions are required');
|
|
158
|
+
}
|
|
159
|
+
return errors;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface SearchCommandOptions {
|
|
2
|
+
limit?: string;
|
|
3
|
+
page?: string;
|
|
4
|
+
sort?: string;
|
|
5
|
+
json?: boolean;
|
|
6
|
+
registry?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* search command handler
|
|
10
|
+
*/
|
|
11
|
+
export declare function searchCommand(query: string | undefined, options: SearchCommandOptions): Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAWA,UAAU,oBAAoB;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAkFf"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* search command - Search for skills in the registry
|
|
3
|
+
*/
|
|
4
|
+
import { createRegistryClient, RegistryError, DEFAULT_REGISTRY_URL, } from 'skillpkg-core';
|
|
5
|
+
import { logger, colors } from '../ui/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* search command handler
|
|
8
|
+
*/
|
|
9
|
+
export async function searchCommand(query, options) {
|
|
10
|
+
if (!query) {
|
|
11
|
+
logger.error('Search query is required');
|
|
12
|
+
logger.log(`Usage: ${colors.cyan('skillpkg search <query>')}`);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
const client = createRegistryClient({
|
|
16
|
+
registryUrl: options.registry || DEFAULT_REGISTRY_URL,
|
|
17
|
+
});
|
|
18
|
+
logger.header('Search Skills');
|
|
19
|
+
logger.log(`Searching for: ${colors.cyan(query)}`);
|
|
20
|
+
logger.blank();
|
|
21
|
+
try {
|
|
22
|
+
const searchOptions = {};
|
|
23
|
+
if (options.limit) {
|
|
24
|
+
searchOptions.limit = parseInt(options.limit, 10);
|
|
25
|
+
}
|
|
26
|
+
if (options.page) {
|
|
27
|
+
searchOptions.page = parseInt(options.page, 10);
|
|
28
|
+
}
|
|
29
|
+
if (options.sort) {
|
|
30
|
+
searchOptions.sort = options.sort;
|
|
31
|
+
}
|
|
32
|
+
const result = await client.search(query, searchOptions);
|
|
33
|
+
// JSON output mode
|
|
34
|
+
if (options.json) {
|
|
35
|
+
console.log(JSON.stringify(result, null, 2));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (result.results.length === 0) {
|
|
39
|
+
logger.warn('No skills found matching your query');
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
logger.log(`Found ${colors.cyan(String(result.total))} skill(s)`);
|
|
43
|
+
logger.blank();
|
|
44
|
+
// Display results
|
|
45
|
+
for (const item of result.results) {
|
|
46
|
+
const name = colors.cyan(item.name);
|
|
47
|
+
const version = colors.dim(`@${item.version}`);
|
|
48
|
+
const downloads = colors.dim(`(${formatDownloads(item.downloads)} downloads)`);
|
|
49
|
+
logger.log(`${name}${version} ${downloads}`);
|
|
50
|
+
if (item.description) {
|
|
51
|
+
logger.log(` ${colors.dim(item.description)}`);
|
|
52
|
+
}
|
|
53
|
+
if (item.keywords && item.keywords.length > 0) {
|
|
54
|
+
logger.log(` ${colors.dim('Keywords:')} ${item.keywords.join(', ')}`);
|
|
55
|
+
}
|
|
56
|
+
logger.blank();
|
|
57
|
+
}
|
|
58
|
+
// Pagination info
|
|
59
|
+
const totalPages = Math.ceil(result.total / result.limit);
|
|
60
|
+
if (totalPages > 1) {
|
|
61
|
+
logger.log(colors.dim(`Page ${result.page} of ${totalPages}. `) +
|
|
62
|
+
colors.dim(`Use --page to navigate.`));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error instanceof RegistryError) {
|
|
67
|
+
if (error.code === 'NETWORK_ERROR') {
|
|
68
|
+
logger.error('Unable to connect to registry');
|
|
69
|
+
logger.log(`Registry URL: ${colors.dim(client.getRegistryUrl())}`);
|
|
70
|
+
logger.log('Check your network connection or try again later.');
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
logger.error(`Registry error: ${error.message}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
logger.error(`Search failed: ${error instanceof Error ? error.message : error}`);
|
|
78
|
+
}
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Format download count for display
|
|
84
|
+
*/
|
|
85
|
+
function formatDownloads(count) {
|
|
86
|
+
if (count >= 1000000) {
|
|
87
|
+
return `${(count / 1000000).toFixed(1)}M`;
|
|
88
|
+
}
|
|
89
|
+
if (count >= 1000) {
|
|
90
|
+
return `${(count / 1000).toFixed(1)}K`;
|
|
91
|
+
}
|
|
92
|
+
return String(count);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAaA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA6If"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sync command - Sync skills to platforms
|
|
3
|
+
*/
|
|
4
|
+
import { createLocalStore, createAdapterManager, parse, } from 'skillpkg-core';
|
|
5
|
+
import { readFile } from 'fs/promises';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
import { logger, colors, withSpinner } from '../ui/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* sync command handler
|
|
10
|
+
*/
|
|
11
|
+
export async function syncCommand(skillName, options) {
|
|
12
|
+
const store = createLocalStore();
|
|
13
|
+
const adapterManager = createAdapterManager();
|
|
14
|
+
// Check if store is initialized
|
|
15
|
+
if (!(await store.isInitialized())) {
|
|
16
|
+
logger.error('No skills installed');
|
|
17
|
+
logger.log(`Run ${colors.cyan('skillpkg install <skill>')} first`);
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
// Get skills metadata
|
|
21
|
+
const skillsMeta = await store.listSkills();
|
|
22
|
+
if (skillsMeta.length === 0) {
|
|
23
|
+
logger.info('No skills to sync');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// Filter by name if provided
|
|
27
|
+
const targetSkillsMeta = skillName
|
|
28
|
+
? skillsMeta.filter((s) => s.name === skillName)
|
|
29
|
+
: skillsMeta;
|
|
30
|
+
if (targetSkillsMeta.length === 0) {
|
|
31
|
+
logger.error(`Skill ${colors.cyan(skillName || '')} not found`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
// Load full skill data
|
|
35
|
+
const skills = [];
|
|
36
|
+
for (const meta of targetSkillsMeta) {
|
|
37
|
+
const skill = await loadSkillContent(meta.name);
|
|
38
|
+
if (skill) {
|
|
39
|
+
skills.push(skill);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Parse target platforms
|
|
43
|
+
const platforms = options.target
|
|
44
|
+
? options.target.split(',').map((p) => p.trim())
|
|
45
|
+
: undefined; // undefined = all platforms
|
|
46
|
+
logger.header('Sync Skills to Platforms');
|
|
47
|
+
// Detect available platforms
|
|
48
|
+
const detected = await adapterManager.detectPlatforms(process.cwd());
|
|
49
|
+
const presentPlatforms = detected.filter((p) => p.detected);
|
|
50
|
+
if (presentPlatforms.length === 0) {
|
|
51
|
+
logger.warn('No AI platforms detected in this project');
|
|
52
|
+
logger.blank();
|
|
53
|
+
logger.log('Supported platforms:');
|
|
54
|
+
for (const adapter of adapterManager.listAdapters()) {
|
|
55
|
+
logger.item(`${colors.cyan(adapter.displayName)} (${adapter.name})`);
|
|
56
|
+
}
|
|
57
|
+
logger.blank();
|
|
58
|
+
logger.log('Create platform directories to enable sync:');
|
|
59
|
+
logger.item(`${colors.dim('.claude/')} for Claude Code`);
|
|
60
|
+
logger.item(`${colors.dim('.codex/')} or ${colors.dim('AGENTS.md')} for Codex`);
|
|
61
|
+
logger.item(`${colors.dim('.github/')} for GitHub Copilot`);
|
|
62
|
+
logger.item(`${colors.dim('.cline/')} for VS Code Cline`);
|
|
63
|
+
logger.blank();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
logger.log('Detected platforms:');
|
|
67
|
+
for (const platform of presentPlatforms) {
|
|
68
|
+
logger.item(`${colors.green('✓')} ${platform.displayName}`);
|
|
69
|
+
}
|
|
70
|
+
logger.blank();
|
|
71
|
+
if (options.dryRun) {
|
|
72
|
+
logger.warn('Dry run mode - no changes will be made');
|
|
73
|
+
logger.blank();
|
|
74
|
+
}
|
|
75
|
+
logger.log(`Skills to sync: ${colors.cyan(String(skills.length))}`);
|
|
76
|
+
logger.blank();
|
|
77
|
+
// Sync
|
|
78
|
+
const result = await withSpinner('Syncing skills to platforms', () => adapterManager.sync(skills, {
|
|
79
|
+
projectPath: process.cwd(),
|
|
80
|
+
platforms,
|
|
81
|
+
dryRun: options.dryRun,
|
|
82
|
+
}), {
|
|
83
|
+
successText: 'Sync complete',
|
|
84
|
+
failText: 'Sync failed',
|
|
85
|
+
});
|
|
86
|
+
logger.blank();
|
|
87
|
+
// Show results
|
|
88
|
+
if (result.synced.length > 0) {
|
|
89
|
+
logger.success('Synced:');
|
|
90
|
+
for (const item of result.synced) {
|
|
91
|
+
logger.item(`${colors.cyan(item.skill)} → ${colors.green(item.platform)}`);
|
|
92
|
+
logger.log(` ${colors.dim(item.path)}`);
|
|
93
|
+
}
|
|
94
|
+
logger.blank();
|
|
95
|
+
}
|
|
96
|
+
if (result.skipped.length > 0) {
|
|
97
|
+
logger.warn('Skipped:');
|
|
98
|
+
for (const item of result.skipped) {
|
|
99
|
+
logger.item(`${colors.cyan(item.skill)} → ${colors.yellow(item.platform)}: ${item.reason}`);
|
|
100
|
+
}
|
|
101
|
+
logger.blank();
|
|
102
|
+
}
|
|
103
|
+
if (result.errors.length > 0) {
|
|
104
|
+
logger.error('Errors:');
|
|
105
|
+
for (const item of result.errors) {
|
|
106
|
+
logger.item(`${colors.cyan(item.skill)} → ${colors.red(item.platform)}: ${item.error}`);
|
|
107
|
+
}
|
|
108
|
+
logger.blank();
|
|
109
|
+
}
|
|
110
|
+
// Update registry with synced platforms
|
|
111
|
+
if (!options.dryRun && result.synced.length > 0) {
|
|
112
|
+
await updateSyncedPlatformsInRegistry(store, result.synced);
|
|
113
|
+
}
|
|
114
|
+
// Summary
|
|
115
|
+
logger.log(`Summary: ${colors.green(String(result.synced.length))} synced, ` +
|
|
116
|
+
`${colors.yellow(String(result.skipped.length))} skipped, ` +
|
|
117
|
+
`${colors.red(String(result.errors.length))} errors`);
|
|
118
|
+
logger.blank();
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Load skill content from store
|
|
122
|
+
*/
|
|
123
|
+
async function loadSkillContent(skillName) {
|
|
124
|
+
const skillDir = join(process.cwd(), '.skillpkg', 'skills', skillName);
|
|
125
|
+
const yamlPath = join(skillDir, 'skill.yaml');
|
|
126
|
+
try {
|
|
127
|
+
const content = await readFile(yamlPath, 'utf-8');
|
|
128
|
+
const result = parse(content);
|
|
129
|
+
return result.success && result.data ? result.data : null;
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Update synced platforms in registry
|
|
137
|
+
*/
|
|
138
|
+
async function updateSyncedPlatformsInRegistry(store, synced) {
|
|
139
|
+
// Group by skill
|
|
140
|
+
const bySkill = new Map();
|
|
141
|
+
for (const item of synced) {
|
|
142
|
+
if (!bySkill.has(item.skill)) {
|
|
143
|
+
bySkill.set(item.skill, []);
|
|
144
|
+
}
|
|
145
|
+
bySkill.get(item.skill).push(item.platform);
|
|
146
|
+
}
|
|
147
|
+
// Update each skill's synced platforms
|
|
148
|
+
for (const [skillName, platforms] of bySkill) {
|
|
149
|
+
// Get existing entry to merge platforms
|
|
150
|
+
const entry = await store.getSkillEntry(skillName);
|
|
151
|
+
if (entry) {
|
|
152
|
+
// Merge with existing platforms
|
|
153
|
+
const existingPlatforms = new Set(entry.syncedPlatforms || []);
|
|
154
|
+
for (const p of platforms) {
|
|
155
|
+
existingPlatforms.add(p);
|
|
156
|
+
}
|
|
157
|
+
// Update using store method
|
|
158
|
+
await store.updateSyncedPlatforms(skillName, Array.from(existingPlatforms));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface UninstallOptions {
|
|
2
|
+
global?: boolean;
|
|
3
|
+
clean?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* uninstall command handler
|
|
7
|
+
*/
|
|
8
|
+
export declare function uninstallCommand(skillName: string, options: UninstallOptions): Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=uninstall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAMA,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAqDf"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* uninstall command - Remove a skill
|
|
3
|
+
*/
|
|
4
|
+
import { createGlobalStore, createLocalStore, createAdapterManager } from 'skillpkg-core';
|
|
5
|
+
import { logger, colors, withSpinner } from '../ui/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* uninstall command handler
|
|
8
|
+
*/
|
|
9
|
+
export async function uninstallCommand(skillName, options) {
|
|
10
|
+
const store = options.global ? createGlobalStore() : createLocalStore();
|
|
11
|
+
// Check if store is initialized
|
|
12
|
+
if (!(await store.isInitialized())) {
|
|
13
|
+
logger.error('No skills installed');
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
// Check if skill exists
|
|
17
|
+
if (!(await store.hasSkill(skillName))) {
|
|
18
|
+
logger.error(`Skill ${colors.cyan(skillName)} is not installed`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
// Get skill info before removal
|
|
22
|
+
const skill = await store.getSkill(skillName);
|
|
23
|
+
const version = skill?.version || 'unknown';
|
|
24
|
+
// Remove skill from store
|
|
25
|
+
const removed = await withSpinner(`Uninstalling ${colors.cyan(skillName)}@${version}`, () => store.removeSkill(skillName), {
|
|
26
|
+
successText: `Uninstalled ${colors.cyan(skillName)}@${version}`,
|
|
27
|
+
failText: `Failed to uninstall ${skillName}`,
|
|
28
|
+
});
|
|
29
|
+
if (!removed) {
|
|
30
|
+
logger.error(`Failed to remove skill ${skillName}`);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
// Clean synced platform files if --clean flag is set
|
|
34
|
+
if (options.clean) {
|
|
35
|
+
const adapterManager = createAdapterManager();
|
|
36
|
+
await withSpinner(`Cleaning synced files from platforms`, () => adapterManager.removeFromAllPlatforms(skillName, process.cwd()), {
|
|
37
|
+
successText: `Cleaned synced files`,
|
|
38
|
+
failText: `Failed to clean some platform files`,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
logger.blank();
|
|
42
|
+
logger.success(`Removed ${colors.cyan(skillName)}`);
|
|
43
|
+
if (options.clean) {
|
|
44
|
+
logger.log(`${colors.dim('Also removed synced files from all platforms')}`);
|
|
45
|
+
}
|
|
46
|
+
logger.blank();
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,OAAyB;IAEzB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAExE,gCAAgC;IAChC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gCAAgC;IAChC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC;IAE5C,0BAA0B;IAC1B,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,gBAAgB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAE,EACnD,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,EAClC;QACE,WAAW,EAAE,eAAe,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,EAAE;QAC/D,QAAQ,EAAE,uBAAuB,SAAS,EAAE;KAC7C,CACF,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;QAC9C,MAAM,WAAW,CACf,sCAAsC,EACtC,GAAG,EAAE,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EACrE;YACE,WAAW,EAAE,sBAAsB;YACnC,QAAQ,EAAE,qCAAqC;SAChD,CACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,8CAA8C,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @skillpkg/cli - Agent Skills Package Manager CLI
|
|
4
|
+
*/
|
|
5
|
+
import { program } from 'commander';
|
|
6
|
+
import { registerCommands } from './cli.js';
|
|
7
|
+
// Get version from package.json
|
|
8
|
+
const VERSION = '0.0.1';
|
|
9
|
+
program
|
|
10
|
+
.name('skillpkg')
|
|
11
|
+
.description('Agent Skills Package Manager - Install once, use everywhere')
|
|
12
|
+
.version(VERSION, '-v, --version', 'Output the current version');
|
|
13
|
+
// Register all commands
|
|
14
|
+
registerCommands(program);
|
|
15
|
+
// Parse arguments
|
|
16
|
+
program.parse();
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,gCAAgC;AAChC,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAC;AAEnE,wBAAwB;AACxB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAE1B,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI utilities - public API
|
|
3
|
+
*/
|
|
4
|
+
export { logger, colors } from './logger.js';
|
|
5
|
+
export { createSpinner, withSpinner } from './spinner.js';
|
|
6
|
+
export { createTable, printTable, type TableOptions } from './table.js';
|
|
7
|
+
export { createPrompt, confirm, input, password, select } from './prompt.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI utilities - public API
|
|
3
|
+
*/
|
|
4
|
+
export { logger, colors } from './logger.js';
|
|
5
|
+
export { createSpinner, withSpinner } from './spinner.js';
|
|
6
|
+
export { createTable, printTable } from './table.js';
|
|
7
|
+
export { createPrompt, confirm, input, password, select } from './prompt.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|