Command Palette

Search for a command to run...

Back to Projects
Open SourceDeveloper ToolsCLIAI/ML2025-10 — PresentActive Development

Agent Skills CLI

One CLI to install, manage, and sync AI agent skills across 45 agents from a marketplace of 175,000+ skills

TypeScriptNode.js

Overview

Agent Skills CLI is a TypeScript tool that installs, manages, and syncs skills to 45 AI agents from a single command. One CLI. One marketplace. No manual file copying.

You run skills install @anthropic/xlsx and it writes the skill to Cursor, Claude Code, Copilot, Windsurf, Gemini CLI, and any other agent you target. The marketplace has 175,000+ skills. You search, select, and install in seconds.

The Problem

AI agents like Cursor, Claude Code, and GitHub Copilot all support custom instructions. Each one reads from a different directory with a different file format. If you want to share a skill across agents, you copy files manually, keep paths in sync yourself, and repeat the process every time you update.

There was no standard way to:

  • Browse skills across the ecosystem
  • Install to multiple agents at once
  • Keep skills up to date from their source
  • Test skill quality before installing
  • Use private or enterprise skill sources

Every team was solving this the same hard way.

The Solution

Agent Skills CLI treats skills like packages. You install them the same way you install npm dependencies. The CLI resolves the target agent directories, writes the files, and tracks everything in a lockfile.

npm install -g agent-skills-cli
skills install @facebook/verify

That single command installs the skill to every detected agent in your project. No config required to get started.

Key Features

Multi-Agent Sync

One install writes to all agents at once. Target specific agents with -a, or broadcast to all 45 with --all:

# Install to Claude Code and Cursor only
skills install @lobehub/typescript -a claude,cursor
 
# Install to all 45 agents
skills install @facebook/verify --all
 
# Install globally to home directory
skills install pdf -g -a claude

Supported agents include Cursor, Claude Code, GitHub Copilot, Windsurf, Cline, Gemini CLI, Zed, Antigravity, OpenCode, and 35 more.

Real-time fuzzy search with keyboard navigation. Browse 175,000+ skills without leaving the terminal:

skills search python          # Multi-select results
skills search -i              # FZF-style interactive mode
skills search react -a cursor claude  # Install results to specific agents

Private Git and npm Sources

The CLI authenticates against private Git hosts and npm registries. Auth resolution works without extra config in most cases:

# SSH (auto-detects keys)
skills install git@gitlab.com:team/internal-skills.git
 
# HTTPS with token
skills install https://git.company.com/team/repo --token=xxx
 
# Private npm registry
skills install npm:@company/skills --registry https://npm.company.com

Auth resolution order: --token flag, env vars (GH_TOKEN, GITLAB_TOKEN, BITBUCKET_TOKEN, GIT_TOKEN), SSH keys, git credential helper, .netrc.

Glob Matching and Branch Targeting

Added in v1.1.7. Install skill groups with a single pattern:

skills install --skill 'core-*'         # All skills matching the pattern
skills install owner/repo#dev           # Pin to a specific branch
skills install --all --prune            # Remove stale skills not in lockfile

Conflict Detection

skills doctor scans your installed skills for contradictions and overlaps. The --deep flag runs a full cross-skill analysis:

skills doctor           # Basic health check
skills doctor --deep    # Full conflict + overlap analysis

Context Budget

Smart token-aware skill selection. Load only the skills that fit within your agent's context window:

skills budget -b 8000   # Select skills within 8,000 token budget

Useful for agents with strict context limits or projects with large skill collections.

Skill Quality Scoring

Four dimensions, 0 to 100. Grade F to A. Know the quality of a skill before you install it:

skills score ./my-skill              # Score with grade
skills score ./my-skill --verbose    # Show per-dimension breakdown
skills score ./my-skill --json       # Machine-readable output

Dimensions: Structure (30%), Clarity (30%), Specificity (30%), Advanced (10%).

Sandbox Preview

Check quality and conflicts before touching your project:

skills sandbox @owner/repo   # Dry-run quality + conflict check

Frozen Installs

Deterministic installs from a lockfile. Equivalent to npm ci for skills:

skills frozen   # Installs exactly what's in skills.lock

Every install writes to ~/.skills/skills.lock. Reproducible across machines and CI.

Skill Compose

Merge, chain, or conditionally combine skills into one:

skills compose skill-a skill-b -o combined-skill

Useful for building team-specific skill bundles from public primitives.

Watch Mode

Auto-sync on file save. Useful during skill development:

skills watch           # Watch current directory
skills watch ./skills  # Watch a specific path

