Manage agent skills.
Project description
skilly
Manage Agent Skills from the command line or Python.
skilly creates specification-compliant skills, installs skills from GitHub or
Python dependencies, and keeps managed skills up to date.
Installation
Run the CLI without installing it:
uvx skilly --help
npx @xelandernt/skilly --help
Or install the CLI and Python package:
pip install skilly
The npm package ships the same native Rust CLI behind the executable name
skilly. The current npm support matrix is macOS arm64/x64, Linux x64
(glibc), and Windows x64.
Quick Start
Scan the current Python project for skills shipped by its dependencies:
uvx skilly scan
Download a skill from GitHub:
uvx skilly download https://github.com/example/project/tree/main/skills/code-review
Inspect installed skills:
uvx skilly list
CLI Commands
| Command | Purpose |
|---|---|
uvx skilly scan |
Find skills provided by the project's Python dependencies. |
uvx skilly download <github-url> |
Install one or more skills from GitHub. |
uvx skilly list |
Browse, update, or remove installed skills. |
uvx skilly update |
Preview available updates; add --yes to apply all updates. |
uvx skilly remove <name> |
Remove an installed skill by directory name. |
uvx skilly skillsmp search <query> |
Search SkillsMP and install a selected result. |
uvx skilly create |
Create a valid skill through a terminal wizard or explicit options. |
Use uvx skilly <command> --help for all options.
Create Skills
Interactive terminals open a full-screen editor for the required and optional
Agent Skills fields. Ctrl+S creates the skill, Ctrl+X cancels, and Enter
in the multi-line editors inserts real line breaks.
For scripts and automation, provide the required name and description:
uvx skilly create deployment-checks \
--description "Validate deployment readiness before a production release." \
--instructions "# Instructions
Run the deployment checklist and report blockers." \
--metadata owner=platform \
--with-scripts \
--yes
Existing skills are rejected by default. Use --overwrite to replace one
atomically. See uvx skilly create --help for the complete contract.
Install Dependency Skills
uvx skilly scan reads pyproject.toml and the project's .venv, then offers
skills shipped by direct, development, and optional dependencies:
uvx skilly scan
Exclude dependency categories when needed:
uvx skilly scan --no-dependency-groups --no-optional-dependencies
Install GitHub Skills
uvx skilly download https://github.com/example/project
When a repository contains multiple skills, select one or install all:
uvx skilly download https://github.com/example/project --skill-name code-review
uvx skilly download https://github.com/example/project --all
Destinations
Management commands accept the same destination options:
| Option | Destination |
|---|---|
--local |
Project-local skills directory. |
--global |
User-global skills directory. |
--claude |
Claude skills directory. |
--codex |
Codex skills directory. |
--copilot |
GitHub Copilot skills directory. |
--directory <path> |
Explicit directory; overrides all other destination options. |
Without destination options, skilly uses .agents/skills.
uvx skilly download https://github.com/example/project --global --codex
uvx skilly list --local --claude
GitHub Authentication
Authenticated requests have higher GitHub API rate limits. Use the first available token:
export SKILLY_GITHUB_TOKEN=ghp_your_token
# or GITHUB_TOKEN / GH_TOKEN
GitHub-fetching commands also accept --github-token.
Python API
SkillRepository is the stateful management interface. Bind a destination,
project settings, or custom filesystem once and reuse it:
from pathlib import Path
from skilly import ProjectSettings, Skill, SkillRepository
repository = SkillRepository(
directory=Path(".agents/skills"),
project=ProjectSettings(include_dependency_groups=True),
)
created = repository.install(
Skill(
name="code-review",
description="Review code for correctness and maintainability.",
content="# Instructions\n\nReview the proposed change.",
)
)
for match in repository.scan_project():
print(match.available.name, match.status)
Use focused discovery functions when no repository state is needed:
from skilly import discover_installed_skills, discover_venv_skills
installed = discover_installed_skills()
dependency_skills = discover_venv_skills()
The SkillsMP client returns typed results directly. Async methods expose the same result types without blocking the event loop:
from skilly.skillsmp import ClientSettings, SkillsMp, SkillsMpSearchQuery
client = SkillsMp(settings=ClientSettings(base_url="https://skillsmp.com/api/v1"))
result = client.search(SkillsMpSearchQuery(text="python", limit=5))
print(result.data.skills[0].github_url)
Development
Install development dependencies and the editable extension:
just install
Run the required quality gates:
just lint
just test
just typecheck
The TypeScript launcher package also has dedicated helpers:
just ts::build
just ts::test
just ts::typecheck
just ts::smoke
just ts::publish-dry-run
License
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 Distributions
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 skilly-0.0.24.tar.gz.
File metadata
- Download URL: skilly-0.0.24.tar.gz
- Upload date:
- Size: 117.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ceb51bc5a9ef5dd96a1ec7f4c5c73230fdb5174cfdb2ccf006db6fab78cc4fc
|
|
| MD5 |
ff5620d6984f31f747984816d87fe646
|
|
| BLAKE2b-256 |
cf247e13f3d28beac8d72852d57a82b8a77f1e5bf5d06b4ec7f730c0ed6cc8b2
|
File details
Details for the file skilly-0.0.24-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: skilly-0.0.24-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 2.8 MB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b313d16069196a8d6a73492f75a2909e9f84f8b72b77c3999f226d559b688b89
|
|
| MD5 |
9efc1f4721cd60be09d5b09385d7518f
|
|
| BLAKE2b-256 |
e8a35f69590c565ef6dba250dafd32893742a30315238ac854629e30ebca7c19
|
File details
Details for the file skilly-0.0.24-cp310-abi3-win32.whl.
File metadata
- Download URL: skilly-0.0.24-cp310-abi3-win32.whl
- Upload date:
- Size: 2.4 MB
- Tags: CPython 3.10+, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e2b972ac51bdc9ea838646686a879a8977043be39ff7d68f5a7a5cfb9b44d57
|
|
| MD5 |
6992c1552302d01d6bf2ac1dd3b3443f
|
|
| BLAKE2b-256 |
f0514cc5f85c6010013fce9764feaa6e34631bb23c9a91b5e911833613f0ce1a
|
File details
Details for the file skilly-0.0.24-cp310-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: skilly-0.0.24-cp310-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 3.5 MB
- Tags: CPython 3.10+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b60e0b9e5dac54db2e3fabb5fa8b0001a21c73a2e4be1f40dd7adb8ed9ab7b77
|
|
| MD5 |
050129aad7bede1436b42ec046ed286b
|
|
| BLAKE2b-256 |
8ff9ade17076988a094c7aca8e22a2f354532960138b1ae2ecd58c32a4cc2a41
|
File details
Details for the file skilly-0.0.24-cp310-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: skilly-0.0.24-cp310-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 3.4 MB
- Tags: CPython 3.10+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35dcf363c6c5001c40be5925f107b97188fc9ce8f4ba563fb6523db74a331b66
|
|
| MD5 |
844d247c6fb0c827702ae6a99521f638
|
|
| BLAKE2b-256 |
60e07da343125f942ffcae83d974e228fe0d082298de486dd31e76583e18689d
|
File details
Details for the file skilly-0.0.24-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: skilly-0.0.24-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 3.3 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
550241b68c42062aa9b48baabe2f61b7be3afae49479c38e8b5824571dc0423f
|
|
| MD5 |
a56652e2410551d1d77ae60f79960b3a
|
|
| BLAKE2b-256 |
82abcceef8963af2b03cab687d8b6cf64f246574226665f86408e52869718348
|
File details
Details for the file skilly-0.0.24-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: skilly-0.0.24-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 3.3 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
826d5d73d64f1ffa83a27b31019c35126598f0b94a5095a4ceba990f67a8957c
|
|
| MD5 |
ce1bbdae83774b1c037451ae2ee2828c
|
|
| BLAKE2b-256 |
7fbfa5de39da928188ebfb2382782e76c8d49dc72809373131d87eece4c5607c
|
File details
Details for the file skilly-0.0.24-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: skilly-0.0.24-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a270abec9d0e80fc974635e85624b576e20442b4724f61735f565ec243d2c8c
|
|
| MD5 |
836f14e9c88c00f3802f39ab0826f46a
|
|
| BLAKE2b-256 |
ee2d5122c8362aeebebc3512230ce11e042f8f9afd9cdae8d95be3f62a7562e6
|
File details
Details for the file skilly-0.0.24-cp310-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: skilly-0.0.24-cp310-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 3.1 MB
- Tags: CPython 3.10+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bdd95d09f41da8d79d092f78ab3edefc19bd3738e504bfabc383b5a8fd876390
|
|
| MD5 |
8b1b3d3d2bd2c7a81bcb93195c5600e1
|
|
| BLAKE2b-256 |
d4e5c30f9d34a939db95a5ea61bfd88d3c68a0234ff123d3a942f0a2387158ed
|