A minimal CLI to manage agent skills from GitHub releases.
Project description
Skill your agents up.
A minimal CLI to install, version, and sync skills for your AI agents.
Local-first · GitHub & Azure DevOps · Works with Claude, Gemini, and more.
uv tool install skillup
Features
- Interactive install — pick skills from any GitHub repo release
- Multi-repo — manage skills from multiple sources independently
- Lock file — pins commit SHAs for reproducible installs (
~/.agents/skills.lock.json) - Auto-update — upgrade all or specific repos to their latest release or branch head
- Smart cache — skips redundant downloads; override with
SKILLUP_CACHE_DIR - gh integration — uses
ghCLI when available, falls back torequests - Azure DevOps — install skills from private Azure DevOps Git repos via
DefaultAzureCredentialor a PAT
Installation
uv tool install skillup
To use Azure DevOps sources, install the azure extra:
uv tool install 'skillup[azure]'
Usage
Add skills from GitHub
skillup add google/gemini-cli-skills
No releases? Falls back to main automatically. Pin a branch or add specific skills non-interactively:
skillup add anthropics/skills --branch main --skill pdf
Full GitHub URLs are also accepted:
skillup add https://github.com/anthropics/skills
Add skills from Azure DevOps
Pass the full Azure DevOps clone URL — the provider is detected automatically from the domain:
skillup add https://dev.azure.com/myorg/myproject/_git/myrepo
skillup add https://myorg.visualstudio.com/myproject/_git/myrepo # legacy URL format
# pin a branch or add specific skills non-interactively
skillup add https://dev.azure.com/myorg/myproject/_git/myrepo --branch develop --skill my-skill
Azure DevOps repos are stored in the lock file under the key azdo:org/project/repo and participate in the shared update and sync commands just like GitHub repos.
Authentication
Authentication is resolved in this order:
AZURE_DEVOPS_TOKENenv var — a Personal Access Token (PAT) with Code → Read scope, or any valid bearer token.DefaultAzureCredential(requires theazureextra) — tries, in order: environment variables (AZURE_CLIENT_ID/AZURE_CLIENT_SECRET/AZURE_TENANT_ID), workload identity, managed identity, Azure CLI (az login), Azure Developer CLI, and interactive browser login.
The recommended approach for developer machines is DefaultAzureCredential via az login:
uv tool install 'skillup[azure]'
az login
skillup add https://dev.azure.com/myorg/myproject/_git/myrepo
Remove skills
skillup remove
Update skills
skillup update # all repos
skillup update --repo google/gemini-cli-skills # one repo
Sync (restore from lock file)
skillup sync
Installs skills at the exact pinned SHAs from the lock file — useful for new machines.
Migrate from NPX skills CLI
skillup migrate # reads skills-lock.json from repo root
skillup migrate path/to/skills-lock.json
Skill definition
A folder is recognized as a skill when it lives inside a skills/ directory at the repo root and contains a SKILL.md file.
Development
uv sync # install deps
uv run skillup --help
uv run pytest
uv run pyright skillup
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skillup-0.7.3.tar.gz.
File metadata
- Download URL: skillup-0.7.3.tar.gz
- Upload date:
- Size: 55.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74038a265ec4a004c1f8a46061e5f894ddbacb8bedf6568e62d59d85824790e6
|
|
| MD5 |
93ad51e221a5809941aedbc6b8e4deba
|
|
| BLAKE2b-256 |
7d398a7d3c655a42d7fbef75517849ca1bcf78cb1faf7dc4d56917a890626904
|
Provenance
The following attestation bundles were made for skillup-0.7.3.tar.gz:
Publisher:
publish.yml on bmsuisse/skillup
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillup-0.7.3.tar.gz -
Subject digest:
74038a265ec4a004c1f8a46061e5f894ddbacb8bedf6568e62d59d85824790e6 - Sigstore transparency entry: 1868335026
- Sigstore integration time:
-
Permalink:
bmsuisse/skillup@a65f2362908d6664d5746cc130828fdc0a8ab916 -
Branch / Tag:
refs/tags/v0.7.3 - Owner: https://github.com/bmsuisse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a65f2362908d6664d5746cc130828fdc0a8ab916 -
Trigger Event:
release
-
Statement type:
File details
Details for the file skillup-0.7.3-py3-none-any.whl.
File metadata
- Download URL: skillup-0.7.3-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
655aad6ae87d34ff8321a4b322ca606dfa8082b91bf069e43c700d0f561c17ed
|
|
| MD5 |
a4f15fbc765b21836f49747a270addc3
|
|
| BLAKE2b-256 |
dbb184cf61edc2d748fecd3e85e8fbfd2b912eff8f56a6627ba5e570d95830a2
|
Provenance
The following attestation bundles were made for skillup-0.7.3-py3-none-any.whl:
Publisher:
publish.yml on bmsuisse/skillup
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skillup-0.7.3-py3-none-any.whl -
Subject digest:
655aad6ae87d34ff8321a4b322ca606dfa8082b91bf069e43c700d0f561c17ed - Sigstore transparency entry: 1868335154
- Sigstore integration time:
-
Permalink:
bmsuisse/skillup@a65f2362908d6664d5746cc130828fdc0a8ab916 -
Branch / Tag:
refs/tags/v0.7.3 - Owner: https://github.com/bmsuisse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a65f2362908d6664d5746cc130828fdc0a8ab916 -
Trigger Event:
release
-
Statement type: