skillpkg-cli 0.1.1 → 0.2.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/install.d.ts +0 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +146 -77
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/search.d.ts +0 -3
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +38 -44
- package/dist/commands/search.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAwBA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAyBD;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
package/dist/commands/install.js
CHANGED
|
@@ -1,13 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* install command - Install a skill
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Local path: skillpkg install ./path/to/skill
|
|
6
|
+
* - GitHub: skillpkg install github:user/repo or skillpkg install user/repo
|
|
7
|
+
* - Pack file: skillpkg install skill.skillpkg
|
|
3
8
|
*/
|
|
4
9
|
import { existsSync, createReadStream } from 'fs';
|
|
5
10
|
import { readFile } from 'fs/promises';
|
|
6
11
|
import { join, resolve, isAbsolute } from 'path';
|
|
7
12
|
import { createGunzip } from 'zlib';
|
|
8
|
-
import { parse, createGlobalStore, createLocalStore } from 'skillpkg-core';
|
|
13
|
+
import { parse, createGlobalStore, createLocalStore, detectSkillMd, fetchSkillMdContent, SKILL_MD_PATHS, } from 'skillpkg-core';
|
|
9
14
|
import { logger, colors, withSpinner } from '../ui/index.js';
|
|
10
15
|
import * as tar from 'tar-stream';
|
|
16
|
+
/**
|
|
17
|
+
* Parse source string to determine source type
|
|
18
|
+
*/
|
|
19
|
+
function parseSource(source) {
|
|
20
|
+
// GitHub: github:user/repo
|
|
21
|
+
if (source.startsWith('github:')) {
|
|
22
|
+
return { type: 'github', value: source.slice(7) };
|
|
23
|
+
}
|
|
24
|
+
// GitHub: user/repo format
|
|
25
|
+
if (/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_.-]+$/.test(source) && !existsSync(source)) {
|
|
26
|
+
return { type: 'github', value: source };
|
|
27
|
+
}
|
|
28
|
+
// Pack file: *.skillpkg
|
|
29
|
+
if (source.endsWith('.skillpkg')) {
|
|
30
|
+
return { type: 'pack', value: source };
|
|
31
|
+
}
|
|
32
|
+
// Local path
|
|
33
|
+
return { type: 'local', value: source };
|
|
34
|
+
}
|
|
11
35
|
/**
|
|
12
36
|
* install command handler
|
|
13
37
|
*/
|
|
@@ -15,28 +39,32 @@ export async function installCommand(skillArg, options) {
|
|
|
15
39
|
// If no skill argument, try to install from current directory
|
|
16
40
|
if (!skillArg) {
|
|
17
41
|
const localSkillPath = join(process.cwd(), 'skill.yaml');
|
|
18
|
-
|
|
42
|
+
const localSkillMdPath = join(process.cwd(), 'SKILL.md');
|
|
43
|
+
if (existsSync(localSkillPath) || existsSync(localSkillMdPath)) {
|
|
19
44
|
skillArg = '.';
|
|
20
45
|
}
|
|
21
46
|
else {
|
|
22
|
-
logger.error('No skill specified and no skill.yaml found in current directory');
|
|
47
|
+
logger.error('No skill specified and no skill.yaml/SKILL.md found in current directory');
|
|
23
48
|
logger.log(`Usage: ${colors.cyan('skillpkg install <skill>')}`);
|
|
49
|
+
logger.blank();
|
|
50
|
+
logger.log('Examples:');
|
|
51
|
+
logger.item(`${colors.cyan('skillpkg install ./path/to/skill')} - Install from local path`);
|
|
52
|
+
logger.item(`${colors.cyan('skillpkg install github:user/repo')} - Install from GitHub`);
|
|
53
|
+
logger.item(`${colors.cyan('skillpkg install user/repo')} - Install from GitHub (shorthand)`);
|
|
24
54
|
process.exit(1);
|
|
25
55
|
}
|
|
26
56
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
else {
|
|
39
|
-
await installFromRegistry(skillArg, options);
|
|
57
|
+
const { type, value } = parseSource(skillArg);
|
|
58
|
+
switch (type) {
|
|
59
|
+
case 'local':
|
|
60
|
+
await installFromLocal(value, options);
|
|
61
|
+
break;
|
|
62
|
+
case 'github':
|
|
63
|
+
await installFromGitHub(value, options);
|
|
64
|
+
break;
|
|
65
|
+
case 'pack':
|
|
66
|
+
await installFromPack(value, options);
|
|
67
|
+
break;
|
|
40
68
|
}
|
|
41
69
|
}
|
|
42
70
|
/**
|
|
@@ -45,57 +73,90 @@ export async function installCommand(skillArg, options) {
|
|
|
45
73
|
async function installFromLocal(pathArg, options) {
|
|
46
74
|
// Resolve path
|
|
47
75
|
const skillPath = isAbsolute(pathArg) ? pathArg : resolve(process.cwd(), pathArg);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
76
|
+
// Try to find skill file (SKILL.md or skill.yaml)
|
|
77
|
+
let skillContent = null;
|
|
78
|
+
let isSkillMd = false;
|
|
79
|
+
// Check for SKILL.md first
|
|
80
|
+
for (const mdPath of ['SKILL.md', 'skill.md']) {
|
|
81
|
+
const fullPath = join(skillPath, mdPath);
|
|
82
|
+
if (existsSync(fullPath)) {
|
|
83
|
+
skillContent = await readFile(fullPath, 'utf-8');
|
|
84
|
+
isSkillMd = true;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Fall back to skill.yaml
|
|
89
|
+
if (!skillContent) {
|
|
90
|
+
const yamlPath = existsSync(join(skillPath, 'skill.yaml'))
|
|
91
|
+
? join(skillPath, 'skill.yaml')
|
|
92
|
+
: skillPath.endsWith('.yaml')
|
|
93
|
+
? skillPath
|
|
94
|
+
: join(skillPath, 'skill.yaml');
|
|
95
|
+
if (existsSync(yamlPath)) {
|
|
96
|
+
skillContent = await readFile(yamlPath, 'utf-8');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (!skillContent) {
|
|
100
|
+
logger.error(`No SKILL.md or skill.yaml found at ${skillPath}`);
|
|
55
101
|
process.exit(1);
|
|
56
102
|
}
|
|
57
|
-
// Parse skill
|
|
103
|
+
// Parse skill
|
|
58
104
|
let skill;
|
|
59
105
|
try {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
result
|
|
65
|
-
|
|
106
|
+
if (isSkillMd) {
|
|
107
|
+
skill = parseSkillMd(skillContent);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
const result = parse(skillContent);
|
|
111
|
+
if (!result.success || !result.data) {
|
|
112
|
+
logger.error('Failed to parse skill.yaml:');
|
|
113
|
+
result.errors?.forEach((e) => logger.error(` ${e.message}`));
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
skill = result.data;
|
|
66
117
|
}
|
|
67
|
-
skill = result.data;
|
|
68
118
|
}
|
|
69
119
|
catch (error) {
|
|
70
|
-
logger.error(`Failed to
|
|
120
|
+
logger.error(`Failed to parse skill: ${error instanceof Error ? error.message : error}`);
|
|
71
121
|
process.exit(1);
|
|
72
122
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
logger.
|
|
123
|
+
await installSkill(skill, options, 'local');
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Install skill from GitHub
|
|
127
|
+
*/
|
|
128
|
+
async function installFromGitHub(repo, options) {
|
|
129
|
+
logger.info(`Installing from GitHub: ${colors.cyan(repo)}`);
|
|
130
|
+
// Detect SKILL.md in the repository
|
|
131
|
+
const detection = await withSpinner('Checking for SKILL.md', async () => {
|
|
132
|
+
return detectSkillMd(repo);
|
|
133
|
+
});
|
|
134
|
+
if (!detection.hasSkill || !detection.skillFile) {
|
|
135
|
+
logger.error(`No SKILL.md found in ${repo}`);
|
|
136
|
+
logger.blank();
|
|
137
|
+
logger.log('Checked locations:');
|
|
138
|
+
SKILL_MD_PATHS.forEach((p) => logger.item(colors.dim(p)));
|
|
139
|
+
logger.blank();
|
|
140
|
+
logger.log(colors.dim('Make sure the repository has a SKILL.md file with proper frontmatter (name, description).'));
|
|
141
|
+
process.exit(1);
|
|
87
142
|
}
|
|
88
|
-
//
|
|
89
|
-
await withSpinner(
|
|
90
|
-
|
|
143
|
+
// Fetch SKILL.md content
|
|
144
|
+
const content = await withSpinner('Fetching SKILL.md', async () => {
|
|
145
|
+
return fetchSkillMdContent(repo, detection.skillFile);
|
|
91
146
|
});
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
147
|
+
if (!content) {
|
|
148
|
+
logger.error('Failed to fetch SKILL.md content');
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
// Create skill object
|
|
152
|
+
const skill = {
|
|
153
|
+
schema: '1.0',
|
|
154
|
+
name: content.name,
|
|
155
|
+
version: content.version,
|
|
156
|
+
description: content.description,
|
|
157
|
+
instructions: content.instructions,
|
|
158
|
+
};
|
|
159
|
+
await installSkill(skill, options, 'import', `github:${repo}`);
|
|
99
160
|
}
|
|
100
161
|
/**
|
|
101
162
|
* Install skill from .skillpkg pack file
|
|
@@ -138,11 +199,36 @@ async function installFromPack(packPath, options) {
|
|
|
138
199
|
resolvePromise(result.data);
|
|
139
200
|
});
|
|
140
201
|
extract.on('error', reject);
|
|
141
|
-
createReadStream(fullPath)
|
|
142
|
-
.pipe(createGunzip())
|
|
143
|
-
.pipe(extract);
|
|
202
|
+
createReadStream(fullPath).pipe(createGunzip()).pipe(extract);
|
|
144
203
|
});
|
|
145
204
|
});
|
|
205
|
+
await installSkill(skill, options, 'local');
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Parse SKILL.md content to Skill object
|
|
209
|
+
*/
|
|
210
|
+
function parseSkillMd(content) {
|
|
211
|
+
const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);
|
|
212
|
+
if (!match) {
|
|
213
|
+
throw new Error('Invalid SKILL.md format: missing frontmatter');
|
|
214
|
+
}
|
|
215
|
+
const { parse: parseYaml } = require('yaml');
|
|
216
|
+
const frontmatter = parseYaml(match[1]);
|
|
217
|
+
if (!frontmatter.name) {
|
|
218
|
+
throw new Error('Invalid SKILL.md: missing name in frontmatter');
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
schema: '1.0',
|
|
222
|
+
name: frontmatter.name,
|
|
223
|
+
version: frontmatter.version || '1.0.0',
|
|
224
|
+
description: frontmatter.description || frontmatter.metadata?.['short-description'] || '',
|
|
225
|
+
instructions: match[2],
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Install skill to store
|
|
230
|
+
*/
|
|
231
|
+
async function installSkill(skill, options, source, sourceUrl) {
|
|
146
232
|
// Get store
|
|
147
233
|
const store = options.global ? createGlobalStore() : createLocalStore();
|
|
148
234
|
// Initialize store if needed
|
|
@@ -160,7 +246,7 @@ async function installFromPack(packPath, options) {
|
|
|
160
246
|
}
|
|
161
247
|
// Install skill
|
|
162
248
|
await withSpinner(`Installing ${colors.cyan(skill.name)}@${skill.version}`, async () => {
|
|
163
|
-
await store.addSkill(skill, { source
|
|
249
|
+
await store.addSkill(skill, { source, sourceUrl });
|
|
164
250
|
});
|
|
165
251
|
logger.blank();
|
|
166
252
|
logger.success(`Installed ${colors.cyan(skill.name)}@${skill.version}`);
|
|
@@ -170,21 +256,4 @@ async function installFromPack(packPath, options) {
|
|
|
170
256
|
logger.item(`Run ${colors.cyan('skillpkg sync')} to sync to platforms`);
|
|
171
257
|
logger.blank();
|
|
172
258
|
}
|
|
173
|
-
/**
|
|
174
|
-
* Install skill from registry
|
|
175
|
-
*/
|
|
176
|
-
async function installFromRegistry(skillName, _options) {
|
|
177
|
-
// Parse name@version
|
|
178
|
-
const [name, version] = skillName.includes('@')
|
|
179
|
-
? skillName.split('@')
|
|
180
|
-
: [skillName, 'latest'];
|
|
181
|
-
logger.info(`Installing ${colors.cyan(name)}@${version} from registry...`);
|
|
182
|
-
// TODO: Implement registry client in M6
|
|
183
|
-
logger.warn('Registry installation not yet implemented');
|
|
184
|
-
logger.log(`Will be available after M6: Registry Client`);
|
|
185
|
-
logger.blank();
|
|
186
|
-
logger.log('For now, use local installation:');
|
|
187
|
-
logger.item(`${colors.cyan('skillpkg install ./path/to/skill')}`);
|
|
188
|
-
logger.blank();
|
|
189
|
-
}
|
|
190
259
|
//# sourceMappingURL=install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EACL,KAAK,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAMlC;;GAEG;AACH,SAAS,WAAW,CAAC,MAAc;IACjC,2BAA2B;IAC3B,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,CAAC;IAED,2BAA2B;IAC3B,IAAI,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED,wBAAwB;IACxB,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACzC,CAAC;IAED,aAAa;IACb,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAA4B,EAC5B,OAAuB;IAEvB,8DAA8D;IAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;QACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC/D,QAAQ,GAAG,GAAG,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;YACzF,MAAM,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,4BAA4B,CAAC,CAAC;YAC5F,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,wBAAwB,CAAC,CAAC;YACzF,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,oCAAoC,CAAC,CAAC;YAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE9C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACvC,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACtC,MAAM;IACV,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAAuB;IACtE,eAAe;IACf,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IAElF,kDAAkD;IAClD,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,2BAA2B;IAC3B,KAAK,MAAM,MAAM,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,YAAY,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM;QACR,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACxD,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC3B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAEpC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,YAAY,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;IACd,IAAI,KAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC5C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,OAAuB;IACpE,MAAM,CAAC,IAAI,CAAC,2BAA2B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE5D,oCAAoC;IACpC,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACtE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACjC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CACR,MAAM,CAAC,GAAG,CACR,2FAA2F,CAC5F,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yBAAyB;IACzB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QAChE,OAAO,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,SAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sBAAsB;IACtB,MAAM,KAAK,GAAU;QACnB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC;IAEF,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAuB;IACtE,eAAe;IACf,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEpF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAExD,mCAAmC;IACnC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,iBAAiB,EAAE,KAAK,IAAoB,EAAE;QAC5E,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,OAAO,IAAI,OAAO,CAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;YACnD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;gBAC3C,2DAA2D;gBAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBACxE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBACjD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,EAAE,CAAC;gBACT,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;oBAClD,OAAO;gBACT,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gBAE9B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBACpC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;oBAChF,OAAO;gBACT,CAAC;gBAED,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE5B,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,OAAO;QACvC,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE;QACzF,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CACzB,KAAY,EACZ,OAAuB,EACvB,MAA0B,EAC1B,SAAkB;IAElB,YAAY;IACZ,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAExE,6BAA6B;IAC7B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;QACnC,MAAM,WAAW,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,6BAA6B;IAC7B,IAAI,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,SAAS,QAAQ,EAAE,OAAO,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,gBAAgB;IAChB,MAAM,WAAW,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;IACxE,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AASA,UAAU,oBAAoB;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA+Ef"}
|
package/dist/commands/search.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* search command - Search for skills
|
|
2
|
+
* search command - Search for skills on GitHub
|
|
3
|
+
*
|
|
4
|
+
* Uses GitHub API to find repositories with SKILL.md files.
|
|
5
|
+
* SKILL.md is the industry standard for Claude Code and OpenAI Codex.
|
|
3
6
|
*/
|
|
4
|
-
import {
|
|
7
|
+
import { searchGitHubSkills } from 'skillpkg-core';
|
|
5
8
|
import { logger, colors } from '../ui/index.js';
|
|
6
9
|
/**
|
|
7
10
|
* search command handler
|
|
@@ -12,77 +15,68 @@ export async function searchCommand(query, options) {
|
|
|
12
15
|
logger.log(`Usage: ${colors.cyan('skillpkg search <query>')}`);
|
|
13
16
|
process.exit(1);
|
|
14
17
|
}
|
|
15
|
-
|
|
16
|
-
registryUrl: options.registry || DEFAULT_REGISTRY_URL,
|
|
17
|
-
});
|
|
18
|
-
logger.header('Search Skills');
|
|
18
|
+
logger.header('Search Skills on GitHub');
|
|
19
19
|
logger.log(`Searching for: ${colors.cyan(query)}`);
|
|
20
20
|
logger.blank();
|
|
21
21
|
try {
|
|
22
|
-
const
|
|
23
|
-
|
|
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);
|
|
22
|
+
const limit = options.limit ? parseInt(options.limit, 10) : 20;
|
|
23
|
+
const results = await searchGitHubSkills(query, { limit });
|
|
33
24
|
// JSON output mode
|
|
34
25
|
if (options.json) {
|
|
35
|
-
console.log(JSON.stringify(
|
|
26
|
+
console.log(JSON.stringify(results, null, 2));
|
|
36
27
|
return;
|
|
37
28
|
}
|
|
38
|
-
if (
|
|
29
|
+
if (results.length === 0) {
|
|
39
30
|
logger.warn('No skills found matching your query');
|
|
31
|
+
logger.log(colors.dim('Try different keywords or check GitHub directly.'));
|
|
40
32
|
return;
|
|
41
33
|
}
|
|
42
|
-
|
|
34
|
+
// Count skills with SKILL.md
|
|
35
|
+
const withSkillMd = results.filter((r) => r.hasSkill).length;
|
|
36
|
+
logger.log(`Found ${colors.cyan(String(results.length))} repository(s)` +
|
|
37
|
+
(withSkillMd > 0 ? ` (${colors.green(String(withSkillMd))} with SKILL.md)` : ''));
|
|
43
38
|
logger.blank();
|
|
44
39
|
// Display results
|
|
45
|
-
for (const item of
|
|
40
|
+
for (const item of results) {
|
|
46
41
|
const name = colors.cyan(item.name);
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
logger.log(`${name}${
|
|
42
|
+
const hasSkill = item.hasSkill ? colors.green(' ✓ SKILL.md') : '';
|
|
43
|
+
const stars = colors.yellow(`⭐${formatNumber(item.stars)}`);
|
|
44
|
+
logger.log(`${name}${hasSkill} ${stars}`);
|
|
45
|
+
logger.log(` ${colors.dim(item.fullName)}`);
|
|
50
46
|
if (item.description) {
|
|
51
|
-
logger.log(` ${
|
|
47
|
+
logger.log(` ${item.description}`);
|
|
52
48
|
}
|
|
53
|
-
if (item.
|
|
54
|
-
logger.log(` ${colors.dim('
|
|
49
|
+
if (item.topics && item.topics.length > 0) {
|
|
50
|
+
logger.log(` ${colors.dim('Topics:')} ${item.topics.slice(0, 5).join(', ')}`);
|
|
51
|
+
}
|
|
52
|
+
if (item.installSource) {
|
|
53
|
+
logger.log(` ${colors.dim('Install:')} skillpkg install ${item.installSource}`);
|
|
55
54
|
}
|
|
56
55
|
logger.blank();
|
|
57
56
|
}
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
colors.dim(`Use --page to navigate.`));
|
|
57
|
+
// Tip
|
|
58
|
+
if (withSkillMd === 0) {
|
|
59
|
+
logger.log(colors.dim('Tip: Repositories with SKILL.md can be installed directly. ' +
|
|
60
|
+
'Others may require manual setup.'));
|
|
63
61
|
}
|
|
64
62
|
}
|
|
65
63
|
catch (error) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
logger.error(`Registry error: ${error.message}`);
|
|
74
|
-
}
|
|
64
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
65
|
+
if (message.includes('rate limit')) {
|
|
66
|
+
logger.error('GitHub API rate limit exceeded');
|
|
67
|
+
logger.log(colors.dim('Set GITHUB_TOKEN environment variable for higher limits:'));
|
|
68
|
+
logger.log(colors.dim(' export GITHUB_TOKEN=your_token_here'));
|
|
75
69
|
}
|
|
76
70
|
else {
|
|
77
|
-
logger.error(`Search failed: ${
|
|
71
|
+
logger.error(`Search failed: ${message}`);
|
|
78
72
|
}
|
|
79
73
|
process.exit(1);
|
|
80
74
|
}
|
|
81
75
|
}
|
|
82
76
|
/**
|
|
83
|
-
* Format
|
|
77
|
+
* Format number for display (1000 -> 1K, 1000000 -> 1M)
|
|
84
78
|
*/
|
|
85
|
-
function
|
|
79
|
+
function formatNumber(count) {
|
|
86
80
|
if (count >= 1000000) {
|
|
87
81
|
return `${(count / 1000000).toFixed(1)}M`;
|
|
88
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillpkg-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "CLI for skillpkg - Agent Skills Package Manager. Install once, use everywhere.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
"node": ">=18.0.0"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"skillpkg-core": "^0.1.0",
|
|
54
53
|
"chalk": "^5.3.0",
|
|
55
54
|
"cli-table3": "^0.6.3",
|
|
56
55
|
"commander": "^12.0.0",
|
|
57
56
|
"inquirer": "^9.2.0",
|
|
58
57
|
"ora": "^8.0.0",
|
|
58
|
+
"skillpkg-core": "^0.2.0",
|
|
59
59
|
"tar-stream": "^3.1.7"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|