Skip to main content

Manage agent skills.

Project description

npm pypi pyrefly GitHub stars npm Downloads PyPI Downloads License

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.

Table of Contents

Installation

Python

uvx skilly --help

Node

npx @xelandernt/skilly --help

Homebrew

brew tap xelandernt/skilly https://github.com/xelandernt/skilly
brew install xelandernt/skilly/skilly

Info

Method Ships
uvx / pip Python package with import surface + CLI (pre-built wheels: Linux x64, macOS arm64/x64, Windows x64)
npx Native Rust CLI (macOS arm64/x64, Linux x64 glibc, Windows x64)
brew Native Rust CLI (macOS arm64/x64, Linux x64)

Quick Start

uvx skilly scan                       # Find skills from Python dependencies
uvx skilly download <github-url>      # Install skills from GitHub
uvx skilly list                       # Browse installed skills
uvx skilly update                     # Preview available updates

CLI Commands

Command Purpose
scan Find skills provided by the project's Python dependencies
download <github-url> Install one or more skills from GitHub
list Browse, update, or remove installed skills
update Preview available updates; --yes applies all
remove <name> Remove an installed skill by directory name
skillsmp search <query> Search SkillsMP and install a selected result
create Create a valid skill through a terminal wizard or explicit options
configure Set which directories skilly manages via TUI or CLI flags

Run skilly <command> --help for all options.

Create Skills

Interactive terminals open a full-screen editor. Ctrl+S creates the skill, Ctrl+X cancels.

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 unless --overwrite is passed.

Install Dependency Skills

skilly scan reads pyproject.toml and the project's .venv, then surfaces skills shipped by dependencies:

uvx skilly scan

Include or exclude specific extras and dependency groups (flags are repeatable):

uvx skilly scan --group dev --group test --exclude-extra docs

Install GitHub Skills

uvx skilly download https://github.com/example/project

When a repository contains multiple skills:

uvx skilly download https://github.com/example/project --all
uvx skilly download https://github.com/example/project --skill-name code-review

Destinations

All management commands accept the same destination options:

uvx skilly list --local        # .agents/skills
uvx skilly list --global       # ~/.agents/skills
uvx skilly list --claude       # .claude/skills
uvx skilly list --codex        # .codex/skills
uvx skilly list --copilot      # .github/skills (local), ~/.copilot/skills (global)
uvx skilly list --directory ~/custom     # Explicit directory
Flags Resolved destination
none SKILLY_DIRECTORY if set, otherwise .agents/skills
--local .agents/skills
--global ~/.agents/skills
--claude .claude/skills
--claude --global ~/.claude/skills
--codex .codex/skills
--codex --global ~/.codex/skills
--copilot .github/skills
--copilot --global ~/.copilot/skills
--directory <path> That directory (after ~ expansion)

Set a default destination:

export SKILLY_DIRECTORY="$HOME/.config/skilly/skills"

--directory overrides all other destination options and SKILLY_DIRECTORY.

Configure Destinations

skilly configure lets you choose which directories skilly should manage. Interactive terminals open a two-tab TUI (Global / Local). Non-interactive runs accept flags.

uvx skilly configure                 # Open the TUI
uvx skilly configure --show          # Print current config as TOML
uvx skilly configure --reset         # Restore defaults

Add or remove custom directories:

uvx skilly configure --add-global /opt/skills
uvx skilly configure --add-local .project/skills
uvx skilly configure --remove-global /opt/skills
uvx skilly configure --remove-local .project/skills

Enable or disable built-in destinations (valid keys: agents_global, agents_local, claude_global, claude_local, codex_global, codex_local, copilot_global, copilot_local):

uvx skilly configure --enable agents_global --disable copilot_global

Configuration is stored in ~/.skilly.toml:

enabled_builtin = ["agents_global", "agents_local", ...]
custom_global_dirs = []
custom_local_dirs = []

GitHub Authentication

Set a token for higher API rate limits (first available wins: SKILLY_GITHUB_TOKEN, GITHUB_TOKEN, GH_TOKEN):

export SKILLY_GITHUB_TOKEN=ghp_your_token

All GitHub-fetching commands also accept --github-token.

Python API

SkillRepository bundles a directory and project settings for stateful workflows:

from pathlib import Path
from skilly import ProjectSettings, Skill, SkillRepository

repository = SkillRepository(
    directory=Path(".agents/skills"),
    project=ProjectSettings(
        dependency_groups=("dev",),
        optional_dependencies=("docs",),
    ),
)

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)

Stateless discovery functions for one-shot reads:

from skilly import discover_installed_skills, discover_venv_skills

installed = discover_installed_skills()
dependency_skills = discover_venv_skills()

SkillsMP client with typed results:

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

just install      # Install dev dependencies + editable extension
just lint         # Run linters
just test         # Run tests
just typecheck    # Run type checkers

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

