| name | skillsmanager |
| description | Discover, install, add, and update agent skills from local or remote storage using the sm CLI |
Skills Manager
Skills Manager is a CLI tool for managing agent skills stored locally or in remote storage (Google Drive, GitHub). Use it to find, install, share, and update skills. Works offline by default — no setup needed for local use.
Prerequisites
- Local storage works out of the box — no setup needed.
- For Google Drive: a human must run
sm setup google once to configure credentials.
- For GitHub: requires the
gh CLI to be installed and authenticated (gh auth login). No additional sm setup needed.
- All commands except
setup google are non-interactive and designed for agent use.
Commands
Find and install a skill
sm search <query>
sm install <name> --agent <agent>
sm install <name> --agent <agent> --scope project
sm uninstall <name> --agent <agent>
sm uninstall <name> --agent <agent> --scope project
sm list
Supported agents: claude, codex, agents, cursor, windsurf, copilot, gemini, roo, openclaw, antigravity
Share a skill you own
sm add <path>
sm add <path> --collection <name>
Register a skill path without uploading files (cross-repo / curated collections)
Use --remote-path when the skill files already exist in a remote backend and you just want to register a pointer to them. You cannot add local files to a cross-backend collection — you must use this flag instead.
sm add --remote-path <backend-path> --name <skill-name> --description "<description>" --collection <name>
sm add --remote-path skills/write-tests/ --name write-tests --description "Generate unit tests" --collection my-col
Update a skill
sm update <path>
sm update <path> --collection <name>
After updating, the local cache is refreshed so all symlinks on this machine reflect the change immediately.
Delete a skill
sm skill delete <name>
sm skill delete <name> --collection <collection-name>
Registry and collection management
sm registry create
sm registry create --backend gdrive
sm registry create --backend github --repo <owner/repo>
sm registry list
sm registry discover --backend gdrive
sm registry discover --backend github
sm registry add-collection <name>
sm registry push --backend gdrive
sm registry push --backend github --repo <owner/repo>
sm registry remove-collection <name>
sm registry remove-collection <name> --delete
sm collection create [name]
sm collection create [name] --backend github --repo <owner/repo>
sm collection create [name] --backend gdrive
sm collection create [name] --backend gdrive --skills-repo <owner/repo>
sm collection create [name] --backend github --repo <owner/registry-repo> --skills-repo <owner/skills-repo>
sm refresh
Install the sm skill for agents
sm install
sm install --agent claude,codex
sm install --path <dir>
sm uninstall
sm uninstall --agent claude
Cross-backend collections (curated skill libraries)
A collection can declare that its skill files live in a different GitHub repo than the collection YAML. This is indicated by type: github in SKILLS_COLLECTION.yaml.
When you encounter a cross-backend collection:
sm add <local-path> --collection <name> → will fail with an error like skills source type is "github". This is expected — you cannot upload local files to a foreign repo.
- Do this instead:
sm add --remote-path <path-in-repo> --name <n> --description "<d>" --collection <name>
sm install <skill> --agent claude → works normally — files are automatically pulled from the declared GitHub repo
How to identify a cross-backend collection:
sm registry list — collections with a --skills-repo are shown with their skills repo
- Reading the
SKILLS_COLLECTION.yaml directly — look for type: github + metadata.repo
Quick rule:
- Own the skill files? →
sm add <path>
- Files already in a GitHub repo? →
sm add --remote-path <path> --name <n> --description "<d>"
Common Workflows
User asks to find a skill:
sm search <relevant terms>
sm install <skill-name> --agent claude
User asks to share a skill they created locally:
- Ensure the skill directory has a
SKILL.md with name and description in YAML frontmatter
sm add <path-to-skill-directory>
- Install the skill to make it immediately available to the agent:
- For all projects:
sm install <skill-name> --agent claude
- For current project only:
sm install <skill-name> --agent claude --scope project
User asks to update a skill:
- Edit the skill files locally
sm update <path-to-skill-directory>
User asks to install a skill for this project only:
sm install <name> --agent claude --scope project
User wants to back up local skills to Google Drive:
sm setup google (one-time, human-only)
sm registry push --backend gdrive
User wants to store skills in a GitHub repo:
sm collection create <name> --backend github --repo <owner/repo> — creates the GitHub repo if needed, and auto-registers the collection
sm add <path> --collection <name> — upload the skill into that collection
User wants to create a curated collection of skills from a public GitHub repo (cross-backend):
Use this when you want to expose skills from an external GitHub repo (e.g. anthropics/skills) via a collection the user can install from, without copying the files.
sm collection create <name> --backend gdrive --skills-repo <owner/skills-repo>
- This creates the collection YAML in the user's Google Drive with
type: github + metadata.repo pointing to the skills repo
- Register each skill by its path in the skills repo (no file upload needed):
sm add --remote-path skills/write-tests/ --name write-tests --description "Generate unit tests" --collection <name>
- Users install skills normally —
sm install write-tests --agent claude — and the files are pulled from the skills repo
User wants to add a skill from a public GitHub repo without uploading files:
- Create or identify a collection with
--skills-repo <owner/repo>
sm add --remote-path <path-in-repo> --name <skill-name> --description "<desc>" --collection <name>
User wants to discover GitHub-hosted collections:
sm registry discover --backend github
User wants to see what registries and collections exist:
sm registry list
User asks to delete/remove a single skill:
sm skill delete <skill-name>
- If the skill lives in multiple collections, add
--collection <name> to target the right one
User wants to remove a collection:
sm registry remove-collection <name> (removes reference only, data is kept)
sm registry remove-collection <name> --delete (permanently deletes collection and skills)
Collection types
Most collections store skill files directly in their backend. But a collection can also declare that skill files live in a different GitHub repo — this is useful for curating public skills or pointing to a shared library repo.
| Collection backend | Skills repo | What add does | What install does |
|---|
gdrive or local | (none) | Uploads files to Drive/local | Downloads from Drive/local |
github | (same repo as collection) | Commits files to the repo | Clones/pulls from repo |
gdrive or local | --skills-repo owner/repo | Requires --remote-path — registers a path pointer only | Downloads files from the GitHub repo |
github (registry repo) | --skills-repo owner/skills-repo | Requires --remote-path — registers a path pointer only | Downloads files from the skills repo |
When you try to sm add <local-path> to a collection with a cross-backend skills repo, the command will fail with a clear error pointing you to --remote-path.
The install column above refers to sm install <name> --agent <agent>.
Architecture
- Registry (
SKILLS_REGISTRY.yaml): root index pointing to all collections across backends
- Collection (
SKILLS_COLLECTION.yaml): folder of skills with an index file
- Backends:
local (default, ~/.skillsmanager/), gdrive (Google Drive), and github (GitHub repo via gh CLI)
- Cache: skills are cached at
~/.skillsmanager/cache/<uuid>/ and symlinked to agent directories
- Symlinks: all agents share one cached copy — updating the cache updates all agents
- RoutingBackend: transparent middleware that intercepts skill-file operations and dispatches to the right backend based on the collection's declared
type field
Scope
--scope global (default): installs to ~/.agent/skills/ — available across all projects
--scope project: installs to ./.agent/skills/ in the current working directory — this project only