wittyhub 0.0.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.
- package/README.md +543 -0
- package/ThirdPartyNoticeText.txt +117 -0
- package/bin/cli.mjs +14 -0
- package/dist/_chunks/libs/@clack/core.mjs +767 -0
- package/dist/_chunks/libs/@clack/prompts.mjs +334 -0
- package/dist/_chunks/libs/@kwsites/file-exists.mjs +562 -0
- package/dist/_chunks/libs/@kwsites/promise-deferred.mjs +37 -0
- package/dist/_chunks/libs/@vercel/detect-agent.mjs +138 -0
- package/dist/_chunks/libs/simple-git.mjs +3584 -0
- package/dist/_chunks/libs/xdg-basedir.mjs +14 -0
- package/dist/_chunks/rolldown-runtime.mjs +24 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +6539 -0
- package/package.json +144 -0
package/README.md
ADDED
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
# wittyhub-cli
|
|
2
|
+
|
|
3
|
+
The CLI for the open agent skills ecosystem.
|
|
4
|
+
|
|
5
|
+
<!-- agent-list:start -->
|
|
6
|
+
Supports **OpenCode**, **Claude Code**, **Codex**, **Cursor**, and [68 more](#supported-agents).
|
|
7
|
+
<!-- agent-list:end -->
|
|
8
|
+
|
|
9
|
+
[](https://skills.sh/vercel-labs/skills)
|
|
10
|
+
|
|
11
|
+
## Install a Skill
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx wittyhub add vercel-labs/agent-skills
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Use a Skill Without Installing
|
|
18
|
+
|
|
19
|
+
Generate a prompt for one skill, or start a supported coding agent interactively:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx wittyhub use vercel-labs/agent-skills@web-design-guidelines | claude
|
|
23
|
+
npx wittyhub use vercel-labs/agent-skills --skill web-design-guidelines --agent claude-code
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`wittyhub use` resolves sources the same way as `wittyhub add`, writes the selected skill files to a temporary directory, and prints only the generated prompt to stdout unless `--agent` is provided. With `--agent`, it starts one supported agent interactively with the generated prompt.
|
|
27
|
+
|
|
28
|
+
### Source Formats
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# GitHub shorthand (owner/repo)
|
|
32
|
+
npx wittyhub add vercel-labs/agent-skills
|
|
33
|
+
|
|
34
|
+
# Full GitHub URL
|
|
35
|
+
npx wittyhub add https://github.com/vercel-labs/agent-skills
|
|
36
|
+
|
|
37
|
+
# Direct path to a skill in a repo
|
|
38
|
+
npx wittyhub add https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design-guidelines
|
|
39
|
+
|
|
40
|
+
# GitLab URL
|
|
41
|
+
npx wittyhub add https://gitlab.com/org/repo
|
|
42
|
+
|
|
43
|
+
# Any git URL
|
|
44
|
+
npx wittyhub add git@github.com:vercel-labs/agent-skills.git
|
|
45
|
+
|
|
46
|
+
# Local path
|
|
47
|
+
npx wittyhub add ./my-local-skills
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Options
|
|
51
|
+
|
|
52
|
+
| Option | Description |
|
|
53
|
+
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
54
|
+
| `-g, --global` | Install to user directory instead of project |
|
|
55
|
+
| `-a, --agent <agents...>` | <!-- agent-names:start -->Target specific agents (e.g., `claude-code`, `codex`). See [Supported Agents](#supported-agents)<!-- agent-names:end --> |
|
|
56
|
+
| `-s, --skill <skills...>` | Install specific skills by name (use `'*'` for all skills) |
|
|
57
|
+
| `-l, --list` | List available skills without installing |
|
|
58
|
+
| `--copy` | Copy files instead of symlinking to agent directories |
|
|
59
|
+
| `-y, --yes` | Skip all confirmation prompts |
|
|
60
|
+
| `--all` | Install all skills to all agents without prompts |
|
|
61
|
+
|
|
62
|
+
### Examples
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# List skills in a repository
|
|
66
|
+
npx wittyhub add vercel-labs/agent-skills --list
|
|
67
|
+
|
|
68
|
+
# Install specific skills
|
|
69
|
+
npx wittyhub add vercel-labs/agent-skills --skill frontend-design --skill skill-creator
|
|
70
|
+
|
|
71
|
+
# Install a skill with spaces in the name (must be quoted)
|
|
72
|
+
npx wittyhub add owner/repo --skill "Convex Best Practices"
|
|
73
|
+
|
|
74
|
+
# Install to specific agents
|
|
75
|
+
npx wittyhub add vercel-labs/agent-skills -a claude-code -a opencode
|
|
76
|
+
|
|
77
|
+
# Non-interactive installation (CI/CD friendly)
|
|
78
|
+
npx wittyhub add vercel-labs/agent-skills --skill frontend-design -g -a claude-code -y
|
|
79
|
+
|
|
80
|
+
# Install all skills from a repo to all agents
|
|
81
|
+
npx wittyhub add vercel-labs/agent-skills --all
|
|
82
|
+
|
|
83
|
+
# Install all skills to specific agents
|
|
84
|
+
npx wittyhub add vercel-labs/agent-skills --skill '*' -a claude-code
|
|
85
|
+
|
|
86
|
+
# Install specific skills to all agents
|
|
87
|
+
npx wittyhub add vercel-labs/agent-skills --agent '*' --skill frontend-design
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Installation Scope
|
|
91
|
+
|
|
92
|
+
| Scope | Flag | Location | Use Case |
|
|
93
|
+
| ----------- | --------- | ------------------- | --------------------------------------------- |
|
|
94
|
+
| **Project** | (default) | `./<agent>/skills/` | Committed with your project, shared with team |
|
|
95
|
+
| **Global** | `-g` | `~/<agent>/skills/` | Available across all projects |
|
|
96
|
+
|
|
97
|
+
### Installation Methods
|
|
98
|
+
|
|
99
|
+
When installing interactively, you can choose:
|
|
100
|
+
|
|
101
|
+
| Method | Description |
|
|
102
|
+
| ------------------------- | ------------------------------------------------------------------------------------------- |
|
|
103
|
+
| **Symlink** (Recommended) | Creates symlinks from each agent to a canonical copy. Single source of truth, easy updates. |
|
|
104
|
+
| **Copy** | Creates independent copies for each agent. Use when symlinks aren't supported. |
|
|
105
|
+
|
|
106
|
+
## Other Commands
|
|
107
|
+
|
|
108
|
+
| Command | Description |
|
|
109
|
+
| ---------------------------- | --------------------------------------------- |
|
|
110
|
+
| `npx wittyhub use <source>` | Use one skill without installing |
|
|
111
|
+
| `npx wittyhub list` | List installed skills (alias: `ls`) |
|
|
112
|
+
| `npx wittyhub find [query]` | Search for skills interactively or by keyword |
|
|
113
|
+
| `npx wittyhub remove [skills]` | Remove installed skills from agents |
|
|
114
|
+
| `npx wittyhub update [skills]` | Update installed skills to latest versions |
|
|
115
|
+
| `npx wittyhub init [name]` | Create a new SKILL.md template |
|
|
116
|
+
|
|
117
|
+
### `wittyhub list`
|
|
118
|
+
|
|
119
|
+
List all installed skills. Similar to `npm ls`.
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# List all installed skills (project and global)
|
|
123
|
+
npx wittyhub list
|
|
124
|
+
|
|
125
|
+
# List only global skills
|
|
126
|
+
npx wittyhub ls -g
|
|
127
|
+
|
|
128
|
+
# Filter by specific agents
|
|
129
|
+
npx wittyhub ls -a claude-code -a cursor
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### `wittyhub find`
|
|
133
|
+
|
|
134
|
+
Search for skills interactively or by keyword.
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# Interactive search (fzf-style)
|
|
138
|
+
npx wittyhub find
|
|
139
|
+
|
|
140
|
+
# Search by keyword
|
|
141
|
+
npx wittyhub find typescript
|
|
142
|
+
|
|
143
|
+
# Search across every repository owned by an organization or user
|
|
144
|
+
npx wittyhub find react --owner vercel
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### `wittyhub update`
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Update all skills (interactive scope prompt)
|
|
151
|
+
npx wittyhub update
|
|
152
|
+
|
|
153
|
+
# Update a single skill by name
|
|
154
|
+
npx wittyhub update my-skill
|
|
155
|
+
|
|
156
|
+
# Update multiple specific skills
|
|
157
|
+
npx wittyhub update frontend-design web-design-guidelines
|
|
158
|
+
|
|
159
|
+
# Update only global or project skills
|
|
160
|
+
npx wittyhub update -g
|
|
161
|
+
npx wittyhub update -p
|
|
162
|
+
|
|
163
|
+
# Non-interactive (auto-detects scope: project if in a project, else global)
|
|
164
|
+
npx wittyhub update -y
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
| Option | Description |
|
|
168
|
+
| --------------- | ------------------------------------------------------------------------- |
|
|
169
|
+
| `-g, --global` | Only update global skills |
|
|
170
|
+
| `-p, --project` | Only update project skills |
|
|
171
|
+
| `-y, --yes` | Skip scope prompt (auto-detect: project if in a project dir, else global) |
|
|
172
|
+
| `[skills...]` | Update specific skills by name instead of all |
|
|
173
|
+
|
|
174
|
+
### `wittyhub init`
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Create SKILL.md in current directory
|
|
178
|
+
npx wittyhub init
|
|
179
|
+
|
|
180
|
+
# Create a new skill in a subdirectory
|
|
181
|
+
npx wittyhub init my-skill
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### `wittyhub remove`
|
|
185
|
+
|
|
186
|
+
Remove installed skills from agents.
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# Remove interactively (select from installed skills)
|
|
190
|
+
npx wittyhub remove
|
|
191
|
+
|
|
192
|
+
# Remove specific skill by name
|
|
193
|
+
npx wittyhub remove web-design-guidelines
|
|
194
|
+
|
|
195
|
+
# Remove multiple skills
|
|
196
|
+
npx wittyhub remove frontend-design web-design-guidelines
|
|
197
|
+
|
|
198
|
+
# Remove from global scope
|
|
199
|
+
npx wittyhub remove --global web-design-guidelines
|
|
200
|
+
|
|
201
|
+
# Remove from specific agents only
|
|
202
|
+
npx wittyhub remove --agent claude-code cursor my-skill
|
|
203
|
+
|
|
204
|
+
# Remove all installed skills without confirmation
|
|
205
|
+
npx wittyhub remove --all
|
|
206
|
+
|
|
207
|
+
# Remove all skills from a specific agent
|
|
208
|
+
npx wittyhub remove --skill '*' -a cursor
|
|
209
|
+
|
|
210
|
+
# Remove a specific skill from all agents
|
|
211
|
+
npx wittyhub remove my-skill --agent '*'
|
|
212
|
+
|
|
213
|
+
# Use 'rm' alias
|
|
214
|
+
npx wittyhub rm my-skill
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
| Option | Description |
|
|
218
|
+
| -------------- | ------------------------------------------------ |
|
|
219
|
+
| `-g, --global` | Remove from global scope (~/) instead of project |
|
|
220
|
+
| `-a, --agent` | Remove from specific agents (use `'*'` for all) |
|
|
221
|
+
| `-s, --skill` | Specify skills to remove (use `'*'` for all) |
|
|
222
|
+
| `-y, --yes` | Skip confirmation prompts |
|
|
223
|
+
| `--all` | Shorthand for `--skill '*' --agent '*' -y` |
|
|
224
|
+
|
|
225
|
+
## What are Agent Skills?
|
|
226
|
+
|
|
227
|
+
Agent skills are reusable instruction sets that extend your coding agent's capabilities. They're defined in `SKILL.md`
|
|
228
|
+
files with YAML frontmatter containing a `name` and `description`.
|
|
229
|
+
|
|
230
|
+
Skills let agents perform specialized tasks like:
|
|
231
|
+
|
|
232
|
+
- Generating release notes from git history
|
|
233
|
+
- Creating PRs following your team's conventions
|
|
234
|
+
- Integrating with external tools (Linear, Notion, etc.)
|
|
235
|
+
|
|
236
|
+
Discover skills at **[skills.sh](https://skills.sh)**
|
|
237
|
+
|
|
238
|
+
## Supported Agents
|
|
239
|
+
|
|
240
|
+
Skills can be installed to any of these agents:
|
|
241
|
+
|
|
242
|
+
<!-- supported-agents:start -->
|
|
243
|
+
| Agent | `--agent` | Project Path | Global Path |
|
|
244
|
+
|-------|-----------|--------------|-------------|
|
|
245
|
+
| AiderDesk | `aider-desk` | `.aider-desk/skills/` | `~/.aider-desk/skills/` |
|
|
246
|
+
| Amp, Replit, Universal | `amp`, `replit`, `universal` | `.agents/skills/` | `~/.config/agents/skills/` |
|
|
247
|
+
| Antigravity | `antigravity` | `.agents/skills/` | `~/.gemini/antigravity/skills/` |
|
|
248
|
+
| Antigravity CLI | `antigravity-cli` | `.agents/skills/` | `~/.gemini/antigravity-cli/skills/` |
|
|
249
|
+
| AstrBot | `astrbot` | `data/skills/` | `~/.astrbot/data/skills/` |
|
|
250
|
+
| Autohand Code CLI | `autohand-code` | `.autohand/skills/` | `~/.autohand/skills/` |
|
|
251
|
+
| Augment | `augment` | `.augment/skills/` | `~/.augment/skills/` |
|
|
252
|
+
| IBM Bob | `bob` | `.bob/skills/` | `~/.bob/skills/` |
|
|
253
|
+
| Claude Code | `claude-code` | `.claude/skills/` | `~/.claude/skills/` |
|
|
254
|
+
| OpenClaw | `openclaw` | `skills/` | `~/.openclaw/skills/` |
|
|
255
|
+
| Cline, Dexto, Kimi Code CLI, Loaf, Warp, Zed | `cline`, `dexto`, `kimi-code-cli`, `loaf`, `warp`, `zed` | `.agents/skills/` | `~/.agents/skills/` |
|
|
256
|
+
| CodeArts Agent | `codearts-agent` | `.codeartsdoer/skills/` | `~/.codeartsdoer/skills/` |
|
|
257
|
+
| CodeBuddy | `codebuddy` | `.codebuddy/skills/` | `~/.codebuddy/skills/` |
|
|
258
|
+
| Codemaker | `codemaker` | `.codemaker/skills/` | `~/.codemaker/skills/` |
|
|
259
|
+
| Code Studio | `codestudio` | `.codestudio/skills/` | `~/.codestudio/skills/` |
|
|
260
|
+
| Codex | `codex` | `.agents/skills/` | `~/.codex/skills/` |
|
|
261
|
+
| Command Code | `command-code` | `.commandcode/skills/` | `~/.commandcode/skills/` |
|
|
262
|
+
| Continue | `continue` | `.continue/skills/` | `~/.continue/skills/` |
|
|
263
|
+
| Cortex Code | `cortex` | `.cortex/skills/` | `~/.snowflake/cortex/skills/` |
|
|
264
|
+
| Crush | `crush` | `.crush/skills/` | `~/.config/crush/skills/` |
|
|
265
|
+
| Cursor | `cursor` | `.agents/skills/` | `~/.cursor/skills/` |
|
|
266
|
+
| Deep Agents | `deepagents` | `.agents/skills/` | `~/.deepagents/agent/skills/` |
|
|
267
|
+
| Devin for Terminal | `devin` | `.devin/skills/` | `~/.config/devin/skills/` |
|
|
268
|
+
| Droid | `droid` | `.factory/skills/` | `~/.factory/skills/` |
|
|
269
|
+
| Eve | `eve` | `agent/skills/` | N/A (project-only) |
|
|
270
|
+
| Firebender | `firebender` | `.agents/skills/` | `~/.firebender/skills/` |
|
|
271
|
+
| ForgeCode | `forgecode` | `.forge/skills/` | `~/.forge/skills/` |
|
|
272
|
+
| Gemini CLI | `gemini-cli` | `.agents/skills/` | `~/.gemini/skills/` |
|
|
273
|
+
| GitHub Copilot | `github-copilot` | `.agents/skills/` | `~/.copilot/skills/` |
|
|
274
|
+
| Goose | `goose` | `.goose/skills/` | `~/.config/goose/skills/` |
|
|
275
|
+
| Hermes Agent | `hermes-agent` | `.hermes/skills/` | `~/.hermes/skills/` |
|
|
276
|
+
| inference.sh | `inference-sh` | `.inferencesh/skills/` | `~/.inferencesh/skills/` |
|
|
277
|
+
| Jazz | `jazz` | `.jazz/skills/` | `~/.jazz/skills/` |
|
|
278
|
+
| Junie | `junie` | `.junie/skills/` | `~/.junie/skills/` |
|
|
279
|
+
| iFlow CLI | `iflow-cli` | `.iflow/skills/` | `~/.iflow/skills/` |
|
|
280
|
+
| Kilo Code | `kilo` | `.kilocode/skills/` | `~/.kilocode/skills/` |
|
|
281
|
+
| Kiro CLI | `kiro-cli` | `.kiro/skills/` | `~/.kiro/skills/` |
|
|
282
|
+
| Kode | `kode` | `.kode/skills/` | `~/.kode/skills/` |
|
|
283
|
+
| Lingma | `lingma` | `.lingma/skills/` | `~/.lingma/skills/` |
|
|
284
|
+
| MCPJam | `mcpjam` | `.mcpjam/skills/` | `~/.mcpjam/skills/` |
|
|
285
|
+
| Mistral Vibe | `mistral-vibe` | `.vibe/skills/` | `~/.vibe/skills/` |
|
|
286
|
+
| Moxby | `moxby` | `.moxby/skills/` | `~/.moxby/skills/` |
|
|
287
|
+
| Mux | `mux` | `.mux/skills/` | `~/.mux/skills/` |
|
|
288
|
+
| OpenCode | `opencode` | `.agents/skills/` | `~/.config/opencode/skills/` |
|
|
289
|
+
| OpenHands | `openhands` | `.openhands/skills/` | `~/.openhands/skills/` |
|
|
290
|
+
| Ona | `ona` | `.ona/skills/` | `~/.ona/skills/` |
|
|
291
|
+
| Pi | `pi` | `.pi/skills/` | `~/.pi/agent/skills/` |
|
|
292
|
+
| Qoder | `qoder` | `.qoder/skills/` | `~/.qoder/skills/` |
|
|
293
|
+
| Qoder CN | `qoder-cn` | `.qoder/skills/` | `~/.qoder-cn/skills/` |
|
|
294
|
+
| Qwen Code | `qwen-code` | `.qwen/skills/` | `~/.qwen/skills/` |
|
|
295
|
+
| Reasonix | `reasonix` | `.reasonix/skills/` | `~/.reasonix/skills/` |
|
|
296
|
+
| Rovo Dev | `rovodev` | `.rovodev/skills/` | `~/.rovodev/skills/` |
|
|
297
|
+
| Roo Code | `roo` | `.roo/skills/` | `~/.roo/skills/` |
|
|
298
|
+
| Tabnine CLI | `tabnine-cli` | `.tabnine/agent/skills/` | `~/.tabnine/agent/skills/` |
|
|
299
|
+
| Terramind | `terramind` | `.terramind/skills/` | `~/.terramind/skills/` |
|
|
300
|
+
| Tinycloud | `tinycloud` | `.tinycloud/skills/` | `~/.tinycloud/skills/` |
|
|
301
|
+
| Trae | `trae` | `.trae/skills/` | `~/.trae/skills/` |
|
|
302
|
+
| Trae CN | `trae-cn` | `.trae/skills/` | `~/.trae-cn/skills/` |
|
|
303
|
+
| Windsurf | `windsurf` | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` |
|
|
304
|
+
| Zencoder, Zenflow | `zencoder`, `zenflow` | `.zencoder/skills/` | `~/.zencoder/skills/` |
|
|
305
|
+
| Neovate | `neovate` | `.neovate/skills/` | `~/.neovate/skills/` |
|
|
306
|
+
| Pochi | `pochi` | `.pochi/skills/` | `~/.pochi/skills/` |
|
|
307
|
+
| PromptScript | `promptscript` | `.agents/skills/` | N/A (project-only) |
|
|
308
|
+
| AdaL | `adal` | `.adal/skills/` | `~/.adal/skills/` |
|
|
309
|
+
<!-- supported-agents:end -->
|
|
310
|
+
|
|
311
|
+
> [!NOTE]
|
|
312
|
+
> **Kiro CLI users:** The default agent automatically loads skills from `.kiro/skills/` and `~/.kiro/skills/` — no
|
|
313
|
+
> configuration needed. If you use a **custom agent**, add skills to its `resources` in `.kiro/agents/<agent>.json`:
|
|
314
|
+
>
|
|
315
|
+
> ```json
|
|
316
|
+
> {
|
|
317
|
+
> "resources": ["skill://.kiro/skills/**/SKILL.md"]
|
|
318
|
+
> }
|
|
319
|
+
> ```
|
|
320
|
+
|
|
321
|
+
The CLI automatically detects which coding agents you have installed. If none are detected, you'll be prompted to select
|
|
322
|
+
which agents to install to.
|
|
323
|
+
|
|
324
|
+
## Creating Skills
|
|
325
|
+
|
|
326
|
+
Skills are directories containing a `SKILL.md` file with YAML frontmatter:
|
|
327
|
+
|
|
328
|
+
```markdown
|
|
329
|
+
---
|
|
330
|
+
name: my-skill
|
|
331
|
+
description: What this skill does and when to use it
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
# My Skill
|
|
335
|
+
|
|
336
|
+
Instructions for the agent to follow when this skill is activated.
|
|
337
|
+
|
|
338
|
+
## When to Use
|
|
339
|
+
|
|
340
|
+
Describe the scenarios where this skill should be used.
|
|
341
|
+
|
|
342
|
+
## Steps
|
|
343
|
+
|
|
344
|
+
1. First, do this
|
|
345
|
+
2. Then, do that
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Required Fields
|
|
349
|
+
|
|
350
|
+
- `name`: Unique identifier (lowercase, hyphens allowed)
|
|
351
|
+
- `description`: Brief explanation of what the skill does
|
|
352
|
+
|
|
353
|
+
### Optional Fields
|
|
354
|
+
|
|
355
|
+
- `metadata.internal`: Set to `true` to hide the skill from normal discovery. Internal skills are only visible and
|
|
356
|
+
installable when `INSTALL_INTERNAL_SKILLS=1` is set. Useful for work-in-progress skills or skills meant only for
|
|
357
|
+
internal tooling.
|
|
358
|
+
|
|
359
|
+
```markdown
|
|
360
|
+
---
|
|
361
|
+
name: my-internal-skill
|
|
362
|
+
description: An internal skill not shown by default
|
|
363
|
+
metadata:
|
|
364
|
+
internal: true
|
|
365
|
+
---
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### Skill Discovery
|
|
369
|
+
|
|
370
|
+
The CLI searches for skills in these locations within a repository. Each
|
|
371
|
+
skill container directory is walked one level deep for the common flat
|
|
372
|
+
layout (`skills/<name>/SKILL.md`) and one extra level deep for catalog
|
|
373
|
+
layouts (`skills/<category>/<name>/SKILL.md`). A `SKILL.md` discovered at
|
|
374
|
+
the shallower level shadows anything nested below it. Use `--full-depth`
|
|
375
|
+
to also discover `SKILL.md` files outside these container directories
|
|
376
|
+
(e.g. under `examples/` or `tests/`).
|
|
377
|
+
|
|
378
|
+
<!-- skill-discovery:start -->
|
|
379
|
+
- Root directory (if it contains `SKILL.md`)
|
|
380
|
+
- `skills/`
|
|
381
|
+
- `skills/.curated/`
|
|
382
|
+
- `skills/.experimental/`
|
|
383
|
+
- `skills/.system/`
|
|
384
|
+
- `.aider-desk/skills/`
|
|
385
|
+
- `.agents/skills/`
|
|
386
|
+
- `data/skills/`
|
|
387
|
+
- `.autohand/skills/`
|
|
388
|
+
- `.augment/skills/`
|
|
389
|
+
- `.bob/skills/`
|
|
390
|
+
- `.claude/skills/`
|
|
391
|
+
- `.codeartsdoer/skills/`
|
|
392
|
+
- `.codebuddy/skills/`
|
|
393
|
+
- `.codemaker/skills/`
|
|
394
|
+
- `.codestudio/skills/`
|
|
395
|
+
- `.commandcode/skills/`
|
|
396
|
+
- `.continue/skills/`
|
|
397
|
+
- `.cortex/skills/`
|
|
398
|
+
- `.crush/skills/`
|
|
399
|
+
- `.devin/skills/`
|
|
400
|
+
- `.factory/skills/`
|
|
401
|
+
- `agent/skills/`
|
|
402
|
+
- `.forge/skills/`
|
|
403
|
+
- `.goose/skills/`
|
|
404
|
+
- `.hermes/skills/`
|
|
405
|
+
- `.inferencesh/skills/`
|
|
406
|
+
- `.jazz/skills/`
|
|
407
|
+
- `.junie/skills/`
|
|
408
|
+
- `.iflow/skills/`
|
|
409
|
+
- `.kilocode/skills/`
|
|
410
|
+
- `.kiro/skills/`
|
|
411
|
+
- `.kode/skills/`
|
|
412
|
+
- `.lingma/skills/`
|
|
413
|
+
- `.mcpjam/skills/`
|
|
414
|
+
- `.vibe/skills/`
|
|
415
|
+
- `.moxby/skills/`
|
|
416
|
+
- `.mux/skills/`
|
|
417
|
+
- `.openhands/skills/`
|
|
418
|
+
- `.ona/skills/`
|
|
419
|
+
- `.pi/skills/`
|
|
420
|
+
- `.qoder/skills/`
|
|
421
|
+
- `.qwen/skills/`
|
|
422
|
+
- `.reasonix/skills/`
|
|
423
|
+
- `.rovodev/skills/`
|
|
424
|
+
- `.roo/skills/`
|
|
425
|
+
- `.tabnine/agent/skills/`
|
|
426
|
+
- `.terramind/skills/`
|
|
427
|
+
- `.tinycloud/skills/`
|
|
428
|
+
- `.trae/skills/`
|
|
429
|
+
- `.windsurf/skills/`
|
|
430
|
+
- `.zencoder/skills/`
|
|
431
|
+
- `.neovate/skills/`
|
|
432
|
+
- `.pochi/skills/`
|
|
433
|
+
- `.adal/skills/`
|
|
434
|
+
<!-- skill-discovery:end -->
|
|
435
|
+
|
|
436
|
+
### Plugin Manifest Discovery
|
|
437
|
+
|
|
438
|
+
If `.claude-plugin/marketplace.json` or `.claude-plugin/plugin.json` exists, skills declared in those files are also discovered:
|
|
439
|
+
|
|
440
|
+
```json
|
|
441
|
+
// .claude-plugin/marketplace.json
|
|
442
|
+
{
|
|
443
|
+
"metadata": { "pluginRoot": "./plugins" },
|
|
444
|
+
"plugins": [
|
|
445
|
+
{
|
|
446
|
+
"name": "my-plugin",
|
|
447
|
+
"source": "my-plugin",
|
|
448
|
+
"skills": ["./skills/review", "./skills/test"]
|
|
449
|
+
}
|
|
450
|
+
]
|
|
451
|
+
}
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
This enables compatibility with the [Claude Code plugin marketplace](https://code.claude.com/docs/en/plugin-marketplaces) ecosystem. Skill paths declared in a manifest are searched at their declared depth and are not subject to the depth-2 catalog walk described above.
|
|
455
|
+
|
|
456
|
+
If no skills are found in standard locations, a recursive search is performed.
|
|
457
|
+
|
|
458
|
+
## Compatibility
|
|
459
|
+
|
|
460
|
+
Skills are generally compatible across agents since they follow a
|
|
461
|
+
shared [Agent Skills specification](https://agentskills.io). However, some features may be agent-specific:
|
|
462
|
+
|
|
463
|
+
| Feature | OpenCode | OpenHands | Claude Code | Cline | CodeBuddy | Codex | Command Code | Kiro CLI | Cursor | Antigravity | Roo Code | Github Copilot | Amp | OpenClaw | Neovate | Pi | Qoder | Zencoder |
|
|
464
|
+
| --------------- | -------- | --------- | ----------- | ----- | --------- | ----- | ------------ | -------- | ------ | ----------- | -------- | -------------- | --- | -------- | ------- | --- | ----- | -------- |
|
|
465
|
+
| Basic skills | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
|
|
466
|
+
| `allowed-tools` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
|
|
467
|
+
| `context: fork` | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
|
|
468
|
+
| Hooks | No | No | Yes | Yes | No | No | No | Yes | No | No | No | No | No | No | No | No | No | No |
|
|
469
|
+
|
|
470
|
+
## Troubleshooting
|
|
471
|
+
|
|
472
|
+
### "No skills found"
|
|
473
|
+
|
|
474
|
+
Ensure the repository contains valid `SKILL.md` files with both `name` and `description` in the frontmatter.
|
|
475
|
+
|
|
476
|
+
### Skill not loading in agent
|
|
477
|
+
|
|
478
|
+
- Verify the skill was installed to the correct path
|
|
479
|
+
- Check the agent's documentation for skill loading requirements
|
|
480
|
+
- Ensure the `SKILL.md` frontmatter is valid YAML
|
|
481
|
+
|
|
482
|
+
### Permission errors
|
|
483
|
+
|
|
484
|
+
Ensure you have write access to the target directory.
|
|
485
|
+
|
|
486
|
+
## Environment Variables
|
|
487
|
+
|
|
488
|
+
| Variable | Description |
|
|
489
|
+
| ------------------------- | -------------------------------------------------------------------------- |
|
|
490
|
+
| `INSTALL_INTERNAL_SKILLS` | Set to `1` or `true` to show and install skills marked as `internal: true` |
|
|
491
|
+
| `DISABLE_TELEMETRY` | Set to disable anonymous usage telemetry |
|
|
492
|
+
| `DO_NOT_TRACK` | Alternative way to disable telemetry |
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
# Install internal skills
|
|
496
|
+
INSTALL_INTERNAL_SKILLS=1 npx wittyhub add vercel-labs/agent-skills --list
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
## Telemetry
|
|
500
|
+
|
|
501
|
+
This CLI collects anonymous usage data to help improve the tool. No personal information is collected.
|
|
502
|
+
|
|
503
|
+
Telemetry is automatically disabled in CI environments.
|
|
504
|
+
|
|
505
|
+
## Related Links
|
|
506
|
+
|
|
507
|
+
- [Agent Skills Specification](https://agentskills.io)
|
|
508
|
+
- [Skills Directory](https://skills.sh)
|
|
509
|
+
- [Amp Skills Documentation](https://ampcode.com/manual#agent-skills)
|
|
510
|
+
- [Antigravity Skills Documentation](https://antigravity.google/docs/skills)
|
|
511
|
+
- [Factory AI / Droid Skills Documentation](https://docs.factory.ai/cli/configuration/skills)
|
|
512
|
+
- [Claude Code Skills Documentation](https://code.claude.com/docs/en/skills)
|
|
513
|
+
- [OpenClaw Skills Documentation](https://docs.openclaw.ai/tools/skills)
|
|
514
|
+
- [Cline Skills Documentation](https://docs.cline.bot/features/skills)
|
|
515
|
+
- [CodeBuddy Skills Documentation](https://www.codebuddy.ai/docs/ide/Features/Skills)
|
|
516
|
+
- [Codex Skills Documentation](https://developers.openai.com/codex/skills)
|
|
517
|
+
- [Command Code Skills Documentation](https://commandcode.ai/docs/skills)
|
|
518
|
+
- [Crush Skills Documentation](https://github.com/charmbracelet/crush?tab=readme-ov-file#agent-skills)
|
|
519
|
+
- [Cursor Skills Documentation](https://cursor.com/docs/context/skills)
|
|
520
|
+
- [Firebender Skills Documentation](https://docs.firebender.com/multi-agent/skills)
|
|
521
|
+
- [Gemini CLI Skills Documentation](https://geminicli.com/docs/cli/skills/)
|
|
522
|
+
- [GitHub Copilot Agent Skills](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills)
|
|
523
|
+
- [iFlow CLI Skills Documentation](https://platform.iflow.cn/en/cli/examples/skill)
|
|
524
|
+
- [Kimi Code CLI Skills Documentation](https://moonshotai.github.io/kimi-code/en/customization/skills)
|
|
525
|
+
- [Kiro CLI Skills Documentation](https://kiro.dev/docs/cli/custom-agents/configuration-reference/#skill-resources)
|
|
526
|
+
- [Kode Skills Documentation](https://github.com/shareAI-lab/kode/blob/main/docs/skills.md)
|
|
527
|
+
- [OpenCode Skills Documentation](https://opencode.ai/docs/skills)
|
|
528
|
+
- [Qwen Code Skills Documentation](https://qwenlm.github.io/qwen-code-docs/en/users/features/skills/)
|
|
529
|
+
- [OpenHands Skills Documentation](https://docs.openhands.ai/modules/usage/how-to/using-skills)
|
|
530
|
+
- [Pi Skills Documentation](https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/docs/skills.md)
|
|
531
|
+
- [Qoder Skills Documentation](https://docs.qoder.com/cli/Skills)
|
|
532
|
+
- [Replit Skills Documentation](https://docs.replit.com/replitai/skills)
|
|
533
|
+
- [Roo Code Skills Documentation](https://docs.roocode.com/features/skills)
|
|
534
|
+
- [Trae Skills Documentation](https://docs.trae.ai/ide/skills)
|
|
535
|
+
- [Vercel Agent Skills Repository](https://github.com/vercel-labs/agent-skills)
|
|
536
|
+
|
|
537
|
+
## Acknowledgments
|
|
538
|
+
|
|
539
|
+
This project is forked from [vercel-labs/skills](https://github.com/vercel-labs/skills). We thank the Vercel team and the original contributors for their excellent work on the agent skills ecosystem.
|
|
540
|
+
|
|
541
|
+
## License
|
|
542
|
+
|
|
543
|
+
MIT
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/*!----------------- Skills CLI ThirdPartyNotices -------------------------------------------------------
|
|
2
|
+
|
|
3
|
+
The Skills CLI incorporates third party material from the projects listed below.
|
|
4
|
+
The original copyright notice and the license under which this material was received
|
|
5
|
+
are set forth below. These licenses and notices are provided for informational purposes only.
|
|
6
|
+
|
|
7
|
+
---------------------------------------------
|
|
8
|
+
Third Party Code Components
|
|
9
|
+
--------------------------------------------
|
|
10
|
+
|
|
11
|
+
================================================================================
|
|
12
|
+
Package: @clack/prompts@0.11.0
|
|
13
|
+
License: MIT
|
|
14
|
+
Repository: https://github.com/bombshell-dev/clack
|
|
15
|
+
--------------------------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
MIT License
|
|
18
|
+
|
|
19
|
+
Copyright (c) Nate Moore
|
|
20
|
+
|
|
21
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
22
|
+
|
|
23
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
24
|
+
|
|
25
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
================================================================================
|
|
29
|
+
Package: picocolors@1.1.1
|
|
30
|
+
License: ISC
|
|
31
|
+
Repository: https://github.com/alexeyraspopov/picocolors
|
|
32
|
+
--------------------------------------------------------------------------------
|
|
33
|
+
|
|
34
|
+
ISC License
|
|
35
|
+
|
|
36
|
+
Copyright (c) 2021-2024 Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov
|
|
37
|
+
|
|
38
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
39
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
40
|
+
copyright notice and this permission notice appear in all copies.
|
|
41
|
+
|
|
42
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
43
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
44
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
45
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
46
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
47
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
48
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
================================================================================
|
|
52
|
+
Package: simple-git@3.30.0
|
|
53
|
+
License: MIT
|
|
54
|
+
Repository: https://github.com/steveukx/git-js
|
|
55
|
+
--------------------------------------------------------------------------------
|
|
56
|
+
|
|
57
|
+
MIT License
|
|
58
|
+
|
|
59
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
60
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
61
|
+
in the Software without restriction, including without limitation the rights
|
|
62
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
63
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
64
|
+
furnished to do so, subject to the following conditions:
|
|
65
|
+
|
|
66
|
+
The above copyright notice and this permission notice shall be included in all
|
|
67
|
+
copies or substantial portions of the Software.
|
|
68
|
+
|
|
69
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
70
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
71
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
72
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
73
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
74
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
75
|
+
SOFTWARE.
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
================================================================================
|
|
79
|
+
Package: xdg-basedir@5.1.0
|
|
80
|
+
License: MIT
|
|
81
|
+
Repository: https://github.com/sindresorhus/xdg-basedir
|
|
82
|
+
--------------------------------------------------------------------------------
|
|
83
|
+
|
|
84
|
+
MIT License
|
|
85
|
+
|
|
86
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
87
|
+
|
|
88
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
89
|
+
|
|
90
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
91
|
+
|
|
92
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
================================================================================
|
|
96
|
+
Package: yaml@2.8.3
|
|
97
|
+
License: ISC
|
|
98
|
+
Repository: https://github.com/eemeli/yaml
|
|
99
|
+
--------------------------------------------------------------------------------
|
|
100
|
+
|
|
101
|
+
Copyright Eemeli Aro <eemeli@gmail.com>
|
|
102
|
+
|
|
103
|
+
Permission to use, copy, modify, and/or distribute this software for any purpose
|
|
104
|
+
with or without fee is hereby granted, provided that the above copyright notice
|
|
105
|
+
and this permission notice appear in all copies.
|
|
106
|
+
|
|
107
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
108
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
109
|
+
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
110
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
111
|
+
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
112
|
+
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
113
|
+
THIS SOFTWARE.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
================================================================================
|
|
117
|
+
*/
|
package/bin/cli.mjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import module from 'node:module';
|
|
4
|
+
|
|
5
|
+
// https://nodejs.org/api/module.html#module-compile-cache
|
|
6
|
+
if (module.enableCompileCache && !process.env.NODE_DISABLE_COMPILE_CACHE) {
|
|
7
|
+
try {
|
|
8
|
+
module.enableCompileCache();
|
|
9
|
+
} catch {
|
|
10
|
+
// Ignore errors
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
await import('../dist/cli.mjs');
|