A CLI tool for managing AI agent skills from Git repositories, well-known endpoints, and local paths.
Skills are stored in ~/.agents/skills/ and linked into agent-specific directories (e.g. ~/.claude/skills/). Multiple agents are supported and auto-detected. Both global and per-project installations are tracked in a single, shareable config at ~/.skills/config.json.
go install github.com/sxwebdev/skills/cmd/skills@latest# Add skills from a source (interactive selection)
skills add owner/repo
# List installed skills
skills list
# Update all skills
skills updateNo init step is required — the config is created automatically on first install.
| Command | Aliases | Description |
|---|---|---|
add <source> |
a, install, i |
Add skills from a source |
use <source>[@skill] |
Print a skill's prompt to stdout without installing | |
find [query] |
search, f, s |
Search installed skills locally |
list |
ls |
List installed skills, grouped by source |
update [skills...] |
upgrade, check |
Update installed skills |
remove [skills...] |
rm, r |
Remove skills (or all from a source) |
init [name] |
Scaffold a new SKILL.md template |
|
doctor |
Diagnose installation issues | |
prompt build <name> |
Generate an authoring prompt for a new skill |
Resolves the source, discovers skills (directories with SKILL.md under .agents/skills/, skills/, or .<agent>/skills/), shows an interactive multi-select, and installs the chosen skills.
skills add owner/repo # GitHub shorthand
skills add owner/repo@my-skill # only that skill
skills add github:owner/repo # explicit GitHub
skills add gitlab:group/sub/repo # GitLab (incl. subgroups)
skills add https://git.example.com/o/r.git # generic git (Gitea, OneDev, ...)
skills add ./local-skills # local path (no network)
skills add owner/repo --all # install all without prompting
skills add owner/repo --list # just list skills in the source
skills add owner/repo -a cursor -g # install to the cursor agent, globally
skills add owner/repo --copy # copy into agent dirs instead of symlinkingSources: GitHub, GitLab (incl. self-hosted via /-/tree/ URLs), generic git over HTTPS/SSH (Gitea, OneDev, …), RFC 8615 well-known endpoints (/.well-known/agent-skills/index.json), and local directories. Content is fetched with a shallow git clone (one packfile — far faster than many per-file HTTP requests); for GitHub a single git-tree-SHA request is also recorded so update can detect changes without re-cloning.
Prints a skill's SKILL.md to stdout without installing it — pipe it straight to an agent.
skills use owner/repo@my-skill
skills use owner/repo@my-skill | claudeskills list # grouped by source, with status (symlink/copy, ok/missing)
skills list --json
skills find pdf # substring search over installed skillsUpdates installed skills from their sources. New skills in a source are ignored; use skills add when you want to discover and select more. For GitHub, change detection uses a single git-tree-SHA request and only changed repos are re-cloned; for other sources it clones and compares a content hash.
In an interactive terminal, an unfiltered skills update (no skill names, no --yes) can also offer to remove an installed skill whose folder has disappeared from its source (e.g. deleted or renamed). Non-interactively or with --yes, a vanished skill is reported but never auto-removed. --dry-run previews updates (~) and removals (-) without writing.
skills update # update installed skills only
skills update my-skill # update a specific installed skill
skills update --dry-run # show what would change
skills update --yes # non-interactiveskills remove my-skill # remove one (cleans symlink or copy)
skills remove a b c -y # remove several, no prompt
skills remove --all # remove everything in scope
skills remove owner/repo # remove all skills from a source
skills remove owner/repo --keep-skills # unregister the source, keep skillsScaffolds a SKILL.md template at skills/<name>/SKILL.md for authoring a new skill. For a richer, Claude-ready authoring prompt, use skills prompt build <name>.
A configurable registry supports several agents (e.g. claude-code/claude, cursor, codex, opencode, gemini). Installed agents are auto-detected. Target specific agents with -a/--agent (repeatable). Each agent's skills live under ~/.<agent>/skills (global) or <project>/.<agent>/skills (per-project).
By default skills are installed globally. Use --local/--project to scope to a project, or -g/--global to force global.
skills add owner/repo --local # current project (auto-detect via .git)
skills add owner/repo --project /path/to/p
skills list --localWhen installed per-project, skills are stored in <project>/.agents/skills/ with links at <project>/.<agent>/skills/. The global config at ~/.skills/config.json tracks all skills — both global and per-project.
- Config at
~/.skills/config.jsontracks sources, installed skills (global and per-project), and agents. Created lazily on first install; migrated automatically across schema versions. - Skills are copied to
~/.agents/skills/<name>/(global) or<project>/.agents/skills/<name>/(per-project). - Links are created for each agent: a relative symlink by default, falling back to a copy when symlinking isn't possible (or with
--copy). - Content is fetched with a shallow
git clone. Updates compare the GitHub git-tree SHA where available (one request, no clone unless something changed), otherwise a deterministic SHA1 folder hash — only changed skills are reinstalled.
Untrusted skill names and descriptions are stripped of terminal escape sequences before display, skill names are validated against path traversal, and well-known archives are extracted with path-safety, link rejection, and size/count limits.
repo/
├── .agents/skills/my-skill/SKILL.md
└── skills/another-skill/SKILL.md
Each skill directory must contain a SKILL.md with YAML frontmatter:
---
name: my-skill
description: Does something useful
---
Skill instructions here...MIT