Skip to content

qntx/skill

Skill

The open agent skills ecosystem — rewritten in Rust.

Crates.io docs.rs CI License: MIT/Apache-2.0

A drop-in, feature-equivalent Rust replacement for the Vercel skills CLI. Single static binary, zero runtime dependencies, full API compatibility.

Supports Cursor, Claude Code, Windsurf, Codex, and 35 more.


Install a Skill

skills add qntx/skills

Install the CLI

Shell (macOS / Linux):

curl -fsSL https://sh.qntx.fun/skill | sh

PowerShell (Windows):

irm https://sh.qntx.fun/skill/ps | iex

Cargo:

cargo install skills-cli

From Source:

git clone https://github.com/qntx/skill.git
cd skill
cargo install --path skills-cli

Overview

skill manages portable instruction sets ("skills") for AI coding agents. A skill is a directory containing a SKILL.md file with YAML frontmatter that describes behaviour an agent should adopt. This project provides:

Crate Description
skill Core library — discovery, parsing, installation, lock-file management, provider registry
skills-cli Binary (skills) — interactive CLI with the same UX as the TypeScript original

The Rust port achieves 100 % command parity with the original TypeScript CLI while adding the performance and reliability benefits of a native compiled binary.

Features

  • 39 supported agents — Cursor, Claude Code, Windsurf, Cline, Codex, Roo Code, GitHub Copilot, Kilo Code, and many more
  • All source types — GitHub shorthand (owner/repo), GitHub / GitLab URLs with branch + subpath, local paths, well-known HTTP endpoints, direct git URLs
  • Plugin manifests.claude-plugin/marketplace.json and plugin.json discovery for Claude Code ecosystem compatibility
  • Symlink-first install — canonical storage + per-agent symlinks (or junctions on Windows); copy mode available
  • Lock files — global (~/.agents/.skill-lock.json) and project-scoped (skills-lock.json) for reproducible setups
  • Extensible providersHostProvider trait for adding custom skill hosts beyond GitHub / GitLab / well-known
  • Telemetry-aware — opt-in anonymous telemetry (respects DO_NOT_TRACK / DISABLE_TELEMETRY)
  • Cross-platform — Linux, macOS, Windows (with native junction support)

Source Formats

# GitHub shorthand (owner/repo)
skills add qntx/skills

# Full GitHub URL
skills add https://github.com/qntx/skills

# Direct path to a skill in a repo
skills add https://github.com/qntx/skills/tree/main/skills/code-review

# GitLab URL
skills add https://gitlab.com/org/repo

# Prefix shorthand
skills add github:owner/repo
skills add gitlab:owner/repo

# Local path
skills add ./my-local-skills
skills add /absolute/path/to/skills

# Well-known HTTP endpoints
skills add https://example.com   # checks /.well-known/skills/index.json

skills add Options

Option Description
-g, --global Install to user directory instead of project
-a, --agent <agents...> Target specific agents (e.g., claude-code, cursor). Use '*' for all
-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
-y, --yes Skip all confirmation prompts
--all Install all skills to all agents without prompts (shorthand for --skill '*' --agent '*' -y)

Examples

# List skills in a repository
skills add qntx/skills --list

# Install specific skills
skills add qntx/skills --skill frontend-design --skill code-review

# Install a skill with spaces in the name (must be quoted)
skills add owner/repo --skill "Convex Best Practices"

# Install to specific agents
skills add qntx/skills -a claude-code -a cursor

# Non-interactive installation (CI/CD friendly)
skills add qntx/skills --skill frontend-design -g -a claude-code -y

# Install all skills from a repo to all agents
skills add qntx/skills --all

# Install all skills to specific agents
skills add qntx/skills --skill '*' -a claude-code

# Install specific skills to all agents
skills add qntx/skills --agent '*' --skill frontend-design

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

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.

Note: On Windows, junctions are used instead of symlinks for directory linking.

Other Commands

Command Aliases Description
skills add <source> a, install, i Add a skill package from any source
skills remove <name> rm, r Remove installed skills
skills list ls List installed skills
skills find <query> f, s, search Search the skills registry
skills check Check for available skill updates
skills update upgrade Update all skills to latest versions
skills init Scaffold a new SKILL.md
skills experimental-install Restore skills from skills-lock.json
skills experimental-sync Sync skills from node_modules

