@skillbase/spm 0.1.4 → 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.
Files changed (132) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/cli/command.d.ts +43 -0
  3. package/dist/cli/command.d.ts.map +1 -0
  4. package/dist/cli/command.js +8 -0
  5. package/dist/cli/command.js.map +1 -0
  6. package/dist/cli/commands/add.d.ts +17 -0
  7. package/dist/cli/commands/add.d.ts.map +1 -0
  8. package/dist/cli/commands/add.js +348 -0
  9. package/dist/cli/commands/add.js.map +1 -0
  10. package/dist/cli/commands/connect.d.ts +2 -0
  11. package/dist/cli/commands/connect.d.ts.map +1 -1
  12. package/dist/cli/commands/connect.js +28 -13
  13. package/dist/cli/commands/connect.js.map +1 -1
  14. package/dist/cli/commands/convert.d.ts +2 -0
  15. package/dist/cli/commands/convert.d.ts.map +1 -1
  16. package/dist/cli/commands/convert.js +55 -39
  17. package/dist/cli/commands/convert.js.map +1 -1
  18. package/dist/cli/commands/create.d.ts +3 -3
  19. package/dist/cli/commands/create.d.ts.map +1 -1
  20. package/dist/cli/commands/create.js +15 -15
  21. package/dist/cli/commands/create.js.map +1 -1
  22. package/dist/cli/commands/info.d.ts +2 -0
  23. package/dist/cli/commands/info.d.ts.map +1 -1
  24. package/dist/cli/commands/info.js +24 -17
  25. package/dist/cli/commands/info.js.map +1 -1
  26. package/dist/cli/commands/init.d.ts +2 -0
  27. package/dist/cli/commands/init.d.ts.map +1 -1
  28. package/dist/cli/commands/init.js +13 -6
  29. package/dist/cli/commands/init.js.map +1 -1
  30. package/dist/cli/commands/install.d.ts +3 -3
  31. package/dist/cli/commands/install.d.ts.map +1 -1
  32. package/dist/cli/commands/install.js +23 -240
  33. package/dist/cli/commands/install.js.map +1 -1
  34. package/dist/cli/commands/link.d.ts +4 -0
  35. package/dist/cli/commands/link.d.ts.map +1 -0
  36. package/dist/cli/commands/link.js +56 -0
  37. package/dist/cli/commands/link.js.map +1 -0
  38. package/dist/cli/commands/list.d.ts +2 -0
  39. package/dist/cli/commands/list.d.ts.map +1 -1
  40. package/dist/cli/commands/list.js +35 -12
  41. package/dist/cli/commands/list.js.map +1 -1
  42. package/dist/cli/commands/login.d.ts +2 -0
  43. package/dist/cli/commands/login.d.ts.map +1 -1
  44. package/dist/cli/commands/login.js +62 -28
  45. package/dist/cli/commands/login.js.map +1 -1
  46. package/dist/cli/commands/persona.d.ts +3 -0
  47. package/dist/cli/commands/persona.d.ts.map +1 -0
  48. package/dist/cli/commands/persona.js +253 -0
  49. package/dist/cli/commands/persona.js.map +1 -0
  50. package/dist/cli/commands/publish.d.ts +2 -0
  51. package/dist/cli/commands/publish.d.ts.map +1 -1
  52. package/dist/cli/commands/publish.js +30 -32
  53. package/dist/cli/commands/publish.js.map +1 -1
  54. package/dist/cli/commands/rate.d.ts +2 -0
  55. package/dist/cli/commands/rate.d.ts.map +1 -1
  56. package/dist/cli/commands/rate.js +15 -5
  57. package/dist/cli/commands/rate.js.map +1 -1
  58. package/dist/cli/commands/reindex.d.ts +3 -0
  59. package/dist/cli/commands/reindex.d.ts.map +1 -0
  60. package/dist/cli/commands/reindex.js +35 -0
  61. package/dist/cli/commands/reindex.js.map +1 -0
  62. package/dist/cli/commands/remove.d.ts +8 -0
  63. package/dist/cli/commands/remove.d.ts.map +1 -0
  64. package/dist/cli/commands/remove.js +126 -0
  65. package/dist/cli/commands/remove.js.map +1 -0
  66. package/dist/cli/commands/search.d.ts +2 -0
  67. package/dist/cli/commands/search.d.ts.map +1 -1
  68. package/dist/cli/commands/search.js +25 -12
  69. package/dist/cli/commands/search.js.map +1 -1
  70. package/dist/cli/commands/serve.d.ts +3 -0
  71. package/dist/cli/commands/serve.d.ts.map +1 -0
  72. package/dist/cli/commands/serve.js +17 -0
  73. package/dist/cli/commands/serve.js.map +1 -0
  74. package/dist/cli/commands/stats.d.ts +2 -0
  75. package/dist/cli/commands/stats.d.ts.map +1 -1
  76. package/dist/cli/commands/stats.js +16 -10
  77. package/dist/cli/commands/stats.js.map +1 -1
  78. package/dist/cli/commands/uninstall.d.ts +2 -0
  79. package/dist/cli/commands/uninstall.d.ts.map +1 -1
  80. package/dist/cli/commands/uninstall.js +50 -14
  81. package/dist/cli/commands/uninstall.js.map +1 -1
  82. package/dist/cli/commands/update.d.ts +2 -0
  83. package/dist/cli/commands/update.d.ts.map +1 -1
  84. package/dist/cli/commands/update.js +27 -32
  85. package/dist/cli/commands/update.js.map +1 -1
  86. package/dist/cli/commands/validate.d.ts +2 -0
  87. package/dist/cli/commands/validate.d.ts.map +1 -1
  88. package/dist/cli/commands/validate.js +16 -18
  89. package/dist/cli/commands/validate.js.map +1 -1
  90. package/dist/cli/help.d.ts +7 -0
  91. package/dist/cli/help.d.ts.map +1 -0
  92. package/dist/cli/help.js +72 -0
  93. package/dist/cli/help.js.map +1 -0
  94. package/dist/cli/index.js +5 -151
  95. package/dist/cli/index.js.map +1 -1
  96. package/dist/cli/loader.d.ts +3 -0
  97. package/dist/cli/loader.d.ts.map +1 -0
  98. package/dist/cli/loader.js +69 -0
  99. package/dist/cli/loader.js.map +1 -0
  100. package/dist/cli/logger.d.ts +9 -0
  101. package/dist/cli/logger.d.ts.map +1 -0
  102. package/dist/cli/logger.js +13 -0
  103. package/dist/cli/logger.js.map +1 -0
  104. package/dist/cli/theme.d.ts +17 -0
  105. package/dist/cli/theme.d.ts.map +1 -0
  106. package/dist/cli/theme.js +29 -0
  107. package/dist/cli/theme.js.map +1 -0
  108. package/dist/cli/ui.d.ts +8 -0
  109. package/dist/cli/ui.d.ts.map +1 -0
  110. package/dist/cli/ui.js +17 -0
  111. package/dist/cli/ui.js.map +1 -0
  112. package/dist/core/config.d.ts.map +1 -1
  113. package/dist/core/config.js +4 -0
  114. package/dist/core/config.js.map +1 -1
  115. package/dist/core/paths.d.ts +2 -0
  116. package/dist/core/paths.d.ts.map +1 -1
  117. package/dist/core/paths.js +7 -0
  118. package/dist/core/paths.js.map +1 -1
  119. package/dist/core/persona.d.ts +17 -0
  120. package/dist/core/persona.d.ts.map +1 -0
  121. package/dist/core/persona.js +118 -0
  122. package/dist/core/persona.js.map +1 -0
  123. package/dist/mcp/server.d.ts.map +1 -1
  124. package/dist/mcp/server.js +91 -2
  125. package/dist/mcp/server.js.map +1 -1
  126. package/dist/schema/persona-schema.d.ts +6 -0
  127. package/dist/schema/persona-schema.d.ts.map +1 -0
  128. package/dist/schema/persona-schema.js +72 -0
  129. package/dist/schema/persona-schema.js.map +1 -0
  130. package/dist/types/index.d.ts +25 -0
  131. package/dist/types/index.d.ts.map +1 -1
  132. package/package.json +3 -1
