skset (short for "skill set") is a CLI tool for managing collections of LLM agent skills across multiple AI coding tools. Organize skills into reusable sets, maintain them in a central library, and distribute them to Claude Code, OpenCode, Codex, VS Code Copilot, Amp, Windsurf, Cursor, and Gemini CLI.
Follows the Agent Skills open standard.
brew tap princespaghetti/skset https://github.com/princespaghetti/skset
brew install skset- Skills: Individual agent capabilities (e.g., "dependency-evaluator", "pdf-parser")
- Library: Your central collection of skills at
~/.skset/library/ - Groups: Named skill sets for organizing related skills (e.g., "core", "work", "personal")
- Targets: AI coding tools where skills are deployed (Claude Code, OpenCode, etc.)
- Sources: Discoverable skill locations (e.g., marketplace plugins) - read-only
Groups let you manage skill sets as units: skset push --group work deploys your entire work skill set.
# Initialize skset
skset init
# Fetch a skill from GitHub
skset fetch gh:anthropics/skills/skills/pdf --group core
# Or create a new skill
skset new my-skill
# Add it to a skill set (group)
skset add ./my-skill --group core
# View all your skills and groups
skset inventory
# Deploy your core skill set to all targets
skset push --group coreInitialize configuration and library.
skset initCreate a new skill from template (interactive or with name).
skset new
skset new my-skillAdd an existing skill to the library.
skset add ./my-skill
skset add ./my-skill --group coreRemove a skill from the library.
skset remove my-skill
skset remove my-skill --force
skset remove my-skill --from-group work # Remove from group onlyValidate skills against the Agent Skills specification.
skset validate my-skill
skset validate --allList all skills across library, targets, and sources.
skset inventory
skset inventory --library
skset inventory --target claude-code
skset inventory --group work # Filter to show only skills in 'work' group
skset inventory --jsonDistribute skills from library to targets.
skset push my-skill
skset push --all
skset push --group work # Push all skills in 'work' group
skset push my-skill --target claude-code
skset push my-skill --repo
skset push --all --dry-runImport skills from targets into library.
skset pull my-skill
skset pull --all
skset pull --target claude-code
skset pull --all --from-repoFetch skills from remote GitHub repositories.
# Using GitHub shorthand
skset fetch gh:anthropics/skills/skills/pdf
# Using full GitHub URL
skset fetch https://github.com/anthropics/skills/tree/main/skills/pdf
# Add to a group and force overwrite
skset fetch gh:anthropics/skills/skills/pdf --group core --forceSupported URL formats:
gh:owner/repo/path/to/skill- GitHub shorthandgithub:owner/repo/path/to/skill- Alternate shorthandhttps://github.com/owner/repo- Full URL (defaults to main branch)https://github.com/owner/repo/tree/branch- Full URL with branchhttps://github.com/owner/repo/tree/branch/path- Full URL with branch and path
Manage skill sets (groups). Groups let you organize skills into named collections and operate on them as units.
# List all groups
skset groups
skset groups list
# Create a new group
skset groups create work
# Add skills to a group
skset groups add work dependency-evaluator
skset groups add work security-scanner
# Remove a skill from a group
skset groups remove work dependency-evaluator
# Delete a group (skills remain in library)
skset groups delete work
# Use groups with other commands
skset push --group work # Push all skills in 'work' group
skset inventory --group work # Show only 'work' group skills
skset add ./my-skill --group work # Add skill and assign to groupConfiguration is stored at ~/.skset/config.yaml with support for 8 default targets:
- claude-code:
~/.claude/skills/(global),.claude/skills/(repo) - opencode:
~/.config/opencode/skills/(global),.opencode/skills/(repo) - codex:
~/.agents/skills/(global),.agents/skills/(repo) - copilot:
~/.copilot/skills/(global),.github/skills/(repo) - amp:
~/.config/agents/skills/(global),.agents/skills/(repo) - windsurf:
~/.codeium/windsurf/skills/(global),.windsurf/skills/(repo) - cursor:
~/.cursor/skills/(global),.cursor/skills/(repo) - gemini:
~/.gemini/skills/(global),.gemini/skills/(repo)
skset also tracks documented compatibility paths as read-only sources and warns when multiple targets share the same directory.
Skills follow the Agent Skills specification with a SKILL.md file containing YAML frontmatter and markdown instructions.
# Install dependencies
bun install
# Run CLI during development
bun run dev <command>
# Run tests
bun test
# Build standalone binary
bun run build