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. Creates specification-compliant skills, installs from GitHub or dependencies, and keeps them up to date.

Installation

uvx skilly --help               # Python (uvx/pip)
npx @xelandernt/skilly --help   # Node (npx)
brew install xelandernt/skilly/skilly  # Homebrew

Python

uvx skilly --help

Ships CLI + Python import surface. Pre-built wheels for Linux x64, macOS arm64/x64, Windows x64.

Node

npx @xelandernt/skilly --help

Ships native Rust CLI (macOS arm64/x64, Linux x64 glibc, Windows x64). No Python import surface.

Homebrew

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

Ships native Rust CLI (macOS arm64/x64, Linux x64).

Info

See the installation guide for a full capability comparison.

Quick Start

skilly create deployment-checks \
  --description "Validate deployment readiness." \
  --instructions "# Instructions\n\nRun the deployment checklist." \
  --yes
skilly list

CLI Commands

Command Purpose
scan Find skills provided by Python and Node project 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. Run skilly --version to print the installed package version.

Create Skills

See creating skills.

Install Dependency Skills

See dependency scanning.

Install GitHub Skills

See installing and managing.

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_DEFAULT_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_DEFAULT_DIRECTORY="$HOME/.config/skilly/skills"

--directory overrides all other destination options and SKILLY_DEFAULT_DIRECTORY.

Configure Destinations

skilly configure lets you choose which directories skilly should manage and which one opens by default. Interactive terminals open a two-tab TUI (Global / Local) showing all known agent directories as toggleable checkboxes (agents, claude, codex, copilot). 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

In the TUI:

  • Space toggles a known directory on or off, or removes a custom one.
  • Enter sets the highlighted directory as the default (marked with a star).
  • Ctrl+S saves; you must have a default directory selected before saving.

Skill-selection menus support / to filter by skill name. Press /, type a substring, and the list narrows to matching items. Backspace edits the filter, Esc clears it.

Add or remove custom directories via CLI:

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

Configuration is stored in ~/.skilly.toml:

default_directory = ".agents/skills"

[global]
directories = ["~/.agents/skills", "/opt/skills"]

[local]
directories = [".agents/skills", ".project/skills"]

The default directory opens first in interactive menus (list, scan, etc.).

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

Full Python API reference with SkillRepository, discovery functions, source types, SkillsMP client, and custom filesystem protocol.

from pathlib import Path
from skilly import (
    ProjectSettings,
    PythonSource,
    Skill,
    SkillRepository,
)