skills list

List all installed skills. Similar to npm ls.

# List all installed skills (project and global)
skills list

# List only global skills
skills ls -g

# Filter by specific agents
skills ls -a claude-code -a cursor

skills find

Search for skills interactively or by keyword.

# Interactive search (fzf-style)
skills find

# Search by keyword
skills find typescript

skills check / skills update

# Check if any installed skills have updates
skills check

# Update all skills to latest versions
skills update

skills init

# Create SKILL.md in current directory
skills init

# Create a new skill in a subdirectory
skills init my-skill

skills remove

Remove installed skills from agents.

# Remove interactively (select from installed skills)
skills remove

# Remove specific skill by name
skills remove web-design-guidelines

# Remove multiple skills
skills remove frontend-design web-design-guidelines

# Remove from global scope
skills remove --global web-design-guidelines

# Remove from specific agents only
skills remove --agent claude-code cursor my-skill

# Remove all installed skills without confirmation
skills remove --all

# Remove all skills from a specific agent
skills remove --skill '*' -a cursor

# Remove a specific skill from all agents
skills remove my-skill --agent '*'

# Use 'rm' alias
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

Library Usage

use skill::SkillManager;
use skill::types::{DiscoverOptions, InstallOptions, InstallScope, InstallMode, AgentId};

#[tokio::main]
async fn main() -> skill::Result<()> {
    let manager = SkillManager::builder().build();

    // Discover skills in a directory
    let skills = manager
        .discover_skills(std::path::Path::new("./my-repo"), &DiscoverOptions::default())
        .await?;

    // Install a skill for a specific agent
    let opts = InstallOptions {
        scope: InstallScope::Project,
        mode: InstallMode::Symlink,
        cwd: None,
    };
    for skill in &skills {
        manager.install_skill(skill, &AgentId::new("cursor"), &opts).await?;
    }

    // List installed skills
    let installed = manager.list_installed(&Default::default()).await?;
    println!("Installed: {}", installed.len());

    Ok(())
}

Supported Agents

Click to expand the full list of 39 supported agents
Agent Skills Dir Global Skills Dir
Amp .agents/skills $XDG_CONFIG_HOME/agents/skills
Antigravity .agent/skills ~/.gemini/antigravity/skills
Augment .augment/skills ~/.augment/skills
Claude Code .claude/skills ~/.claude/skills
OpenClaw .agents/skills ~/.openclaw/skills
Cline .agents/skills ~/.agents/skills
CodeBuddy .codebuddy/skills ~/.codebuddy/skills
Codex .agents/skills $CODEX_HOME/skills
Command Code .commandcode/skills ~/.commandcode/skills
Continue .continue/skills ~/.continue/skills
Cortex Code .cortex/skills ~/.snowflake/cortex/skills
Crush .crush/skills ~/.crush/skills
Cursor .cursor/rules/skills ~/.cursor/rules/skills
Droid .droid/skills ~/.droid/skills
Factory Code .factory/skills ~/.factory/skills
Gemini CLI .gemini/skills ~/.gemini/skills
GitHub Copilot .github/skills ~/.github/skills
Goose .goose/skills ~/.config/goose/skills
iFlow CLI .iflow/skills ~/.iflow/skills
Junie .junie/skills ~/.junie/skills
Kilo Code .kilocode/skills ~/.kilocode/skills
Kimi K2 .kimi/skills ~/.kimi/skills
Kiro .kiro/skills ~/.kiro/skills
Kode .kode/skills ~/.kode/skills
MCPJam .mcpjam/skills ~/.mcpjam/skills
Mistral Vibe .vibe/skills ~/.vibe/skills
Mux .mux/skills ~/.mux/skills
Neovate .neovate/skills ~/.neovate/skills
OpenCode .opencode/skills ~/.opencode/skills
OpenHands .openhands/skills ~/.openhands/skills
Pi .pi/skills ~/.pi/skills
Qoder .qoder/skills ~/.qoder/skills
Qwen Code .qwen/skills ~/.qwen/skills
Replit .agents/skills $XDG_CONFIG_HOME/agents/skills
Roo Code .roo/skills ~/.roo/skills
Trae .trae/skills ~/.trae/skills
Trae CN .trae/skills ~/.trae-cn/skills
Windsurf .windsurf/skills ~/.windsurf/skills
ZenCoder .zencoder/skills ~/.zencoder/skills

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 that