skilly-0.0.30.tar.gz (150.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

skilly-0.0.30-cp310-abi3-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

skilly-0.0.30-cp310-abi3-win32.whl (1.9 MB view details)

Uploaded CPython 3.10+Windows x86

skilly-0.0.30-cp310-abi3-musllinux_1_2_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

skilly-0.0.30-cp310-abi3-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

skilly-0.0.30-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

skilly-0.0.30-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

skilly-0.0.30-cp310-abi3-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

skilly-0.0.30-cp310-abi3-macosx_10_12_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file skilly-0.0.30.tar.gz.

File metadata

  • Download URL: skilly-0.0.30.tar.gz
  • Upload date:
  • Size: 150.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for skilly-0.0.30.tar.gz
Algorithm Hash digest
SHA256 c653c526d1b38752e77150bbc2bee96a38000bfd4dec59c9333b21618e48015f
MD5 a516e4502278d35769a452f5a9e3a447
BLAKE2b-256 f7be6fd3192c7cc08813c6fbcdb4dbfa43edf4eb594b2493246ec9da43b58749

See more details on using hashes here.

File details

Details for the file skilly-0.0.30-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: skilly-0.0.30-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for skilly-0.0.30-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 099a1970475eef3da59ff50819aa9841e55c0cb69abc2e5d43af5ab1f51640b0
MD5 48c971a1783a6693e1e75c1411ef2c40
BLAKE2b-256 88aad0493c1b6f35c73fd249664f11a68c2634c18bed2ad4c3c088f7737e1d4d

See more details on using hashes here.

File details

Details for the file skilly-0.0.30-cp310-abi3-win32.whl.

File metadata

  • Download URL: skilly-0.0.30-cp310-abi3-win32.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for skilly-0.0.30-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 49762206b107fd9ca2b2f11f3ce6fc0573cd692adf768663a3fa4b85086bfc06
MD5 720a3256e7c745355564127e2caaea92
BLAKE2b-256 41b7ec867715ec743aa0f29316fd124bcc7e30c67a73d1d7425d38691e9d7569

See more details on using hashes here.

File details

Details for the file skilly-0.0.30-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: skilly-0.0.30-cp310-abi3-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.10+, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for skilly-0.0.30-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 037fd1e58d2b8291abfa6fe0615110567a848b588dd8e552e38de59c263bb408
MD5 7f081811a3c88c3b2d0ad87f723f2313
BLAKE2b-256 9e6f66554b86407c27c3b779e285d709422e02a6d0267ec210beadff7ce981b2

See more details on using hashes here.

File details

Details for the file skilly-0.0.30-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: skilly-0.0.30-cp310-abi3-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.10+, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for skilly-0.0.30-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c19cee8eee77f8ed9a05321dbe7c7466b50935b3e9ecbaca65190dc9088ee7f3
MD5 51d2b8f73299734fcc73fea1f759baf4
BLAKE2b-256 64f030ae2f1fe53c1d7be98716020e71bc29de3dc6d9acc5576df172df460a01

See more details on using hashes here.

File details

Details for the file skilly-0.0.30-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: skilly-0.0.30-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for skilly-0.0.30-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e8037e01e1e78e0b4508d69200bb92631b0eef31379e34b1a04e7b38160ed03c
MD5 915517c3ee3d17245fee17d4270de57a
BLAKE2b-256 b75f1292373c7ad2504556520ee0d762145c7ac96e9eb5243615869845b4a743

See more details on using hashes here.

File details

Details for the file skilly-0.0.30-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: skilly-0.0.30-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for skilly-0.0.30-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2913b8ab0c71d6460a324f4888441a74b446120ce1025979dbdf47cf2aaa5b64
MD5 5bca1f84ed7ca080de9d8abbf8ab580e
BLAKE2b-256 37c13d172aa5d7710d35dfff99ac06ef93b426c65cd364bc9046bbbe06fe631a

See more details on using hashes here.

File details

Details for the file skilly-0.0.30-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: skilly-0.0.30-cp310-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.10+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for skilly-0.0.30-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 266efea00dbc6f0ddf973685d1c79448165397372ab2c83f876f3c4b630a90a1
MD5 309af99a02662fa48d27e1a861746ba4
BLAKE2b-256 a03f565c73ce1896bf9b24111d528131e2a4ebc191a1a4571326ac308e920cf1

See more details on using hashes here.

File details

Details for the file skilly-0.0.30-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: skilly-0.0.30-cp310-abi3-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10+, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","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

Hashes for skilly-0.0.30-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 94dfc1584d2a484bc68ebb51491dcac80b00de6ec2632e1a5f44bfba81cbd47f
MD5 66d0769a359424334bb9ff04fb92205d
BLAKE2b-256 70039fb8184d75f6b101b541c5fa0984be01b5802083f4ca340960a7e808381a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page