siteskills 1.4.0 → 1.5.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAmKA,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACxB,OAAO,CAAC,IAAI,CAAC,CAiGf"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAkaA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkH3F"}
@@ -5,95 +5,344 @@ import chalk from "chalk";
5
5
  import ora from "ora";
6
6
  import archiver from "archiver";
7
7
  import { getApiUrl } from "../lib/config.js";
8
- /** Known platform skill directory paths, in detection priority order. */
9
- const KNOWN_PLATFORMS = [
10
- { name: "Claude Code", configDir: ".claude", skillsSubDir: "skills" },
11
- { name: "OpenClaw", configDir: ".openclaw", skillsSubDir: "skills" },
12
- { name: "Cursor", configDir: ".cursor", skillsSubDir: "skills" },
13
- { name: "Windsurf", configDir: ".windsurf", skillsSubDir: "skills" },
14
- ];
15
- /** Detect where/how skills should be installed. */
16
- function detectPlatform(overrideDir) {
17
- if (overrideDir) {
18
- return { platform: "custom", dir: overrideDir, source: "flag", cowork: false };
19
- }
20
- const envDir = process.env.SITESKILLS_DIR;
21
- if (envDir) {
22
- return { platform: "custom", dir: envDir, source: "env", cowork: false };
23
- }
24
- const home = os.homedir();
25
- // Cowork: skills are installed via .skill zip files through the app UI.
26
- // We detect Cowork by presence of ~/.claude/cowork_plugins/ or ~/.cowork/.
27
- // Output the .skill file to ~/Downloads (or cwd as fallback).
28
- const coworkPluginsDir = path.join(home, ".claude", "cowork_plugins");
29
- if (fs.existsSync(coworkPluginsDir) || fs.existsSync(path.join(home, ".cowork"))) {
30
- const downloadsDir = path.join(home, "Downloads");
31
- const outputDir = fs.existsSync(downloadsDir) ? downloadsDir : process.cwd();
32
- return { platform: "Cowork", dir: outputDir, source: "detected", cowork: true };
33
- }
34
- for (const p of KNOWN_PLATFORMS) {
35
- if (fs.existsSync(path.join(home, p.configDir))) {
36
- return {
37
- platform: p.name,
38
- dir: path.join(home, p.configDir, p.skillsSubDir),
39
- source: "detected",
40
- cowork: false,
41
- };
8
+ // ── Frontmatter helpers ───────────────────────────────────────────────────────
9
+ function parseFrontmatter(content) {
10
+ const fm = { name: "", description: "", license: "MIT", targetDomains: [], tags: [] };
11
+ if (!content.startsWith("---\n"))
12
+ return fm;
13
+ const end = content.indexOf("\n---\n", 4);
14
+ if (end === -1)
15
+ return fm;
16
+ let currentKey = "";
17
+ let inList = false;
18
+ for (const line of content.slice(4, end).split("\n")) {
19
+ const keyMatch = line.match(/^([a-z][a-z0-9-]*)\s*:\s*(.*)$/i);
20
+ if (keyMatch) {
21
+ currentKey = keyMatch[1];
22
+ const val = keyMatch[2].trim().replace(/^["']|["']$/g, "");
23
+ inList = val === "" || val === "[]";
24
+ if (!inList && val) {
25
+ if (currentKey === "name")
26
+ fm.name = val;
27
+ if (currentKey === "description")
28
+ fm.description = val;
29
+ if (currentKey === "license")
30
+ fm.license = val;
31
+ }
32
+ }
33
+ else {
34
+ const item = line.match(/^\s+-\s+(.+)/);
35
+ if (item && inList) {
36
+ if (currentKey === "target-domains")
37
+ fm.targetDomains.push(item[1].trim());
38
+ if (currentKey === "tags")
39
+ fm.tags.push(item[1].trim());
40
+ }
42
41
  }
43
42
  }
44
- return {
45
- platform: "Claude Code",
46
- dir: path.join(home, ".claude", "skills"),
47
- source: "default",
48
- cowork: false,
49
- };
43
+ return fm;
44
+ }
45
+ /** Returns the body of a SKILL.md — everything after the closing ---. */
46
+ function body(content) {
47
+ if (!content.startsWith("---\n"))
48
+ return content;
49
+ const end = content.indexOf("\n---\n", 4);
50
+ return end === -1 ? content : content.slice(end + 5);
51
+ }
52
+ /** Replaces the frontmatter block with newFm lines. */
53
+ function withFrontmatter(content, newFm) {
54
+ if (!content.startsWith("---\n"))
55
+ return `---\n${newFm}\n---\n${content}`;
56
+ const end = content.indexOf("\n---\n", 4);
57
+ return end === -1 ? content : `---\n${newFm}\n---\n${content.slice(end + 5)}`;
58
+ }
59
+ // ── Format adapters ───────────────────────────────────────────────────────────
60
+ /** Cursor .mdc — alwaysApply:true so it loads in every context window. */
61
+ function fmtCursor(content, fm) {
62
+ return withFrontmatter(content, `description: ${fm.description}\nalwaysApply: true`);
63
+ }
64
+ /** Continue.dev — alwaysApply:true frontmatter. */
65
+ function fmtContinue(content, fm) {
66
+ return withFrontmatter(content, `name: siteskill-${fm.name}\ndescription: ${fm.description}\nalwaysApply: true`);
67
+ }
68
+ /** GitHub Copilot .instructions.md — applyTo:"**" to apply globally. */
69
+ function fmtCopilot(content) {
70
+ return `---\napplyTo: "**"\n---\n${body(content)}`;
50
71
  }
51
72
  /**
52
- * Strips frontmatter fields that Cowork's validator rejects.
53
- * Cowork only allows: name, description, license, allowed-tools, metadata, compatibility.
54
- * Everything else (target-domains, tags, version, generated, etc.) causes rejection.
73
+ * OpenHands microagent keyword trigger on target domains so the skill loads
74
+ * automatically when the agent encounters those domains in the user's request.
55
75
  */
56
- function toCoworkFrontmatter(content) {
57
- const ALLOWED = new Set(["name", "description", "license", "allowed-tools", "metadata", "compatibility"]);
58
- const SEP = "\n---\n";
76
+ function fmtOpenHands(content, fm) {
77
+ const keywords = [...fm.targetDomains, ...fm.tags].slice(0, 8);
78
+ const kwLines = keywords.map(k => ` - ${k}`).join("\n");
79
+ return withFrontmatter(content, `name: siteskill-${fm.name}\ntrigger_type: keyword\nkeywords:\n${kwLines}`);
80
+ }
81
+ /**
82
+ * Cowork .skill — strips any frontmatter key not in Cowork's allowlist.
83
+ * Official spec (Feb 2026): only name, description, compatibility, allowed-tools are valid.
84
+ * Everything else (target-domains, tags, version, license, generated, etc.) is rejected.
85
+ */
86
+ function fmtCowork(content) {
87
+ const ALLOWED = new Set(["name", "description", "compatibility", "allowed-tools"]);
59
88
  if (!content.startsWith("---\n"))
60
89
  return content;
61
- const fmEnd = content.indexOf(SEP, 4);
62
- if (fmEnd === -1)
90
+ const end = content.indexOf("\n---\n", 4);
91
+ if (end === -1)
63
92
  return content;
64
93
  const kept = [];
65
94
  let keep = false;
66
- for (const line of content.slice(4, fmEnd).split("\n")) {
95
+ for (const line of content.slice(4, end).split("\n")) {
67
96
  const m = line.match(/^([a-z][a-z0-9-]*)\s*:/i);
68
97
  if (m)
69
98
  keep = ALLOWED.has(m[1]);
70
99
  if (keep)
71
100
  kept.push(line);
72
101
  }
73
- return `---\n${kept.join("\n")}\n---\n${content.slice(fmEnd + SEP.length)}`;
102
+ return `---\n${kept.join("\n")}\n---\n${content.slice(end + 5)}`;
103
+ }
104
+ // ── Platform installers ───────────────────────────────────────────────────────
105
+ // Each returns InstallResult if the platform was detected, null if not present.
106
+ /** Claude Code: ~/.claude/skills/{slug}/SKILL.md */
107
+ function installClaudeCode(slug, content, home) {
108
+ const claudeDir = path.join(home, ".claude");
109
+ if (!fs.existsSync(claudeDir))
110
+ return null;
111
+ const skillDir = path.join(claudeDir, "skills", slug);
112
+ fs.mkdirSync(skillDir, { recursive: true });
113
+ fs.writeFileSync(path.join(skillDir, "SKILL.md"), content, "utf-8");
114
+ ensureClaudeCodeRule(claudeDir);
115
+ return { platform: "Claude Code", filePath: path.join(skillDir, "SKILL.md") };
116
+ }
117
+ /**
118
+ * Gemini CLI: saves skill to ~/.gemini/skills/{slug}.md and appends an
119
+ * @import line to ~/.gemini/GEMINI.md so it's included in every session.
120
+ */
121
+ function installGeminiCli(slug, content, home) {
122
+ const geminiDir = path.join(home, ".gemini");
123
+ if (!fs.existsSync(geminiDir))
124
+ return null;
125
+ const skillsDir = path.join(geminiDir, "skills");
126
+ fs.mkdirSync(skillsDir, { recursive: true });
127
+ const skillFile = path.join(skillsDir, `${slug}.md`);
128
+ fs.writeFileSync(skillFile, content, "utf-8");
129
+ const geminiMd = path.join(geminiDir, "GEMINI.md");
130
+ const importLine = `@${skillFile}`;
131
+ let existing = fs.existsSync(geminiMd) ? fs.readFileSync(geminiMd, "utf-8") : "";
132
+ if (!existing.includes(importLine)) {
133
+ existing = existing.trimEnd() + "\n" + importLine + "\n";
134
+ fs.writeFileSync(geminiMd, existing, "utf-8");
135
+ }
136
+ return { platform: "Gemini CLI", filePath: skillFile };
137
+ }
138
+ /**
139
+ * OpenAI Codex CLI: appends skill body to ~/.codex/AGENTS.md wrapped in
140
+ * idempotent comment delimiters. Replaces the block if already present.
141
+ */
142
+ function installCodexCli(slug, content, home) {
143
+ const codexDir = path.join(home, ".codex");
144
+ if (!fs.existsSync(codexDir))
145
+ return null;
146
+ const agentsMd = path.join(codexDir, "AGENTS.md");
147
+ const START = `<!-- siteskills:${slug}:start -->`;
148
+ const END = `<!-- siteskills:${slug}:end -->`;
149
+ const block = `${START}\n## SiteSkill: ${slug}\n${body(content)}\n${END}`;
150
+ let existing = fs.existsSync(agentsMd) ? fs.readFileSync(agentsMd, "utf-8") : "";
151
+ if (existing.includes(START)) {
152
+ existing = existing.replace(new RegExp(`${START}[\\s\\S]*?${END}`), block);
153
+ }
154
+ else {
155
+ existing = existing.trimEnd() + "\n\n" + block + "\n";
156
+ }
157
+ fs.writeFileSync(agentsMd, existing, "utf-8");
158
+ return { platform: "OpenAI Codex", filePath: agentsMd };
159
+ }
160
+ /** Cline global: ~/Documents/Cline/Rules/siteskill-{slug}.md */
161
+ function installClineGlobal(slug, content, home) {
162
+ const rulesDir = path.join(home, "Documents", "Cline", "Rules");
163
+ if (!fs.existsSync(rulesDir))
164
+ return null;
165
+ const file = path.join(rulesDir, `siteskill-${slug}.md`);
166
+ fs.writeFileSync(file, content, "utf-8");
167
+ return { platform: "Cline (global)", filePath: file };
168
+ }
169
+ /** Continue.dev global: ~/.continue/rules/siteskill-{slug}.md */
170
+ function installContinueGlobal(slug, content, home, fm) {
171
+ const continueDir = path.join(home, ".continue");
172
+ if (!fs.existsSync(continueDir))
173
+ return null;
174
+ const rulesDir = path.join(continueDir, "rules");
175
+ fs.mkdirSync(rulesDir, { recursive: true });
176
+ const file = path.join(rulesDir, `siteskill-${slug}.md`);
177
+ fs.writeFileSync(file, fmtContinue(content, fm), "utf-8");
178
+ return { platform: "Continue.dev (global)", filePath: file };
74
179
  }
75
180
  /**
76
- * Packages a SKILL.md into a .skill zip archive (Cowork's format).
77
- * Structure inside zip: {slug}/SKILL.md
78
- * Returns the path to the created .skill file.
181
+ * Cowork: skills live in a read-only VM mount — the only way in is the Cowork
182
+ * app UI. Package as a .skill zip file and prompt the user to install it.
79
183
  */
80
- async function createSkillFile(slug, content, outputDir) {
81
- const coworkContent = toCoworkFrontmatter(content);
184
+ async function installCowork(slug, content, home) {
185
+ const hasCowork = fs.existsSync(path.join(home, ".cowork")) ||
186
+ fs.existsSync(path.join(home, ".claude", "cowork_plugins"));
187
+ if (!hasCowork)
188
+ return null;
189
+ const downloadsDir = path.join(home, "Downloads");
190
+ const outputDir = fs.existsSync(downloadsDir) ? downloadsDir : process.cwd();
82
191
  const outPath = path.join(outputDir, `${slug}.skill`);
83
192
  await new Promise((resolve, reject) => {
84
193
  const output = fs.createWriteStream(outPath);
85
- const archive = archiver("zip", { zlib: { level: 9 } });
194
+ const arc = archiver("zip", { zlib: { level: 9 } });
86
195
  output.on("close", resolve);
87
- archive.on("error", reject);
88
- archive.pipe(output);
89
- archive.append(coworkContent, { name: `${slug}/SKILL.md` });
90
- archive.finalize();
196
+ arc.on("error", reject);
197
+ arc.pipe(output);
198
+ arc.append(fmtCowork(content), { name: `${slug}/SKILL.md` });
199
+ arc.finalize();
91
200
  });
92
- return outPath;
201
+ return {
202
+ platform: "Cowork",
203
+ filePath: outPath,
204
+ note: "open in Cowork app → Settings → Skills → Install from file",
205
+ };
206
+ }
207
+ // ── Project-scoped installers (detect config dirs in CWD) ────────────────────
208
+ /** Cursor: .cursor/rules/siteskill-{slug}.mdc with alwaysApply:true */
209
+ function installCursorProject(slug, content, cwd, fm) {
210
+ if (!fs.existsSync(path.join(cwd, ".cursor")))
211
+ return null;
212
+ const dir = path.join(cwd, ".cursor", "rules");
213
+ fs.mkdirSync(dir, { recursive: true });
214
+ const file = path.join(dir, `siteskill-${slug}.mdc`);
215
+ fs.writeFileSync(file, fmtCursor(content, fm), "utf-8");
216
+ return { platform: "Cursor", filePath: file };
217
+ }
218
+ /**
219
+ * Windsurf: .windsurf/rules/siteskill-{slug}.md
220
+ * 6,000 char/file limit — content is truncated with a link to the full skill.
221
+ */
222
+ function installWindsurfProject(slug, content, cwd) {
223
+ if (!fs.existsSync(path.join(cwd, ".windsurf")))
224
+ return null;
225
+ const dir = path.join(cwd, ".windsurf", "rules");
226
+ fs.mkdirSync(dir, { recursive: true });
227
+ const file = path.join(dir, `siteskill-${slug}.md`);
228
+ const LIMIT = 5_900;
229
+ const truncated = content.length > LIMIT;
230
+ const out = truncated
231
+ ? content.slice(0, LIMIT) + `\n\n<!-- Truncated: Windsurf 6,000 char/file limit. Full skill at https://siteskills.ai/skills/${slug} -->`
232
+ : content;
233
+ fs.writeFileSync(file, out, "utf-8");
234
+ return {
235
+ platform: "Windsurf",
236
+ filePath: file,
237
+ note: truncated ? "truncated to 6,000 chars (Windsurf limit)" : undefined,
238
+ };
239
+ }
240
+ /**
241
+ * Cline project: writes to .clinerules/ directory (preferred) or appends
242
+ * to .clinerules file if it's a single file rather than a directory.
243
+ */
244
+ function installClineProject(slug, content, cwd) {
245
+ const target = path.join(cwd, ".clinerules");
246
+ if (!fs.existsSync(target))
247
+ return null;
248
+ if (fs.statSync(target).isDirectory()) {
249
+ const file = path.join(target, `siteskill-${slug}.md`);
250
+ fs.writeFileSync(file, content, "utf-8");
251
+ return { platform: "Cline", filePath: file };
252
+ }
253
+ // .clinerules is a single file — append with idempotent delimiter
254
+ const START = `<!-- siteskills:${slug}:start -->`;
255
+ let existing = fs.readFileSync(target, "utf-8");
256
+ if (!existing.includes(START)) {
257
+ existing = existing.trimEnd() + `\n\n${START}\n${body(content)}\n<!-- siteskills:${slug}:end -->`;
258
+ fs.writeFileSync(target, existing, "utf-8");
259
+ }
260
+ return { platform: "Cline", filePath: target };
261
+ }
262
+ /** Roo Code: .roo/rules/siteskill-{slug}.md */
263
+ function installRooProject(slug, content, cwd) {
264
+ if (!fs.existsSync(path.join(cwd, ".roo")))
265
+ return null;
266
+ const dir = path.join(cwd, ".roo", "rules");
267
+ fs.mkdirSync(dir, { recursive: true });
268
+ const file = path.join(dir, `siteskill-${slug}.md`);
269
+ fs.writeFileSync(file, content, "utf-8");
270
+ return { platform: "Roo Code", filePath: file };
93
271
  }
94
- const CLAUDE_MD_BLOCK_START = "<!-- siteskills:start -->";
95
- const CLAUDE_MD_BLOCK_END = "<!-- siteskills:end -->";
96
- const CLAUDE_MD_RULE = `${CLAUDE_MD_BLOCK_START}
272
+ /** Continue.dev project: .continue/rules/siteskill-{slug}.md */
273
+ function installContinueProject(slug, content, cwd, fm) {
274
+ if (!fs.existsSync(path.join(cwd, ".continue")))
275
+ return null;
276
+ const dir = path.join(cwd, ".continue", "rules");
277
+ fs.mkdirSync(dir, { recursive: true });
278
+ const file = path.join(dir, `siteskill-${slug}.md`);
279
+ fs.writeFileSync(file, fmtContinue(content, fm), "utf-8");
280
+ return { platform: "Continue.dev", filePath: file };
281
+ }
282
+ /** GitHub Copilot: .github/instructions/siteskill-{slug}.instructions.md */
283
+ function installCopilotProject(slug, content, cwd) {
284
+ if (!fs.existsSync(path.join(cwd, ".github")))
285
+ return null;
286
+ const dir = path.join(cwd, ".github", "instructions");
287
+ fs.mkdirSync(dir, { recursive: true });
288
+ const file = path.join(dir, `siteskill-${slug}.instructions.md`);
289
+ fs.writeFileSync(file, fmtCopilot(content), "utf-8");
290
+ return { platform: "GitHub Copilot", filePath: file };
291
+ }
292
+ /**
293
+ * Aider: writes the skill to skills/siteskill-{slug}.md and adds it to the
294
+ * `read:` list in .aider.conf.yml. If read: already exists as a YAML list,
295
+ * appends to it. If it's a bare value, converts to list. Idempotent.
296
+ */
297
+ function installAiderProject(slug, content, cwd) {
298
+ if (!fs.existsSync(path.join(cwd, ".aider.conf.yml")))
299
+ return null;
300
+ const skillsDir = path.join(cwd, "skills");
301
+ fs.mkdirSync(skillsDir, { recursive: true });
302
+ const skillFile = path.join(skillsDir, `siteskill-${slug}.md`);
303
+ fs.writeFileSync(skillFile, content, "utf-8");
304
+ const confPath = path.join(cwd, ".aider.conf.yml");
305
+ const entry = `skills/siteskill-${slug}.md`;
306
+ let conf = fs.readFileSync(confPath, "utf-8");
307
+ if (conf.includes(entry)) {
308
+ return { platform: "Aider", filePath: skillFile }; // already registered
309
+ }
310
+ if (/^read:/m.test(conf)) {
311
+ // Existing read: key — append to list or convert scalar to list
312
+ conf = conf.replace(/^(read:\s*)(.+)$/m, (_match, prefix, val) => {
313
+ const trimmed = val.trim();
314
+ if (trimmed.startsWith("[")) {
315
+ // Inline array: read: [a.md, b.md]
316
+ return `${prefix}${trimmed.slice(0, -1)}, "${entry}"]`;
317
+ }
318
+ // Scalar value: convert to list
319
+ return `${prefix}["${trimmed}", "${entry}"]`;
320
+ });
321
+ // If it's a block list (read:\n - file.md), append another item
322
+ if (!/^(read:\s*)(.+)$/m.test(conf.split("\n").find(l => /^read:/.test(l)) ?? "")) {
323
+ conf = conf.replace(/^(read:)(\s*\n(?:\s+-[^\n]+\n?)*)/m, (_m, key, block) => `${key}${block} - "${entry}"\n`);
324
+ }
325
+ }
326
+ else {
327
+ conf += `\nread:\n - "${entry}"\n`;
328
+ }
329
+ fs.writeFileSync(confPath, conf, "utf-8");
330
+ return { platform: "Aider", filePath: skillFile };
331
+ }
332
+ /** OpenHands: .openhands/microagents/siteskill-{slug}.md with keyword trigger */
333
+ function installOpenHandsProject(slug, content, cwd, fm) {
334
+ if (!fs.existsSync(path.join(cwd, ".openhands")))
335
+ return null;
336
+ const dir = path.join(cwd, ".openhands", "microagents");
337
+ fs.mkdirSync(dir, { recursive: true });
338
+ const file = path.join(dir, `siteskill-${slug}.md`);
339
+ fs.writeFileSync(file, fmtOpenHands(content, fm), "utf-8");
340
+ return { platform: "OpenHands", filePath: file };
341
+ }
342
+ // ── Claude Code CLAUDE.md rule ────────────────────────────────────────────────
343
+ const BLOCK_START = "<!-- siteskills:start -->";
344
+ const BLOCK_END = "<!-- siteskills:end -->";
345
+ const CLAUDE_RULE = `${BLOCK_START}
97
346
  ## SiteSkills — Installed Navigation Skills
98
347
 
99
348
  Skills are pre-installed in your skills directory. When a task involves browsing or automating a specific website:
@@ -103,108 +352,118 @@ Skills are pre-installed in your skills directory. When a task involves browsing
103
352
  3. **Installed skills take precedence over ad-hoc browser navigation.** They contain verified selectors, known gotchas, and faster programmatic paths.
104
353
 
105
354
  If no skill matches the domain, proceed normally.
106
- ${CLAUDE_MD_BLOCK_END}`;
107
- /**
108
- * Writes the SiteSkills invocation rule to ~/.claude/CLAUDE.md (Claude Code only).
109
- * Idempotent replaces the existing block if present, adds it if not.
110
- */
111
- function ensureClaudeCodeRule(claudeConfigDir) {
112
- const claudeMdPath = path.join(claudeConfigDir, "CLAUDE.md");
113
- let existing = "";
114
- if (fs.existsSync(claudeMdPath)) {
115
- existing = fs.readFileSync(claudeMdPath, "utf-8");
116
- }
117
- if (existing.includes(CLAUDE_MD_RULE))
355
+ ${BLOCK_END}`;
356
+ function ensureClaudeCodeRule(claudeDir) {
357
+ const mdPath = path.join(claudeDir, "CLAUDE.md");
358
+ let existing = fs.existsSync(mdPath) ? fs.readFileSync(mdPath, "utf-8") : "";
359
+ if (existing.includes(CLAUDE_RULE))
118
360
  return;
119
- if (existing.includes(CLAUDE_MD_BLOCK_START)) {
120
- const startIdx = existing.indexOf(CLAUDE_MD_BLOCK_START);
121
- const endIdx = existing.indexOf(CLAUDE_MD_BLOCK_END);
122
- if (endIdx !== -1) {
123
- existing =
124
- existing.slice(0, startIdx) +
125
- CLAUDE_MD_RULE +
126
- existing.slice(endIdx + CLAUDE_MD_BLOCK_END.length);
127
- }
361
+ if (existing.includes(BLOCK_START)) {
362
+ const s = existing.indexOf(BLOCK_START);
363
+ const e = existing.indexOf(BLOCK_END);
364
+ if (e !== -1)
365
+ existing = existing.slice(0, s) + CLAUDE_RULE + existing.slice(e + BLOCK_END.length);
128
366
  }
129
367
  else {
130
- existing = existing
131
- ? existing.trimEnd() + "\n\n" + CLAUDE_MD_RULE + "\n"
132
- : CLAUDE_MD_RULE + "\n";
368
+ existing = existing ? existing.trimEnd() + "\n\n" + CLAUDE_RULE + "\n" : CLAUDE_RULE + "\n";
133
369
  }
134
- fs.mkdirSync(claudeConfigDir, { recursive: true });
135
- fs.writeFileSync(claudeMdPath, existing, "utf-8");
370
+ fs.mkdirSync(claudeDir, { recursive: true });
371
+ fs.writeFileSync(mdPath, existing, "utf-8");
136
372
  }
373
+ // ── Main command ──────────────────────────────────────────────────────────────
137
374
  export async function installCommand(slug, options) {
138
375
  if (!slug || slug.trim().length === 0) {
139
376
  console.error(chalk.red("Please provide a skill name. Usage: siteskills install <name>"));
140
377
  process.exit(1);
141
378
  }
142
- const baseUrl = getApiUrl();
143
379
  const spinner = ora(`Downloading ${chalk.bold(slug)}...`).start();
144
380
  try {
145
- const res = await fetch(`${baseUrl}/api/skills/${encodeURIComponent(slug)}/content`);
381
+ const res = await fetch(`${getApiUrl()}/api/skills/${encodeURIComponent(slug)}/content`);
146
382
  if (!res.ok) {
383
+ spinner.fail(res.status === 404
384
+ ? chalk.red(`Skill "${slug}" not found.`)
385
+ : chalk.red(`Failed to download "${slug}" (HTTP ${res.status}).`));
147
386
  if (res.status === 404) {
148
- spinner.fail(chalk.red(`Skill "${slug}" not found.`));
149
- console.error(chalk.dim(" Check the skill name and try again, or search with:"), chalk.cyan("siteskills search <query>"));
150
- }
151
- else {
152
- spinner.fail(chalk.red(`Failed to download "${slug}" (HTTP ${res.status}).`));
387
+ console.error(chalk.dim(" Search with:"), chalk.cyan("siteskills search <query>"));
153
388
  }
154
389
  process.exit(1);
155
390
  }
156
391
  const content = await res.text();
157
- if (!content || content.trim().length === 0) {
392
+ if (!content?.trim()) {
158
393
  spinner.fail(chalk.red(`Skill "${slug}" has no content.`));
159
394
  process.exit(1);
160
395
  }
161
- const detection = detectPlatform(options.dir);
162
- if (detection.cowork) {
163
- // Cowork: package as .skill zip file for installation via the Cowork app UI.
164
- // Skills live in a read-only VM mount — the only way in is through the app.
165
- spinner.text = `Packaging ${chalk.bold(slug)} for Cowork...`;
166
- const skillPath = await createSkillFile(slug, content, detection.dir);
167
- spinner.succeed(chalk.green(`Packaged ${chalk.bold(slug)}.skill`));
168
- console.log(chalk.dim(` ${skillPath}`));
169
- console.log();
170
- console.log(chalk.bold(" Install in Cowork:"));
171
- console.log(chalk.dim(" 1. Open the Cowork app"));
172
- console.log(chalk.dim(" 2. Settings → Skills → Install from file"));
173
- console.log(chalk.dim(` 3. Select: ${skillPath}`));
174
- console.log();
175
- console.log(chalk.dim(" The skill will be available in your next Cowork session."));
396
+ spinner.text = `Installing ${chalk.bold(slug)}...`;
397
+ const home = os.homedir();
398
+ const cwd = process.cwd();
399
+ const fm = parseFrontmatter(content);
400
+ // ── --dir override: single custom target ─────────────────────────────────
401
+ if (options.dir) {
402
+ const skillDir = path.join(options.dir, slug);
403
+ const skillFile = path.join(skillDir, "SKILL.md");
404
+ fs.mkdirSync(skillDir, { recursive: true });
405
+ fs.writeFileSync(skillFile, content, "utf-8");
406
+ spinner.succeed(chalk.green(`Installed ${chalk.bold(slug)}`));
407
+ console.log(chalk.dim(` ${skillFile}`));
176
408
  return;
177
409
  }
178
- // Non-Cowork platforms: write SKILL.md directly to the skills directory.
179
- const skillDir = path.join(detection.dir, slug);
180
- const skillFile = path.join(skillDir, "SKILL.md");
181
- if (fs.existsSync(skillFile)) {
182
- spinner.info(chalk.yellow(`Skill "${slug}" is already installed. Updating...`));
183
- }
184
- fs.mkdirSync(skillDir, { recursive: true });
185
- fs.writeFileSync(skillFile, content, "utf-8");
186
- // For Claude Code: write standing rule to CLAUDE.md so the agent checks
187
- // for skills before browsing — converts discretionary to mandatory.
188
- const home = os.homedir();
189
- if (detection.platform === "Claude Code" &&
190
- (detection.source === "detected" || detection.source === "default")) {
191
- ensureClaudeCodeRule(path.join(home, ".claude"));
410
+ // ── Auto-detect all active platforms and install to each ─────────────────
411
+ const results = [];
412
+ const attempt = async (fn) => {
413
+ try {
414
+ const r = await fn();
415
+ if (r)
416
+ results.push(r);
417
+ }
418
+ catch {
419
+ // Non-fatal: skip platforms that fail
420
+ }
421
+ };
422
+ // Global agents
423
+ await attempt(() => installClaudeCode(slug, content, home));
424
+ await attempt(() => installGeminiCli(slug, content, home));
425
+ await attempt(() => installCodexCli(slug, content, home));
426
+ await attempt(() => installClineGlobal(slug, content, home));
427
+ await attempt(() => installContinueGlobal(slug, content, home, fm));
428
+ await attempt(() => installCowork(slug, content, home));
429
+ // Project-scoped agents (current working directory)
430
+ await attempt(() => installCursorProject(slug, content, cwd, fm));
431
+ await attempt(() => installWindsurfProject(slug, content, cwd));
432
+ await attempt(() => installClineProject(slug, content, cwd));
433
+ await attempt(() => installRooProject(slug, content, cwd));
434
+ await attempt(() => installContinueProject(slug, content, cwd, fm));
435
+ await attempt(() => installCopilotProject(slug, content, cwd));
436
+ await attempt(() => installAiderProject(slug, content, cwd));
437
+ await attempt(() => installOpenHandsProject(slug, content, cwd, fm));
438
+ // Fallback: if nothing was detected, default to Claude Code path
439
+ if (results.length === 0) {
440
+ const fallbackDir = path.join(home, ".claude", "skills", slug);
441
+ fs.mkdirSync(fallbackDir, { recursive: true });
442
+ const fallbackFile = path.join(fallbackDir, "SKILL.md");
443
+ fs.writeFileSync(fallbackFile, content, "utf-8");
444
+ results.push({ platform: "Claude Code (default)", filePath: fallbackFile });
192
445
  }
193
- spinner.succeed(chalk.green(`Installed ${chalk.bold(slug)}`));
194
- console.log(chalk.dim(` ${skillFile}`));
195
- console.log(chalk.dim(` ${content.split("\n").length} lines, ${content.length} chars`));
196
- const platformNote = detection.source === "detected"
197
- ? `Detected platform: ${detection.platform}`
198
- : detection.source === "flag" || detection.source === "env"
199
- ? `Using custom directory`
200
- : `Using default path (${detection.platform} not detected — use --dir to override)`;
201
- console.log(chalk.dim(` ${platformNote}`));
446
+ // ── Report ───────────────────────────────────────────────────────────────
447
+ const platformCount = results.length;
448
+ spinner.succeed(chalk.green(`Installed ${chalk.bold(slug)} ${platformCount} platform${platformCount !== 1 ? "s" : ""}`));
202
449
  console.log();
203
- console.log(chalk.dim(" Your AI agent will auto-discover this skill on next use."));
204
- if (detection.source === "default") {
205
- console.log(chalk.dim(" If you use a different AI platform, re-run with:"));
206
- console.log(chalk.dim(" siteskills install " + slug + " --dir /path/to/your/skills/dir"));
450
+ // Group: Cowork last since it needs a manual step
451
+ const normal = results.filter(r => r.platform !== "Cowork");
452
+ const cowork = results.filter(r => r.platform === "Cowork");
453
+ for (const r of normal) {
454
+ console.log(` ${chalk.bold(r.platform)}`);
455
+ console.log(chalk.dim(` ${r.filePath}`));
456
+ if (r.note)
457
+ console.log(chalk.yellow(` ↳ ${r.note}`));
458
+ }
459
+ if (cowork.length > 0) {
460
+ console.log();
461
+ console.log(` ${chalk.bold("Cowork")} ${chalk.dim("(manual step required)")}`);
462
+ console.log(chalk.dim(` ${cowork[0].filePath}`));
463
+ console.log(chalk.dim(" Open Cowork app → Settings → Skills → Install from file"));
464
+ console.log(chalk.dim(" Or install the full SiteSkills plugin: claude plugin install siteskills"));
207
465
  }
466
+ console.log();
208
467
  }
209
468
  catch (err) {
210
469
  spinner.fail(chalk.red(`Failed to install "${slug}".`));
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siteskills",
3
- "version": "1.4.0",
3
+ "version": "1.5.1",
4
4
  "description": "CLI for the SiteSkills.ai marketplace — install, search, and publish AI browser navigation skills",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",