Required Fields

  • name — Unique identifier (lowercase, hyphens allowed)
  • description — Brief explanation of what the skill does

Optional Fields

  • metadata.internal — Set to true to hide the skill from normal discovery. Internal skills are only visible when INSTALL_INTERNAL_SKILLS=1 is set.
  • metadata.tags — Array of tags for categorization and search.
---
name: my-internal-skill
description: An internal skill not shown by default
metadata:
  internal: true
  tags: [internal, wip]
---

Skill Discovery

The CLI searches for skills in these locations within a repository:

  • Root directory (if it contains SKILL.md)
  • skills/, skills/.curated/, skills/.experimental/, skills/.system/
  • Agent-specific directories: .claude/skills/, .cursor/skills/, .windsurf/skills/, etc.

Plugin Manifest Discovery

If .claude-plugin/marketplace.json or .claude-plugin/plugin.json exists, skills declared in those files are also discovered:

{
  "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.

Design Principles

  • Feature parity — Every command, source format, agent, and behaviour from the Vercel TypeScript implementation is faithfully reproduced.
  • Zero runtime dependencies — Single static binary; no Node.js, npm, or npx required.
  • Library-first — The skill crate exposes a clean SkillManager API so agent frameworks can embed skill support directly.
  • Security by default — Path traversal protection on subpaths and skill names; plugin manifest paths validated against base directory.
  • Extensible — Custom agents via AgentRegistry::register(), custom providers via the HostProvider trait, feature-gated network and telemetry.

Feature Flags

Flag Default Description
network off Enables reqwest-based network operations (GitHub API, well-known fetching)
telemetry off Enables anonymous usage telemetry to https://add-skill.vercel.sh/t

The CLI binary enables both flags. Library consumers can opt in selectively.

Environment Variables

Variable Description
CODEX_HOME Override Codex config directory (default: ~/.codex)
CLAUDE_CONFIG_DIR Override Claude Code config directory (default: ~/.claude)
XDG_CONFIG_HOME Override XDG config base (default: ~/.config)
INSTALL_INTERNAL_SKILLS Set to 1 or true to include internal skills
GITHUB_TOKEN / GH_TOKEN GitHub API token for update checks (falls back to gh auth token)
SKILLS_API_URL Override the skills search API endpoint (default: https://skills.sh)
DISABLE_TELEMETRY / DO_NOT_TRACK Set to 1 or true to disable telemetry

Compatibility

This project is a drop-in replacement for the Vercel skills CLI (npx skills).

  • Same CLI interface, flags, and aliases
  • Same SKILL.md format and YAML frontmatter schema
  • Same lock-file format (skill-lock.json v3, skills-lock.json v1)
  • Same agent directory structures and detection logic
  • Same source parsing rules (GitHub, GitLab, local, well-known, git)
  • Same telemetry endpoint and event schema
  • Same installation semantics (canonical + symlink/junction)

Agent Compatibility

Skills are generally compatible across agents since they follow a shared Agent Skills specification. However, some features may be agent-specific:

Feature Claude Code Cursor Windsurf Codex Cline Roo Code OpenCode
Basic skills
allowed-tools
context: fork
Hooks

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.md frontmatter is valid YAML

Permission errors

Ensure you have write access to the target directory. On Windows, you may need to run as Administrator for junction creation.

Symlink issues on Windows

Windows requires Developer Mode or Administrator privileges for symlinks. The CLI automatically falls back to junctions for directories.

Security

  • Path traversal protection — All subpaths and skill names are validated to prevent directory escape attacks.
  • Plugin manifest sandboxing — Paths declared in .claude-plugin/ manifests must be contained within the base directory and start with ./.
  • No arbitrary code execution — Skills are passive markdown instruction files; they do not execute code during installation.
  • Dependency audit — Minimal dependency tree; only well-known crates from the Rust ecosystem.

Related Links

License

Licensed under either of:

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project shall be dual-licensed as above, without any additional terms or conditions.


A QNTX open-source project.

QNTX

Code is law. We write both.

About

Blazing-fast Vercel Skills CLI, reborn in Rust. 100% command parity, zero compromises.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors