@skillbase/spm 0.1.3 → 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/CHANGELOG.md +37 -0
- package/dist/cli/command.d.ts +43 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +8 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands/add.d.ts +17 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/add.js +348 -0
- package/dist/cli/commands/add.js.map +1 -0
- package/dist/cli/commands/connect.d.ts +2 -0
- package/dist/cli/commands/connect.d.ts.map +1 -1
- package/dist/cli/commands/connect.js +52 -29
- package/dist/cli/commands/connect.js.map +1 -1
- package/dist/cli/commands/convert.d.ts +2 -0
- package/dist/cli/commands/convert.d.ts.map +1 -1
- package/dist/cli/commands/convert.js +55 -39
- package/dist/cli/commands/convert.js.map +1 -1
- package/dist/cli/commands/create.d.ts +3 -3
- package/dist/cli/commands/create.d.ts.map +1 -1
- package/dist/cli/commands/create.js +15 -15
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/info.d.ts +2 -0
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +24 -17
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +13 -6
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts +3 -3
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +23 -240
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/link.d.ts +4 -0
- package/dist/cli/commands/link.d.ts.map +1 -0
- package/dist/cli/commands/link.js +56 -0
- package/dist/cli/commands/link.js.map +1 -0
- package/dist/cli/commands/list.d.ts +2 -0
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +35 -12
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/login.d.ts +2 -0
- package/dist/cli/commands/login.d.ts.map +1 -1
- package/dist/cli/commands/login.js +62 -28
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/persona.d.ts +3 -0
- package/dist/cli/commands/persona.d.ts.map +1 -0
- package/dist/cli/commands/persona.js +253 -0
- package/dist/cli/commands/persona.js.map +1 -0
- package/dist/cli/commands/publish.d.ts +2 -0
- package/dist/cli/commands/publish.d.ts.map +1 -1
- package/dist/cli/commands/publish.js +30 -32
- package/dist/cli/commands/publish.js.map +1 -1
- package/dist/cli/commands/rate.d.ts +2 -0
- package/dist/cli/commands/rate.d.ts.map +1 -1
- package/dist/cli/commands/rate.js +15 -5
- package/dist/cli/commands/rate.js.map +1 -1
- package/dist/cli/commands/reindex.d.ts +3 -0
- package/dist/cli/commands/reindex.d.ts.map +1 -0
- package/dist/cli/commands/reindex.js +35 -0
- package/dist/cli/commands/reindex.js.map +1 -0
- package/dist/cli/commands/remove.d.ts +8 -0
- package/dist/cli/commands/remove.d.ts.map +1 -0
- package/dist/cli/commands/remove.js +126 -0
- package/dist/cli/commands/remove.js.map +1 -0
- package/dist/cli/commands/search.d.ts +2 -0
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +25 -12
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/serve.d.ts +3 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +17 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +2 -0
- package/dist/cli/commands/stats.d.ts.map +1 -1
- package/dist/cli/commands/stats.js +16 -10
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/uninstall.d.ts +2 -0
- package/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/dist/cli/commands/uninstall.js +50 -14
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/commands/update.d.ts +2 -0
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +27 -32
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +2 -0
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +16 -18
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/help.d.ts +7 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +72 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.js +5 -151
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/loader.d.ts +3 -0
- package/dist/cli/loader.d.ts.map +1 -0
- package/dist/cli/loader.js +69 -0
- package/dist/cli/loader.js.map +1 -0
- package/dist/cli/logger.d.ts +9 -0
- package/dist/cli/logger.d.ts.map +1 -0
- package/dist/cli/logger.js +13 -0
- package/dist/cli/logger.js.map +1 -0
- package/dist/cli/theme.d.ts +17 -0
- package/dist/cli/theme.d.ts.map +1 -0
- package/dist/cli/theme.js +29 -0
- package/dist/cli/theme.js.map +1 -0
- package/dist/cli/ui.d.ts +8 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +17 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +4 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/paths.d.ts +2 -0
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/paths.js +7 -0
- package/dist/core/paths.js.map +1 -1
- package/dist/core/persona.d.ts +17 -0
- package/dist/core/persona.d.ts.map +1 -0
- package/dist/core/persona.js +118 -0
- package/dist/core/persona.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +91 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/schema/persona-schema.d.ts +6 -0
- package/dist/schema/persona-schema.d.ts.map +1 -0
- package/dist/schema/persona-schema.js +72 -0
- package/dist/schema/persona-schema.js.map +1 -0
- package/dist/types/index.d.ts +25 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/cli/commands/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/cli/commands/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/convert.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/convert.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,OAAO,EAAE,UAYrB,CAAC;AAEF,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAsMD,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { log, spinner, note, cancel, isCancel, text, exitError } from "../ui.js";
|
|
4
|
+
export const command = {
|
|
5
|
+
name: "convert",
|
|
6
|
+
description: "Convert prompt files (.md, .txt) into skill scaffolds",
|
|
7
|
+
group: "system",
|
|
8
|
+
args: [{ name: "source", required: true }],
|
|
9
|
+
options: [
|
|
10
|
+
{ flags: "--author <author>", description: "Author name" },
|
|
11
|
+
{ flags: "--scope <scope>", description: "Skill scope (default: user)" },
|
|
12
|
+
{ flags: "--license <license>", description: "License (default: MIT)" },
|
|
13
|
+
{ flags: "-o, --output <dir>", description: "Output directory (default: current)" },
|
|
14
|
+
],
|
|
15
|
+
handler: convertCommand,
|
|
16
|
+
};
|
|
3
17
|
const PROMPT_EXTENSIONS = new Set([".md", ".txt", ".prompt"]);
|
|
4
18
|
// XML tags used in the structured skill template
|
|
5
19
|
const STRUCTURE_MARKERS = ["<role>", "<context>", "<instructions>", "<examples>", "<guidelines>", "<verification>"];
|
|
@@ -85,30 +99,37 @@ async function promptSharedMeta(options) {
|
|
|
85
99
|
license: options.license,
|
|
86
100
|
};
|
|
87
101
|
}
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
output: process.stdout,
|
|
102
|
+
const author = options.author ?? await text({
|
|
103
|
+
message: "Author name:",
|
|
104
|
+
validate: (v) => (v?.trim() ? undefined : "Author name is required"),
|
|
92
105
|
});
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
: (await rl.question("License [MIT]: ")).trim();
|
|
106
|
-
const license = licenseInput || "MIT";
|
|
107
|
-
return { author, scope, license };
|
|
106
|
+
if (isCancel(author)) {
|
|
107
|
+
cancel("Cancelled.");
|
|
108
|
+
process.exit(0);
|
|
109
|
+
}
|
|
110
|
+
const scope = options.scope ?? await text({
|
|
111
|
+
message: "Scope:",
|
|
112
|
+
defaultValue: "user",
|
|
113
|
+
placeholder: "user",
|
|
114
|
+
});
|
|
115
|
+
if (isCancel(scope)) {
|
|
116
|
+
cancel("Cancelled.");
|
|
117
|
+
process.exit(0);
|
|
108
118
|
}
|
|
109
|
-
|
|
110
|
-
|
|
119
|
+
const license = options.license ?? await text({
|
|
120
|
+
message: "License:",
|
|
121
|
+
defaultValue: "MIT",
|
|
122
|
+
placeholder: "MIT",
|
|
123
|
+
});
|
|
124
|
+
if (isCancel(license)) {
|
|
125
|
+
cancel("Cancelled.");
|
|
126
|
+
process.exit(0);
|
|
111
127
|
}
|
|
128
|
+
return {
|
|
129
|
+
author: String(author).trim(),
|
|
130
|
+
scope: String(scope) || "user",
|
|
131
|
+
license: String(license) || "MIT",
|
|
132
|
+
};
|
|
112
133
|
}
|
|
113
134
|
async function collectPromptFiles(source) {
|
|
114
135
|
const stat = await fs.stat(source);
|
|
@@ -124,13 +145,11 @@ async function collectPromptFiles(source) {
|
|
|
124
145
|
}
|
|
125
146
|
}
|
|
126
147
|
if (files.length === 0) {
|
|
127
|
-
|
|
128
|
-
process.exit(1);
|
|
148
|
+
exitError(`No prompt files (${[...PROMPT_EXTENSIONS].join(", ")}) found in "${source}".`);
|
|
129
149
|
}
|
|
130
150
|
return files.sort();
|
|
131
151
|
}
|
|
132
|
-
|
|
133
|
-
process.exit(1);
|
|
152
|
+
exitError(`"${source}" is not a file or directory.`);
|
|
134
153
|
}
|
|
135
154
|
async function convertFile(filePath, meta, outputDir) {
|
|
136
155
|
const baseName = path.basename(filePath, path.extname(filePath));
|
|
@@ -138,7 +157,7 @@ async function convertFile(filePath, meta, outputDir) {
|
|
|
138
157
|
const skillDir = path.join(outputDir, skillName);
|
|
139
158
|
try {
|
|
140
159
|
await fs.access(skillDir);
|
|
141
|
-
|
|
160
|
+
log.warning(`Skipped: ${skillDir}/ already exists`);
|
|
142
161
|
return "";
|
|
143
162
|
}
|
|
144
163
|
catch {
|
|
@@ -158,32 +177,29 @@ export async function convertCommand(source, options) {
|
|
|
158
177
|
await fs.access(resolvedSource);
|
|
159
178
|
}
|
|
160
179
|
catch {
|
|
161
|
-
|
|
162
|
-
process.exit(1);
|
|
180
|
+
exitError(`"${source}" does not exist.`);
|
|
163
181
|
}
|
|
164
182
|
const files = await collectPromptFiles(resolvedSource);
|
|
165
|
-
|
|
166
|
-
console.log();
|
|
183
|
+
log.info(`Found ${files.length} prompt file${files.length > 1 ? "s" : ""}: ${files.map((f) => path.basename(f)).join(", ")}`);
|
|
167
184
|
const meta = await promptSharedMeta(options);
|
|
168
185
|
const outputDir = path.resolve(options.output ?? ".");
|
|
169
|
-
|
|
170
|
-
|
|
186
|
+
const s = spinner();
|
|
187
|
+
s.start("Converting...");
|
|
171
188
|
const created = [];
|
|
172
189
|
for (const file of files) {
|
|
173
190
|
const name = await convertFile(file, meta, outputDir);
|
|
174
191
|
if (name) {
|
|
175
|
-
console.log(` ${name}/ ← ${path.basename(file)}`);
|
|
176
192
|
created.push(name);
|
|
177
193
|
}
|
|
178
194
|
}
|
|
179
195
|
if (created.length === 0) {
|
|
180
|
-
|
|
196
|
+
s.stop("No skills created.");
|
|
181
197
|
return;
|
|
182
198
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
199
|
+
s.stop(`Converted ${created.length} file(s)`);
|
|
200
|
+
for (const name of created) {
|
|
201
|
+
log.success(`${name}/`);
|
|
202
|
+
}
|
|
203
|
+
note(`1. Review and edit skill.json in each directory (description, trigger, tags)\n2. skills validate ./${created[0]}\n3. skills install ./${created[0]}`, "Next steps");
|
|
188
204
|
}
|
|
189
205
|
//# sourceMappingURL=convert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/cli/commands/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/cli/commands/convert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import type { CommandDef } from "../command.js";
|
|
2
|
+
export declare const command: CommandDef;
|
|
3
|
+
export declare function createCommand(name: string): Promise<void>;
|
|
4
4
|
//# sourceMappingURL=create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,OAAO,EAAE,UAMrB,CAAC;AAiFF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B/D"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
|
|
3
|
+
import { log, note, exitError } from "../ui.js";
|
|
4
|
+
export const command = {
|
|
5
|
+
name: "create",
|
|
6
|
+
description: "Create a new skill scaffold",
|
|
7
|
+
group: "system",
|
|
8
|
+
args: [{ name: "name", required: true }],
|
|
9
|
+
handler: createCommand,
|
|
10
|
+
};
|
|
11
|
+
function buildManifest(name) {
|
|
4
12
|
return {
|
|
5
13
|
schema_version: 1,
|
|
6
|
-
name
|
|
14
|
+
name,
|
|
7
15
|
version: "1.0.0",
|
|
8
16
|
language: "en",
|
|
9
17
|
description: `TODO: describe what ${name} does`,
|
|
@@ -77,28 +85,20 @@ Before completing, verify:
|
|
|
77
85
|
- [ ] No security permissions are used beyond what is declared in skill.json
|
|
78
86
|
</verification>
|
|
79
87
|
`;
|
|
80
|
-
export async function createCommand(name
|
|
81
|
-
const scope = options.scope ?? "user";
|
|
88
|
+
export async function createCommand(name) {
|
|
82
89
|
const dir = path.resolve(name);
|
|
83
90
|
try {
|
|
84
91
|
await fs.access(dir);
|
|
85
|
-
|
|
86
|
-
process.exit(1);
|
|
92
|
+
exitError(`Directory "${name}" already exists.`);
|
|
87
93
|
}
|
|
88
94
|
catch {
|
|
89
95
|
// Directory doesn't exist — good
|
|
90
96
|
}
|
|
91
97
|
await fs.mkdir(dir, { recursive: true });
|
|
92
|
-
const manifest = buildManifest(name
|
|
98
|
+
const manifest = buildManifest(name);
|
|
93
99
|
await fs.writeFile(path.join(dir, "skill.json"), JSON.stringify(manifest, null, 2), "utf-8");
|
|
94
100
|
await fs.writeFile(path.join(dir, "SKILL.md"), SKILL_MD_TEMPLATE(name), "utf-8");
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
console.log(` SKILL.md — instructions for the model`);
|
|
98
|
-
console.log(`\nNext steps:`);
|
|
99
|
-
console.log(` 1. Edit skill.json — set description, trigger, tags`);
|
|
100
|
-
console.log(` 2. Edit SKILL.md — write model instructions`);
|
|
101
|
-
console.log(` 3. skills validate ./${name}`);
|
|
102
|
-
console.log(` 4. skills install ./${name}`);
|
|
101
|
+
log.success(`Created skill scaffold: ${dir}/`);
|
|
102
|
+
note(`skill.json — manifest (edit name, trigger, permissions)\nSKILL.md — instructions for the model\n\nNext steps:\n 1. Edit skill.json — set author, description, trigger, tags\n 2. Edit SKILL.md — write model instructions\n 3. spm validate ./${name}\n 4. spm link ./${name}`, "Scaffold contents");
|
|
103
103
|
}
|
|
104
104
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGhD,MAAM,CAAC,MAAM,OAAO,GAAe;IACjC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,6BAA6B;IAC1C,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,OAAO,EAAE,aAAa;CACvB,CAAC;AAEF,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO;QACL,cAAc,EAAE,CAAC;QACjB,IAAI;QACJ,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,uBAAuB,IAAI,OAAO;QAC/C,OAAO,EAAE;YACP,WAAW,EAAE,8BAA8B,IAAI,EAAE;YACjD,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,EAAE;SACb;QACD,YAAY,EAAE,EAAE;QAChB,aAAa,EAAE;YACb,kBAAkB,EAAE,IAAI;YACxB,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;SACX;QACD,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE;YACR,WAAW,EAAE,EAAE;SAChB;QACD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC;;;;IAIxC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CP,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,SAAS,CAAC,cAAc,IAAI,mBAAmB,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IAED,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,EAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EACjC,OAAO,CACR,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAC1B,iBAAiB,CAAC,IAAI,CAAC,EACvB,OAAO,CACR,CAAC;IAEF,GAAG,CAAC,OAAO,CAAC,2BAA2B,GAAG,GAAG,CAAC,CAAC;IAC/C,IAAI,CACF,sPAAsP,IAAI,qBAAqB,IAAI,EAAE,EACrR,mBAAmB,CACpB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,OAAO,EAAE,UAMrB,CAAC;AAEF,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqD7D"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { getSkillIndex, findSkill } from "../../core/registry.js";
|
|
4
|
+
import { note, exitError } from "../ui.js";
|
|
5
|
+
export const command = {
|
|
6
|
+
name: "info",
|
|
7
|
+
description: "Show detailed information about a skill",
|
|
8
|
+
group: "review",
|
|
9
|
+
args: [{ name: "name", required: true }],
|
|
10
|
+
handler: infoCommand,
|
|
11
|
+
};
|
|
4
12
|
export async function infoCommand(name) {
|
|
5
13
|
const index = await getSkillIndex();
|
|
6
14
|
const entry = findSkill(index, name);
|
|
7
15
|
if (!entry) {
|
|
8
|
-
|
|
9
|
-
process.exit(1);
|
|
16
|
+
exitError(`Skill "${name}" not found. Use "spm list" to see installed skills.`);
|
|
10
17
|
}
|
|
11
18
|
// Read full manifest
|
|
12
19
|
const skillDir = path.dirname(entry.entry);
|
|
@@ -19,33 +26,33 @@ export async function infoCommand(name) {
|
|
|
19
26
|
catch {
|
|
20
27
|
// Continue with index data only
|
|
21
28
|
}
|
|
22
|
-
|
|
23
|
-
console.log();
|
|
29
|
+
const lines = [];
|
|
24
30
|
if (manifest) {
|
|
25
|
-
|
|
31
|
+
lines.push(`description: ${manifest.description}`);
|
|
26
32
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
lines.push(`trigger: ${entry.trigger}`);
|
|
34
|
+
lines.push(`tags: ${entry.tags.join(", ")}`);
|
|
35
|
+
lines.push(`priority: ${entry.priority}`);
|
|
36
|
+
lines.push(`tokens: ~${entry.tokens_estimate}`);
|
|
37
|
+
lines.push(`entry: ${entry.entry}`);
|
|
32
38
|
if (entry.file_patterns) {
|
|
33
|
-
|
|
39
|
+
lines.push(`patterns: ${entry.file_patterns.join(", ")}`);
|
|
34
40
|
}
|
|
35
41
|
if (manifest) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
42
|
+
lines.push(`author: ${manifest.author}`);
|
|
43
|
+
lines.push(`license: ${manifest.license}`);
|
|
44
|
+
lines.push(`permissions: ${manifest.security?.permissions.length ? manifest.security.permissions.join(", ") : "none"}`);
|
|
39
45
|
if (manifest.works_with && manifest.works_with.length > 0) {
|
|
40
|
-
|
|
46
|
+
lines.push(`works_with:`);
|
|
41
47
|
for (const w of manifest.works_with) {
|
|
42
|
-
|
|
48
|
+
lines.push(` - ${w.skill} (${w.relationship}): ${w.description}`);
|
|
43
49
|
}
|
|
44
50
|
}
|
|
45
51
|
const deps = Object.keys(manifest.dependencies);
|
|
46
52
|
if (deps.length > 0) {
|
|
47
|
-
|
|
53
|
+
lines.push(`dependencies: ${deps.join(", ")}`);
|
|
48
54
|
}
|
|
49
55
|
}
|
|
56
|
+
note(lines.join("\n"), `${entry.name}@${entry.v}`);
|
|
50
57
|
}
|
|
51
58
|
//# sourceMappingURL=info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,OAAO,EAAE,UAQrB,CAAC;AAgCF,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB/E"}
|
|
@@ -3,6 +3,16 @@ import path from "node:path";
|
|
|
3
3
|
import { getGlobalSkillsDir, getProjectSkillsDir, getInstalledDir, getManifestPath } from "../../core/paths.js";
|
|
4
4
|
import { getDefaultConfig } from "../../core/config.js";
|
|
5
5
|
import { getDefaultManifest } from "../../core/manifest.js";
|
|
6
|
+
import { log, note } from "../ui.js";
|
|
7
|
+
export const command = {
|
|
8
|
+
name: "init",
|
|
9
|
+
description: "Initialize skills directory",
|
|
10
|
+
group: "system",
|
|
11
|
+
options: [
|
|
12
|
+
{ flags: "--project", description: "Initialize in current project (.skills/) instead of global (~/.skills/)" },
|
|
13
|
+
],
|
|
14
|
+
handler: initCommand,
|
|
15
|
+
};
|
|
6
16
|
async function createStructure(skillsDir, label) {
|
|
7
17
|
const installedDir = getInstalledDir(skillsDir);
|
|
8
18
|
const configPath = path.join(skillsDir, "config.json");
|
|
@@ -24,11 +34,8 @@ async function createStructure(skillsDir, label) {
|
|
|
24
34
|
catch {
|
|
25
35
|
await fs.writeFile(feedbackPath, JSON.stringify({ entries: [] }, null, 2) + "\n", "utf-8");
|
|
26
36
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
console.log(` config.json — settings`);
|
|
30
|
-
console.log(` feedback.json — usage feedback`);
|
|
31
|
-
console.log(` cache/ — download cache`);
|
|
37
|
+
log.success(`Initialized ${label} skills directory: ${skillsDir}`);
|
|
38
|
+
note(`installed/ — skill packages\nconfig.json — settings\nfeedback.json — usage feedback\ncache/ — download cache`, "Directory structure");
|
|
32
39
|
}
|
|
33
40
|
export async function initCommand(options) {
|
|
34
41
|
if (options.project) {
|
|
@@ -42,7 +49,7 @@ export async function initCommand(options) {
|
|
|
42
49
|
}
|
|
43
50
|
catch {
|
|
44
51
|
await fs.writeFile(manifestPath, JSON.stringify(getDefaultManifest(), null, 2) + "\n", "utf-8");
|
|
45
|
-
|
|
52
|
+
log.info("skill.json — project dependencies");
|
|
46
53
|
}
|
|
47
54
|
}
|
|
48
55
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import type { CommandDef } from "../command.js";
|
|
2
|
+
export declare const command: CommandDef;
|
|
3
|
+
export declare function installAllCommand(options: {
|
|
2
4
|
global?: boolean;
|
|
3
|
-
version?: string;
|
|
4
|
-
github?: string;
|
|
5
5
|
}): Promise<void>;
|
|
6
6
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,OAAO,EAAE,UASrB,CAAC;AAQF,wBAAsB,iBAAiB,CACrC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAsCf"}
|