A cross-platform skill package manager for Agent Skills.
Install, upgrade, sync, and govern SKILL.md files across one or many repositories from versioned GitHub registries.
irm https://raw.githubusercontent.com/aminmesbahi/skell/main/install.ps1 | iexOr with winget (once the package is published):
winget install aminmesbahi.skellcurl -fsSL https://raw.githubusercontent.com/aminmesbahi/skell/main/install.sh | shOr with Homebrew:
brew tap aminmesbahi/tap
brew install skellGrab the latest binary for your platform from GitHub Releases:
| Platform | File |
|---|---|
| Windows (x64) | skell_0.x.x_windows_amd64.zip |
| macOS (Apple Silicon) | skell_0.x.x_darwin_arm64.tar.gz |
| macOS (Intel) | skell_0.x.x_darwin_amd64.tar.gz |
| Linux (x64) | skell_0.x.x_linux_amd64.tar.gz |
| Linux (ARM64) | skell_0.x.x_linux_arm64.tar.gz |
Extract the archive and place the skell binary somewhere on your PATH.
git clone https://github.com/aminmesbahi/skell
cd skell
go build -o skell . # Linux/macOS
go build -o skell.exe . # Windowsskell selfupdate# 1. Initialise a repository
skell init --repo /path/to/my-repo
# 2. Install a skill (bootstraps the registry on first use)
skell install ilspy-decompile \
--registry dotnet-skillz \
--registry-url https://github.com/davidfowl/dotnet-skillz \
--repo /path/to/my-repo
# 3. See what's installed
skell list --repo /path/to/my-repo
# 4. Check for updates
skell status --repo /path/to/my-repo
# 5. Upgrade all non-pinned skills
skell upgrade --repo /path/to/my-repoSkills live in .claude/skills/<name>/ inside each repository. Skell tracks them via two files:
| File | Purpose |
|---|---|
.claude/skell.toml |
Declares which registries and skills a repo uses |
.claude/skell.lock |
Records exact install state (hash, timestamp, source URL) |
Registries are plain GitHub (or any Git) repositories that contain folders with SKILL.md files.
Create skell.toml for a repository (scans for already-installed skills).
skell init
skell init --repo /path/to/repoInstall a skill from a registry.
# Registry already in skell.toml
skell install run-tests --registry dotnet-skills
# Bootstrap a new registry in one step
skell install ilspy-decompile \
--registry dotnet-skillz \
--registry-url https://github.com/davidfowl/dotnet-skillz
# Dry-run (no files written)
skell install run-tests --registry dotnet-skills --dry-run
# Target a specific repo or all repos under a directory
skell install run-tests --registry dotnet-skills --repo ./my-project
skell install run-tests --registry dotnet-skills --all-repos ~/projectsShow installed or available skills.
skell list # installed in current repo
skell list --repo /path/to/repo
skell list --all-repos ~/projects # all managed repos under a root
skell list --source registry # browse available skills from configured registries
skell list --json # JSON output (for CI)Compare local installs against the registry.
skell status
skell status --repo /path/to/repoStatus values: up-to-date · outdated · pinned · locally-modified · deprecated · missing-metadata
Upgrade all (or a single) non-pinned skill.
skell upgrade # upgrade all
skell upgrade run-tests # upgrade one
skell upgrade --dry-run # preview only
skell upgrade --force # also overwrite locally-modified skillsRemove a skill from a repository.
skell remove run-tests
skell remove run-tests --repo /path/to/repoLock a skill to its current version (skips upgrade).
skell pin ilspy-decompile --repo /path/to/repo
skell unpin ilspy-decompile --repo /path/to/repoApply skell.toml to a repository — installs missing skills, removes unlisted ones.
skell sync
skell sync --repo /path/to/repo
skell sync --dry-runSearch available skills across all configured registries.
skell search # list all
skell search maui # filter by name/description/tags
skell search --lifecycle stable
skell search --owner microsoft
skell search dotnet --lifecycle stable --owner microsoftShow full metadata for a skill.
skell info ilspy-decompile # local install info
skell info ilspy-decompile --repo /path/to/repo
skell info ilspy-decompile --source registry # registry lookup
skell info ilspy-decompile --jsonCheck a repository for manifest/lock/install problems.
skell doctor
skell doctor --repo /path/to/repo
skell doctor --all-repos ~/projects
skell doctor --jsonManage the local registry cache (~/.skell/cache).
skell cache status # show cached registries
skell cache refresh <alias> # re-fetch a registry
skell cache clear # delete the entire cacheUpgrade skell itself to the latest GitHub release.
skell selfupdate
skell selfupdate --check # check only, don't downloadAll commands that change files accept --repo (repeatable) and --all-repos:
# Install into two specific repos
skell install run-tests --registry dotnet-skills \
--repo ./api \
--repo ./worker
# Sync all repos found under ~/projects (git repos OR skell-managed folders)
skell sync --all-repos ~/projects
# Doctor check across an entire workspace
skell doctor --all-repos ~/projectsUse --global to install skills into ~/.skell/ (available everywhere):
skell install ilspy-decompile --registry dotnet-skillz \
--registry-url https://github.com/davidfowl/dotnet-skillz \
--global
skell list --global| Alias | URL | Contents |
|---|---|---|
dotnet-skillz |
https://github.com/davidfowl/dotnet-skillz |
.NET decompile, C# scripts, MCP tools |
dotnet-skills |
https://github.com/dotnet/skills |
Testing, MAUI, MSBuild, migrations, diagnostics |
Add them to your skell.toml:
[registries]
dotnet-skillz = "https://github.com/davidfowl/dotnet-skillz"
dotnet-skills = "https://github.com/dotnet/skills"Or let skell install --registry-url add them automatically on first use.
Every command supports --json for scripting and CI:
skell list --json
skell status --json
skell doctor --json
skell search maui --json<repo>/
└── .claude/
├── skell.toml ← manifest (commit this)
├── skell.lock ← lock file (commit this)
└── skills/
├── ilspy-decompile/
│ └── SKILL.md
└── run-tests/
└── SKILL.md
- System Design Document — architecture, product vision, data model
- Changelog
- Contributing