Skip to content

add ​

Install one or more skills from a source into one or more agents.

Synopsis ​

agentskills-cli add <source> [-g] [-a agent...] [-s skill...] [-y]
                         [--copy|--symlink]
                         [--nuget-source URL] [--npm-registry URL]
                         [--path PATH]

Arguments ​

ArgumentMeaning
<source>Local path, GitHub shorthand, URL, NuGet package id, or npm package id. See Source formats for every shape accepted.

Flags ​

FlagMeaning
-g, --globalInstall to the user-wide directory (~/.agents/skills/...) instead of the project.
-a, --agent <NAME>Target a specific agent. Pass multiple times for multiple agents. Omit to auto-detect installed agents and (interactively) prompt.
-s, --skill <NAME>Install specific skill(s) by name from the source. Use '*' for "all". Omit to install everything (with a multi-select prompt unless -y).
-y, --yesNon-interactive. Skip all prompts and accept defaults: install all discovered skills, target all detected agents. Required for scripts/CI.
--copyMaterialize files into each agent's directory (default - cross-platform safe).
--symlinkSymlink each agent's directory to the canonical copy. Falls back to copy on filesystems that don't support it.
--nuget-source <URL>One-shot override for the NuGet feed. By default NuGet.Protocol uses every enabled feed in your NuGet.Config.
--npm-registry <URL>One-shot override for the default npm registry. By default ~/.npmrc + project .npmrc + per-scope rules apply.
--path <PATH>Restrict discovery to a subdirectory of the source. Use when a package puts its skills somewhere non-standard. Rejected if the path contains .. or doesn't exist inside the staged source.

Examples ​

bash
# Install one specific skill from a repo for Claude Code, non-interactive
agentskills-cli add vercel-labs/agent-skills -a claude-code -s web-design-guidelines -y

# Install everything in a NuGet package into the project, all detected agents
agentskills-cli add MyOrg.AgentSkills -y

# Install all skills from a private NuGet feed at a pinned version, globally
agentskills-cli add MyOrg.AgentSkills@1.2.3 -g -y \
  --nuget-source https://pkgs.contoso.com/v3/index.json

# Install from a GitHub branch with a subpath
agentskills-cli add https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design-guidelines

# Install a local skill directory into the current project for Cursor
agentskills-cli add ./my-local-skill -a cursor

# Install from a local .nupkg or .tgz file (no feed / registry lookup)
agentskills-cli add ./Contoso.SampleSkills.1.4.0.nupkg -y
agentskills-cli add ./contoso-sample-skills-2.1.0.tgz -y

# Source uses a non-conventional layout - point at it explicitly
agentskills-cli add MyOrg.AgentSkills --path ai/prompts -y           # NuGet
agentskills-cli add @my-org/agent-skills --path src/skills -y         # npm
agentskills-cli add anthropics/skills --path docs/skills -y           # GitHub shorthand
agentskills-cli add ./my-local-skill --path subdir/skills -y          # local

Output ​

After a successful install, the result table includes a Path column with the exact file location for every (skill, agent) pair, followed by an Installed under … summary listing the distinct directory roots:

╭─────────────┬─────────────┬────────┬─────────────────────────────────────────╮
│ Skill       │ Agent       │ Result │ Path                                    │
├─────────────┼─────────────┼────────┼─────────────────────────────────────────┤
│ hello-skill │ Universal   │ copied │ /path/to/project/.agents/skills/hello-… │
│ hello-skill │ Claude Code │ copied │ /path/to/project/.claude/skills/hello-… │
╰─────────────┴─────────────┴────────┴─────────────────────────────────────────╯
Installed under /path/to/project/.agents/skills, /path/to/project/.claude/skills
Done.

After the fact you can recover the same paths any time with agentskills-cli list --paths or by reading Where files land.

Discovery ​

Without --path, skills are found via three layered passes:

  1. Source-type conventions - contentFiles/any/any/skills/ for NuGet, package/skills/ then package/contentFiles/... for npm, the priority directory list for git.
  2. Recursive scan up to 5 levels deep, skipping node_modules, .git, dist, build, __pycache__.
  3. With --path, the scan is restricted to that one subdirectory of the staged source.

What gets written ​

  • Skill files copied (or symlinked) to the install paths documented in Where files land
  • Global lock entry in ~/.agents/.skill-lock.json (always)
  • Project lock entry in ./skills-lock.json (only for project installs)

See Lock files for the schema details.

Result statuses ​

Status in the Result columnMeans
copiedFiles materialized into the agent directory.
symlinkedAgent directory symlinked to the canonical .agents/skills copy.
copy (symlink fell back)--symlink was requested but the filesystem refused; copied instead.
canonical onlySkill placed in the canonical .agents/skills/, but the agent-specific directory was deliberately skipped (project install, non-universal agent, agent's root config dir doesn't exist in the project). See Where files land for the rule.
failed: <reason>Install couldn't complete; the row reports why.

Released under the MIT License.