@@ -1,272 +1,55 @@
1
- import fs from "node:fs/promises";
2
- import path from "node:path";
3
- import { getGlobalSkillsDir, getProjectSkillsDir, getInstalledDir } from "../../core/paths.js";
4
- import { validateSkillManifest } from "../../schema/skill-schema.js";
5
- import { writeIndex } from "../../core/indexer.js";
6
- import { writeLock } from "../../core/lock.js";
7
1
  import { readConfig } from "../../core/config.js";
8
2
  import { getClientForSkill } from "../../core/registry-client.js";
9
- import { downloadSkillFiles, parseGitHubUrl } from "../../core/github/client.js";
10
- import { unpackSkill, computeIntegrity } from "../../core/storage/packager.js";
11
- import { resolveDependencies } from "../../core/resolver.js";
12
- import { readManifest, addDependency } from "../../core/manifest.js";
13
- async function copyDir(src, dest) {
14
- await fs.mkdir(dest, { recursive: true });
15
- const entries = await fs.readdir(src, { withFileTypes: true });
16
- for (const entry of entries) {
17
- const srcPath = path.join(src, entry.name);
18
- const destPath = path.join(dest, entry.name);
19
- if (entry.isDirectory()) {
20
- await copyDir(srcPath, destPath);
21
- }
22
- else {
23
- await fs.copyFile(srcPath, destPath);
24
- }
25
- }
26
- }
27
- function isRemoteSource(source) {
28
- // author/name pattern
29
- if (/^[a-z0-9-]+\/[a-z0-9-]+$/.test(source))
30
- return true;
31
- // GitHub URLs
32
- if (source.includes("github.com") || source.startsWith("github:"))
33
- return true;
34
- return false;
35
- }
36
- /** Parse "author/name" ref into parts. */
3
+ import { readManifest } from "../../core/manifest.js";
4
+ import { writeIndex } from "../../core/indexer.js";
5
+ import { writeLock } from "../../core/lock.js";
6
+ import { log, exitError } from "../ui.js";
7
+ import { installSingleFromRegistry, resolveSkillsDir } from "./add.js";
8
+ export const command = {
9
+ name: "install",
10
+ description: "Install all skill dependencies from skill.json",
11
+ group: "manage",
12
+ aliases: ["i"],
13
+ options: [
14
+ { flags: "-g, --global", description: "Install to global skills directory" },
15
+ ],
16
+ handler: installAllCommand,
17
+ };
37
18
  function parseSkillRef(ref) {
38
19
  const match = ref.match(/^([a-z0-9-]+)\/([a-z0-9-]+)$/);
39
20
  if (!match)
40
21
  return null;
41
22
  return { author: match[1], name: match[2] };
42
23
  }
