@rackerlabs/agent-skills-cli 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +603 -0
- package/ThirdPartyNoticeText.txt +125 -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/@simple-git/args-pathspec.mjs +12 -0
- package/dist/_chunks/libs/@simple-git/argv-parser.mjs +367 -0
- package/dist/_chunks/libs/esprima.mjs +5338 -0
- package/dist/_chunks/libs/extend-shallow.mjs +31 -0
- package/dist/_chunks/libs/gray-matter.mjs +2596 -0
- package/dist/_chunks/libs/simple-git.mjs +3560 -0
- package/dist/_chunks/libs/xdg-basedir.mjs +14 -0
- package/dist/_chunks/manifest-cli.mjs +73 -0
- package/dist/_chunks/manifest.mjs +49 -0
- package/dist/_chunks/registry-hashes.mjs +56 -0
- package/dist/_chunks/registry.mjs +47 -0
- package/dist/_chunks/rolldown-runtime.mjs +24 -0
- package/dist/_chunks/verify.mjs +170 -0
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +4885 -0
- package/package.json +129 -0
package/README.md
ADDED
|
@@ -0,0 +1,603 @@
|
|
|
1
|
+
# skills
|
|
2
|
+
|
|
3
|
+
The CLI for the open agent skills ecosystem.
|
|
4
|
+
|
|
5
|
+
## Introduction
|
|
6
|
+
|
|
7
|
+
The `skills` CLI manages AI agent behaviour as code. It installs, updates, and version-locks curated Markdown instruction sets ("skills") into any repository, so every engineer and CI runner gets identical agent context without manual configuration.
|
|
8
|
+
|
|
9
|
+
### What is a Skill?
|
|
10
|
+
A skill is a reusable instruction set defined in a `SKILL.md` file with YAML frontmatter (`name` and `description`). Skills let agents perform specialised tasks such as:
|
|
11
|
+
|
|
12
|
+
- Generating release notes from git history
|
|
13
|
+
- Creating PRs following your team's conventions
|
|
14
|
+
- Integrating with external tools (Linear, Notion, etc.)
|
|
15
|
+
|
|
16
|
+
Discover published skills at **[skills.sh](https://skills.sh)**.
|
|
17
|
+
|
|
18
|
+
### Core Capabilities
|
|
19
|
+
- **Reproducible installs**: Running `skills add` twice produces the same result. Skills are symlinked (or copied) into each agent's expected directory and tracked in `skills.json`.
|
|
20
|
+
- **Version-controlled configuration**: `skills.json` is committed to Git, giving teams a reviewable, diffable record of which skills are active.
|
|
21
|
+
- **Dual distribution**: Available as self-contained binaries (for air-gapped environments) or via `npx` (for standard engineering workflows). See [Distribution & Supply Chain Security](#distribution--supply-chain-security).
|
|
22
|
+
|
|
23
|
+
### Skill Groups
|
|
24
|
+
A skill group is a named collection of related skills that can be installed together. Instead of adding skills individually across every project, architects define groups centrally and teams consume them in a single command:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Define the group (in the central registry)
|
|
28
|
+
skills group add skills-group-coding-data-science python-expert @stable
|
|
29
|
+
|
|
30
|
+
# Consume it (in any project)
|
|
31
|
+
skills install --group skills-group-coding-data-science
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
<!-- agent-list:start -->
|
|
35
|
+
Supports **OpenCode**, **Claude Code**, **Codex**, **Cursor**, and [40 more](#available-agents).
|
|
36
|
+
<!-- agent-list:end -->
|
|
37
|
+
|
|
38
|
+
## Prerequisites
|
|
39
|
+
|
|
40
|
+
| Requirement | When Needed | Version |
|
|
41
|
+
|------------|-------------|--------|
|
|
42
|
+
| **Node.js** | When using `npx` | 20+ |
|
|
43
|
+
| **`gh` CLI** | When cloning from private GitHub repositories | Latest |
|
|
44
|
+
| **`cosign`** | When verifying binary signatures | 2.x |
|
|
45
|
+
|
|
46
|
+
> [!NOTE]
|
|
47
|
+
> When using the standalone binary distribution, Node.js is **not** required.
|
|
48
|
+
|
|
49
|
+
## Distribution & Supply Chain Security
|
|
50
|
+
|
|
51
|
+
The `skills` CLI is distributed in two ways, primarily driven by supply chain security requirements and secondarily by agent startup performance.
|
|
52
|
+
|
|
53
|
+
### 1. Verified Binaries (Recommended for CI and Restricted Environments)
|
|
54
|
+
Pre-compiled executables for Windows, macOS, and Linux (including ARM64/Graviton). Each release is cryptographically signed via Sigstore (Cosign), allowing you to verify that the binary was built exclusively by the project's GitHub Actions pipeline before granting it execution permissions. Because no runtime resolution occurs at startup, cold-start time is near-instant — critical for ephemeral agent containers where every second of provisioning adds latency.
|
|
55
|
+
|
|
56
|
+
### 2. Networked Execution via NPX (Standard Engineering)
|
|
57
|
+
For interactive development where convenience outweighs verification, the CLI is published to GitHub Packages. Developers always get the latest version without managing local installations. The trade-off is a short resolution delay on first run and reliance on registry-level trust rather than per-binary signature verification.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### 🛡 Supply Chain Verification
|
|
62
|
+
When downloading binaries in CI or ephemeral containers, you should verify they haven't been tampered with. Every release includes SHA-256 checksums and Sigstore (Cosign) keyless signatures, providing [SLSA Level 3](https://slsa.dev) assurance that the binary was built by our GitHub Actions pipeline.
|
|
63
|
+
|
|
64
|
+
**Example: Verifying a binary before use**
|
|
65
|
+
```bash
|
|
66
|
+
# 1. Download the binary and its signature bundle
|
|
67
|
+
curl -LO https://github.com/rackerlabs/agent-skills-cli/releases/latest/download/skills-linux-x64
|
|
68
|
+
curl -LO https://github.com/rackerlabs/agent-skills-cli/releases/latest/download/skills-linux-x64.bundle
|
|
69
|
+
|
|
70
|
+
# 2. Verify the signature against the release workflow identity
|
|
71
|
+
cosign verify-blob skills-linux-x64 \
|
|
72
|
+
--bundle skills-linux-x64.bundle \
|
|
73
|
+
--certificate-identity-regexp "^https://github.com/rackerlabs/agent-skills-cli/.github/workflows/release-binaries.yml" \
|
|
74
|
+
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
|
|
75
|
+
|
|
76
|
+
# 3. Rename, make executable, and run the verified binary
|
|
77
|
+
mv skills-linux-x64 skills
|
|
78
|
+
chmod +x skills
|
|
79
|
+
./skills add owner/repo
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Execution Aliases
|
|
83
|
+
|
|
84
|
+
> [!NOTE]
|
|
85
|
+
> Whether you invoke `skills` (from PATH), execute `./skills-linux-x64` (standalone binary), or run `npx @rackerlabs/agent-skills-cli` (networked), the behaviour is identical. All usage examples below use the shorthand `skills` notation.
|
|
86
|
+
|
|
87
|
+
## Quick Start
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Install a skill from a GitHub repository
|
|
91
|
+
skills add vercel-labs/agent-skills
|
|
92
|
+
|
|
93
|
+
# List what's installed
|
|
94
|
+
skills list
|
|
95
|
+
|
|
96
|
+
# Check for updates
|
|
97
|
+
skills check
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Install a Skill
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
skills add vercel-labs/agent-skills
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Source Formats
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# GitHub shorthand (owner/repo)
|
|
110
|
+
skills add vercel-labs/agent-skills
|
|
111
|
+
|
|
112
|
+
# Full GitHub URL
|
|
113
|
+
skills add https://github.com/vercel-labs/agent-skills
|
|
114
|
+
|
|
115
|
+
# Direct path to a skill in a repo
|
|
116
|
+
skills add https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design-guidelines
|
|
117
|
+
|
|
118
|
+
# GitLab URL
|
|
119
|
+
skills add https://gitlab.com/org/repo
|
|
120
|
+
|
|
121
|
+
# Any git URL
|
|
122
|
+
skills add git@github.com:vercel-labs/agent-skills.git
|
|
123
|
+
|
|
124
|
+
# Local path
|
|
125
|
+
skills add ./my-local-skills
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Options
|
|
129
|
+
|
|
130
|
+
| Option | Description |
|
|
131
|
+
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
132
|
+
| `-g, --global` | Install to user directory instead of project |
|
|
133
|
+
| `-a, --agent <agents...>` | <!-- agent-names:start -->Target specific agents (e.g., `claude-code`, `codex`). See [Available Agents](#available-agents)<!-- agent-names:end --> |
|
|
134
|
+
| `-s, --skill <skills...>` | Install specific skills by name (use `'*'` for all skills) |
|
|
135
|
+
| `-l, --list` | List available skills without installing |
|
|
136
|
+
| `--copy` | Copy files instead of symlinking to agent directories |
|
|
137
|
+
| `-y, --yes` | Skip all confirmation prompts |
|
|
138
|
+
| `--all` | Install all skills to all agents without prompts |
|
|
139
|
+
|
|
140
|
+
### Examples
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# List skills in a repository
|
|
144
|
+
skills add vercel-labs/agent-skills --list
|
|
145
|
+
|
|
146
|
+
# Install specific skills
|
|
147
|
+
skills add vercel-labs/agent-skills --skill frontend-design --skill skill-creator
|
|
148
|
+
|
|
149
|
+
# Install a skill with spaces in the name (must be quoted)
|
|
150
|
+
skills add owner/repo --skill "Convex Best Practices"
|
|
151
|
+
|
|
152
|
+
# Install to specific agents
|
|
153
|
+
skills add vercel-labs/agent-skills -a claude-code -a opencode
|
|
154
|
+
|
|
155
|
+
# Non-interactive installation (CI/CD friendly)
|
|
156
|
+
skills add vercel-labs/agent-skills --skill frontend-design -g -a claude-code -y
|
|
157
|
+
|
|
158
|
+
# Install all skills from a repo to all agents
|
|
159
|
+
skills add vercel-labs/agent-skills --all
|
|
160
|
+
|
|
161
|
+
# Install all skills to specific agents
|
|
162
|
+
skills add vercel-labs/agent-skills --skill '*' -a claude-code
|
|
163
|
+
|
|
164
|
+
# Install specific skills to all agents
|
|
165
|
+
skills add vercel-labs/agent-skills --agent '*' --skill frontend-design
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Installation Scope
|
|
169
|
+
|
|
170
|
+
Scope controls where skills are written to disk — and therefore who else gets them:
|
|
171
|
+
|
|
172
|
+
**1. Project Scope (Default)**
|
|
173
|
+
- **What it does**: Installs skills into your current project directory (e.g., `./.agents/skills/`).
|
|
174
|
+
- **Why use it**: The standard workflow. Commit these files to Git so that every engineer cloning the repository inherits the same agent configuration.
|
|
175
|
+
|
|
176
|
+
**2. Global Scope (`-g` flag)**
|
|
177
|
+
- **What it does**: Installs skills to your user-level config directory (e.g., `~/.claude-code/skills/`).
|
|
178
|
+
- **Why use it**: For personal workflow preferences that should apply across all your projects. These are not shared with your team.
|
|
179
|
+
|
|
180
|
+
| Scope | Flag | Location | Use Case |
|
|
181
|
+
| ----------- | --------- | ------------------- | --------------------------------------------- |
|
|
182
|
+
| **Project** | (default) | `./<agent>/skills/` | Standardized repository integrations (Git) |
|
|
183
|
+
| **Global** | `-g` | `~/<agent>/skills/` | Personal machine-locked developer preferences |
|
|
184
|
+
|
|
185
|
+
### Installation Methods
|
|
186
|
+
|
|
187
|
+
When installing interactively, you can choose:
|
|
188
|
+
|
|
189
|
+
| Method | Description |
|
|
190
|
+
| ------------------------- | ------------------------------------------------------------------------------------------- |
|
|
191
|
+
| **Symlink** (Recommended) | Creates symlinks from each agent to a canonical copy. Single source of truth, easy updates. |
|
|
192
|
+
| **Copy** | Creates independent copies for each agent. Use when symlinks aren't supported. |
|
|
193
|
+
|
|
194
|
+
## Managing Skill Groups
|
|
195
|
+
|
|
196
|
+
A skill group is a named collection of skills that can be installed together. The CLI tracks group definitions in `skills.json`, which should be committed to Git for version control.
|
|
197
|
+
|
|
198
|
+
| Command | Description |
|
|
199
|
+
| ----------------------------------------------------------------------- | -------------------------------------------------- |
|
|
200
|
+
| `skills group create <group-name>` | Initialize a new empty skill group |
|
|
201
|
+
| `skills group add <group-name> <source>` | Add a skill to a group |
|
|
202
|
+
| `skills group list` | View all active skill groups and their nodes |
|
|
203
|
+
| `skills group remove <group-name> <skill-name>` | Remove a skill from a group |
|
|
204
|
+
| `skills group delete <group-name>` | Delete an entire skill group |
|
|
205
|
+
|
|
206
|
+
### Group Examples
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
# 1. Create a new skill group
|
|
210
|
+
skills group create backend-foundation
|
|
211
|
+
|
|
212
|
+
# 2. Add skills to the group
|
|
213
|
+
skills group add backend-foundation https://github.com/rackerlabs/central-skills-registry/tree/main/python-standards
|
|
214
|
+
skills group add backend-foundation https://github.com/rackerlabs/central-skills-registry/tree/main/docker-security
|
|
215
|
+
|
|
216
|
+
# 3. List all configured groups
|
|
217
|
+
skills group list
|
|
218
|
+
|
|
219
|
+
# 4. Remove a skill from the group
|
|
220
|
+
skills group remove backend-foundation docker-security
|
|
221
|
+
|
|
222
|
+
# 5. Delete the entire group
|
|
223
|
+
skills group delete backend-foundation
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Other Commands
|
|
227
|
+
|
|
228
|
+
| Command | Description |
|
|
229
|
+
| ---------------------------- | --------------------------------------------------------- |
|
|
230
|
+
| `skills list` | List installed skills (alias: `ls`) |
|
|
231
|
+
| `skills find [query]` | Search for skills interactively or by keyword |
|
|
232
|
+
| `skills remove [skills]` | Remove installed skills from agents |
|
|
233
|
+
| `skills check` | Check for available skill updates |
|
|
234
|
+
| `skills update` | Update all installed skills to latest versions |
|
|
235
|
+
| `skills init [name]` | Create a new SKILL.md template |
|
|
236
|
+
| `skills verify structure`| Validate all skills in `skills.json` are resolvable (CI use) |
|
|
237
|
+
| `skills verify integrity`| Audit local installations against lockfiles for tampering |
|
|
238
|
+
| `skills generate-registry-hashes` | Creates a `registry-hashes.json` cryptographic root of trust |
|
|
239
|
+
|
|
240
|
+
### `skills list`
|
|
241
|
+
|
|
242
|
+
List all installed skills. Similar to `npm ls`.
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# List all installed skills (project and global)
|
|
246
|
+
skills list
|
|
247
|
+
|
|
248
|
+
# List only global skills
|
|
249
|
+
skills ls -g
|
|
250
|
+
|
|
251
|
+
# Filter by specific agents
|
|
252
|
+
skills ls -a claude-code -a cursor
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### `skills find`
|
|
256
|
+
|
|
257
|
+
Search for skills interactively or by keyword.
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Interactive search (fzf-style)
|
|
261
|
+
skills find
|
|
262
|
+
|
|
263
|
+
# Search by keyword
|
|
264
|
+
skills find typescript
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### `skills check` / `skills update`
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# Check if any installed skills have updates
|
|
271
|
+
skills check
|
|
272
|
+
|
|
273
|
+
# Update all skills to latest versions
|
|
274
|
+
skills update
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### `skills init`
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
# Create SKILL.md in current directory
|
|
281
|
+
skills init
|
|
282
|
+
|
|
283
|
+
# Create a new skill in a subdirectory
|
|
284
|
+
skills init my-skill
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### `skills remove`
|
|
288
|
+
|
|
289
|
+
Remove installed skills from agents.
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# Remove interactively (select from installed skills)
|
|
293
|
+
skills remove
|
|
294
|
+
|
|
295
|
+
# Remove specific skill by name
|
|
296
|
+
skills remove web-design-guidelines
|
|
297
|
+
|
|
298
|
+
# Remove multiple skills
|
|
299
|
+
skills remove frontend-design web-design-guidelines
|
|
300
|
+
|
|
301
|
+
# Remove from global scope
|
|
302
|
+
skills remove --global web-design-guidelines
|
|
303
|
+
|
|
304
|
+
# Remove from specific agents only
|
|
305
|
+
skills remove --agent claude-code cursor my-skill
|
|
306
|
+
|
|
307
|
+
# Remove all installed skills without confirmation
|
|
308
|
+
skills remove --all
|
|
309
|
+
|
|
310
|
+
# Remove all skills from a specific agent
|
|
311
|
+
skills remove --skill '*' -a cursor
|
|
312
|
+
|
|
313
|
+
# Remove a specific skill from all agents
|
|
314
|
+
skills remove my-skill --agent '*'
|
|
315
|
+
|
|
316
|
+
# Use 'rm' alias
|
|
317
|
+
skills rm my-skill
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
| Option | Description |
|
|
321
|
+
| -------------- | ------------------------------------------------ |
|
|
322
|
+
| `-g, --global` | Remove from global scope (~/) instead of project |
|
|
323
|
+
| `-a, --agent` | Remove from specific agents (use `'*'` for all) |
|
|
324
|
+
| `-s, --skill` | Specify skills to remove (use `'*'` for all) |
|
|
325
|
+
| `-y, --yes` | Skip confirmation prompts |
|
|
326
|
+
| `--all` | Shorthand for `--skill '*' --agent '*' -y` |
|
|
327
|
+
|
|
328
|
+
### `skills verify structure`
|
|
329
|
+
|
|
330
|
+
Validates that every skill referenced in `skills.json` (both individual skills and skill groups) can be fetched and contains a valid `SKILL.md`. Designed to run in a central registry's CI pipeline to prevent broken references from being merged.
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
# Verify all configured skills are structurally resolvable
|
|
334
|
+
skills verify structure
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### `skills verify integrity`
|
|
338
|
+
|
|
339
|
+
Validates that all locally installed skills in agent configuration folders mathematically match the deterministic hashes captured in your project's `skills-lock.json`.
|
|
340
|
+
|
|
341
|
+
It acts as a "secure by default" check: if a developer manually adds an unauthorized un-tracked skill to an agent folder, or someone tampers with the installed files locally to bypass security scopes, this command immediately flags the anomaly and fails the CI environment.
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
# Verify local environments aren't running unauthorized skills
|
|
345
|
+
skills verify integrity
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### `skills generate-registry-hashes`
|
|
349
|
+
|
|
350
|
+
Caches deterministic physical file and group hashes from a local directory into a `registry-hashes.json` artifact. Primarily reserved for Central Skill Registries to establish a cryptographically enforceable Root of Trust.
|
|
351
|
+
|
|
352
|
+
## Supported Agents
|
|
353
|
+
|
|
354
|
+
Skills can be installed to any of these agents:
|
|
355
|
+
|
|
356
|
+
<!-- supported-agents:start -->
|
|
357
|
+
| Agent | `--agent` | Project Path | Global Path |
|
|
358
|
+
|-------|-----------|--------------|-------------|
|
|
359
|
+
| Amp, Kimi Code CLI, Replit, Universal | `amp`, `kimi-cli`, `replit`, `universal` | `.agents/skills/` | `~/.config/agents/skills/` |
|
|
360
|
+
| Antigravity | `antigravity` | `.agents/skills/` | `~/.gemini/antigravity/skills/` |
|
|
361
|
+
| Augment | `augment` | `.augment/skills/` | `~/.augment/skills/` |
|
|
362
|
+
| Claude Code | `claude-code` | `.claude/skills/` | `~/.claude/skills/` |
|
|
363
|
+
| OpenClaw | `openclaw` | `skills/` | `~/.openclaw/skills/` |
|
|
364
|
+
| Cline, Warp | `cline`, `warp` | `.agents/skills/` | `~/.agents/skills/` |
|
|
365
|
+
| CodeBuddy | `codebuddy` | `.codebuddy/skills/` | `~/.codebuddy/skills/` |
|
|
366
|
+
| Codex | `codex` | `.agents/skills/` | `~/.codex/skills/` |
|
|
367
|
+
| Command Code | `command-code` | `.commandcode/skills/` | `~/.commandcode/skills/` |
|
|
368
|
+
| Continue | `continue` | `.continue/skills/` | `~/.continue/skills/` |
|
|
369
|
+
| Cortex Code | `cortex` | `.cortex/skills/` | `~/.snowflake/cortex/skills/` |
|
|
370
|
+
| Crush | `crush` | `.crush/skills/` | `~/.config/crush/skills/` |
|
|
371
|
+
| Cursor | `cursor` | `.agents/skills/` | `~/.cursor/skills/` |
|
|
372
|
+
| Deep Agents | `deepagents` | `.agents/skills/` | `~/.deepagents/agent/skills/` |
|
|
373
|
+
| Droid | `droid` | `.factory/skills/` | `~/.factory/skills/` |
|
|
374
|
+
| Firebender | `firebender` | `.agents/skills/` | `~/.firebender/skills/` |
|
|
375
|
+
| Gemini CLI | `gemini-cli` | `.agents/skills/` | `~/.gemini/skills/` |
|
|
376
|
+
| GitHub Copilot | `github-copilot` | `.agents/skills/` | `~/.copilot/skills/` |
|
|
377
|
+
| Goose | `goose` | `.goose/skills/` | `~/.config/goose/skills/` |
|
|
378
|
+
| Junie | `junie` | `.junie/skills/` | `~/.junie/skills/` |
|
|
379
|
+
| iFlow CLI | `iflow-cli` | `.iflow/skills/` | `~/.iflow/skills/` |
|
|
380
|
+
| Kilo Code | `kilo` | `.kilocode/skills/` | `~/.kilocode/skills/` |
|
|
381
|
+
| Kiro CLI | `kiro-cli` | `.kiro/skills/` | `~/.kiro/skills/` |
|
|
382
|
+
| Kode | `kode` | `.kode/skills/` | `~/.kode/skills/` |
|
|
383
|
+
| MCPJam | `mcpjam` | `.mcpjam/skills/` | `~/.mcpjam/skills/` |
|
|
384
|
+
| Mistral Vibe | `mistral-vibe` | `.vibe/skills/` | `~/.vibe/skills/` |
|
|
385
|
+
| Mux | `mux` | `.mux/skills/` | `~/.mux/skills/` |
|
|
386
|
+
| OpenCode | `opencode` | `.agents/skills/` | `~/.config/opencode/skills/` |
|
|
387
|
+
| OpenHands | `openhands` | `.openhands/skills/` | `~/.openhands/skills/` |
|
|
388
|
+
| Pi | `pi` | `.pi/skills/` | `~/.pi/agent/skills/` |
|
|
389
|
+
| Qoder | `qoder` | `.qoder/skills/` | `~/.qoder/skills/` |
|
|
390
|
+
| Qwen Code | `qwen-code` | `.qwen/skills/` | `~/.qwen/skills/` |
|
|
391
|
+
| Roo Code | `roo` | `.roo/skills/` | `~/.roo/skills/` |
|
|
392
|
+
| Trae | `trae` | `.trae/skills/` | `~/.trae/skills/` |
|
|
393
|
+
| Trae CN | `trae-cn` | `.trae/skills/` | `~/.trae-cn/skills/` |
|
|
394
|
+
| Windsurf | `windsurf` | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` |
|
|
395
|
+
| Zencoder | `zencoder` | `.zencoder/skills/` | `~/.zencoder/skills/` |
|
|
396
|
+
| Neovate | `neovate` | `.neovate/skills/` | `~/.neovate/skills/` |
|
|
397
|
+
| Pochi | `pochi` | `.pochi/skills/` | `~/.pochi/skills/` |
|
|
398
|
+
| AdaL | `adal` | `.adal/skills/` | `~/.adal/skills/` |
|
|
399
|
+
<!-- supported-agents:end -->
|
|
400
|
+
|
|
401
|
+
> [!NOTE]
|
|
402
|
+
> **Kiro CLI users:** After installing skills, manually add them to your custom agent's `resources` in
|
|
403
|
+
> `.kiro/agents/<agent>.json`:
|
|
404
|
+
>
|
|
405
|
+
> ```json
|
|
406
|
+
> {
|
|
407
|
+
> "resources": ["skill://.kiro/skills/**/SKILL.md"]
|
|
408
|
+
> }
|
|
409
|
+
> ```
|
|
410
|
+
|
|
411
|
+
The CLI automatically detects which coding agents you have installed. If none are detected, you'll be prompted to select
|
|
412
|
+
which agents to install to.
|
|
413
|
+
|
|
414
|
+
## Creating Skills
|
|
415
|
+
|
|
416
|
+
Skills are directories containing a `SKILL.md` file with YAML frontmatter:
|
|
417
|
+
|
|
418
|
+
```markdown
|
|
419
|
+
---
|
|
420
|
+
name: my-skill
|
|
421
|
+
description: What this skill does and when to use it
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
# My Skill
|
|
425
|
+
|
|
426
|
+
Instructions for the agent to follow when this skill is activated.
|
|
427
|
+
|
|
428
|
+
## When to Use
|
|
429
|
+
|
|
430
|
+
Describe the scenarios where this skill should be used.
|
|
431
|
+
|
|
432
|
+
## Steps
|
|
433
|
+
|
|
434
|
+
1. First, do this
|
|
435
|
+
2. Then, do that
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
### Required Fields
|
|
439
|
+
|
|
440
|
+
- `name`: Unique identifier (lowercase, hyphens allowed)
|
|
441
|
+
- `description`: Brief explanation of what the skill does
|
|
442
|
+
|
|
443
|
+
### Optional Fields
|
|
444
|
+
|
|
445
|
+
- `metadata.internal`: Set to `true` to hide the skill from normal discovery. Internal skills are only visible and
|
|
446
|
+
installable when `INSTALL_INTERNAL_SKILLS=1` is set. Useful for work-in-progress skills or skills meant only for
|
|
447
|
+
internal tooling.
|
|
448
|
+
|
|
449
|
+
```markdown
|
|
450
|
+
---
|
|
451
|
+
name: my-internal-skill
|
|
452
|
+
description: An internal skill not shown by default
|
|
453
|
+
metadata:
|
|
454
|
+
internal: true
|
|
455
|
+
---
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
### Skill Discovery
|
|
459
|
+
|
|
460
|
+
The CLI searches for skills in these locations within a repository:
|
|
461
|
+
|
|
462
|
+
<!-- skill-discovery:start -->
|
|
463
|
+
- Root directory (if it contains `SKILL.md`)
|
|
464
|
+
- `skills/`
|
|
465
|
+
- `skills/.curated/`
|
|
466
|
+
- `skills/.experimental/`
|
|
467
|
+
- `skills/.system/`
|
|
468
|
+
- `.agents/skills/`
|
|
469
|
+
- `.augment/skills/`
|
|
470
|
+
- `.claude/skills/`
|
|
471
|
+
- `./skills/`
|
|
472
|
+
- `.codebuddy/skills/`
|
|
473
|
+
- `.commandcode/skills/`
|
|
474
|
+
- `.continue/skills/`
|
|
475
|
+
- `.cortex/skills/`
|
|
476
|
+
- `.crush/skills/`
|
|
477
|
+
- `.factory/skills/`
|
|
478
|
+
- `.goose/skills/`
|
|
479
|
+
- `.junie/skills/`
|
|
480
|
+
- `.iflow/skills/`
|
|
481
|
+
- `.kilocode/skills/`
|
|
482
|
+
- `.kiro/skills/`
|
|
483
|
+
- `.kode/skills/`
|
|
484
|
+
- `.mcpjam/skills/`
|
|
485
|
+
- `.vibe/skills/`
|
|
486
|
+
- `.mux/skills/`
|
|
487
|
+
- `.openhands/skills/`
|
|
488
|
+
- `.pi/skills/`
|
|
489
|
+
- `.qoder/skills/`
|
|
490
|
+
- `.qwen/skills/`
|
|
491
|
+
- `.roo/skills/`
|
|
492
|
+
- `.trae/skills/`
|
|
493
|
+
- `.windsurf/skills/`
|
|
494
|
+
- `.zencoder/skills/`
|
|
495
|
+
- `.neovate/skills/`
|
|
496
|
+
- `.pochi/skills/`
|
|
497
|
+
- `.adal/skills/`
|
|
498
|
+
<!-- skill-discovery:end -->
|
|
499
|
+
|
|
500
|
+
### Plugin Manifest Discovery
|
|
501
|
+
|
|
502
|
+
If `.claude-plugin/marketplace.json` or `.claude-plugin/plugin.json` exists, skills declared in those files are also discovered:
|
|
503
|
+
|
|
504
|
+
```json
|
|
505
|
+
// .claude-plugin/marketplace.json
|
|
506
|
+
{
|
|
507
|
+
"metadata": { "pluginRoot": "./plugins" },
|
|
508
|
+
"plugins": [
|
|
509
|
+
{
|
|
510
|
+
"name": "my-plugin",
|
|
511
|
+
"source": "my-plugin",
|
|
512
|
+
"skills": ["./skills/review", "./skills/test"]
|
|
513
|
+
}
|
|
514
|
+
]
|
|
515
|
+
}
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
This enables compatibility with the [Claude Code plugin marketplace](https://code.claude.com/docs/en/plugin-marketplaces) ecosystem.
|
|
519
|
+
|
|
520
|
+
If no skills are found in standard locations, a recursive search is performed.
|
|
521
|
+
|
|
522
|
+
## Compatibility
|
|
523
|
+
|
|
524
|
+
Skills are generally compatible across agents since they follow a
|
|
525
|
+
shared [Agent Skills specification](https://agentskills.io). However, some features may be agent-specific:
|
|
526
|
+
|
|
527
|
+
| Feature | OpenCode | OpenHands | Claude Code | Cline | CodeBuddy | Codex | Command Code | Kiro CLI | Cursor | Antigravity | Roo Code | Github Copilot | Amp | OpenClaw | Neovate | Pi | Qoder | Zencoder |
|
|
528
|
+
| --------------- | -------- | --------- | ----------- | ----- | --------- | ----- | ------------ | -------- | ------ | ----------- | -------- | -------------- | --- | -------- | ------- | --- | ----- | -------- |
|
|
529
|
+
| Basic skills | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
|
|
530
|
+
| `allowed-tools` | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
|
|
531
|
+
| `context: fork` | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
|
|
532
|
+
| Hooks | No | No | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
|
|
533
|
+
|
|
534
|
+
## Troubleshooting
|
|
535
|
+
|
|
536
|
+
### "No skills found"
|
|
537
|
+
|
|
538
|
+
Ensure the repository contains valid `SKILL.md` files with both `name` and `description` in the frontmatter.
|
|
539
|
+
|
|
540
|
+
### Skill not loading in agent
|
|
541
|
+
|
|
542
|
+
- Verify the skill was installed to the correct path
|
|
543
|
+
- Check the agent's documentation for skill loading requirements
|
|
544
|
+
- Ensure the `SKILL.md` frontmatter is valid YAML
|
|
545
|
+
|
|
546
|
+
### Permission errors
|
|
547
|
+
|
|
548
|
+
Ensure you have write access to the target directory.
|
|
549
|
+
|
|
550
|
+
## Environment Variables
|
|
551
|
+
|
|
552
|
+
| Variable | Description |
|
|
553
|
+
| ------------------------- | -------------------------------------------------------------------------- |
|
|
554
|
+
| `INSTALL_INTERNAL_SKILLS` | Set to `1` or `true` to show and install skills marked as `internal: true` |
|
|
555
|
+
| `DISABLE_TELEMETRY` | Set to disable anonymous usage telemetry |
|
|
556
|
+
| `DO_NOT_TRACK` | Alternative way to disable telemetry |
|
|
557
|
+
|
|
558
|
+
```bash
|
|
559
|
+
# Install internal skills
|
|
560
|
+
INSTALL_INTERNAL_SKILLS=1 skills add vercel-labs/agent-skills --list
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
## Telemetry
|
|
564
|
+
|
|
565
|
+
This CLI collects anonymous usage data to help improve the tool. No personal information is collected.
|
|
566
|
+
|
|
567
|
+
Telemetry is automatically disabled in CI environments.
|
|
568
|
+
|
|
569
|
+
## Related Links
|
|
570
|
+
|
|
571
|
+
- [Agent Skills Specification](https://agentskills.io)
|
|
572
|
+
- [Skills Directory](https://skills.sh)
|
|
573
|
+
- [Amp Skills Documentation](https://ampcode.com/manual#agent-skills)
|
|
574
|
+
- [Antigravity Skills Documentation](https://antigravity.google/docs/skills)
|
|
575
|
+
- [Factory AI / Droid Skills Documentation](https://docs.factory.ai/cli/configuration/skills)
|
|
576
|
+
- [Claude Code Skills Documentation](https://code.claude.com/docs/en/skills)
|
|
577
|
+
- [OpenClaw Skills Documentation](https://docs.openclaw.ai/tools/skills)
|
|
578
|
+
- [Cline Skills Documentation](https://docs.cline.bot/features/skills)
|
|
579
|
+
- [CodeBuddy Skills Documentation](https://www.codebuddy.ai/docs/ide/Features/Skills)
|
|
580
|
+
- [Codex Skills Documentation](https://developers.openai.com/codex/skills)
|
|
581
|
+
- [Command Code Skills Documentation](https://commandcode.ai/docs/skills)
|
|
582
|
+
- [Crush Skills Documentation](https://github.com/charmbracelet/crush?tab=readme-ov-file#agent-skills)
|
|
583
|
+
- [Cursor Skills Documentation](https://cursor.com/docs/context/skills)
|
|
584
|
+
- [Firebender Skills Documentation](https://docs.firebender.com/multi-agent/skills)
|
|
585
|
+
- [Gemini CLI Skills Documentation](https://geminicli.com/docs/cli/skills/)
|
|
586
|
+
- [GitHub Copilot Agent Skills](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills)
|
|
587
|
+
- [iFlow CLI Skills Documentation](https://platform.iflow.cn/en/cli/examples/skill)
|
|
588
|
+
- [Kimi Code CLI Skills Documentation](https://moonshotai.github.io/kimi-cli/en/customization/skills.html)
|
|
589
|
+
- [Kiro CLI Skills Documentation](https://kiro.dev/docs/cli/custom-agents/configuration-reference/#skill-resources)
|
|
590
|
+
- [Kode Skills Documentation](https://github.com/shareAI-lab/kode/blob/main/docs/skills.md)
|
|
591
|
+
- [OpenCode Skills Documentation](https://opencode.ai/docs/skills)
|
|
592
|
+
- [Qwen Code Skills Documentation](https://qwenlm.github.io/qwen-code-docs/en/users/features/skills/)
|
|
593
|
+
- [OpenHands Skills Documentation](https://docs.openhands.ai/modules/usage/how-to/using-skills)
|
|
594
|
+
- [Pi Skills Documentation](https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/docs/skills.md)
|
|
595
|
+
- [Qoder Skills Documentation](https://docs.qoder.com/cli/Skills)
|
|
596
|
+
- [Replit Skills Documentation](https://docs.replit.com/replitai/skills)
|
|
597
|
+
- [Roo Code Skills Documentation](https://docs.roocode.com/features/skills)
|
|
598
|
+
- [Trae Skills Documentation](https://docs.trae.ai/ide/skills)
|
|
599
|
+
- [Vercel Agent Skills Repository](https://github.com/vercel-labs/agent-skills)
|
|
600
|
+
|
|
601
|
+
## License
|
|
602
|
+
|
|
603
|
+
MIT
|