A minimal CLI to manage agent skills from GitHub releases.
Project description
skillup
A minimal, user-friendly Python CLI to manage agent skills from GitHub releases or branches. It installs skills to both ~/.agents/skills and ~/.claude/skills for seamless integration across platforms.
Features
- Interactive Installation: Select specific skills to add from any GitHub repository.
- Multi-Repo Support: Manage skills from multiple repositories independently.
- Lock File State: Tracks installed sources (release tags or branches), pinned commit SHAs, and skills in
~/.agents/skills.lock.jsonfor reproducibility. - Automated Updates: Easily upgrade all or specific repositories to their latest GitHub release or tracked branch head.
- Smart Caching: Downloads are cached in a temporary directory (
TEMPor/tmp) to avoid redundant network usage. Can be overridden withSKILLUP_CACHE_DIR. - GitHub CLI Integration: Uses the
ghtool for fast downloads if available, with a reliablerequestsfallback.
Installation
Install using pip or uv:
pip install skillup
# or
uv tool install skillup
Usage
1. Add Skills
Interactively select skills to add from a GitHub repository's latest release:
skillup add google/gemini-cli-skills
If a repository has no releases, the CLI automatically falls back to the main branch. You can also install directly from a branch:
skillup add anthropics/skills --branch main --skill pdf
2. Remove Skills
Interactively select installed skills to remove from your system:
skillup remove
3. Update Skills
Update all installed skills to their latest tracked versions:
skillup update
Or update a specific repository:
skillup update --repo google/gemini-cli-skills
4. Sync Skills
Install all skills as defined in the lock file using the pinned commit SHAs (useful for setting up a new machine):
skillup sync
5. Migrate from NPX Skills CLI
If you already have a skills-lock.json in your repository root, you can import it into the skillup lock format. The latest release or branch commit is resolved from GitHub at migration time.
skillup migrate
A custom path can be provided if the file is elsewhere:
skillup migrate path/to/skills-lock.json
Skill Definition
A folder is recognized as a valid skill if it resides within a skills/ directory at the repository root and contains a SKILL.md file.
Development
This project uses uv for dependency management.
# Install dependencies
uv sync
# Run locally
uv run skillup --help
# Run tests
uv run pytest
# Type check
uv run pyright skillup
License
MIT
Project details
Release history Release notifications | RSS feed
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.3.2.tar.gz.
File metadata
- Download URL: skillup-0.3.2.tar.gz
- Upload date:
- Size: 25.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8811a9a94c758ffc8cc1e00046dffc1879676b161b245156341dd94599a9cfe
|
|
| MD5 |
542eb883380390e0bc6be3a21cf5d6d1
|
|
| BLAKE2b-256 |
f7153ff5b24711967bd3551893e4ef7801c1a7005de05e540abbf4b87f4f8efd
|
Provenance
The following attestation bundles were made for skillup-0.3.2.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.3.2.tar.gz -
Subject digest:
c8811a9a94c758ffc8cc1e00046dffc1879676b161b245156341dd94599a9cfe - Sigstore transparency entry: 1400864711
- Sigstore integration time:
-
Permalink:
bmsuisse/skillup@633f1e36c41804fbccf079015ec296b5288672ce -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/bmsuisse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@633f1e36c41804fbccf079015ec296b5288672ce -
Trigger Event:
release
-
Statement type:
File details
Details for the file skillup-0.3.2-py3-none-any.whl.
File metadata
- Download URL: skillup-0.3.2-py3-none-any.whl
- Upload date:
- Size: 9.6 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 |
ef4181ac4186f3164a31dccd72223ecc3278ffca7bbacf1bb249a7522d49a01e
|
|
| MD5 |
fb1fee90d6497c0d43cbecc7d93dac32
|
|
| BLAKE2b-256 |
220f6b7d99cbcb983a7405e2e9b0770c9c7992c77e96d936d653a39dd42ffd55
|
Provenance
The following attestation bundles were made for skillup-0.3.2-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.3.2-py3-none-any.whl -
Subject digest:
ef4181ac4186f3164a31dccd72223ecc3278ffca7bbacf1bb249a7522d49a01e - Sigstore transparency entry: 1400864886
- Sigstore integration time:
-
Permalink:
bmsuisse/skillup@633f1e36c41804fbccf079015ec296b5288672ce -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/bmsuisse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@633f1e36c41804fbccf079015ec296b5288672ce -
Trigger Event:
release
-
Statement type: