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":"
|
|
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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -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
|
-
|
|
9
|
-
|
|
10
|
-
{ name: "
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
*
|
|
53
|
-
*
|
|
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
|
|
57
|
-
const
|
|
58
|
-
const
|
|
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
|
|
62
|
-
if (
|
|
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,
|
|
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(
|
|
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
|
-
*
|
|
77
|
-
*
|
|
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
|
|
81
|
-
const
|
|
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
|
|
194
|
+
const arc = archiver("zip", { zlib: { level: 9 } });
|
|
86
195
|
output.on("close", resolve);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
-
${
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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(
|
|
120
|
-
const
|
|
121
|
-
const
|
|
122
|
-
if (
|
|
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(
|
|
135
|
-
fs.writeFileSync(
|
|
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(`${
|
|
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
|
-
|
|
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
|
|
392
|
+
if (!content?.trim()) {
|
|
158
393
|
spinner.fail(chalk.red(`Skill "${slug}" has no content.`));
|
|
159
394
|
process.exit(1);
|
|
160
395
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
console.log(chalk.dim(
|
|
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
|
-
//
|
|
179
|
-
const
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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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"}
|