repository = SkillRepository(
    directory=Path(".agents/skills"),
    project=ProjectSettings(
        sources=(
            PythonSource(
                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 (
    NodeSource,
    PythonSource,
    discover_installed_skills,
    discover_package_source_skills,
)

installed = discover_installed_skills()
python_skills = discover_package_source_skills(PythonSource())
node_skills = discover_package_source_skills(NodeSource())

ProjectSettings accepts PythonSource, NodeSource, and MavenSource:

from skilly import (
    MavenSource,
    NodeSource,
    ProjectSettings,
    PythonSource,
    SkillRepository,
)

repository = SkillRepository(
    directory=Path(".agents/skills"),
    project=ProjectSettings(
        sources=(
            NodeSource(
                include_dependencies=True,
                include_dev_dependencies=False,
            ),
        ),
    ),
)

Use ProjectSettings(sources=()) to disable scanning, or pass individual PackageSource entries to scan only specific ecosystems. SkillRepository() defaults to Python, Node, and Maven sources.

Maven support

Maven skills are discovered from JAR artifacts in the local Maven repository (~/.m2/repository by default). The scanner:

  • Reads only direct <dependencies> from pom.xml — profiles, plugins, and <dependencyManagement> are ignored.
  • Resolves ${property} references defined in the same file's <properties> block.
  • Loads skills from recognized archive layouts: .agents/skills/<name>/SKILL.md and skills/<name>/SKILL.md.
  • Preserves binary resources inside JARs.
  • Rejects coordinates with path traversal components.

Known limitations:

  • Only the local repository is used; no remote artifact resolution.
  • No POM inheritance or effective-model merging.
  • No Gradle build file support.
  • Build execution and dependency graph traversal are not performed.
  • Scopes are controlled via include_*_scope flags (default: compile, runtime, and test; provided and system are excluded).

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
just lint
just test
just typecheck

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.32.tar.gz (212.7 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.32-cp310-abi3-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.10+Windows x86-64

skilly-0.0.32-cp310-abi3-win32.whl (2.0 MB view details)

Uploaded CPython 3.10+Windows x86

skilly-0.0.32-cp310-abi3-musllinux_1_2_x86_64.whl (2.7 MB view details)

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

skilly-0.0.32-cp310-abi3-musllinux_1_2_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

skilly-0.0.32-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB view details)

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

skilly-0.0.32-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

skilly-0.0.32-cp310-abi3-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

skilly-0.0.32-cp310-abi3-macosx_10_12_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: skilly-0.0.32.tar.gz
  • Upload date:
  • Size: 212.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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.32.tar.gz
Algorithm Hash digest
SHA256 0dfcd320fda021fbf58becfb7a1b73c59d4cbd89962ba0a1d021f373f48131b7
MD5 672b1e19556c8986943e174878c3347f
BLAKE2b-256 1e4bf17af4bef1f650f26de663cc7d39a82caae6585353b0e9472423d02cfb58

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.32-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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.32-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 986b661f490d02f3316c15429d61c041b75b19aaf4220c7ba290272ffa92fc55
MD5 dbb985c21555b1545b4a009e6eab4ee2
BLAKE2b-256 b820cb14c9e781cd670d8ad0b53fe608fe34343b6c7b7f4126b17ff4edd8d757

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.32-cp310-abi3-win32.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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.32-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 fb48c819d14291a6fdcd630493200e411e7d43e2eacfe8fdaa618b1996a5e14f
MD5 2f766cda40ddf89af660f96600ea23c5
BLAKE2b-256 83fa88b5ed71f45b43dc38f76fba210374ef88ca5d845977896fa605dade6eb3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.32-cp310-abi3-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.10+, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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.32-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 876720db8d41cb9c0ef3d922403d95490f24197df0a8109f89b4d6845c8e3d97
MD5 9cb4ae78ec7faf9495c75773debc5dd4
BLAKE2b-256 9a4c42aa3f48e97b56605412b9b9b3e1c1afffe10884e670087ef8077d248bed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.32-cp310-abi3-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.10+, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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.32-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0234ebce0137c50cc887b0ba4d23f36b8d2fa9bd0fa99f6afa5800306d22d077
MD5 e1dcf09eee986f374ab18728b57bc1af
BLAKE2b-256 786d06ce3c227962537845ed757ccfeb90dac65abcd381c1628f93aad986d718

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.32-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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.32-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bbf2548f67c31259d49d8a0e210091363635d70702f038856f00e77a60b43785
MD5 149eff0bd85c667369f1f82970c113a8
BLAKE2b-256 7ca3aa9e6455936fb2932c9febeb6693b041c6ae085997dcd05450b5a0ef4be3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.32-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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.32-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 65487efcef96e84e2a13aa45f810be715d15c02ac9f909a17fdeb8d15c99b7ab
MD5 00049f01faa91e0b528668dea8578010
BLAKE2b-256 3d1bad3e90ad87cc3afa85d1ca0293bd33005ec97bba80d3e5cff10fce35c104

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.32-cp310-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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.32-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 171b9196d848ede5b15087497fd204ae20fa9f133108b7640f22cc0aad53d872
MD5 8a63d2fd1631a9d65c84e4ad9b374d2f
BLAKE2b-256 b98d60b95a83ed61ad3176a27cc17b0da9adb13f02458d318b0c57ba6e406a62

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.32-cp310-abi3-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.10+, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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.32-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 37f19de1cfa195341f0dcc3e529cd61091c5be48fa7f410a98acf0ddb1288129
MD5 fb6805cde7d3ea624e572ae1ea6c2277
BLAKE2b-256 aa5780c95e0825b5bf80e984537225493be2889f20e433963dcaa289645ff7e0

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