wittyhub 0.0.5 → 0.0.6
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 +82 -67
- package/dist/cli.mjs +117 -12
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ The CLI for the open agent skills ecosystem.
|
|
|
4
4
|
|
|
5
5
|
<!-- agent-list:start -->
|
|
6
6
|
|
|
7
|
-
Supports **OpenCode**, **Claude Code**, **Codex**, **Cursor**, and [
|
|
7
|
+
Supports **OpenCode**, **Claude Code**, **Codex**, **Cursor**, and [71 more](#supported-agents).
|
|
8
8
|
|
|
9
9
|
<!-- agent-list:end -->
|
|
10
10
|
|
|
@@ -291,75 +291,87 @@ Skills can be installed to any of these agents:
|
|
|
291
291
|
|
|
292
292
|
<!-- supported-agents:start -->
|
|
293
293
|
|
|
294
|
-
| Agent | `--agent` | Project Path
|
|
295
|
-
| -------------------------------------------- | -------------------------------------------------------- |
|
|
296
|
-
| AiderDesk | `aider-desk` | `.aider-desk/skills/`
|
|
297
|
-
| Amp, Replit, Universal | `amp`, `replit`, `universal` | `.agents/skills/`
|
|
298
|
-
| Antigravity | `antigravity` | `.agents/skills/`
|
|
299
|
-
| Antigravity CLI | `antigravity-cli` | `.agents/skills/`
|
|
300
|
-
| AstrBot | `astrbot` | `data/skills/`
|
|
301
|
-
| Autohand Code CLI | `autohand-code` | `.autohand/skills/`
|
|
302
|
-
| Augment | `augment` | `.augment/skills/`
|
|
303
|
-
| IBM Bob | `bob` | `.bob/skills/`
|
|
304
|
-
| Claude Code | `claude-code` | `.claude/skills/`
|
|
305
|
-
| OpenClaw | `openclaw` | `skills/`
|
|
306
|
-
| Cline, Dexto, Kimi Code CLI, Loaf, Warp, Zed | `cline`, `dexto`, `kimi-code-cli`, `loaf`, `warp`, `zed` | `.agents/skills/`
|
|
307
|
-
| CodeArts Agent | `codearts-agent` | `.codeartsdoer/skills/`
|
|
308
|
-
| CodeBuddy | `codebuddy` | `.codebuddy/skills/`
|
|
309
|
-
| Codemaker | `codemaker` | `.codemaker/skills/`
|
|
310
|
-
| Code Studio | `codestudio` | `.codestudio/skills/`
|
|
311
|
-
| Codex | `codex` | `.agents/skills/`
|
|
312
|
-
| Command Code | `command-code` | `.commandcode/skills/`
|
|
313
|
-
| Continue | `continue` | `.continue/skills/`
|
|
314
|
-
| Cortex Code | `cortex` | `.cortex/skills/`
|
|
315
|
-
| Crush | `crush` | `.crush/skills/`
|
|
316
|
-
| Cursor | `cursor` | `.agents/skills/`
|
|
317
|
-
| Deep Agents | `deepagents` | `.agents/skills/`
|
|
318
|
-
| Devin for Terminal | `devin` | `.devin/skills/`
|
|
319
|
-
|
|
|
320
|
-
|
|
|
321
|
-
|
|
|
322
|
-
|
|
|
323
|
-
|
|
|
324
|
-
|
|
|
325
|
-
|
|
|
326
|
-
|
|
|
327
|
-
|
|
|
328
|
-
|
|
|
329
|
-
|
|
|
330
|
-
|
|
|
331
|
-
|
|
|
332
|
-
|
|
|
333
|
-
|
|
|
334
|
-
|
|
|
335
|
-
|
|
|
336
|
-
|
|
|
337
|
-
|
|
|
338
|
-
|
|
|
339
|
-
|
|
|
340
|
-
|
|
|
341
|
-
|
|
|
342
|
-
|
|
|
343
|
-
|
|
|
344
|
-
| Qoder
|
|
345
|
-
|
|
|
346
|
-
|
|
|
347
|
-
|
|
|
348
|
-
|
|
|
349
|
-
|
|
|
350
|
-
|
|
|
351
|
-
|
|
|
352
|
-
|
|
|
353
|
-
|
|
|
354
|
-
|
|
|
355
|
-
|
|
|
356
|
-
|
|
|
357
|
-
|
|
|
358
|
-
|
|
|
359
|
-
|
|
|
294
|
+
| Agent | `--agent` | Project Path | Global Path |
|
|
295
|
+
| -------------------------------------------- | -------------------------------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
|
296
|
+
| AiderDesk | `aider-desk` | `.aider-desk/skills/` | `~/.aider-desk/skills/` |
|
|
297
|
+
| Amp, Replit, Universal | `amp`, `replit`, `universal` | `.agents/skills/` | `~/.config/agents/skills/` |
|
|
298
|
+
| Antigravity | `antigravity` | `.agents/skills/` | `~/.gemini/antigravity/skills/` |
|
|
299
|
+
| Antigravity CLI | `antigravity-cli` | `.agents/skills/` | `~/.gemini/antigravity-cli/skills/` |
|
|
300
|
+
| AstrBot | `astrbot` | `data/skills/` | `~/.astrbot/data/skills/` |
|
|
301
|
+
| Autohand Code CLI | `autohand-code` | `.autohand/skills/` | `~/.autohand/skills/` |
|
|
302
|
+
| Augment | `augment` | `.augment/skills/` | `~/.augment/skills/` |
|
|
303
|
+
| IBM Bob | `bob` | `.bob/skills/` | `~/.bob/skills/` |
|
|
304
|
+
| Claude Code | `claude-code` | `.claude/skills/` | `~/.claude/skills/` |
|
|
305
|
+
| OpenClaw | `openclaw` | `skills/` | `~/.openclaw/skills/` |
|
|
306
|
+
| Cline, Dexto, Kimi Code CLI, Loaf, Warp, Zed | `cline`, `dexto`, `kimi-code-cli`, `loaf`, `warp`, `zed` | `.agents/skills/` | `~/.agents/skills/` |
|
|
307
|
+
| CodeArts Agent | `codearts-agent` | `.codeartsdoer/skills/` | `~/.codeartsdoer/skills/` |
|
|
308
|
+
| CodeBuddy | `codebuddy` | `.codebuddy/skills/` | `~/.codebuddy/skills/` |
|
|
309
|
+
| Codemaker | `codemaker` | `.codemaker/skills/` | `~/.codemaker/skills/` |
|
|
310
|
+
| Code Studio | `codestudio` | `.codestudio/skills/` | `~/.codestudio/skills/` |
|
|
311
|
+
| Codex | `codex` | `.agents/skills/` | `~/.codex/skills/` |
|
|
312
|
+
| Command Code | `command-code` | `.commandcode/skills/` | `~/.commandcode/skills/` |
|
|
313
|
+
| Continue | `continue` | `.continue/skills/` | `~/.continue/skills/` |
|
|
314
|
+
| Cortex Code | `cortex` | `.cortex/skills/` | `~/.snowflake/cortex/skills/` |
|
|
315
|
+
| Crush | `crush` | `.crush/skills/` | `~/.config/crush/skills/` |
|
|
316
|
+
| Cursor | `cursor` | `.agents/skills/` | `~/.cursor/skills/` |
|
|
317
|
+
| Deep Agents | `deepagents` | `.agents/skills/` | `~/.deepagents/agent/skills/` |
|
|
318
|
+
| Devin for Terminal | `devin` | `.devin/skills/` | `~/.config/devin/skills/` |
|
|
319
|
+
| Doubao | `doubao` | `.doubao/agent_mode/workspace/.user_skills/` | `~/Library/Application Support/Doubao/Default/.doubao/agent_mode/workspace/.user_skills/` |
|
|
320
|
+
| Droid | `droid` | `.factory/skills/` | `~/.factory/skills/` |
|
|
321
|
+
| Eve | `eve` | `agent/skills/` | N/A (project-only) |
|
|
322
|
+
| Firebender | `firebender` | `.agents/skills/` | `~/.firebender/skills/` |
|
|
323
|
+
| ForgeCode | `forgecode` | `.forge/skills/` | `~/.forge/skills/` |
|
|
324
|
+
| Gemini CLI | `gemini-cli` | `.agents/skills/` | `~/.gemini/skills/` |
|
|
325
|
+
| GitHub Copilot | `github-copilot` | `.agents/skills/` | `~/.copilot/skills/` |
|
|
326
|
+
| Goose | `goose` | `.goose/skills/` | `~/.config/goose/skills/` |
|
|
327
|
+
| Hermes Agent | `hermes-agent` | `.hermes/skills/` | `~/.hermes/skills/` |
|
|
328
|
+
| inference.sh | `inference-sh` | `.inferencesh/skills/` | `~/.inferencesh/skills/` |
|
|
329
|
+
| Jazz | `jazz` | `.jazz/skills/` | `~/.jazz/skills/` |
|
|
330
|
+
| Junie | `junie` | `.junie/skills/` | `~/.junie/skills/` |
|
|
331
|
+
| iFlow CLI | `iflow-cli` | `.iflow/skills/` | `~/.iflow/skills/` |
|
|
332
|
+
| Kilo Code | `kilo` | `.kilocode/skills/` | `~/.kilocode/skills/` |
|
|
333
|
+
| Kiro CLI | `kiro-cli` | `.kiro/skills/` | `~/.kiro/skills/` |
|
|
334
|
+
| Kode | `kode` | `.kode/skills/` | `~/.kode/skills/` |
|
|
335
|
+
| Lingma | `lingma` | `.lingma/skills/` | `~/.lingma/skills/` |
|
|
336
|
+
| MCPJam | `mcpjam` | `.mcpjam/skills/` | `~/.mcpjam/skills/` |
|
|
337
|
+
| Mistral Vibe | `mistral-vibe` | `.vibe/skills/` | `~/.vibe/skills/` |
|
|
338
|
+
| Moxby | `moxby` | `.moxby/skills/` | `~/.moxby/skills/` |
|
|
339
|
+
| Mux | `mux` | `.mux/skills/` | `~/.mux/skills/` |
|
|
340
|
+
| OpenCode | `opencode` | `.agents/skills/` | `~/.config/opencode/skills/` |
|
|
341
|
+
| OpenHands | `openhands` | `.openhands/skills/` | `~/.openhands/skills/` |
|
|
342
|
+
| Ona | `ona` | `.ona/skills/` | `~/.ona/skills/` |
|
|
343
|
+
| Pi | `pi` | `.pi/skills/` | `~/.pi/agent/skills/` |
|
|
344
|
+
| Qoder | `qoder` | `.qoder/skills/` | `~/.qoder/skills/` |
|
|
345
|
+
| Qoder CN | `qoder-cn` | `.qoder/skills/` | `~/.qoder-cn/skills/` |
|
|
346
|
+
| QoderWork | `qoderwork` | `.qoderwork/skills/` | `~/.qoderwork/skills/` |
|
|
347
|
+
| Qwen Code | `qwen-code` | `.qwen/skills/` | `~/.qwen/skills/` |
|
|
348
|
+
| Reasonix | `reasonix` | `.reasonix/skills/` | `~/.reasonix/skills/` |
|
|
349
|
+
| Rovo Dev | `rovodev` | `.rovodev/skills/` | `~/.rovodev/skills/` |
|
|
350
|
+
| Roo Code | `roo` | `.roo/skills/` | `~/.roo/skills/` |
|
|
351
|
+
| Tabnine CLI | `tabnine-cli` | `.tabnine/agent/skills/` | `~/.tabnine/agent/skills/` |
|
|
352
|
+
| Terramind | `terramind` | `.terramind/skills/` | `~/.terramind/skills/` |
|
|
353
|
+
| Tinycloud | `tinycloud` | `.tinycloud/skills/` | `~/.tinycloud/skills/` |
|
|
354
|
+
| Trae | `trae` | `.trae/skills/` | `~/.trae/skills/` |
|
|
355
|
+
| Trae CN | `trae-cn` | `.trae/skills/` | `~/.trae-cn/skills/` |
|
|
356
|
+
| WorkBuddy | `workbuddy` | `.workbuddy/skills/` | `~/.workbuddy/skills/` |
|
|
357
|
+
| Windsurf | `windsurf` | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` |
|
|
358
|
+
| Zencoder, Zenflow | `zencoder`, `zenflow` | `.zencoder/skills/` | `~/.zencoder/skills/` |
|
|
359
|
+
| Neovate | `neovate` | `.neovate/skills/` | `~/.neovate/skills/` |
|
|
360
|
+
| Pochi | `pochi` | `.pochi/skills/` | `~/.pochi/skills/` |
|
|
361
|
+
| PromptScript | `promptscript` | `.agents/skills/` | N/A (project-only) |
|
|
362
|
+
| AdaL | `adal` | `.adal/skills/` | `~/.adal/skills/` |
|
|
360
363
|
|
|
361
364
|
<!-- supported-agents:end -->
|
|
362
365
|
|
|
366
|
+
> [!NOTE]
|
|
367
|
+
> **Doubao install path:** Doubao only reads user-level skills, so installs always go to its global directory:
|
|
368
|
+
>
|
|
369
|
+
> - macOS: `~/Library/Application Support/Doubao/Default/.doubao/agent_mode/workspace/.user_skills/`
|
|
370
|
+
> - Windows: `%LOCALAPPDATA%\Doubao\User Data\Default\.doubao\agent_mode\workspace\.user_skills\`
|
|
371
|
+
>
|
|
372
|
+
> DoubaoWork uses the same layout under `~/Library/Application Support/DoubaoWork` (macOS) or
|
|
373
|
+
> `%LOCALAPPDATA%\DoubaoWork\User Data` (Windows). There is no official Linux client.
|
|
374
|
+
|
|
363
375
|
> [!NOTE]
|
|
364
376
|
> **Kiro CLI users:** The default agent automatically loads skills from `.kiro/skills/` and `~/.kiro/skills/` — no
|
|
365
377
|
> configuration needed. If you use a **custom agent**, add skills to its `resources` in `.kiro/agents/<agent>.json`:
|
|
@@ -450,6 +462,7 @@ to also discover `SKILL.md` files outside these container directories
|
|
|
450
462
|
- `.cortex/skills/`
|
|
451
463
|
- `.crush/skills/`
|
|
452
464
|
- `.devin/skills/`
|
|
465
|
+
- `.doubao/agent_mode/workspace/.user_skills/`
|
|
453
466
|
- `.factory/skills/`
|
|
454
467
|
- `agent/skills/`
|
|
455
468
|
- `.forge/skills/`
|
|
@@ -471,6 +484,7 @@ to also discover `SKILL.md` files outside these container directories
|
|
|
471
484
|
- `.ona/skills/`
|
|
472
485
|
- `.pi/skills/`
|
|
473
486
|
- `.qoder/skills/`
|
|
487
|
+
- `.qoderwork/skills/`
|
|
474
488
|
- `.qwen/skills/`
|
|
475
489
|
- `.reasonix/skills/`
|
|
476
490
|
- `.rovodev/skills/`
|
|
@@ -479,6 +493,7 @@ to also discover `SKILL.md` files outside these container directories
|
|
|
479
493
|
- `.terramind/skills/`
|
|
480
494
|
- `.tinycloud/skills/`
|
|
481
495
|
- `.trae/skills/`
|
|
496
|
+
- `.workbuddy/skills/`
|
|
482
497
|
- `.windsurf/skills/`
|
|
483
498
|
- `.zencoder/skills/`
|
|
484
499
|
- `.neovate/skills/`
|
package/dist/cli.mjs
CHANGED
|
@@ -1106,6 +1106,19 @@ const hermesHome = process.env.HERMES_HOME?.trim() || join(home, ".hermes");
|
|
|
1106
1106
|
const autohandHome = process.env.AUTOHAND_HOME?.trim() || join(home, ".autohand");
|
|
1107
1107
|
const zedAppDataHome = process.env.APPDATA?.trim();
|
|
1108
1108
|
const zedFlatpakConfigHome = process.env.FLATPAK_XDG_CONFIG_HOME?.trim();
|
|
1109
|
+
function getDoubaoDataRoots() {
|
|
1110
|
+
if (process.platform === "darwin") return [join(home, "Library", "Application Support", "DoubaoWork"), join(home, "Library", "Application Support", "Doubao")];
|
|
1111
|
+
if (process.platform === "win32") {
|
|
1112
|
+
const localAppData = process.env.LOCALAPPDATA?.trim() || join(home, "AppData", "Local");
|
|
1113
|
+
return [join(localAppData, "DoubaoWork", "User Data"), join(localAppData, "Doubao", "User Data")];
|
|
1114
|
+
}
|
|
1115
|
+
return [join(configHome, "DoubaoWork"), join(configHome, "Doubao")];
|
|
1116
|
+
}
|
|
1117
|
+
const doubaoRoots = getDoubaoDataRoots();
|
|
1118
|
+
const doubaoHome = process.env.DOUBAO_HOME?.trim() || doubaoRoots.find((root) => existsSync(root)) || doubaoRoots[0];
|
|
1119
|
+
function getDoubaoWorkspaceDir() {
|
|
1120
|
+
return join(doubaoHome, "Default", ".doubao", "agent_mode", "workspace");
|
|
1121
|
+
}
|
|
1109
1122
|
function packageJsonHasDependency(packageJsonPath, dependencyName) {
|
|
1110
1123
|
try {
|
|
1111
1124
|
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
@@ -1338,6 +1351,16 @@ const agents = {
|
|
|
1338
1351
|
return existsSync(join(home, ".dexto"));
|
|
1339
1352
|
}
|
|
1340
1353
|
},
|
|
1354
|
+
doubao: {
|
|
1355
|
+
name: "doubao",
|
|
1356
|
+
displayName: "Doubao",
|
|
1357
|
+
skillsDir: ".doubao/agent_mode/workspace/.user_skills",
|
|
1358
|
+
globalSkillsDir: join(getDoubaoWorkspaceDir(), ".user_skills"),
|
|
1359
|
+
requiresGlobal: true,
|
|
1360
|
+
detectInstalled: async () => {
|
|
1361
|
+
return existsSync(doubaoHome);
|
|
1362
|
+
}
|
|
1363
|
+
},
|
|
1341
1364
|
droid: {
|
|
1342
1365
|
name: "droid",
|
|
1343
1366
|
displayName: "Droid",
|
|
@@ -1593,6 +1616,16 @@ const agents = {
|
|
|
1593
1616
|
return existsSync(join(home, ".qoder-cn"));
|
|
1594
1617
|
}
|
|
1595
1618
|
},
|
|
1619
|
+
qoderwork: {
|
|
1620
|
+
name: "qoderwork",
|
|
1621
|
+
displayName: "QoderWork",
|
|
1622
|
+
skillsDir: ".qoderwork/skills",
|
|
1623
|
+
globalSkillsDir: join(home, ".qoderwork/skills"),
|
|
1624
|
+
requiresGlobal: true,
|
|
1625
|
+
detectInstalled: async () => {
|
|
1626
|
+
return existsSync(join(home, ".qoderwork"));
|
|
1627
|
+
}
|
|
1628
|
+
},
|
|
1596
1629
|
"qwen-code": {
|
|
1597
1630
|
name: "qwen-code",
|
|
1598
1631
|
displayName: "Qwen Code",
|
|
@@ -1693,6 +1726,15 @@ const agents = {
|
|
|
1693
1726
|
return existsSync(join(home, ".warp"));
|
|
1694
1727
|
}
|
|
1695
1728
|
},
|
|
1729
|
+
workbuddy: {
|
|
1730
|
+
name: "workbuddy",
|
|
1731
|
+
displayName: "WorkBuddy",
|
|
1732
|
+
skillsDir: ".workbuddy/skills",
|
|
1733
|
+
globalSkillsDir: join(home, ".workbuddy/skills"),
|
|
1734
|
+
detectInstalled: async () => {
|
|
1735
|
+
return existsSync(join(home, ".workbuddy"));
|
|
1736
|
+
}
|
|
1737
|
+
},
|
|
1696
1738
|
windsurf: {
|
|
1697
1739
|
name: "windsurf",
|
|
1698
1740
|
displayName: "Windsurf",
|
|
@@ -2338,12 +2380,56 @@ const agentNameToType = {
|
|
|
2338
2380
|
codex: "codex",
|
|
2339
2381
|
antigravity: "antigravity",
|
|
2340
2382
|
"augment-cli": "augment",
|
|
2383
|
+
doubao: "doubao",
|
|
2341
2384
|
opencode: "opencode",
|
|
2342
|
-
"github-copilot": "github-copilot"
|
|
2385
|
+
"github-copilot": "github-copilot",
|
|
2386
|
+
openclaw: "openclaw",
|
|
2387
|
+
qoderwork: "qoderwork",
|
|
2388
|
+
trae: "trae",
|
|
2389
|
+
"trae-cn": "trae-cn",
|
|
2390
|
+
workbuddy: "workbuddy"
|
|
2343
2391
|
};
|
|
2392
|
+
const envPrefixAgents = [
|
|
2393
|
+
{
|
|
2394
|
+
prefixes: ["DOUBAO_"],
|
|
2395
|
+
agent: "doubao"
|
|
2396
|
+
},
|
|
2397
|
+
{
|
|
2398
|
+
prefixes: ["WORKBUDDY_"],
|
|
2399
|
+
agent: "workbuddy"
|
|
2400
|
+
},
|
|
2401
|
+
{
|
|
2402
|
+
prefixes: ["QODERWORK_"],
|
|
2403
|
+
agent: "qoderwork"
|
|
2404
|
+
},
|
|
2405
|
+
{
|
|
2406
|
+
prefixes: [
|
|
2407
|
+
"OPENCLAW_",
|
|
2408
|
+
"CLAWDBOT_",
|
|
2409
|
+
"MOLTBOT_"
|
|
2410
|
+
],
|
|
2411
|
+
agent: "openclaw"
|
|
2412
|
+
}
|
|
2413
|
+
];
|
|
2414
|
+
function detectFromEnvPrefixes() {
|
|
2415
|
+
const keys = Object.keys(process.env);
|
|
2416
|
+
for (const { prefixes, agent } of envPrefixAgents) if (keys.some((key) => prefixes.some((prefix) => key.startsWith(prefix)))) return {
|
|
2417
|
+
isAgent: true,
|
|
2418
|
+
agent: { name: agent }
|
|
2419
|
+
};
|
|
2420
|
+
return null;
|
|
2421
|
+
}
|
|
2422
|
+
function detectTrae() {
|
|
2423
|
+
const brand = process.env.TRAE_BRAND_NAME ?? "";
|
|
2424
|
+
if (!(Boolean(process.env.TRAE_RUNTIME) || brand.toLowerCase().includes("trae") || process.env.TERM_PRODUCT === "Trae")) return null;
|
|
2425
|
+
return {
|
|
2426
|
+
isAgent: true,
|
|
2427
|
+
agent: { name: /trae\s*cn|cn\s*trae/i.test(brand) || process.env.TRAE_PRODUCT_REGION?.toLowerCase() === "cn" ? "trae-cn" : "trae" }
|
|
2428
|
+
};
|
|
2429
|
+
}
|
|
2344
2430
|
async function detectAgent() {
|
|
2345
2431
|
if (cachedResult) return cachedResult;
|
|
2346
|
-
cachedResult = await (0, import_dist.determineAgent)();
|
|
2432
|
+
cachedResult = detectTrae() ?? detectFromEnvPrefixes() ?? await (0, import_dist.determineAgent)();
|
|
2347
2433
|
if (cachedResult.isAgent) setDetectedAgent(cachedResult.agent.name);
|
|
2348
2434
|
return cachedResult;
|
|
2349
2435
|
}
|
|
@@ -2351,7 +2437,9 @@ async function isRunningInAgent() {
|
|
|
2351
2437
|
return (await detectAgent()).isAgent;
|
|
2352
2438
|
}
|
|
2353
2439
|
function getAgentType(agentName) {
|
|
2354
|
-
|
|
2440
|
+
const mapped = agentNameToType[agentName];
|
|
2441
|
+
if (mapped) return mapped;
|
|
2442
|
+
return Object.hasOwn(agents, agentName) ? agentName : null;
|
|
2355
2443
|
}
|
|
2356
2444
|
var ProviderRegistryImpl = class {
|
|
2357
2445
|
providers = [];
|
|
@@ -3178,7 +3266,7 @@ async function tryBlobInstall(ownerRepo, options = {}) {
|
|
|
3178
3266
|
tree
|
|
3179
3267
|
};
|
|
3180
3268
|
}
|
|
3181
|
-
var version$1 = "0.0.
|
|
3269
|
+
var version$1 = "0.0.6";
|
|
3182
3270
|
const isCancelled$1 = (value) => typeof value === "symbol";
|
|
3183
3271
|
function getLockSource(parsedUrl, normalizedSource) {
|
|
3184
3272
|
return parsedUrl.startsWith("git@") || parsedUrl.startsWith("ssh://") ? parsedUrl : normalizedSource;
|
|
@@ -3694,9 +3782,16 @@ async function runAdd(args, options = {}) {
|
|
|
3694
3782
|
options.yes = true;
|
|
3695
3783
|
if (!options.agent || options.agent.length === 0) {
|
|
3696
3784
|
const mappedAgent = getAgentType(agentResult.agent.name);
|
|
3697
|
-
if (mappedAgent)
|
|
3785
|
+
if (!mappedAgent) {
|
|
3786
|
+
M.error(`Unsupported agent: ${agentResult.agent.name}`);
|
|
3787
|
+
M.info(`Specify the target explicitly with --agent <name>.`);
|
|
3788
|
+
M.info(`Valid agents: ${Object.keys(agents).join(", ")}`);
|
|
3789
|
+
process.exit(1);
|
|
3790
|
+
}
|
|
3791
|
+
options.agent = [mappedAgent];
|
|
3698
3792
|
}
|
|
3699
3793
|
}
|
|
3794
|
+
if (options.global === void 0 && options.agent?.some((a) => agents[a]?.requiresGlobal)) options.global = true;
|
|
3700
3795
|
console.log();
|
|
3701
3796
|
if (!agentResult.isAgent) Ie(import_picocolors.default.bgCyan(import_picocolors.default.black(" skills ")));
|
|
3702
3797
|
if (agentResult.isAgent) M.info(import_picocolors.default.bgCyan(import_picocolors.default.black(import_picocolors.default.bold(` ${agentResult.agent.name} `))) + " Agent detected — installing non-interactively");
|
|
@@ -4113,13 +4208,23 @@ async function runAdd(args, options = {}) {
|
|
|
4113
4208
|
const printSkillSummary = (skills) => {
|
|
4114
4209
|
for (const skill of skills) {
|
|
4115
4210
|
if (summaryLines.length > 0) summaryLines.push("");
|
|
4116
|
-
|
|
4117
|
-
|
|
4118
|
-
|
|
4119
|
-
|
|
4120
|
-
|
|
4121
|
-
|
|
4122
|
-
|
|
4211
|
+
if (installMode === "symlink") {
|
|
4212
|
+
const shortCanonical = shortenPath$2(installTargets.length === 1 ? getCanonicalPath(skill.name, {
|
|
4213
|
+
global: installGlobally,
|
|
4214
|
+
agent: installTargets[0].agent,
|
|
4215
|
+
eveSubagent: installTargets[0].subagent
|
|
4216
|
+
}) : getCanonicalPath(skill.name, { global: installGlobally }), cwd);
|
|
4217
|
+
summaryLines.push(`${import_picocolors.default.cyan(shortCanonical)}`);
|
|
4218
|
+
summaryLines.push(...buildTargetSummaryLines(installTargets, installMode));
|
|
4219
|
+
} else for (const target of installTargets) {
|
|
4220
|
+
const installPath = getInstallPath(skill.name, target.agent, {
|
|
4221
|
+
global: installGlobally,
|
|
4222
|
+
cwd,
|
|
4223
|
+
eveSubagent: target.subagent
|
|
4224
|
+
});
|
|
4225
|
+
summaryLines.push(`${import_picocolors.default.cyan(shortenPath$2(installPath, cwd))}`);
|
|
4226
|
+
summaryLines.push(` ${import_picocolors.default.dim("copy →")} ${targetDisplayName(target)}`);
|
|
4227
|
+
}
|
|
4123
4228
|
const skillOverwrites = overwriteStatus.get(skill.name);
|
|
4124
4229
|
const overwriteAgents = installTargets.filter((t) => skillOverwrites?.get(targetKey(t))).map(targetDisplayName);
|
|
4125
4230
|
if (overwriteAgents.length > 0) summaryLines.push(` ${import_picocolors.default.yellow("overwrites:")} ${formatList$1(overwriteAgents)}`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wittyhub",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "The open agent skills ecosystem",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"deepagents",
|
|
61
61
|
"devin",
|
|
62
62
|
"dexto",
|
|
63
|
+
"doubao",
|
|
63
64
|
"droid",
|
|
64
65
|
"eve",
|
|
65
66
|
"firebender",
|
|
@@ -88,6 +89,7 @@
|
|
|
88
89
|
"pi",
|
|
89
90
|
"qoder",
|
|
90
91
|
"qoder-cn",
|
|
92
|
+
"qoderwork",
|
|
91
93
|
"qwen-code",
|
|
92
94
|
"replit",
|
|
93
95
|
"reasonix",
|
|
@@ -99,6 +101,7 @@
|
|
|
99
101
|
"trae",
|
|
100
102
|
"trae-cn",
|
|
101
103
|
"warp",
|
|
104
|
+
"workbuddy",
|
|
102
105
|
"windsurf",
|
|
103
106
|
"zed",
|
|
104
107
|
"zencoder",
|