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
|
+
* init command - Create a new skill.yaml
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync } from 'fs';
|
|
5
|
+
import { writeFile } from 'fs/promises';
|
|
6
|
+
import { join, basename } from 'path';
|
|
7
|
+
import inquirer from 'inquirer';
|
|
8
|
+
import { stringify } from 'skillpkg-core';
|
|
9
|
+
import { logger, colors, withSpinner } from '../ui/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Default skill template
|
|
12
|
+
*/
|
|
13
|
+
function getDefaultSkill(name) {
|
|
14
|
+
return {
|
|
15
|
+
schema: '1.0',
|
|
16
|
+
name,
|
|
17
|
+
version: '1.0.0',
|
|
18
|
+
description: 'A skillpkg skill',
|
|
19
|
+
instructions: `# ${name}
|
|
20
|
+
|
|
21
|
+
## Overview
|
|
22
|
+
|
|
23
|
+
Describe what this skill does.
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
Explain how to use this skill.
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
Provide usage examples.
|
|
32
|
+
`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Validate skill name
|
|
37
|
+
*/
|
|
38
|
+
function validateName(input) {
|
|
39
|
+
if (!input) {
|
|
40
|
+
return 'Name is required';
|
|
41
|
+
}
|
|
42
|
+
if (!/^[a-z][a-z0-9-]*[a-z0-9]$/.test(input)) {
|
|
43
|
+
return 'Name must be kebab-case (e.g., my-skill)';
|
|
44
|
+
}
|
|
45
|
+
if (input.length < 2 || input.length > 100) {
|
|
46
|
+
return 'Name must be between 2 and 100 characters';
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* init command handler
|
|
52
|
+
*/
|
|
53
|
+
export async function initCommand(options) {
|
|
54
|
+
const cwd = process.cwd();
|
|
55
|
+
const skillPath = join(cwd, 'skill.yaml');
|
|
56
|
+
// Check if skill.yaml already exists
|
|
57
|
+
if (existsSync(skillPath)) {
|
|
58
|
+
logger.error('skill.yaml already exists in this directory');
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
let skill;
|
|
62
|
+
if (options.yes) {
|
|
63
|
+
// Quick mode - use defaults
|
|
64
|
+
const defaultName = options.name || toKebabCase(basename(cwd)) || 'my-skill';
|
|
65
|
+
skill = getDefaultSkill(defaultName);
|
|
66
|
+
logger.info(`Creating skill.yaml with defaults (name: ${colors.cyan(defaultName)})`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Interactive mode
|
|
70
|
+
logger.header('Create a new skill');
|
|
71
|
+
const answers = await inquirer.prompt([
|
|
72
|
+
{
|
|
73
|
+
type: 'input',
|
|
74
|
+
name: 'name',
|
|
75
|
+
message: 'Skill name:',
|
|
76
|
+
default: options.name || toKebabCase(basename(cwd)) || 'my-skill',
|
|
77
|
+
validate: validateName,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'input',
|
|
81
|
+
name: 'version',
|
|
82
|
+
message: 'Version:',
|
|
83
|
+
default: '1.0.0',
|
|
84
|
+
validate: (input) => {
|
|
85
|
+
if (!/^\d+\.\d+\.\d+/.test(input)) {
|
|
86
|
+
return 'Version must be semver (e.g., 1.0.0)';
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
type: 'input',
|
|
93
|
+
name: 'description',
|
|
94
|
+
message: 'Description:',
|
|
95
|
+
default: 'A skillpkg skill',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'input',
|
|
99
|
+
name: 'author',
|
|
100
|
+
message: 'Author:',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: 'checkbox',
|
|
104
|
+
name: 'platforms',
|
|
105
|
+
message: 'Target platforms:',
|
|
106
|
+
choices: [
|
|
107
|
+
{ name: 'Claude Code', value: 'claude-code', checked: true },
|
|
108
|
+
{ name: 'Codex (OpenAI)', value: 'codex' },
|
|
109
|
+
{ name: 'GitHub Copilot', value: 'copilot' },
|
|
110
|
+
{ name: 'Cline (VS Code)', value: 'cline' },
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
]);
|
|
114
|
+
skill = {
|
|
115
|
+
schema: '1.0',
|
|
116
|
+
name: answers.name,
|
|
117
|
+
version: answers.version,
|
|
118
|
+
description: answers.description,
|
|
119
|
+
...(answers.author && { author: answers.author }),
|
|
120
|
+
...(answers.platforms?.length > 0 && {
|
|
121
|
+
platforms: Object.fromEntries(answers.platforms.map((p) => [p, {}])),
|
|
122
|
+
}),
|
|
123
|
+
instructions: `# ${answers.name}
|
|
124
|
+
|
|
125
|
+
## Overview
|
|
126
|
+
|
|
127
|
+
${answers.description}
|
|
128
|
+
|
|
129
|
+
## Usage
|
|
130
|
+
|
|
131
|
+
Explain how to use this skill.
|
|
132
|
+
|
|
133
|
+
## Examples
|
|
134
|
+
|
|
135
|
+
Provide usage examples.
|
|
136
|
+
`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
// Write skill.yaml
|
|
140
|
+
await withSpinner('Creating skill.yaml', async () => {
|
|
141
|
+
const content = stringify(skill);
|
|
142
|
+
await writeFile(skillPath, content, 'utf-8');
|
|
143
|
+
});
|
|
144
|
+
logger.blank();
|
|
145
|
+
logger.success(`Created ${colors.cyan('skill.yaml')}`);
|
|
146
|
+
logger.blank();
|
|
147
|
+
logger.log('Next steps:');
|
|
148
|
+
logger.item(`Edit ${colors.cyan('skill.yaml')} to customize your skill`);
|
|
149
|
+
logger.item(`Run ${colors.cyan('skillpkg sync')} to sync to platforms`);
|
|
150
|
+
logger.blank();
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Convert string to kebab-case
|
|
154
|
+
*/
|
|
155
|
+
function toKebabCase(str) {
|
|
156
|
+
return str
|
|
157
|
+
.toLowerCase()
|
|
158
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
159
|
+
.replace(/^-|-$/g, '');
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7D;;GAEG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO;QACL,MAAM,EAAE,KAAK;QACb,IAAI;QACJ,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,KAAK,IAAI;;;;;;;;;;;;;CAa1B;KACE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,0CAA0C,CAAC;IACpD,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAC3C,OAAO,2CAA2C,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAE1C,qCAAqC;IACrC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,KAAY,CAAC;IAEjB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,4BAA4B;QAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC;QAC7E,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,4CAA4C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU;gBACjE,QAAQ,EAAE,YAAY;aACvB;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClC,OAAO,sCAAsC,CAAC;oBAChD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE,kBAAkB;aAC5B;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,SAAS;aACnB;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,mBAAmB;gBAC5B,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE;oBAC5D,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE;oBAC1C,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE;oBAC5C,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE;iBAC5C;aACF;SACF,CAAC,CAAC;QAEH,KAAK,GAAG;YACN,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACjD,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI;gBACnC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC7E,CAAC;YACF,YAAY,EAAE,KAAK,OAAO,CAAC,IAAI;;;;EAInC,OAAO,CAAC,WAAW;;;;;;;;;CASpB;SACI,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,MAAM,WAAW,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1B,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IACzE,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;IACxE,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG;SACP,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface InstallOptions {
|
|
2
|
+
global?: boolean;
|
|
3
|
+
registry?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* install command handler
|
|
7
|
+
*/
|
|
8
|
+
export declare function installCommand(skillArg: string | undefined, options: InstallOptions): Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAYA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* install command - Install a skill
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync, createReadStream } from 'fs';
|
|
5
|
+
import { readFile } from 'fs/promises';
|
|
6
|
+
import { join, resolve, isAbsolute } from 'path';
|
|
7
|
+
import { createGunzip } from 'zlib';
|
|
8
|
+
import { parse, createGlobalStore, createLocalStore } from 'skillpkg-core';
|
|
9
|
+
import { logger, colors, withSpinner } from '../ui/index.js';
|
|
10
|
+
import * as tar from 'tar-stream';
|
|
11
|
+
/**
|
|
12
|
+
* install command handler
|
|
13
|
+
*/
|
|
14
|
+
export async function installCommand(skillArg, options) {
|
|
15
|
+
// If no skill argument, try to install from current directory
|
|
16
|
+
if (!skillArg) {
|
|
17
|
+
const localSkillPath = join(process.cwd(), 'skill.yaml');
|
|
18
|
+
if (existsSync(localSkillPath)) {
|
|
19
|
+
skillArg = '.';
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
logger.error('No skill specified and no skill.yaml found in current directory');
|
|
23
|
+
logger.log(`Usage: ${colors.cyan('skillpkg install <skill>')}`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Determine if it's a local path or registry name
|
|
28
|
+
const isLocalPath = skillArg.startsWith('.') || skillArg.startsWith('/') || existsSync(skillArg);
|
|
29
|
+
if (isLocalPath) {
|
|
30
|
+
// Check if it's a .skillpkg file
|
|
31
|
+
if (skillArg.endsWith('.skillpkg')) {
|
|
32
|
+
await installFromPack(skillArg, options);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
await installFromLocal(skillArg, options);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
await installFromRegistry(skillArg, options);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Install skill from local path
|
|
44
|
+
*/
|
|
45
|
+
async function installFromLocal(pathArg, options) {
|
|
46
|
+
// Resolve path
|
|
47
|
+
const skillPath = isAbsolute(pathArg) ? pathArg : resolve(process.cwd(), pathArg);
|
|
48
|
+
const yamlPath = existsSync(join(skillPath, 'skill.yaml'))
|
|
49
|
+
? join(skillPath, 'skill.yaml')
|
|
50
|
+
: skillPath.endsWith('.yaml')
|
|
51
|
+
? skillPath
|
|
52
|
+
: join(skillPath, 'skill.yaml');
|
|
53
|
+
if (!existsSync(yamlPath)) {
|
|
54
|
+
logger.error(`skill.yaml not found at ${yamlPath}`);
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
// Parse skill.yaml
|
|
58
|
+
let skill;
|
|
59
|
+
try {
|
|
60
|
+
const content = await readFile(yamlPath, 'utf-8');
|
|
61
|
+
const result = parse(content);
|
|
62
|
+
if (!result.success || !result.data) {
|
|
63
|
+
logger.error('Failed to parse skill.yaml:');
|
|
64
|
+
result.errors?.forEach((e) => logger.error(` ${e.message}`));
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
skill = result.data;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
logger.error(`Failed to read skill.yaml: ${error instanceof Error ? error.message : error}`);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
// Get store
|
|
74
|
+
const store = options.global ? createGlobalStore() : createLocalStore();
|
|
75
|
+
// Initialize store if needed
|
|
76
|
+
if (!(await store.isInitialized())) {
|
|
77
|
+
await withSpinner('Initializing store', () => store.init());
|
|
78
|
+
}
|
|
79
|
+
// Check if already installed
|
|
80
|
+
if (await store.hasSkill(skill.name)) {
|
|
81
|
+
const existing = await store.getSkill(skill.name);
|
|
82
|
+
if (existing?.version === skill.version) {
|
|
83
|
+
logger.warn(`${skill.name}@${skill.version} is already installed`);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
logger.info(`Updating ${skill.name} from ${existing?.version} to ${skill.version}`);
|
|
87
|
+
}
|
|
88
|
+
// Install skill
|
|
89
|
+
await withSpinner(`Installing ${colors.cyan(skill.name)}@${skill.version}`, async () => {
|
|
90
|
+
await store.addSkill(skill, { source: 'local' });
|
|
91
|
+
});
|
|
92
|
+
logger.blank();
|
|
93
|
+
logger.success(`Installed ${colors.cyan(skill.name)}@${skill.version}`);
|
|
94
|
+
logger.blank();
|
|
95
|
+
logger.log('Next steps:');
|
|
96
|
+
logger.item(`Run ${colors.cyan('skillpkg list')} to see installed skills`);
|
|
97
|
+
logger.item(`Run ${colors.cyan('skillpkg sync')} to sync to platforms`);
|
|
98
|
+
logger.blank();
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Install skill from .skillpkg pack file
|
|
102
|
+
*/
|
|
103
|
+
async function installFromPack(packPath, options) {
|
|
104
|
+
// Resolve path
|
|
105
|
+
const fullPath = isAbsolute(packPath) ? packPath : resolve(process.cwd(), packPath);
|
|
106
|
+
if (!existsSync(fullPath)) {
|
|
107
|
+
logger.error(`Pack file not found: ${fullPath}`);
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
logger.info(`Installing from ${colors.cyan(packPath)}`);
|
|
111
|
+
// Extract skill.yaml from the pack
|
|
112
|
+
const skill = await withSpinner('Extracting pack', async () => {
|
|
113
|
+
const extract = tar.extract();
|
|
114
|
+
const chunks = [];
|
|
115
|
+
return new Promise((resolvePromise, reject) => {
|
|
116
|
+
extract.on('entry', (header, stream, next) => {
|
|
117
|
+
// skill.yaml can be at root or inside a skill-named folder
|
|
118
|
+
if (header.name === 'skill.yaml' || header.name.endsWith('/skill.yaml')) {
|
|
119
|
+
stream.on('data', (chunk) => chunks.push(chunk));
|
|
120
|
+
stream.on('end', next);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
stream.resume();
|
|
124
|
+
next();
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
extract.on('finish', async () => {
|
|
128
|
+
if (chunks.length === 0) {
|
|
129
|
+
reject(new Error('skill.yaml not found in pack'));
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const content = Buffer.concat(chunks).toString('utf-8');
|
|
133
|
+
const result = parse(content);
|
|
134
|
+
if (!result.success || !result.data) {
|
|
135
|
+
reject(new Error(`Failed to parse skill.yaml: ${result.errors?.[0]?.message}`));
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
resolvePromise(result.data);
|
|
139
|
+
});
|
|
140
|
+
extract.on('error', reject);
|
|
141
|
+
createReadStream(fullPath)
|
|
142
|
+
.pipe(createGunzip())
|
|
143
|
+
.pipe(extract);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
// Get store
|
|
147
|
+
const store = options.global ? createGlobalStore() : createLocalStore();
|
|
148
|
+
// Initialize store if needed
|
|
149
|
+
if (!(await store.isInitialized())) {
|
|
150
|
+
await withSpinner('Initializing store', () => store.init());
|
|
151
|
+
}
|
|
152
|
+
// Check if already installed
|
|
153
|
+
if (await store.hasSkill(skill.name)) {
|
|
154
|
+
const existing = await store.getSkill(skill.name);
|
|
155
|
+
if (existing?.version === skill.version) {
|
|
156
|
+
logger.warn(`${skill.name}@${skill.version} is already installed`);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
logger.info(`Updating ${skill.name} from ${existing?.version} to ${skill.version}`);
|
|
160
|
+
}
|
|
161
|
+
// Install skill
|
|
162
|
+
await withSpinner(`Installing ${colors.cyan(skill.name)}@${skill.version}`, async () => {
|
|
163
|
+
await store.addSkill(skill, { source: 'local' });
|
|
164
|
+
});
|
|
165
|
+
logger.blank();
|
|
166
|
+
logger.success(`Installed ${colors.cyan(skill.name)}@${skill.version}`);
|
|
167
|
+
logger.blank();
|
|
168
|
+
logger.log('Next steps:');
|
|
169
|
+
logger.item(`Run ${colors.cyan('skillpkg list')} to see installed skills`);
|
|
170
|
+
logger.item(`Run ${colors.cyan('skillpkg sync')} to sync to platforms`);
|
|
171
|
+
logger.blank();
|
|
172
|
+
}
|
|
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
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAOA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCrE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list command - List installed skills
|
|
3
|
+
*/
|
|
4
|
+
import { createGlobalStore, createLocalStore } from 'skillpkg-core';
|
|
5
|
+
import { logger, colors, createTable, printTable } from '../ui/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* list command handler
|
|
8
|
+
*/
|
|
9
|
+
export async function listCommand(options) {
|
|
10
|
+
const store = options.global ? createGlobalStore() : createLocalStore();
|
|
11
|
+
// Check if store is initialized
|
|
12
|
+
if (!(await store.isInitialized())) {
|
|
13
|
+
if (options.json) {
|
|
14
|
+
console.log(JSON.stringify({ skills: [] }, null, 2));
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
logger.info('No skills installed');
|
|
18
|
+
logger.log(`Run ${colors.cyan('skillpkg install <skill>')} to install one`);
|
|
19
|
+
}
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// Get all skills
|
|
23
|
+
const skills = await store.listSkills();
|
|
24
|
+
if (skills.length === 0) {
|
|
25
|
+
if (options.json) {
|
|
26
|
+
console.log(JSON.stringify({ skills: [] }, null, 2));
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
logger.info('No skills installed');
|
|
30
|
+
logger.log(`Run ${colors.cyan('skillpkg install <skill>')} to install one`);
|
|
31
|
+
}
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Output based on format
|
|
35
|
+
if (options.json) {
|
|
36
|
+
console.log(JSON.stringify({ skills }, null, 2));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
printSkillTable(skills, options.global);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Print skills as a table
|
|
44
|
+
*/
|
|
45
|
+
function printSkillTable(skills, isGlobal = false) {
|
|
46
|
+
logger.header(`Installed Skills (${isGlobal ? 'global' : 'local'})`);
|
|
47
|
+
const table = createTable({
|
|
48
|
+
head: ['Name', 'Version', 'Description', 'Synced To'],
|
|
49
|
+
});
|
|
50
|
+
for (const skill of skills) {
|
|
51
|
+
const syncedPlatforms = skill.syncedPlatforms.length > 0
|
|
52
|
+
? skill.syncedPlatforms.map((p) => colors.green(p)).join(', ')
|
|
53
|
+
: colors.dim('none');
|
|
54
|
+
table.push([
|
|
55
|
+
colors.cyan(skill.name),
|
|
56
|
+
skill.version,
|
|
57
|
+
truncate(skill.description, 30),
|
|
58
|
+
syncedPlatforms,
|
|
59
|
+
]);
|
|
60
|
+
}
|
|
61
|
+
printTable(table);
|
|
62
|
+
logger.blank();
|
|
63
|
+
logger.log(`Total: ${colors.cyan(String(skills.length))} skill(s)`);
|
|
64
|
+
logger.blank();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Truncate string with ellipsis
|
|
68
|
+
*/
|
|
69
|
+
function truncate(str, maxLength) {
|
|
70
|
+
if (str.length <= maxLength)
|
|
71
|
+
return str;
|
|
72
|
+
return str.slice(0, maxLength - 3) + '...';
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface LoginCommandOptions {
|
|
2
|
+
registry?: string;
|
|
3
|
+
token?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* login command handler
|
|
7
|
+
*/
|
|
8
|
+
export declare function loginCommand(options: LoginCommandOptions): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* logout command handler
|
|
11
|
+
*/
|
|
12
|
+
export declare function logoutCommand(options: {
|
|
13
|
+
registry?: string;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* whoami command handler - Show current logged in user
|
|
17
|
+
*/
|
|
18
|
+
export declare function whoamiCommand(options: {
|
|
19
|
+
registry?: string;
|
|
20
|
+
}): Promise<void>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAaA,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE9E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBjF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjF"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* login command - Authenticate with a registry
|
|
3
|
+
*/
|
|
4
|
+
import { setToken, removeToken, isAuthenticated, getUsername, createRegistryClient, DEFAULT_REGISTRY_URL, } from 'skillpkg-core';
|
|
5
|
+
import { logger, colors, createPrompt } from '../ui/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* login command handler
|
|
8
|
+
*/
|
|
9
|
+
export async function loginCommand(options) {
|
|
10
|
+
const registryUrl = options.registry || DEFAULT_REGISTRY_URL;
|
|
11
|
+
logger.header('Login to Registry');
|
|
12
|
+
logger.log(`Registry: ${colors.cyan(registryUrl)}`);
|
|
13
|
+
logger.blank();
|
|
14
|
+
// Check if already logged in
|
|
15
|
+
if (await isAuthenticated(registryUrl)) {
|
|
16
|
+
const username = await getUsername(registryUrl);
|
|
17
|
+
logger.info(`Already logged in as ${colors.cyan(username || 'unknown')}`);
|
|
18
|
+
const { confirm } = await createPrompt([
|
|
19
|
+
{
|
|
20
|
+
type: 'confirm',
|
|
21
|
+
name: 'confirm',
|
|
22
|
+
message: 'Do you want to re-authenticate?',
|
|
23
|
+
default: false,
|
|
24
|
+
},
|
|
25
|
+
]);
|
|
26
|
+
if (!confirm) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Get token from option or prompt
|
|
31
|
+
let token = options.token;
|
|
32
|
+
if (!token) {
|
|
33
|
+
logger.log('To get a token, visit:');
|
|
34
|
+
logger.log(` ${colors.cyan(`${registryUrl}/tokens`)}`);
|
|
35
|
+
logger.blank();
|
|
36
|
+
const answers = await createPrompt([
|
|
37
|
+
{
|
|
38
|
+
type: 'password',
|
|
39
|
+
name: 'token',
|
|
40
|
+
message: 'Enter your auth token:',
|
|
41
|
+
},
|
|
42
|
+
]);
|
|
43
|
+
token = answers.token;
|
|
44
|
+
}
|
|
45
|
+
if (!token || token.trim() === '') {
|
|
46
|
+
logger.error('Token is required');
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
// Verify token by making a test request
|
|
50
|
+
logger.info('Verifying token...');
|
|
51
|
+
const client = createRegistryClient({ registryUrl });
|
|
52
|
+
// Check if registry is reachable
|
|
53
|
+
const isOnline = await client.ping();
|
|
54
|
+
if (!isOnline) {
|
|
55
|
+
logger.warn('Could not verify token (registry unreachable)');
|
|
56
|
+
logger.log('Token saved locally. It will be verified on next request.');
|
|
57
|
+
}
|
|
58
|
+
// Save token
|
|
59
|
+
await setToken(registryUrl, token.trim());
|
|
60
|
+
logger.blank();
|
|
61
|
+
logger.success('Successfully logged in!');
|
|
62
|
+
logger.blank();
|
|
63
|
+
logger.log('You can now:');
|
|
64
|
+
logger.item(`${colors.cyan('skillpkg publish')} - Publish skills`);
|
|
65
|
+
logger.item(`${colors.cyan('skillpkg logout')} - Log out`);
|
|
66
|
+
logger.blank();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* logout command handler
|
|
70
|
+
*/
|
|
71
|
+
export async function logoutCommand(options) {
|
|
72
|
+
const registryUrl = options.registry || DEFAULT_REGISTRY_URL;
|
|
73
|
+
logger.header('Logout from Registry');
|
|
74
|
+
if (!(await isAuthenticated(registryUrl))) {
|
|
75
|
+
logger.info('Not currently logged in');
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const username = await getUsername(registryUrl);
|
|
79
|
+
const removed = await removeToken(registryUrl);
|
|
80
|
+
if (removed) {
|
|
81
|
+
logger.success(`Logged out ${username ? `(${colors.cyan(username)})` : ''}`);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
logger.error('Failed to log out');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* whoami command handler - Show current logged in user
|
|
89
|
+
*/
|
|
90
|
+
export async function whoamiCommand(options) {
|
|
91
|
+
const registryUrl = options.registry || DEFAULT_REGISTRY_URL;
|
|
92
|
+
if (!(await isAuthenticated(registryUrl))) {
|
|
93
|
+
logger.log('Not logged in');
|
|
94
|
+
logger.log(`Run ${colors.cyan('skillpkg login')} to authenticate`);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const username = await getUsername(registryUrl);
|
|
98
|
+
logger.log(username || 'Logged in (username unknown)');
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface PublishCommandOptions {
|
|
2
|
+
tag?: string;
|
|
3
|
+
access?: string;
|
|
4
|
+
registry?: string;
|
|
5
|
+
dryRun?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* publish command handler
|
|
9
|
+
*/
|
|
10
|
+
export declare function publishCommand(options: PublishCommandOptions): Promise<void>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAiBA,UAAU,qBAAqB;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6IlF"}
|