Skill Testing

10 built-in quality assertions. Add custom tests for your own skills:

skills test --all         # Run all assertions
skills test my-skill      # Test a specific skill

Submit to Marketplace

Point the CLI at any public GitHub repo and it auto-indexes all skills inside:

skills submit-repo Jeffallan/claude-skills
skills submit-repo vercel-labs/agent-skills

Skills appear on the marketplace at agentskills.in/marketplace after indexing.

Architecture

The CLI is a single TypeScript package. It ships as an ESM module with two entry points: skills and agent-skills.

src/
  cli/          Command definitions (Commander.js)
  commands/     One file per command: install, search, doctor, budget...
  resolvers/    Agent directory resolution (45 agents)
  sources/      Install sources: marketplace, Git, npm, local
  scoring/      Quality scoring engine
  lockfile/     skills.lock read/write
  config/       .skillsrc loader

Each command resolves the agent directories, fetches the skill, validates it with gray-matter, and writes it to the right paths. The lockfile tracks every install with source, version, and target agents.

.skillsrc Config

Enterprise teams configure custom sources and defaults:

{
  "sources": [
    {
      "name": "company-gitlab",
      "type": "git",
      "url": "https://gitlab.company.com",
      "auth_env": "COMPANY_GIT_TOKEN"
    },
    {
      "name": "company-npm",
      "type": "npm",
      "registry": "https://npm.company.com",
      "scope": "@company"
    }
  ],
  "defaults": {
    "agent": "cursor",
    "global": false
  }
}

Config loads from project .skillsrc first, then ~/.skillsrc.

Supported Platforms

AgentProject DirGlobal Dir
Cursor.cursor/skills/~/.cursor/skills/
Claude Code.claude/skills/~/.claude/skills/
GitHub Copilot.github/skills/~/.github/skills/
Windsurf.windsurf/skills/~/.codeium/windsurf/skills/
Gemini CLI.gemini/skills/~/.gemini/skills/
Antigravity.agent/skills/~/.gemini/antigravity/skills/
Zed.zed/skills/~/.config/zed/skills/

32 more agents: Amp, Kilo, Roo, Goose, CodeBuddy, Continue, Crush, Clawdbot, Droid, Kiro, and others.

What I Built and Learned

Resolving 45 Agent Directories Without Config

Each agent stores skills in a different path. Some use the project root. Some use the home directory. Some use both. I mapped every agent's directory structure and built a resolver that detects which agents are active in the current project before installing.

The resolver checks for agent-specific marker files (.cursor/, .claude/, .github/) so it only writes to agents you're actually using.

Making Auth Work Across Git Hosts

Private Git support required a layered auth resolver. SSH, HTTPS with tokens, environment variables, git credential helpers, and .netrc all needed to work without user configuration. I built the resolution chain so it tries each method in order and falls back cleanly.

Lockfile Design

I modeled the lockfile after package-lock.json. Every install writes the source URL, version hash, install date, and target agents. skills frozen reads the lockfile and reproduces the exact install. This makes skill management reproducible in team environments and CI pipelines.

Quality Scoring Without Ground Truth

There's no objective answer to "is this a good skill?" I broke it into four measurable dimensions: structure (does it have required frontmatter), clarity (reading level and sentence density), specificity (concrete instructions vs. vague guidance), and advanced (examples, edge cases, conditional logic). Each skill gets a score from 0 to 100 and a letter grade.

FZF Search in Pure Node.js

The interactive search mode needed to feel like a native terminal UI. I built a real-time fuzzy matcher with keyboard navigation using raw TTY mode. No native binaries. No curses. Just stdin in raw mode and ANSI escape codes.

Roadmap

Shipped

  • 175,000+ skills indexed on the marketplace
  • 45 AI agents supported
  • Private Git repos: GitHub, GitLab, Bitbucket, SSH, self-hosted
  • npm package installs with custom registry support
  • FZF interactive search with multi-select
  • Quality scoring (0 to 100, grades F to A)
  • Conflict detection with --deep mode
  • Context budget with token-aware selection
  • Lockfile for deterministic installs
  • Glob matching and branch targeting
  • Skill compose, split, diff, and benchmark
  • Watch mode for auto-sync on file change
  • .skillsrc for enterprise config
  • Website at agentskills.in

In Progress

  • Skill versioning with semver
  • Team skill sharing with access controls
  • Agent-specific skill format validation

Planned

  • VS Code extension for marketplace browsing
  • Skill analytics: usage, quality trends, update alerts
  • GitHub Action for CI skill validation

Key Metrics