siteskills 1.3.0 → 1.5.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.
@@ -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":"AAiaA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiH3F"}
@@ -5,95 +5,343 @@ 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) {
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
+ * Cowork validator rejects: target-domains, tags, version, generated, etc.
84
+ */
85
+ function fmtCowork(content) {
57
86
  const ALLOWED = new Set(["name", "description", "license", "allowed-tools", "metadata", "compatibility"]);
58
- const SEP = "\n---\n";
59
87
  if (!content.startsWith("---\n"))
60
88
  return content;
61
- const fmEnd = content.indexOf(SEP, 4);
62
- if (fmEnd === -1)
89
+ const end = content.indexOf("\n---\n", 4);
90
+ if (end === -1)
63
91
  return content;
64
92
  const kept = [];
65
93
  let keep = false;
66
- for (const line of content.slice(4, fmEnd).split("\n")) {
94
+ for (const line of content.slice(4, end).split("\n")) {
67
95
  const m = line.match(/^([a-z][a-z0-9-]*)\s*:/i);
68
96
  if (m)
69
97
  keep = ALLOWED.has(m[1]);
70
98
  if (keep)
71
99
  kept.push(line);
72
100
  }
73
- return `---\n${kept.join("\n")}\n---\n${content.slice(fmEnd + SEP.length)}`;
101
+ return `---\n${kept.join("\n")}\n---\n${content.slice(end + 5)}`;
102
+ }
103
+ // ── Platform installers ───────────────────────────────────────────────────────
104
+ // Each returns InstallResult if the platform was detected, null if not present.
105
+ /** Claude Code: ~/.claude/skills/{slug}/SKILL.md */
106
+ function installClaudeCode(slug, content, home) {
107
+ const claudeDir = path.join(home, ".claude");
108
+ if (!fs.existsSync(claudeDir))
109
+ return null;
110
+ const skillDir = path.join(claudeDir, "skills", slug);
111
+ fs.mkdirSync(skillDir, { recursive: true });
112
+ fs.writeFileSync(path.join(skillDir, "SKILL.md"), content, "utf-8");
113
+ ensureClaudeCodeRule(claudeDir);
114
+ return { platform: "Claude Code", filePath: path.join(skillDir, "SKILL.md") };
115
+ }
116
+ /**
117
+ * Gemini CLI: saves skill to ~/.gemini/skills/{slug}.md and appends an
118
+ * @import line to ~/.gemini/GEMINI.md so it's included in every session.
119
+ */
120
+ function installGeminiCli(slug, content, home) {
121
+ const geminiDir = path.join(home, ".gemini");
122
+ if (!fs.existsSync(geminiDir))
123
+ return null;
124
+ const skillsDir = path.join(geminiDir, "skills");
125
+ fs.mkdirSync(skillsDir, { recursive: true });
126
+ const skillFile = path.join(skillsDir, `${slug}.md`);
127
+ fs.writeFileSync(skillFile, content, "utf-8");
128
+ const geminiMd = path.join(geminiDir, "GEMINI.md");
129
+ const importLine = `@${skillFile}`;
130
+ let existing = fs.existsSync(geminiMd) ? fs.readFileSync(geminiMd, "utf-8") : "";
131
+ if (!existing.includes(importLine)) {
132
+ existing = existing.trimEnd() + "\n" + importLine + "\n";
133
+ fs.writeFileSync(geminiMd, existing, "utf-8");
134
+ }
135
+ return { platform: "Gemini CLI", filePath: skillFile };
136
+ }
137
+ /**
138
+ * OpenAI Codex CLI: appends skill body to ~/.codex/AGENTS.md wrapped in
139
+ * idempotent comment delimiters. Replaces the block if already present.
140
+ */
141
+ function installCodexCli(slug, content, home) {
142
+ const codexDir = path.join(home, ".codex");
143
+ if (!fs.existsSync(codexDir))
144
+ return null;
145
+ const agentsMd = path.join(codexDir, "AGENTS.md");
146
+ const START = `<!-- siteskills:${slug}:start -->`;
147
+ const END = `<!-- siteskills:${slug}:end -->`;
148
+ const block = `${START}\n## SiteSkill: ${slug}\n${body(content)}\n${END}`;
149
+ let existing = fs.existsSync(agentsMd) ? fs.readFileSync(agentsMd, "utf-8") : "";
150
+ if (existing.includes(START)) {
151
+ existing = existing.replace(new RegExp(`${START}[\\s\\S]*?${END}`), block);
152
+ }
153
+ else {
154
+ existing = existing.trimEnd() + "\n\n" + block + "\n";
155
+ }
156
+ fs.writeFileSync(agentsMd, existing, "utf-8");
157
+ return { platform: "OpenAI Codex", filePath: agentsMd };
158
+ }
159
+ /** Cline global: ~/Documents/Cline/Rules/siteskill-{slug}.md */
160
+ function installClineGlobal(slug, content, home) {
161
+ const rulesDir = path.join(home, "Documents", "Cline", "Rules");
162
+ if (!fs.existsSync(rulesDir))
163
+ return null;
164
+ const file = path.join(rulesDir, `siteskill-${slug}.md`);
165
+ fs.writeFileSync(file, content, "utf-8");
166
+ return { platform: "Cline (global)", filePath: file };
167
+ }
168
+ /** Continue.dev global: ~/.continue/rules/siteskill-{slug}.md */
169
+ function installContinueGlobal(slug, content, home, fm) {
170
+ const continueDir = path.join(home, ".continue");
171
+ if (!fs.existsSync(continueDir))
172
+ return null;
173
+ const rulesDir = path.join(continueDir, "rules");
174
+ fs.mkdirSync(rulesDir, { recursive: true });
175
+ const file = path.join(rulesDir, `siteskill-${slug}.md`);
176
+ fs.writeFileSync(file, fmtContinue(content, fm), "utf-8");
177
+ return { platform: "Continue.dev (global)", filePath: file };
74
178
  }
75
179
  /**
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.
180
+ * Cowork: skills live in a read-only VM mount — the only way in is the Cowork
181
+ * app UI. Package as a .skill zip file and prompt the user to install it.
79
182
  */
80
- async function createSkillFile(slug, content, outputDir) {
81
- const coworkContent = toCoworkFrontmatter(content);
183
+ async function installCowork(slug, content, home) {
184
+ const hasCowork = fs.existsSync(path.join(home, ".cowork")) ||
185
+ fs.existsSync(path.join(home, ".claude", "cowork_plugins"));
186
+ if (!hasCowork)
187
+ return null;
188
+ const downloadsDir = path.join(home, "Downloads");
189
+ const outputDir = fs.existsSync(downloadsDir) ? downloadsDir : process.cwd();
82
190
  const outPath = path.join(outputDir, `${slug}.skill`);
83
191
  await new Promise((resolve, reject) => {
84
192
  const output = fs.createWriteStream(outPath);
85
- const archive = archiver("zip", { zlib: { level: 9 } });
193
+ const arc = archiver("zip", { zlib: { level: 9 } });
86
194
  output.on("close", resolve);
87
- archive.on("error", reject);
88
- archive.pipe(output);
89
- archive.append(coworkContent, { name: `${slug}/SKILL.md` });
90
- archive.finalize();
195
+ arc.on("error", reject);
196
+ arc.pipe(output);
197
+ arc.append(fmtCowork(content), { name: `${slug}/SKILL.md` });
198
+ arc.finalize();
91
199
  });
92
- return outPath;
200
+ return {
201
+ platform: "Cowork",
202
+ filePath: outPath,
203
+ note: "open in Cowork app → Settings → Skills → Install from file",
204
+ };
205
+ }
206
+ // ── Project-scoped installers (detect config dirs in CWD) ────────────────────
207
+ /** Cursor: .cursor/rules/siteskill-{slug}.mdc with alwaysApply:true */
208
+ function installCursorProject(slug, content, cwd, fm) {
209
+ if (!fs.existsSync(path.join(cwd, ".cursor")))
210
+ return null;
211
+ const dir = path.join(cwd, ".cursor", "rules");
212
+ fs.mkdirSync(dir, { recursive: true });
213
+ const file = path.join(dir, `siteskill-${slug}.mdc`);
214
+ fs.writeFileSync(file, fmtCursor(content, fm), "utf-8");
215
+ return { platform: "Cursor", filePath: file };
216
+ }
217
+ /**
218
+ * Windsurf: .windsurf/rules/siteskill-{slug}.md
219
+ * 6,000 char/file limit — content is truncated with a link to the full skill.
220
+ */
221
+ function installWindsurfProject(slug, content, cwd) {
222
+ if (!fs.existsSync(path.join(cwd, ".windsurf")))
223
+ return null;
224
+ const dir = path.join(cwd, ".windsurf", "rules");
225
+ fs.mkdirSync(dir, { recursive: true });
226
+ const file = path.join(dir, `siteskill-${slug}.md`);
227
+ const LIMIT = 5_900;
228
+ const truncated = content.length > LIMIT;
229
+ const out = truncated
230
+ ? content.slice(0, LIMIT) + `\n\n<!-- Truncated: Windsurf 6,000 char/file limit. Full skill at https://siteskills.ai/skills/${slug} -->`
231
+ : content;
232
+ fs.writeFileSync(file, out, "utf-8");
233
+ return {
234
+ platform: "Windsurf",
235
+ filePath: file,
236
+ note: truncated ? "truncated to 6,000 chars (Windsurf limit)" : undefined,
237
+ };
238
+ }
239
+ /**
240
+ * Cline project: writes to .clinerules/ directory (preferred) or appends
241
+ * to .clinerules file if it's a single file rather than a directory.
242
+ */
243
+ function installClineProject(slug, content, cwd) {
244
+ const target = path.join(cwd, ".clinerules");
245
+ if (!fs.existsSync(target))
246
+ return null;
247
+ if (fs.statSync(target).isDirectory()) {
248
+ const file = path.join(target, `siteskill-${slug}.md`);
249
+ fs.writeFileSync(file, content, "utf-8");
250
+ return { platform: "Cline", filePath: file };
251
+ }
252
+ // .clinerules is a single file — append with idempotent delimiter
253
+ const START = `<!-- siteskills:${slug}:start -->`;
254
+ let existing = fs.readFileSync(target, "utf-8");
255
+ if (!existing.includes(START)) {
256
+ existing = existing.trimEnd() + `\n\n${START}\n${body(content)}\n<!-- siteskills:${slug}:end -->`;
257
+ fs.writeFileSync(target, existing, "utf-8");
258
+ }
259
+ return { platform: "Cline", filePath: target };
260
+ }
261
+ /** Roo Code: .roo/rules/siteskill-{slug}.md */
262
+ function installRooProject(slug, content, cwd) {
263
+ if (!fs.existsSync(path.join(cwd, ".roo")))
264
+ return null;
265
+ const dir = path.join(cwd, ".roo", "rules");
266
+ fs.mkdirSync(dir, { recursive: true });
267
+ const file = path.join(dir, `siteskill-${slug}.md`);
268
+ fs.writeFileSync(file, content, "utf-8");
269
+ return { platform: "Roo Code", filePath: file };
93
270
  }
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}
271
+ /** Continue.dev project: .continue/rules/siteskill-{slug}.md */
272
+ function installContinueProject(slug, content, cwd, fm) {
273
+ if (!fs.existsSync(path.join(cwd, ".continue")))
274
+ return null;
275
+ const dir = path.join(cwd, ".continue", "rules");
276
+ fs.mkdirSync(dir, { recursive: true });
277
+ const file = path.join(dir, `siteskill-${slug}.md`);
278
+ fs.writeFileSync(file, fmtContinue(content, fm), "utf-8");
279
+ return { platform: "Continue.dev", filePath: file };
280
+ }
281
+ /** GitHub Copilot: .github/instructions/siteskill-{slug}.instructions.md */
282
+ function installCopilotProject(slug, content, cwd) {
283
+ if (!fs.existsSync(path.join(cwd, ".github")))
284
+ return null;
285
+ const dir = path.join(cwd, ".github", "instructions");
286
+ fs.mkdirSync(dir, { recursive: true });
287
+ const file = path.join(dir, `siteskill-${slug}.instructions.md`);
288
+ fs.writeFileSync(file, fmtCopilot(content), "utf-8");
289
+ return { platform: "GitHub Copilot", filePath: file };
290
+ }
291
+ /**
292
+ * Aider: writes the skill to skills/siteskill-{slug}.md and adds it to the
293
+ * `read:` list in .aider.conf.yml. If read: already exists as a YAML list,
294
+ * appends to it. If it's a bare value, converts to list. Idempotent.
295
+ */
296
+ function installAiderProject(slug, content, cwd) {
297
+ if (!fs.existsSync(path.join(cwd, ".aider.conf.yml")))
298
+ return null;
299
+ const skillsDir = path.join(cwd, "skills");
300
+ fs.mkdirSync(skillsDir, { recursive: true });
301
+ const skillFile = path.join(skillsDir, `siteskill-${slug}.md`);
302
+ fs.writeFileSync(skillFile, content, "utf-8");
303
+ const confPath = path.join(cwd, ".aider.conf.yml");
304
+ const entry = `skills/siteskill-${slug}.md`;
305
+ let conf = fs.readFileSync(confPath, "utf-8");
306
+ if (conf.includes(entry)) {
307
+ return { platform: "Aider", filePath: skillFile }; // already registered
308
+ }
309
+ if (/^read:/m.test(conf)) {
310
+ // Existing read: key — append to list or convert scalar to list
311
+ conf = conf.replace(/^(read:\s*)(.+)$/m, (_match, prefix, val) => {
312
+ const trimmed = val.trim();
313
+ if (trimmed.startsWith("[")) {
314
+ // Inline array: read: [a.md, b.md]
315
+ return `${prefix}${trimmed.slice(0, -1)}, "${entry}"]`;
316
+ }
317
+ // Scalar value: convert to list
318
+ return `${prefix}["${trimmed}", "${entry}"]`;
319
+ });
320
+ // If it's a block list (read:\n - file.md), append another item
321
+ if (!/^(read:\s*)(.+)$/m.test(conf.split("\n").find(l => /^read:/.test(l)) ?? "")) {
322
+ conf = conf.replace(/^(read:)(\s*\n(?:\s+-[^\n]+\n?)*)/m, (_m, key, block) => `${key}${block} - "${entry}"\n`);
323
+ }
324
+ }
325
+ else {
326
+ conf += `\nread:\n - "${entry}"\n`;
327
+ }
328
+ fs.writeFileSync(confPath, conf, "utf-8");
329
+ return { platform: "Aider", filePath: skillFile };
330
+ }
331
+ /** OpenHands: .openhands/microagents/siteskill-{slug}.md with keyword trigger */
332
+ function installOpenHandsProject(slug, content, cwd, fm) {
333
+ if (!fs.existsSync(path.join(cwd, ".openhands")))
334
+ return null;
335
+ const dir = path.join(cwd, ".openhands", "microagents");
336
+ fs.mkdirSync(dir, { recursive: true });
337
+ const file = path.join(dir, `siteskill-${slug}.md`);
338
+ fs.writeFileSync(file, fmtOpenHands(content, fm), "utf-8");
339
+ return { platform: "OpenHands", filePath: file };
340
+ }
341
+ // ── Claude Code CLAUDE.md rule ────────────────────────────────────────────────
342
+ const BLOCK_START = "<!-- siteskills:start -->";
343
+ const BLOCK_END = "<!-- siteskills:end -->";
344
+ const CLAUDE_RULE = `${BLOCK_START}
97
345
  ## SiteSkills — Installed Navigation Skills
98
346
 
99
347
  Skills are pre-installed in your skills directory. When a task involves browsing or automating a specific website:
@@ -103,108 +351,117 @@ Skills are pre-installed in your skills directory. When a task involves browsing
103
351
  3. **Installed skills take precedence over ad-hoc browser navigation.** They contain verified selectors, known gotchas, and faster programmatic paths.
104
352
 
105
353
  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))
354
+ ${BLOCK_END}`;
355
+ function ensureClaudeCodeRule(claudeDir) {
356
+ const mdPath = path.join(claudeDir, "CLAUDE.md");
357
+ let existing = fs.existsSync(mdPath) ? fs.readFileSync(mdPath, "utf-8") : "";
358
+ if (existing.includes(CLAUDE_RULE))
118
359
  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
- }
360
+ if (existing.includes(BLOCK_START)) {
361
+ const s = existing.indexOf(BLOCK_START);
362
+ const e = existing.indexOf(BLOCK_END);
363
+ if (e !== -1)
364
+ existing = existing.slice(0, s) + CLAUDE_RULE + existing.slice(e + BLOCK_END.length);
128
365
  }
129
366
  else {
130
- existing = existing
131
- ? existing.trimEnd() + "\n\n" + CLAUDE_MD_RULE + "\n"
132
- : CLAUDE_MD_RULE + "\n";
367
+ existing = existing ? existing.trimEnd() + "\n\n" + CLAUDE_RULE + "\n" : CLAUDE_RULE + "\n";
133
368
  }
134
- fs.mkdirSync(claudeConfigDir, { recursive: true });
135
- fs.writeFileSync(claudeMdPath, existing, "utf-8");
369
+ fs.mkdirSync(claudeDir, { recursive: true });
370
+ fs.writeFileSync(mdPath, existing, "utf-8");
136
371
  }
372
+ // ── Main command ──────────────────────────────────────────────────────────────
137
373
  export async function installCommand(slug, options) {
138
374
  if (!slug || slug.trim().length === 0) {
139
375
  console.error(chalk.red("Please provide a skill name. Usage: siteskills install <name>"));
140
376
  process.exit(1);
141
377
  }
142
- const baseUrl = getApiUrl();
143
378
  const spinner = ora(`Downloading ${chalk.bold(slug)}...`).start();
144
379
  try {
145
- const res = await fetch(`${baseUrl}/api/skills/${encodeURIComponent(slug)}/content`);
380
+ const res = await fetch(`${getApiUrl()}/api/skills/${encodeURIComponent(slug)}/content`);
146
381
  if (!res.ok) {
382
+ spinner.fail(res.status === 404
383
+ ? chalk.red(`Skill "${slug}" not found.`)
384
+ : chalk.red(`Failed to download "${slug}" (HTTP ${res.status}).`));
147
385
  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}).`));
386
+ console.error(chalk.dim(" Search with:"), chalk.cyan("siteskills search <query>"));
153
387
  }
154
388
  process.exit(1);
155
389
  }
156
390
  const content = await res.text();
157
- if (!content || content.trim().length === 0) {
391
+ if (!content?.trim()) {
158
392
  spinner.fail(chalk.red(`Skill "${slug}" has no content.`));
159
393
  process.exit(1);
160
394
  }
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."));
395
+ spinner.text = `Installing ${chalk.bold(slug)}...`;
396
+ const home = os.homedir();
397
+ const cwd = process.cwd();
398
+ const fm = parseFrontmatter(content);
399
+ // ── --dir override: single custom target ─────────────────────────────────
400
+ if (options.dir) {
401
+ const skillDir = path.join(options.dir, slug);
402
+ const skillFile = path.join(skillDir, "SKILL.md");
403
+ fs.mkdirSync(skillDir, { recursive: true });
404
+ fs.writeFileSync(skillFile, content, "utf-8");
405
+ spinner.succeed(chalk.green(`Installed ${chalk.bold(slug)}`));
406
+ console.log(chalk.dim(` ${skillFile}`));
176
407
  return;
177
408
  }
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"));
409
+ // ── Auto-detect all active platforms and install to each ─────────────────
410
+ const results = [];
411
+ const attempt = async (fn) => {
412
+ try {
413
+ const r = await fn();
414
+ if (r)
415
+ results.push(r);
416
+ }
417
+ catch {
418
+ // Non-fatal: skip platforms that fail
419
+ }
420
+ };
421
+ // Global agents
422
+ await attempt(() => installClaudeCode(slug, content, home));
423
+ await attempt(() => installGeminiCli(slug, content, home));
424
+ await attempt(() => installCodexCli(slug, content, home));
425
+ await attempt(() => installClineGlobal(slug, content, home));
426
+ await attempt(() => installContinueGlobal(slug, content, home, fm));
427
+ await attempt(() => installCowork(slug, content, home));
428
+ // Project-scoped agents (current working directory)
429
+ await attempt(() => installCursorProject(slug, content, cwd, fm));
430
+ await attempt(() => installWindsurfProject(slug, content, cwd));
431
+ await attempt(() => installClineProject(slug, content, cwd));
432
+ await attempt(() => installRooProject(slug, content, cwd));
433
+ await attempt(() => installContinueProject(slug, content, cwd, fm));
434
+ await attempt(() => installCopilotProject(slug, content, cwd));
435
+ await attempt(() => installAiderProject(slug, content, cwd));
436
+ await attempt(() => installOpenHandsProject(slug, content, cwd, fm));
437
+ // Fallback: if nothing was detected, default to Claude Code path
438
+ if (results.length === 0) {
439
+ const fallbackDir = path.join(home, ".claude", "skills", slug);
440
+ fs.mkdirSync(fallbackDir, { recursive: true });
441
+ const fallbackFile = path.join(fallbackDir, "SKILL.md");
442
+ fs.writeFileSync(fallbackFile, content, "utf-8");
443
+ results.push({ platform: "Claude Code (default)", filePath: fallbackFile });
192
444
  }
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}`));
445
+ // ── Report ───────────────────────────────────────────────────────────────
446
+ const platformCount = results.length;
447
+ spinner.succeed(chalk.green(`Installed ${chalk.bold(slug)} ${platformCount} platform${platformCount !== 1 ? "s" : ""}`));
202
448
  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"));
449
+ // Group: Cowork last since it needs a manual step
450
+ const normal = results.filter(r => r.platform !== "Cowork");
451
+ const cowork = results.filter(r => r.platform === "Cowork");
452
+ for (const r of normal) {
453
+ console.log(` ${chalk.bold(r.platform)}`);
454
+ console.log(chalk.dim(` ${r.filePath}`));
455
+ if (r.note)
456
+ console.log(chalk.yellow(` ↳ ${r.note}`));
457
+ }
458
+ if (cowork.length > 0) {
459
+ console.log();
460
+ console.log(` ${chalk.bold("Cowork")} ${chalk.dim("(manual step required)")}`);
461
+ console.log(chalk.dim(` ${cowork[0].filePath}`));
462
+ console.log(chalk.dim(" Open Cowork app → Settings → Skills → Install from file"));
207
463
  }
464
+ console.log();
208
465
  }
209
466
  catch (err) {
210
467
  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.3.0",
3
+ "version": "1.5.0",
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",