@heurist-network/skills 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -6
- package/dist/cli.js +243 -28
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -132,18 +132,47 @@ The project lock file (`skills-lock.json`) is designed to be committed to git fo
|
|
|
132
132
|
|
|
133
133
|
| Agent | Project Path | Global Path |
|
|
134
134
|
|-------|-------------|-------------|
|
|
135
|
+
| AdaL | `.adal/skills/` | `~/.adal/skills/` |
|
|
136
|
+
| Amp | `.agents/skills/` | `~/.config/agents/skills/` |
|
|
137
|
+
| Antigravity | `.agent/skills/` | `~/.gemini/antigravity/skills/` |
|
|
138
|
+
| Augment | `.augment/skills/` | `~/.augment/skills/` |
|
|
135
139
|
| Claude Code | `.claude/skills/` | `~/.claude/skills/` |
|
|
136
|
-
| Cursor | `.agents/skills/` | `~/.cursor/skills/` |
|
|
137
|
-
| Codex | `.agents/skills/` | `~/.codex/skills/` |
|
|
138
|
-
| OpenCode | `.agents/skills/` | `~/.config/opencode/skills/` |
|
|
139
140
|
| Cline | `.agents/skills/` | `~/.agents/skills/` |
|
|
140
|
-
|
|
|
141
|
+
| CodeBuddy | `.codebuddy/skills/` | `~/.codebuddy/skills/` |
|
|
142
|
+
| Codex | `.agents/skills/` | `~/.codex/skills/` |
|
|
143
|
+
| Command Code | `.commandcode/skills/` | `~/.commandcode/skills/` |
|
|
144
|
+
| Continue | `.continue/skills/` | `~/.continue/skills/` |
|
|
145
|
+
| Cortex Code | `.cortex/skills/` | `~/.snowflake/cortex/skills/` |
|
|
146
|
+
| Crush | `.crush/skills/` | `~/.config/crush/skills/` |
|
|
147
|
+
| Cursor | `.agents/skills/` | `~/.cursor/skills/` |
|
|
148
|
+
| Droid | `.factory/skills/` | `~/.factory/skills/` |
|
|
141
149
|
| Gemini CLI | `.agents/skills/` | `~/.gemini/skills/` |
|
|
142
150
|
| GitHub Copilot | `.agents/skills/` | `~/.copilot/skills/` |
|
|
151
|
+
| Goose | `.goose/skills/` | `~/.config/goose/skills/` |
|
|
152
|
+
| iFlow CLI | `.iflow/skills/` | `~/.iflow/skills/` |
|
|
153
|
+
| Junie | `.junie/skills/` | `~/.junie/skills/` |
|
|
154
|
+
| Kilo Code | `.kilocode/skills/` | `~/.kilocode/skills/` |
|
|
155
|
+
| Kimi Code CLI | `.agents/skills/` | `~/.config/agents/skills/` |
|
|
156
|
+
| Kiro CLI | `.kiro/skills/` | `~/.kiro/skills/` |
|
|
157
|
+
| Kode | `.kode/skills/` | `~/.kode/skills/` |
|
|
158
|
+
| MCPJam | `.mcpjam/skills/` | `~/.mcpjam/skills/` |
|
|
159
|
+
| Mistral Vibe | `.vibe/skills/` | `~/.vibe/skills/` |
|
|
160
|
+
| Mux | `.mux/skills/` | `~/.mux/skills/` |
|
|
161
|
+
| Neovate | `.neovate/skills/` | `~/.neovate/skills/` |
|
|
162
|
+
| OpenClaw | `skills/` | `~/.openclaw/skills/` |
|
|
163
|
+
| OpenCode | `.agents/skills/` | `~/.config/opencode/skills/` |
|
|
164
|
+
| OpenHands | `.openhands/skills/` | `~/.openhands/skills/` |
|
|
165
|
+
| Pi | `.pi/skills/` | `~/.pi/agent/skills/` |
|
|
166
|
+
| Pochi | `.pochi/skills/` | `~/.pochi/skills/` |
|
|
167
|
+
| Qoder | `.qoder/skills/` | `~/.qoder/skills/` |
|
|
168
|
+
| Qwen Code | `.qwen/skills/` | `~/.qwen/skills/` |
|
|
143
169
|
| Roo Code | `.roo/skills/` | `~/.roo/skills/` |
|
|
144
|
-
|
|
|
170
|
+
| Trae | `.trae/skills/` | `~/.trae/skills/` |
|
|
171
|
+
| Trae CN | `.trae/skills/` | `~/.trae-cn/skills/` |
|
|
172
|
+
| Windsurf | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` |
|
|
173
|
+
| Zencoder | `.zencoder/skills/` | `~/.zencoder/skills/` |
|
|
145
174
|
|
|
146
|
-
Agents that share `.agents/skills/` (
|
|
175
|
+
Agents that share `.agents/skills/` (Amp, Cline, Codex, Cursor, Gemini CLI, GitHub Copilot, Kimi Code CLI, OpenCode) are "universal" — they read skills from the same canonical directory. Non-universal agents have their own paths and receive symlinks or copies.
|
|
147
176
|
|
|
148
177
|
The CLI auto-detects which agents are installed on your system. If one agent is found, it installs silently. If multiple are found, it prompts for selection.
|
|
149
178
|
|
package/dist/cli.js
CHANGED
|
@@ -83,6 +83,18 @@ var init_api = __esm({
|
|
|
83
83
|
import { existsSync } from "fs";
|
|
84
84
|
import { homedir } from "os";
|
|
85
85
|
import { join } from "path";
|
|
86
|
+
function getOpenClawGlobalSkillsDir(homeDir = home, pathExists2 = existsSync) {
|
|
87
|
+
if (pathExists2(join(homeDir, ".openclaw"))) {
|
|
88
|
+
return join(homeDir, ".openclaw/skills");
|
|
89
|
+
}
|
|
90
|
+
if (pathExists2(join(homeDir, ".clawdbot"))) {
|
|
91
|
+
return join(homeDir, ".clawdbot/skills");
|
|
92
|
+
}
|
|
93
|
+
if (pathExists2(join(homeDir, ".moltbot"))) {
|
|
94
|
+
return join(homeDir, ".moltbot/skills");
|
|
95
|
+
}
|
|
96
|
+
return join(homeDir, ".openclaw/skills");
|
|
97
|
+
}
|
|
86
98
|
async function detectInstalledAgents() {
|
|
87
99
|
const installed = [];
|
|
88
100
|
for (const key of Object.keys(agents)) {
|
|
@@ -113,6 +125,34 @@ var init_agents = __esm({
|
|
|
113
125
|
codexHome = process.env["CODEX_HOME"]?.trim() || join(home, ".codex");
|
|
114
126
|
claudeHome = process.env["CLAUDE_CONFIG_DIR"]?.trim() || join(home, ".claude");
|
|
115
127
|
agents = {
|
|
128
|
+
adal: {
|
|
129
|
+
name: "adal",
|
|
130
|
+
displayName: "AdaL",
|
|
131
|
+
skillsDir: ".adal/skills",
|
|
132
|
+
globalSkillsDir: join(home, ".adal/skills"),
|
|
133
|
+
detectInstalled: () => existsSync(join(home, ".adal"))
|
|
134
|
+
},
|
|
135
|
+
amp: {
|
|
136
|
+
name: "amp",
|
|
137
|
+
displayName: "Amp",
|
|
138
|
+
skillsDir: ".agents/skills",
|
|
139
|
+
globalSkillsDir: join(configHome, "agents/skills"),
|
|
140
|
+
detectInstalled: () => existsSync(join(configHome, "amp"))
|
|
141
|
+
},
|
|
142
|
+
antigravity: {
|
|
143
|
+
name: "antigravity",
|
|
144
|
+
displayName: "Antigravity",
|
|
145
|
+
skillsDir: ".agent/skills",
|
|
146
|
+
globalSkillsDir: join(home, ".gemini/antigravity/skills"),
|
|
147
|
+
detectInstalled: () => existsSync(join(home, ".gemini/antigravity"))
|
|
148
|
+
},
|
|
149
|
+
augment: {
|
|
150
|
+
name: "augment",
|
|
151
|
+
displayName: "Augment",
|
|
152
|
+
skillsDir: ".augment/skills",
|
|
153
|
+
globalSkillsDir: join(home, ".augment/skills"),
|
|
154
|
+
detectInstalled: () => existsSync(join(home, ".augment"))
|
|
155
|
+
},
|
|
116
156
|
"claude-code": {
|
|
117
157
|
name: "claude-code",
|
|
118
158
|
displayName: "Claude Code",
|
|
@@ -120,12 +160,19 @@ var init_agents = __esm({
|
|
|
120
160
|
globalSkillsDir: join(claudeHome, "skills"),
|
|
121
161
|
detectInstalled: () => existsSync(claudeHome)
|
|
122
162
|
},
|
|
123
|
-
|
|
124
|
-
name: "
|
|
125
|
-
displayName: "
|
|
163
|
+
cline: {
|
|
164
|
+
name: "cline",
|
|
165
|
+
displayName: "Cline",
|
|
126
166
|
skillsDir: ".agents/skills",
|
|
127
|
-
globalSkillsDir: join(home, ".
|
|
128
|
-
detectInstalled: () => existsSync(join(home, ".
|
|
167
|
+
globalSkillsDir: join(home, ".agents/skills"),
|
|
168
|
+
detectInstalled: () => existsSync(join(home, ".cline"))
|
|
169
|
+
},
|
|
170
|
+
codebuddy: {
|
|
171
|
+
name: "codebuddy",
|
|
172
|
+
displayName: "CodeBuddy",
|
|
173
|
+
skillsDir: ".codebuddy/skills",
|
|
174
|
+
globalSkillsDir: join(home, ".codebuddy/skills"),
|
|
175
|
+
detectInstalled: () => existsSync(join(process.cwd(), ".codebuddy")) || existsSync(join(home, ".codebuddy"))
|
|
129
176
|
},
|
|
130
177
|
codex: {
|
|
131
178
|
name: "codex",
|
|
@@ -134,26 +181,47 @@ var init_agents = __esm({
|
|
|
134
181
|
globalSkillsDir: join(codexHome, "skills"),
|
|
135
182
|
detectInstalled: () => existsSync(codexHome) || existsSync("/etc/codex")
|
|
136
183
|
},
|
|
137
|
-
|
|
138
|
-
name: "
|
|
139
|
-
displayName: "
|
|
140
|
-
skillsDir: ".
|
|
141
|
-
globalSkillsDir: join(
|
|
142
|
-
detectInstalled: () => existsSync(join(
|
|
184
|
+
"command-code": {
|
|
185
|
+
name: "command-code",
|
|
186
|
+
displayName: "Command Code",
|
|
187
|
+
skillsDir: ".commandcode/skills",
|
|
188
|
+
globalSkillsDir: join(home, ".commandcode/skills"),
|
|
189
|
+
detectInstalled: () => existsSync(join(home, ".commandcode"))
|
|
143
190
|
},
|
|
144
|
-
|
|
145
|
-
name: "
|
|
146
|
-
displayName: "
|
|
191
|
+
continue: {
|
|
192
|
+
name: "continue",
|
|
193
|
+
displayName: "Continue",
|
|
194
|
+
skillsDir: ".continue/skills",
|
|
195
|
+
globalSkillsDir: join(home, ".continue/skills"),
|
|
196
|
+
detectInstalled: () => existsSync(join(process.cwd(), ".continue")) || existsSync(join(home, ".continue"))
|
|
197
|
+
},
|
|
198
|
+
cortex: {
|
|
199
|
+
name: "cortex",
|
|
200
|
+
displayName: "Cortex Code",
|
|
201
|
+
skillsDir: ".cortex/skills",
|
|
202
|
+
globalSkillsDir: join(home, ".snowflake/cortex/skills"),
|
|
203
|
+
detectInstalled: () => existsSync(join(home, ".snowflake/cortex"))
|
|
204
|
+
},
|
|
205
|
+
crush: {
|
|
206
|
+
name: "crush",
|
|
207
|
+
displayName: "Crush",
|
|
208
|
+
skillsDir: ".crush/skills",
|
|
209
|
+
globalSkillsDir: join(home, ".config/crush/skills"),
|
|
210
|
+
detectInstalled: () => existsSync(join(home, ".config/crush"))
|
|
211
|
+
},
|
|
212
|
+
cursor: {
|
|
213
|
+
name: "cursor",
|
|
214
|
+
displayName: "Cursor",
|
|
147
215
|
skillsDir: ".agents/skills",
|
|
148
|
-
globalSkillsDir: join(home, ".
|
|
149
|
-
detectInstalled: () => existsSync(join(home, ".
|
|
216
|
+
globalSkillsDir: join(home, ".cursor/skills"),
|
|
217
|
+
detectInstalled: () => existsSync(join(home, ".cursor"))
|
|
150
218
|
},
|
|
151
|
-
|
|
152
|
-
name: "
|
|
153
|
-
displayName: "
|
|
154
|
-
skillsDir: ".
|
|
155
|
-
globalSkillsDir: join(home, ".
|
|
156
|
-
detectInstalled: () => existsSync(join(home, ".
|
|
219
|
+
droid: {
|
|
220
|
+
name: "droid",
|
|
221
|
+
displayName: "Droid",
|
|
222
|
+
skillsDir: ".factory/skills",
|
|
223
|
+
globalSkillsDir: join(home, ".factory/skills"),
|
|
224
|
+
detectInstalled: () => existsSync(join(home, ".factory"))
|
|
157
225
|
},
|
|
158
226
|
"gemini-cli": {
|
|
159
227
|
name: "gemini-cli",
|
|
@@ -169,6 +237,132 @@ var init_agents = __esm({
|
|
|
169
237
|
globalSkillsDir: join(home, ".copilot/skills"),
|
|
170
238
|
detectInstalled: () => existsSync(join(home, ".copilot"))
|
|
171
239
|
},
|
|
240
|
+
goose: {
|
|
241
|
+
name: "goose",
|
|
242
|
+
displayName: "Goose",
|
|
243
|
+
skillsDir: ".goose/skills",
|
|
244
|
+
globalSkillsDir: join(configHome, "goose/skills"),
|
|
245
|
+
detectInstalled: () => existsSync(join(configHome, "goose"))
|
|
246
|
+
},
|
|
247
|
+
"iflow-cli": {
|
|
248
|
+
name: "iflow-cli",
|
|
249
|
+
displayName: "iFlow CLI",
|
|
250
|
+
skillsDir: ".iflow/skills",
|
|
251
|
+
globalSkillsDir: join(home, ".iflow/skills"),
|
|
252
|
+
detectInstalled: () => existsSync(join(home, ".iflow"))
|
|
253
|
+
},
|
|
254
|
+
junie: {
|
|
255
|
+
name: "junie",
|
|
256
|
+
displayName: "Junie",
|
|
257
|
+
skillsDir: ".junie/skills",
|
|
258
|
+
globalSkillsDir: join(home, ".junie/skills"),
|
|
259
|
+
detectInstalled: () => existsSync(join(home, ".junie"))
|
|
260
|
+
},
|
|
261
|
+
kilo: {
|
|
262
|
+
name: "kilo",
|
|
263
|
+
displayName: "Kilo Code",
|
|
264
|
+
skillsDir: ".kilocode/skills",
|
|
265
|
+
globalSkillsDir: join(home, ".kilocode/skills"),
|
|
266
|
+
detectInstalled: () => existsSync(join(home, ".kilocode"))
|
|
267
|
+
},
|
|
268
|
+
"kimi-cli": {
|
|
269
|
+
name: "kimi-cli",
|
|
270
|
+
displayName: "Kimi Code CLI",
|
|
271
|
+
skillsDir: ".agents/skills",
|
|
272
|
+
globalSkillsDir: join(home, ".config/agents/skills"),
|
|
273
|
+
detectInstalled: () => existsSync(join(home, ".kimi"))
|
|
274
|
+
},
|
|
275
|
+
"kiro-cli": {
|
|
276
|
+
name: "kiro-cli",
|
|
277
|
+
displayName: "Kiro CLI",
|
|
278
|
+
skillsDir: ".kiro/skills",
|
|
279
|
+
globalSkillsDir: join(home, ".kiro/skills"),
|
|
280
|
+
detectInstalled: () => existsSync(join(home, ".kiro"))
|
|
281
|
+
},
|
|
282
|
+
kode: {
|
|
283
|
+
name: "kode",
|
|
284
|
+
displayName: "Kode",
|
|
285
|
+
skillsDir: ".kode/skills",
|
|
286
|
+
globalSkillsDir: join(home, ".kode/skills"),
|
|
287
|
+
detectInstalled: () => existsSync(join(home, ".kode"))
|
|
288
|
+
},
|
|
289
|
+
mcpjam: {
|
|
290
|
+
name: "mcpjam",
|
|
291
|
+
displayName: "MCPJam",
|
|
292
|
+
skillsDir: ".mcpjam/skills",
|
|
293
|
+
globalSkillsDir: join(home, ".mcpjam/skills"),
|
|
294
|
+
detectInstalled: () => existsSync(join(home, ".mcpjam"))
|
|
295
|
+
},
|
|
296
|
+
"mistral-vibe": {
|
|
297
|
+
name: "mistral-vibe",
|
|
298
|
+
displayName: "Mistral Vibe",
|
|
299
|
+
skillsDir: ".vibe/skills",
|
|
300
|
+
globalSkillsDir: join(home, ".vibe/skills"),
|
|
301
|
+
detectInstalled: () => existsSync(join(home, ".vibe"))
|
|
302
|
+
},
|
|
303
|
+
mux: {
|
|
304
|
+
name: "mux",
|
|
305
|
+
displayName: "Mux",
|
|
306
|
+
skillsDir: ".mux/skills",
|
|
307
|
+
globalSkillsDir: join(home, ".mux/skills"),
|
|
308
|
+
detectInstalled: () => existsSync(join(home, ".mux"))
|
|
309
|
+
},
|
|
310
|
+
neovate: {
|
|
311
|
+
name: "neovate",
|
|
312
|
+
displayName: "Neovate",
|
|
313
|
+
skillsDir: ".neovate/skills",
|
|
314
|
+
globalSkillsDir: join(home, ".neovate/skills"),
|
|
315
|
+
detectInstalled: () => existsSync(join(home, ".neovate"))
|
|
316
|
+
},
|
|
317
|
+
openclaw: {
|
|
318
|
+
name: "openclaw",
|
|
319
|
+
displayName: "OpenClaw",
|
|
320
|
+
skillsDir: "skills",
|
|
321
|
+
globalSkillsDir: getOpenClawGlobalSkillsDir(),
|
|
322
|
+
detectInstalled: () => existsSync(join(home, ".openclaw")) || existsSync(join(home, ".clawdbot")) || existsSync(join(home, ".moltbot"))
|
|
323
|
+
},
|
|
324
|
+
opencode: {
|
|
325
|
+
name: "opencode",
|
|
326
|
+
displayName: "OpenCode",
|
|
327
|
+
skillsDir: ".agents/skills",
|
|
328
|
+
globalSkillsDir: join(configHome, "opencode/skills"),
|
|
329
|
+
detectInstalled: () => existsSync(join(configHome, "opencode"))
|
|
330
|
+
},
|
|
331
|
+
openhands: {
|
|
332
|
+
name: "openhands",
|
|
333
|
+
displayName: "OpenHands",
|
|
334
|
+
skillsDir: ".openhands/skills",
|
|
335
|
+
globalSkillsDir: join(home, ".openhands/skills"),
|
|
336
|
+
detectInstalled: () => existsSync(join(home, ".openhands"))
|
|
337
|
+
},
|
|
338
|
+
pi: {
|
|
339
|
+
name: "pi",
|
|
340
|
+
displayName: "Pi",
|
|
341
|
+
skillsDir: ".pi/skills",
|
|
342
|
+
globalSkillsDir: join(home, ".pi/agent/skills"),
|
|
343
|
+
detectInstalled: () => existsSync(join(home, ".pi/agent"))
|
|
344
|
+
},
|
|
345
|
+
pochi: {
|
|
346
|
+
name: "pochi",
|
|
347
|
+
displayName: "Pochi",
|
|
348
|
+
skillsDir: ".pochi/skills",
|
|
349
|
+
globalSkillsDir: join(home, ".pochi/skills"),
|
|
350
|
+
detectInstalled: () => existsSync(join(home, ".pochi"))
|
|
351
|
+
},
|
|
352
|
+
qoder: {
|
|
353
|
+
name: "qoder",
|
|
354
|
+
displayName: "Qoder",
|
|
355
|
+
skillsDir: ".qoder/skills",
|
|
356
|
+
globalSkillsDir: join(home, ".qoder/skills"),
|
|
357
|
+
detectInstalled: () => existsSync(join(home, ".qoder"))
|
|
358
|
+
},
|
|
359
|
+
"qwen-code": {
|
|
360
|
+
name: "qwen-code",
|
|
361
|
+
displayName: "Qwen Code",
|
|
362
|
+
skillsDir: ".qwen/skills",
|
|
363
|
+
globalSkillsDir: join(home, ".qwen/skills"),
|
|
364
|
+
detectInstalled: () => existsSync(join(home, ".qwen"))
|
|
365
|
+
},
|
|
172
366
|
roo: {
|
|
173
367
|
name: "roo",
|
|
174
368
|
displayName: "Roo Code",
|
|
@@ -176,12 +370,33 @@ var init_agents = __esm({
|
|
|
176
370
|
globalSkillsDir: join(home, ".roo/skills"),
|
|
177
371
|
detectInstalled: () => existsSync(join(home, ".roo"))
|
|
178
372
|
},
|
|
179
|
-
|
|
180
|
-
name: "
|
|
181
|
-
displayName: "
|
|
182
|
-
skillsDir: ".
|
|
183
|
-
globalSkillsDir: join(home, ".
|
|
184
|
-
detectInstalled: () => existsSync(join(
|
|
373
|
+
trae: {
|
|
374
|
+
name: "trae",
|
|
375
|
+
displayName: "Trae",
|
|
376
|
+
skillsDir: ".trae/skills",
|
|
377
|
+
globalSkillsDir: join(home, ".trae/skills"),
|
|
378
|
+
detectInstalled: () => existsSync(join(home, ".trae"))
|
|
379
|
+
},
|
|
380
|
+
"trae-cn": {
|
|
381
|
+
name: "trae-cn",
|
|
382
|
+
displayName: "Trae CN",
|
|
383
|
+
skillsDir: ".trae/skills",
|
|
384
|
+
globalSkillsDir: join(home, ".trae-cn/skills"),
|
|
385
|
+
detectInstalled: () => existsSync(join(home, ".trae-cn"))
|
|
386
|
+
},
|
|
387
|
+
windsurf: {
|
|
388
|
+
name: "windsurf",
|
|
389
|
+
displayName: "Windsurf",
|
|
390
|
+
skillsDir: ".windsurf/skills",
|
|
391
|
+
globalSkillsDir: join(home, ".codeium/windsurf/skills"),
|
|
392
|
+
detectInstalled: () => existsSync(join(home, ".codeium/windsurf"))
|
|
393
|
+
},
|
|
394
|
+
zencoder: {
|
|
395
|
+
name: "zencoder",
|
|
396
|
+
displayName: "Zencoder",
|
|
397
|
+
skillsDir: ".zencoder/skills",
|
|
398
|
+
globalSkillsDir: join(home, ".zencoder/skills"),
|
|
399
|
+
detectInstalled: () => existsSync(join(home, ".zencoder"))
|
|
185
400
|
}
|
|
186
401
|
};
|
|
187
402
|
}
|