salt-skills
v0.1.0
Published
The open agent skills ecosystem
Maintainers
Keywords
Readme
salt-skills
The CLI for the open agent skills ecosystem.
Supports OpenCode, Claude Code, Codex, Cursor, and 73 more.
Install a Skill
npx salt-skills add vercel-labs/agent-skillsUse a Skill Without Installing
Generate a prompt for one skill, or start a supported coding agent interactively:
npx salt-skills use vercel-labs/agent-skills@web-design-guidelines | claude
npx salt-skills use vercel-labs/agent-skills --skill web-design-guidelines --agent claude-codesalt-skills use resolves sources the same way as salt-skills 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.
Source Formats
# GitHub shorthand (owner/repo)
npx salt-skills add vercel-labs/agent-skills
# Full GitHub URL
npx salt-skills add https://github.com/vercel-labs/agent-skills
# Direct path to a skill in a repo
npx salt-skills add https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design-guidelines
# GitLab URL
npx salt-skills add https://gitlab.com/org/repo
# Any git URL
npx salt-skills add [email protected]:vercel-labs/agent-skills.git
# Local path
npx salt-skills add ./my-local-skillsPrivate Repositories
Use the same command for public and private repositories. The CLI uses the authentication already configured for the repository URL:
# GitHub shorthand or HTTPS (Git credential helper, GitHub CLI, then SSH fallback)
npx salt-skills add acme/private-skills
# SSH on GitHub, GitLab, or another Git host
npx salt-skills add [email protected]:acme/private-skills.git
npx salt-skills add ssh://[email protected]/acme/private-skills.git
# HTTPS on any Git host (uses your configured Git credential helper)
npx salt-skills add https://git.example.com/acme/private-skills.gitFor GitHub HTTPS and shorthand sources, skills first uses normal Git credentials. If that fails and GitHub CLI is authenticated, it tries gh repo clone, followed by SSH. It does not execute gh auth token or copy the stored GitHub CLI credential into the Node.js process.
For GitHub tree lookups, skills first tries the API anonymously, then an explicitly supplied environment token, then gh api. GitHub CLI applies its own stored authentication and returns only the API response; the credential is never printed to or read by skills. If API access still fails, update checks fall back to an authenticated Git clone.
GITHUB_TOKEN or GH_TOKEN can be set explicitly for GitHub API access, including private repository downloads and update checks. They are optional for installs when Git, GitHub CLI, or SSH authentication is already configured.
Options
| Option | Description |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| -g, --global | Install to user directory instead of project |
| -a, --agent <agents...> | Target specific agents (e.g., claude-code, codex). See Supported Agents |
| -s, --skill <skills...> | Install specific skills by name (use '*' for all skills) |
| -l, --list | List available skills without installing |
| --copy | Copy files instead of symlinking to agent directories |
| --link | Link the project Skill entry to a persistent/local source (explicit opt-in; mutually exclusive with --copy) |
| -y, --yes | Skip all confirmation prompts |
| --all | Install all skills to all agents without prompts |
Examples
# List skills in a repository
npx salt-skills add vercel-labs/agent-skills --list
# Install specific skills
npx salt-skills add vercel-labs/agent-skills --skill frontend-design --skill skill-creator
# Install a skill with spaces in the name (must be quoted)
npx salt-skills add owner/repo --skill "Convex Best Practices"
# Install to specific agents
npx salt-skills add vercel-labs/agent-skills -a claude-code -a opencode
# Non-interactive installation (CI/CD friendly)
npx salt-skills add vercel-labs/agent-skills --skill frontend-design -g -a claude-code -y
# Install all skills from a repo to all agents
npx salt-skills add vercel-labs/agent-skills --all
# Install all skills to specific agents
npx salt-skills add vercel-labs/agent-skills --skill '*' -a claude-code
# Install specific skills to all agents
npx salt-skills add vercel-labs/agent-skills --agent '*' --skill frontend-design
# Install from a direct SKILL.md or archive download URL
npx salt-skills add https://example.com/download/my-skillDirect download URLs are tried after well-known discovery. They may point to a single valid SKILL.md file or a .zip, .tar, .tar.gz, or .tgz archive; the URL does not need to include a file extension. Downloads are limited to 10 MiB, extracted content to 25 MiB, and archives to 1000 files by default. Override with SKILLS_DOWNLOAD_MAX_BYTES, SKILLS_EXTRACT_MAX_BYTES, and SKILLS_EXTRACT_MAX_FILES when you trust the source.
Installation Scope
| Scope | Flag | Location | Use Case |
| ----------- | --------- | ------------------- | --------------------------------------------- |
| Project | (default) | ./<agent>/skills/ | Committed with your project, shared with team |
| Global | -g | ~/<agent>/skills/ | Available across all projects |
Installation Methods
When installing interactively, you can choose:
| Method | Description | | ------------------------- | ------------------------------------------------------------------------------------------- | | Symlink (Recommended) | Creates symlinks from each agent to a canonical copy. Single source of truth, easy updates. | | Copy | Creates independent copies for each agent. Use when symlinks aren't supported. |
The --link option is a separate project-source mode. The default remains the existing copy flow: Git sources are cloned into a temporary directory, copied into the project, and the temporary clone is removed. With --link, a Git source is cloned once into the user-level managed source directory and the project's .agents/skills/<skill> entry links to that source; a local directory source is linked directly. The same normalized Git URL and ref reuse one managed clone across projects. Link creation failures are reported and never silently downgraded to copy.
Local management Web console
Run the temporary, loopback-only console from the CLI:
npx salt-skills web
npx salt-skills web --no-openThe server binds to 127.0.0.1 on a random available port, prints a one-time URL/token, runs in the foreground, and stops with Ctrl+C. It does not expose a configurable port or LAN endpoint. The console discovers projects only through configured roots containing skills-lock.json; unregistered .agents/skills directories are ignored. It shows copy/link state, missing link targets, source updates, and project/Skill relationships without deleting an entire project directory.
Management data is kept separately from project locks:
- Windows config/registry:
%APPDATA%\\salt-skills\\config.jsonand%APPDATA%\\salt-skills\\registry.json. - Windows default managed Git sources:
%LOCALAPPDATA%\\salt-skills\\sources\\. - macOS/Linux use the corresponding XDG config/data directories.
config.json may contain scanRoots and an optional sourcesRoot. Changing sourcesRoot does not silently migrate existing links; migrate explicitly or rebind them. Project skills-lock.json remains the source of truth for installed entries, while the registry is an automatically maintained cross-project view.
Local package distribution
The package can be published to npm or distributed as a local npm tarball:
pnpm type-check
pnpm test -- --run --maxWorkers=1
pnpm build
npm pack
npm install -g .\\salt-skills-<version>.tgzBefore sharing a tarball, install it in a clean temporary npm prefix and smoke-test salt-skills --help, salt-skills web --no-open, and a fixture salt-skills add ... --link flow.
Other Commands
| Command | Description |
| ---------------------------- | --------------------------------------------- |
| npx salt-skills use <source> | Use one skill without installing |
| npx salt-skills list | List installed skills (alias: ls) |
| npx salt-skills find [query] | Search for skills interactively or by keyword |
| npx salt-skills remove [skills] | Remove installed skills from agents |
| npx salt-skills update [skills] | Update installed skills to latest versions |
| npx salt-skills init [name] | Create a new SKILL.md template |
salt-skills list
List all installed skills. Similar to npm ls.
# List all installed skills (project and global)
npx salt-skills list
# List only global skills
npx salt-skills ls -g
# Filter by specific agents
npx salt-skills ls -a claude-code -a cursorsalt-skills find
Search for skills interactively or by keyword.
# Interactive search (fzf-style)
npx salt-skills find
# Search by keyword
npx salt-skills find typescript
# Search across every repository owned by an organization or user
npx salt-skills find react --owner vercelsalt-skills update
# Update all skills (interactive scope prompt)
npx salt-skills update
# Update a single skill by name
npx salt-skills update my-skill
# Update multiple specific skills
npx salt-skills update frontend-design web-design-guidelines
# Update only global or project skills
npx salt-skills update -g
npx salt-skills update -p
# Non-interactive (auto-detects scope: project if in a project, else global)
npx salt-skills update -y| Option | Description |
| --------------- | ------------------------------------------------------------------------- |
| -g, --global | Only update global skills |
| -p, --project | Only update project skills |
| -y, --yes | Skip scope prompt (auto-detect: project if in a project dir, else global) |
| [skills...] | Update specific skills by name instead of all |
salt-skills init
# Create SKILL.md in current directory
npx salt-skills init
# Create a new skill in a subdirectory
npx salt-skills init my-skillsalt-skills remove
Remove installed skills from agents.
# Remove interactively (select from installed skills)
npx salt-skills remove
# Remove specific skill by name
npx salt-skills remove web-design-guidelines
# Remove multiple skills
npx salt-skills remove frontend-design web-design-guidelines
# Remove from global scope
npx salt-skills remove --global web-design-guidelines
# Remove from specific agents only
npx salt-skills remove --agent claude-code cursor my-skill
# Remove all installed skills without confirmation
npx salt-skills remove --all
# Remove all skills from a specific agent
npx salt-skills remove --skill '*' -a cursor
# Remove a specific skill from all agents
npx salt-skills remove my-skill --agent '*'
# Use 'rm' alias
npx salt-skills rm my-skill| Option | Description |
| -------------- | ------------------------------------------------ |
| -g, --global | Remove from global scope (~/) instead of project |
| -a, --agent | Remove from specific agents (use '*' for all) |
| -s, --skill | Specify skills to remove (use '*' for all) |
| -y, --yes | Skip confirmation prompts |
| --all | Shorthand for --skill '*' --agent '*' -y |
What are Agent Skills?
Agent skills are reusable instruction sets that extend your coding agent's capabilities. They're defined in SKILL.md
files with YAML frontmatter containing a name and description.
Skills let agents perform specialized tasks like:
- Generating release notes from git history
- Creating PRs following your team's conventions
- Integrating with external tools (Linear, Notion, etc.)
Discover skills at skills.sh
Supported Agents
Skills can be installed to any of these agents:
| Agent | --agent | Project Path | Global Path |
|-------|-----------|--------------|-------------|
| AiderDesk | aider-desk | .aider-desk/skills/ | ~/.aider-desk/skills/ |
| Amp, Replit, Universal | amp, replit, universal | .agents/skills/ | ~/.config/agents/skills/ |
| Antigravity | antigravity | .agents/skills/ | ~/.gemini/antigravity/skills/ |
| Antigravity CLI | antigravity-cli | .agents/skills/ | ~/.gemini/antigravity-cli/skills/ |
| AstrBot | astrbot | data/skills/ | ~/.astrbot/data/skills/ |
| Autohand Code CLI | autohand-code | .autohand/skills/ | ~/.autohand/skills/ |
| Augment | augment | .augment/skills/ | ~/.augment/skills/ |
| IBM Bob | bob | .bob/skills/ | ~/.bob/skills/ |
| Claude Code | claude-code | .claude/skills/ | ~/.claude/skills/ |
| OpenClaw | openclaw | skills/ | ~/.openclaw/skills/ |
| Cline, Dexto, Kimi Code CLI, Loaf, Warp, Zed | cline, dexto, kimi-code-cli, loaf, warp, zed | .agents/skills/ | ~/.agents/skills/ |
| CodeArts Agent | codearts-agent | .codeartsdoer/skills/ | ~/.codeartsdoer/skills/ |
| CodeBuddy | codebuddy | .codebuddy/skills/ | ~/.codebuddy/skills/ |
| Codemaker | codemaker | .codemaker/skills/ | ~/.codemaker/skills/ |
| Code Studio | codestudio | .codestudio/skills/ | ~/.codestudio/skills/ |
| Codex | codex | .agents/skills/ | ~/.codex/skills/ |
| Command Code | command-code | .commandcode/skills/ | ~/.commandcode/skills/ |
| Continue | continue | .continue/skills/ | ~/.continue/skills/ |
| Cortex Code | cortex | .cortex/skills/ | ~/.snowflake/cortex/skills/ |
| Crush | crush | .crush/skills/ | ~/.config/crush/skills/ |
| Cursor | cursor | .agents/skills/ | ~/.cursor/skills/ |
| Deep Agents | deepagents | .agents/skills/ | ~/.deepagents/agent/skills/ |
| Devin for Terminal | devin | .devin/skills/ | ~/.config/devin/skills/ |
| Droid | droid | .factory/skills/ | ~/.factory/skills/ |
| Eve | eve | agent/skills/ | N/A (project-only) |
| Firebender | firebender | .agents/skills/ | ~/.firebender/skills/ |
| ForgeCode | forgecode | .forge/skills/ | ~/.forge/skills/ |
| Gemini CLI | gemini-cli | .agents/skills/ | ~/.gemini/skills/ |
| GitHub Copilot | github-copilot | .agents/skills/ | ~/.copilot/skills/ |
| Goose | goose | .goose/skills/ | ~/.config/goose/skills/ |
| Grok Build | grok | .grok/skills/ | ~/.grok/skills/ |
| Hermes Agent | hermes-agent | .hermes/skills/ | ~/.hermes/skills/ |
| inference.sh | inference-sh | .inferencesh/skills/ | ~/.inferencesh/skills/ |
| Jazz | jazz | .jazz/skills/ | ~/.jazz/skills/ |
| Junie | junie | .junie/skills/ | ~/.junie/skills/ |
| iFlow CLI | iflow-cli | .iflow/skills/ | ~/.iflow/skills/ |
| Kilo Code | kilo | .kilocode/skills/ | ~/.kilocode/skills/ |
| Kimchi | kimchi | .kimchi/skills/ | ~/.config/kimchi/harness/skills/ |
| Kiro CLI | kiro-cli | .kiro/skills/ | ~/.kiro/skills/ |
| Kode | kode | .kode/skills/ | ~/.kode/skills/ |
| Lingma | lingma | .lingma/skills/ | ~/.lingma/skills/ |
| MCPJam | mcpjam | .mcpjam/skills/ | ~/.mcpjam/skills/ |
| MiniMax Code | minimax-code | .minimax/skills/ | ~/.minimax/skills/ |
| Mistral Vibe | mistral-vibe | .vibe/skills/ | ~/.vibe/skills/ |
| Moxby | moxby | .moxby/skills/ | ~/.moxby/skills/ |
| Mux | mux | .mux/skills/ | ~/.mux/skills/ |
| OpenCode | opencode | .agents/skills/ | ~/.config/opencode/skills/ |
| OpenHands | openhands | .openhands/skills/ | ~/.openhands/skills/ |
| Ona | ona | .ona/skills/ | ~/.ona/skills/ |
| Pi | pi | .pi/skills/ | ~/.pi/agent/skills/ |
| Posit Assistant | posit-assistant | .posit/assistant/skills/ | ~/.posit/assistant/skills/ |
| Qoder | qoder | .qoder/skills/ | ~/.qoder/skills/ |
| Qoder CN | qoder-cn | .qoder/skills/ | ~/.qoder-cn/skills/ |
| Qwen Code | qwen-code | .qwen/skills/ | ~/.qwen/skills/ |
| Reasonix | reasonix | .reasonix/skills/ | ~/.reasonix/skills/ |
| Rovo Dev | rovodev | .rovodev/skills/ | ~/.rovodev/skills/ |
| Roo Code | roo | .roo/skills/ | ~/.roo/skills/ |
| Tabnine CLI | tabnine-cli | .tabnine/agent/skills/ | ~/.tabnine/agent/skills/ |
| Terramind | terramind | .terramind/skills/ | ~/.terramind/skills/ |
| Tinycloud | tinycloud | .tinycloud/skills/ | ~/.tinycloud/skills/ |
| Trae | trae | .trae/skills/ | ~/.trae/skills/ |
| Trae CN | trae-cn | .trae/skills/ | ~/.trae-cn/skills/ |
| Windsurf | windsurf | .windsurf/skills/ | ~/.codeium/windsurf/skills/ |
| ZCode | zcode | .zcode/skills/ | ~/.zcode/skills/ |
| Zencoder, Zenflow | zencoder, zenflow | .zencoder/skills/ | ~/.zencoder/skills/ |
| Neovate | neovate | .neovate/skills/ | ~/.neovate/skills/ |
| Pochi | pochi | .pochi/skills/ | ~/.pochi/skills/ |
| PromptScript | promptscript | .agents/skills/ | N/A (project-only) |
| AdaL | adal | .adal/skills/ | ~/.adal/skills/ |
[!NOTE] Kiro CLI users: The default agent automatically loads skills from
.kiro/skills/and~/.kiro/skills/— no configuration needed. If you use a custom agent, add skills to itsresourcesin.kiro/agents/<agent>.json:{ "resources": ["skill://.kiro/skills/**/SKILL.md"] }
The CLI automatically detects which coding agents you have installed. If none are detected, you'll be prompted to select which agents to install to.
Creating Skills
Skills are directories containing a SKILL.md file with YAML frontmatter:
---
name: my-skill
description: What this skill does and when to use it
---
# My Skill
Instructions for the agent to follow when this skill is activated.
## When to Use
Describe the scenarios where this skill should be used.
## Steps
1. First, do this
2. Then, do thatRequired Fields
name: Unique identifier (lowercase, hyphens allowed)description: Brief explanation of what the skill does
Optional Fields
metadata.internal: Set totrueto hide the skill from normal discovery. Internal skills are only visible and installable whenINSTALL_INTERNAL_SKILLS=1is set. Useful for work-in-progress skills or skills meant only for internal tooling.
---
name: my-internal-skill
description: An internal skill not shown by default
metadata:
internal: true
---Skill Discovery
The CLI searches for skills in these locations within a repository. Each
skill container directory is walked up to three levels deep, covering flat
layouts (skills/<name>/SKILL.md) and catalog layouts with one or two category
levels (skills/<category>/<name>/SKILL.md or
skills/<category>/<category>/<name>/SKILL.md). A SKILL.md discovered at a
shallower level shadows anything nested below it. Use --full-depth to also
discover SKILL.md files outside these container directories (e.g. under
examples/ or tests/).
- Root directory (if it contains
SKILL.md) skills/skills/.curated/skills/.experimental/skills/.system/.aider-desk/skills/.agents/skills/data/skills/.autohand/skills/.augment/skills/.bob/skills/.claude/skills/.codeartsdoer/skills/.codebuddy/skills/.codemaker/skills/.codestudio/skills/.commandcode/skills/.continue/skills/.cortex/skills/.crush/skills/.devin/skills/.factory/skills/agent/skills/.forge/skills/.goose/skills/.grok/skills/.hermes/skills/.inferencesh/skills/.jazz/skills/.junie/skills/.iflow/skills/.kilocode/skills/.kimchi/skills/.kiro/skills/.kode/skills/.lingma/skills/.mcpjam/skills/.minimax/skills/.vibe/skills/.moxby/skills/.mux/skills/.openhands/skills/.ona/skills/.pi/skills/.posit/assistant/skills/.qoder/skills/.qwen/skills/.reasonix/skills/.rovodev/skills/.roo/skills/.tabnine/agent/skills/.terramind/skills/.tinycloud/skills/.trae/skills/.windsurf/skills/.zcode/skills/.zencoder/skills/.neovate/skills/.pochi/skills/.adal/skills/
Plugin Manifest Discovery
If .claude-plugin/marketplace.json or .claude-plugin/plugin.json exists, skills declared in those files are also discovered:
// .claude-plugin/marketplace.json
{
"metadata": { "pluginRoot": "./plugins" },
"plugins": [
{
"name": "my-plugin",
"source": "my-plugin",
"skills": ["./skills/review", "./skills/test"]
}
]
}This enables compatibility with the Claude Code plugin marketplace ecosystem. Skill paths declared in a manifest are searched at their declared depth and are not subject to the bounded depth-3 catalog walk described above.
If no skills are found in standard locations, a recursive search is performed.
Compatibility
Skills are generally compatible across agents since they follow a shared Agent Skills specification. However, some features may be agent-specific:
| Feature | OpenCode | OpenHands | Claude Code | Cline | CodeBuddy | Codex | Command Code | Kiro CLI | Cursor | Antigravity | Roo Code | Github Copilot | Amp | OpenClaw | Neovate | Pi | Qoder | Zencoder |
| --------------- | -------- | --------- | ----------- | ----- | --------- | ----- | ------------ | -------- | ------ | ----------- | -------- | -------------- | --- | -------- | ------- | --- | ----- | -------- |
| Basic skills | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| allowed-tools | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
| context: fork | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
| Hooks | No | No | Yes | Yes | No | No | No | Yes | No | No | No | No | No | No | No | No | No | No |
Troubleshooting
"No skills found"
Ensure the repository contains valid SKILL.md files with both name and description in the frontmatter.
Skill not loading in agent
- Verify the skill was installed to the correct path
- Check the agent's documentation for skill loading requirements
- Ensure the
SKILL.mdfrontmatter is valid YAML
Permission errors
Ensure you have write access to the target directory.
Environment Variables
| Variable | Description |
| ------------------------- | -------------------------------------------------------------------------- |
| INSTALL_INTERNAL_SKILLS | Set to 1 or true to show and install skills marked as internal: true |
| DISABLE_TELEMETRY | Set to disable anonymous usage telemetry |
| DO_NOT_TRACK | Alternative way to disable telemetry |
| GITHUB_TOKEN | Optional explicit token for authenticated GitHub API requests |
| GH_TOKEN | Fallback explicit token for authenticated GitHub API requests |
# Install internal skills
INSTALL_INTERNAL_SKILLS=1 npx salt-skills add vercel-labs/agent-skills --listTelemetry
This CLI collects anonymous usage data to help improve the tool. No personal information is collected.
GitHub repository and skill identifiers are sent only for repositories that GitHub positively confirms are public. Other remote source types may include source and skill identifiers in install telemetry because their visibility cannot be checked through GitHub. Security-audit requests remain limited to confirmed-public GitHub repositories. Set DISABLE_TELEMETRY=1 or DO_NOT_TRACK=1 to disable both entirely.
Related Links
- Agent Skills Specification
- Skills Directory
- Amp Skills Documentation
- Antigravity Skills Documentation
- Factory AI / Droid Skills Documentation
- Claude Code Skills Documentation
- OpenClaw Skills Documentation
- Cline Skills Documentation
- CodeBuddy Skills Documentation
- Codex Skills Documentation
- Command Code Skills Documentation
- Crush Skills Documentation
- Cursor Skills Documentation
- Firebender Skills Documentation
- Gemini CLI Skills Documentation
- GitHub Copilot Agent Skills
- iFlow CLI Skills Documentation
- Kimi Code CLI Skills Documentation
- Kiro CLI Skills Documentation
- Kode Skills Documentation
- OpenCode Skills Documentation
- Qwen Code Skills Documentation
- OpenHands Skills Documentation
- Pi Skills Documentation
- Posit Assistant Skills Documentation
- Qoder Skills Documentation
- Replit Skills Documentation
- Roo Code Skills Documentation
- Trae Skills Documentation
- Vercel Agent Skills Repository
License
This project is licensed under the MIT License.