43
- /** Determine the skills directory: project-local if .skills/ exists, otherwise global. */
44
- async function resolveSkillsDir(forceGlobal) {
45
- if (forceGlobal) {
46
- return { skillsDir: getGlobalSkillsDir(), isProject: false };
47
- }
48
- const cwd = process.cwd();
49
- const projectDir = getProjectSkillsDir(cwd);
50
- try {
51
- const stat = await fs.stat(projectDir);
52
- if (stat.isDirectory()) {
53
- return { skillsDir: projectDir, isProject: true };
54
- }
55
- }
56
- catch {
57
- // no project .skills/ — fall through to global
58
- }
59
- return { skillsDir: getGlobalSkillsDir(), isProject: false };
60
- }
61
- async function installFromLocal(skillPath, skillsDir) {
62
- const src = path.resolve(skillPath);
63
- const manifestPath = path.join(src, "skill.json");
64
- let manifest;
65
- try {
66
- const raw = await fs.readFile(manifestPath, "utf-8");
67
- const data = JSON.parse(raw);
68
- const result = validateSkillManifest(data);
69
- if (!result.valid) {
70
- console.error("Invalid skill.json:");
71
- for (const error of result.errors) {
72
- console.error(` - ${error}`);
73
- }
74
- process.exit(1);
75
- }
76
- manifest = data;
77
- }
78
- catch (err) {
79
- if (err instanceof Error && "code" in err) {
80
- console.error(`Error: cannot read skill.json in "${skillPath}".`);
81
- }
82
- else {
83
- throw err;
84
- }
85
- process.exit(1);
86
- }
87
- const author = manifest.author;
88
- const installedDir = getInstalledDir(skillsDir);
89
- const dest = path.join(installedDir, author, manifest.name);
90
- await fs.rm(dest, { recursive: true, force: true });
91
- await copyDir(src, dest);
92
- const index = await writeIndex(skillsDir);
93
- const lock = await writeLock(skillsDir);
94
- console.log(`Installed ${author}/${manifest.name}@${manifest.version}`);
95
- console.log(` ${index.skills.length} skill(s) indexed, ${lock.total_tokens_estimate} tokens total`);
96
- }
97
- async function installSingleFromRegistry(author, skillName, skillsDir, client, version) {
98
- console.log(`Fetching ${author}/${skillName}${version ? `@${version}` : ""} from registry...`);
99
- const downloadResult = await client.getDownloadUrl(author, skillName, version);
100
- const manifest = downloadResult.manifest;
101
- const installedDir = getInstalledDir(skillsDir);
102
- const dest = path.join(installedDir, author, manifest.name);
103
- await fs.rm(dest, { recursive: true, force: true });
104
- if (!downloadResult.download_url) {
105
- console.error("Error: registry returned no download URL. The skill may have been published without an archive.");
106
- process.exit(1);
107
- }
108
- console.log("Downloading package...");
109
- const archiveRes = await fetch(downloadResult.download_url);
110
- if (!archiveRes.ok) {
111
- throw new Error(`Failed to download package: ${archiveRes.status} ${archiveRes.statusText}`);
112
- }
113
- const archiveData = Buffer.from(await archiveRes.arrayBuffer());
114
- if (downloadResult.integrity) {
115
- const actual = computeIntegrity(archiveData);
116
- if (actual !== downloadResult.integrity) {
117
- console.error(`Error: integrity mismatch.`);
118
- console.error(` Expected: ${downloadResult.integrity}`);
119
- console.error(` Got: ${actual}`);
120
- process.exit(1);
121
- }
122
- }
123
- const files = await unpackSkill(archiveData, dest);
124
- console.log(` Unpacked ${files.length} file(s), ${(archiveData.length / 1024).toFixed(1)} KB`);
125
- return manifest;
126
- }
127
- async function installFromRegistry(skillRef, skillsDir, isProject, version) {
128
- const parsed = parseSkillRef(skillRef);
129
- if (!parsed) {
130
- console.error(`Error: invalid skill reference "${skillRef}". Expected author/name.`);
131
- process.exit(1);
132
- }
133
- const config = await readConfig();
134
- const client = getClientForSkill(config, skillRef);
135
- if (!client) {
136
- console.error(`Error: no registry configured for "${skillRef}".`);
137
- console.error("Use 'spm login <registry-url>' or 'spm registry add <url>' first.");
138
- process.exit(1);
139
- }
140
- const manifest = await installSingleFromRegistry(parsed.author, parsed.name, skillsDir, client, version);
141
- // Resolve and install dependencies
142
- const deps = manifest.dependencies;
143
- if (deps && Object.keys(deps).length > 0) {
144
- const visited = new Set([`${parsed.author}/${manifest.name}`]);
145
- const result = await resolveDependencies(deps, client, visited);
146
- for (const dep of result.resolved) {
147
- const depRef = parseSkillRef(dep.name);
148
- if (!depRef)
149
- continue;
150
- console.log(` Dependency: ${dep.name}@${dep.resolved} (${dep.range})`);
151
- const depClient = getClientForSkill(config, dep.name) ?? client;
152
- const depManifest = await installSingleFromRegistry(depRef.author, depRef.name, skillsDir, depClient, dep.resolved);
153
- // Recursively resolve nested dependencies
154
- visited.add(dep.name);
155
- if (depManifest.dependencies && Object.keys(depManifest.dependencies).length > 0) {
156
- const nested = await resolveDependencies(depManifest.dependencies, depClient, visited);
157
- for (const nd of nested.resolved) {
158
- const ndRef = parseSkillRef(nd.name);
159
- if (!ndRef)
160
- continue;
161
- console.log(` Dependency: ${nd.name}@${nd.resolved} (${nd.range})`);
162
- const ndClient = getClientForSkill(config, nd.name) ?? client;
163
- visited.add(nd.name);
164
- await installSingleFromRegistry(ndRef.author, ndRef.name, skillsDir, ndClient, nd.resolved);
165
- }
166
- for (const m of nested.missing) {
167
- console.warn(` Warning: dependency ${m.name} (${m.range}): ${m.reason}`);
168
- }
169
- }
170
- }
171
- for (const m of result.missing) {
172
- console.warn(` Warning: dependency ${m.name} (${m.range}): ${m.reason}`);
173
- }
174
- }
175
- // Add to skills.json when in project context
176
- if (isProject) {
177
- await addDependency(process.cwd(), skillRef, manifest.version);
178
- }
179
- const index = await writeIndex(skillsDir);
180
- const lock = await writeLock(skillsDir);
181
- console.log(`Installed ${parsed.author}/${manifest.name}@${manifest.version} from registry`);
182
- console.log(` ${index.skills.length} skill(s) indexed, ${lock.total_tokens_estimate} tokens total`);
183
- }
184
- async function installFromGitHub(source, skillsDir, githubToken) {
185
- const ghSource = parseGitHubUrl(source);
186
- console.log(`Fetching from GitHub: ${ghSource.owner}/${ghSource.repo}${ghSource.path ? `/${ghSource.path}` : ""}...`);
187
- const config = await readConfig();
188
- const token = githubToken ?? config.github?.token;
189
- const files = await downloadSkillFiles(ghSource, token);
190
- // Parse manifest from downloaded files
191
- const manifestRaw = files.get("skill.json");
192
- if (!manifestRaw) {
193
- console.error("Error: skill.json not found in GitHub source.");
194
- process.exit(1);
195
- }
196
- const manifest = JSON.parse(manifestRaw);
197
- const validation = validateSkillManifest(manifest);
198
- if (!validation.valid) {
199
- console.error("Invalid skill.json from GitHub:");
200
- for (const error of validation.errors) {
201
- console.error(` - ${error}`);
202
- }
203
- process.exit(1);
204
- }
205
- const author = manifest.author;
206
- const installedDir = getInstalledDir(skillsDir);
207
- const dest = path.join(installedDir, author, manifest.name);
208
- await fs.rm(dest, { recursive: true, force: true });
209
- await fs.mkdir(dest, { recursive: true });
210
- // Write all files
211
- for (const [filePath, content] of files) {
212
- const fullPath = path.join(dest, filePath);
213
- await fs.mkdir(path.dirname(fullPath), { recursive: true });
214
- await fs.writeFile(fullPath, content, "utf-8");
215
- }
216
- const index = await writeIndex(skillsDir);
217
- const lock = await writeLock(skillsDir);
218
- console.log(`Installed ${author}/${manifest.name}@${manifest.version} from GitHub`);
219
- console.log(` ${index.skills.length} skill(s) indexed, ${lock.total_tokens_estimate} tokens total`);
220
- }
221
- async function installAllFromManifest(skillsDir) {
24
+ export async function installAllCommand(options) {
25
+ const { skillsDir } = await resolveSkillsDir(options.global);
222
26
  const cwd = process.cwd();
223
27
  const manifest = await readManifest(cwd);
224
28
  if (!manifest) {
225
- console.error("Error: no skill.json found. Run 'spm init --project' first.");
226
- process.exit(1);
29
+ exitError("No skill.json found. Run 'spm init --project' first.");
227
30
  }
228
31
  const entries = Object.entries(manifest.dependencies);
229
32
  if (entries.length === 0) {
230
- console.log("No dependencies in skill.json.");
33
+ log.info("No dependencies in skill.json.");
231
34
  return;
232
35
  }
233
36
  const config = await readConfig();
234
- console.log(`Installing ${entries.length} skill(s) from skill.json...`);
37
+ log.step(`Installing ${entries.length} skill(s) from skill.json...`);
235
38
  for (const [skillRef] of entries) {
236
39
  const parsed = parseSkillRef(skillRef);
237
40
  if (!parsed) {
238
- console.warn(` Skipping invalid ref: ${skillRef}`);
41
+ log.warning(`Skipping invalid ref: ${skillRef}`);
239
42
  continue;
240
43
  }
241
44
  const client = getClientForSkill(config, skillRef);
242
45
  if (!client) {
243
- console.warn(` No registry for ${skillRef}, skipping.`);
46
+ log.warning(`No registry for ${skillRef}, skipping.`);
244
47
  continue;
245
48
  }
246
49
  await installSingleFromRegistry(parsed.author, parsed.name, skillsDir, client);
247
50
  }
248
51
  const index = await writeIndex(skillsDir);
249
52
  const lock = await writeLock(skillsDir);
250
- console.log(`Done. ${index.skills.length} skill(s) indexed, ${lock.total_tokens_estimate} tokens total`);
251
- }
252
- export async function installCommand(source, options) {
253
- const { skillsDir, isProject } = await resolveSkillsDir(options.global);
254
- // No source — install all from skill.json
255
- if (!source) {
256
- await installAllFromManifest(skillsDir);
257
- return;
258
- }
259
- // GitHub URL
260
- if (source.includes("github.com") || source.startsWith("github:")) {
261
- await installFromGitHub(source, skillsDir, options.github);
262
- return;
263
- }
264
- // Remote registry (author/name)
265
- if (isRemoteSource(source)) {
266
- await installFromRegistry(source, skillsDir, isProject, options.version);
267
- return;
268
- }
269
- // Local path
270
- await installFromLocal(source, skillsDir);
53
+ log.success(`Done. ${index.skills.length} skill(s) indexed, ${lock.total_tokens_estimate} tokens total`);
271
54
  }
272
55
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CommandDef } from "../command.js";
2
+ export declare const command: CommandDef;
3
+ export declare function linkCommand(skillPath: string): Promise<void>;
4
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/link.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,OAAO,EAAE,UAMrB,CAAC;AAEF,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ClE"}
@@ -0,0 +1,56 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { getGlobalSkillsDir, getInstalledDir } from "../../core/paths.js";
4
+ import { validateSkillManifest } from "../../schema/skill-schema.js";
5
+ import { writeIndex } from "../../core/indexer.js";
6
+ import { writeLock } from "../../core/lock.js";
7
+ import { log, exitError } from "../ui.js";
8
+ export const command = {
9
+ name: "link",
10
+ description: "Link a local skill directory for development",
11
+ group: "manage",
12
+ args: [{ name: "path", required: true }],
13
+ handler: linkCommand,
14
+ };
15
+ export async function linkCommand(skillPath) {
16
+ const src = path.resolve(skillPath);
17
+ const manifestPath = path.join(src, "skill.json");
18
+ let manifest;
19
+ try {
20
+ const raw = await fs.readFile(manifestPath, "utf-8");
21
+ const data = JSON.parse(raw);
22
+ const result = validateSkillManifest(data);
23
+ if (!result.valid) {
24
+ exitError(`Invalid skill.json:\n${result.errors.map((e) => ` - ${e}`).join("\n")}`);
25
+ }
26
+ manifest = data;
27
+ }
28
+ catch (err) {
29
+ if (err instanceof Error && "code" in err) {
30
+ exitError(`Cannot read skill.json in "${skillPath}".`);
31
+ }
32
+ throw err;
33
+ }
34
+ const skillsDir = getGlobalSkillsDir();
35
+ const installedDir = getInstalledDir(skillsDir);
36
+ const dest = path.join(installedDir, manifest.author, manifest.name);
37
+ // Create parent directory
38
+ await fs.mkdir(path.dirname(dest), { recursive: true });
39
+ // Remove existing if present
40
+ try {
41
+ const stat = await fs.lstat(dest);
42
+ if (stat.isSymbolicLink() || stat.isDirectory()) {
43
+ await fs.rm(dest, { recursive: true, force: true });
44
+ }
45
+ }
46
+ catch {
47
+ // Does not exist — good
48
+ }
49
+ // Create symlink
50
+ await fs.symlink(src, dest, "dir");
51
+ const index = await writeIndex(skillsDir);
52
+ await writeLock(skillsDir);
53
+ log.success(`Linked ${manifest.author}/${manifest.name} → ${src}`);
54
+ log.info(`${index.skills.length} skill(s) indexed`);
55
+ }
56
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/cli/commands/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,MAAM,CAAC,MAAM,OAAO,GAAe;IACjC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,8CAA8C;IAC3D,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAiB;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAElD,IAAI,QAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACxC,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,SAAS,CAAC,wBAAwB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,QAAQ,GAAG,IAAqB,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAC1C,SAAS,CAAC,8BAA8B,SAAS,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAErE,0BAA0B;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExD,6BAA6B;IAC7B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAChD,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;IAED,iBAAiB;IACjB,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IAE3B,GAAG,CAAC,OAAO,CAAC,UAAU,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;IACnE,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAC;AACtD,CAAC"}
@@ -1,3 +1,5 @@
1
+ import type { CommandDef } from "../command.js";
2
+ export declare const command: CommandDef;
1
3
  export declare function listCommand(options: {
2
4
  verbose?: boolean;
3
5
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAEA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B/E"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,OAAO,EAAE,UASrB,CAAC;AAEF,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC/E"}
@@ -1,29 +1,52 @@
1
+ import path from "node:path";
1
2
  import { getSkillIndex } from "../../core/registry.js";
3
+ import { log, note } from "../ui.js";
4
+ export const command = {
5
+ name: "list",
6
+ description: "List installed skills",
7
+ group: "review",
8
+ aliases: ["ls"],
9
+ options: [
10
+ { flags: "-v, --verbose", description: "Show detailed information" },
11
+ ],
12
+ handler: listCommand,
13
+ };
2
14
  export async function listCommand(options) {
3
15
  const index = await getSkillIndex();
4
16
  if (index.skills.length === 0) {
5
- console.log("No skills installed.");
17
+ log.info("No skills installed.");
6
18
  return;
7
19
  }
20
+ // Extract author/name from entry path: .../installed/<author>/<name>/...
21
+ function displayName(skill) {
22
+ const parts = skill.entry.split(path.sep);
23
+ const installedIdx = parts.lastIndexOf("installed");
24
+ if (installedIdx >= 0 && installedIdx + 2 < parts.length) {
25
+ return `${parts[installedIdx + 1]}/${parts[installedIdx + 2]}`;
26
+ }
27
+ return skill.name;
28
+ }
8
29
  if (options.verbose) {
9
30
  for (const skill of index.skills) {
10
- console.log(`${skill.name}@${skill.v}`);
11
- console.log(` trigger: ${skill.trigger}`);
12
- console.log(` tags: ${skill.tags.join(", ")}`);
13
- console.log(` priority: ${skill.priority}`);
14
- console.log(` tokens: ~${skill.tokens_estimate}`);
31
+ const lines = [
32
+ `trigger: ${skill.trigger}`,
33
+ `tags: ${skill.tags.join(", ")}`,
34
+ `priority: ${skill.priority}`,
35
+ `tokens: ~${skill.tokens_estimate}`,
36
+ ];
15
37
  if (skill.file_patterns) {
16
- console.log(` patterns: ${skill.file_patterns.join(", ")}`);
38
+ lines.push(`patterns: ${skill.file_patterns.join(", ")}`);
17
39
  }
18
- console.log();
40
+ note(lines.join("\n"), `${displayName(skill)}@${skill.v}`);
19
41
  }
20
42
  }
21
43
  else {
22
- for (const skill of index.skills) {
44
+ const lines = index.skills.map((skill) => {
23
45
  const tokens = String(skill.tokens_estimate).padStart(5);
24
- console.log(` ${skill.name}@${skill.v} ${tokens} tokens [${skill.tags.join(", ")}]`);
25
- }
26
- console.log(`\n${index.skills.length} skill(s) installed`);
46
+ return `${displayName(skill)}@${skill.v} ${tokens} tokens [${skill.tags.join(", ")}]`;
47
+ });
48
+ log.info(`${index.skills.length} skill(s) installed`);
49
+ log.message(lines.join("\n"));
27
50
  }
28
51
  }
29
52
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA8B;IAC9D,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IAEpC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;YACrD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,qBAAqB,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGrC,MAAM,CAAC,MAAM,OAAO,GAAe;IACjC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,uBAAuB;IACpC,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,2BAA2B,EAAE;KACrE;IACD,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA8B;IAC9D,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IAEpC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,yEAAyE;IACzE,SAAS,WAAW,CAAC,KAA6B;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACzD,OAAO,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG;gBACZ,aAAa,KAAK,CAAC,OAAO,EAAE;gBAC5B,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACpC,aAAa,KAAK,CAAC,QAAQ,EAAE;gBAC7B,cAAc,KAAK,CAAC,eAAe,EAAE;aACtC,CAAC;YACF,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzD,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,MAAM,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1F,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,qBAAqB,CAAC,CAAC;QACtD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -1,3 +1,5 @@
1
+ import type { CommandDef } from "../command.js";
2
+ export declare const commands: CommandDef[];
1
3
  export declare function loginCommand(registryUrl: string | undefined, options: {
2
4
  name?: string;
3
5
  github?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAqDA,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAQf;AAyFD,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,eAAO,MAAM,QAAQ,EAAE,UAAU,EA+BhC,CAAC;AA2DF,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAQf;AAuFD,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CA0Bf"}