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, Python, or Node 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 --help

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.

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 discovers skills shipped by your project's dependencies across two ecosystems:

  • Python — reads pyproject.toml and scans the project's .venv for packages that bundle skills in a skills/ directory.
  • Node — reads package.json (dependencies, devDependencies, optionalDependencies) and scans node_modules/ for packages that bundle skills in a skills/ directory.
uvx skilly scan

Both ecosystems are scanned by default whenever the corresponding manifest and package directory exist. Results are shown with their source (e.g. node:dependencies, python:project) and status (installable, installed, updatable).

Include or exclude specific Python extras and dependency groups:

uvx skilly scan --group dev --group test --exclude-extra docs
uvx skilly scan --no-project-dependencies         # skip [project].dependencies

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_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 ★).
  • Ctrl+S saves; you must have a default directory selected before saving.

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

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_node_modules_skills,
    discover_venv_skills,
)

installed = discover_installed_skills()
python_skills = discover_venv_skills()
node_skills = discover_node_modules_skills()

ProjectSettings accepts a NodeProjectSettings to control node scanning:

from skilly import NodeProjectSettings, ProjectSettings, SkillRepository

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

Set node=None to skip node ecosystem scanning entirely.

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.31.tar.gz (171.9 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.31-cp310-abi3-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

skilly-0.0.31-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.31-cp310-abi3-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

skilly-0.0.31-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.31-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.31-cp310-abi3-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

skilly-0.0.31-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.31.tar.gz.

File metadata

  • Download URL: skilly-0.0.31.tar.gz
  • Upload date:
  • Size: 171.9 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.31.tar.gz
Algorithm Hash digest
SHA256 4305993f06ed67aeaa258460516939d601983a43092bfd9b718d1b85e779bc77
MD5 71a00ec4f7f6c3ac98b4cbdbae0488a4
BLAKE2b-256 4d2413bacdefac172a1cc5e97662118ef9b315ce83e6e71587e15ab56db39888

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.31-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.31-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a5c579177791d3c04b52b27e0dc1dc79c24361286da2f4aa6891dae6dea2efa4
MD5 ea2e10c4ed46de6d0b514bd858d0248e
BLAKE2b-256 b69a152fb4ba4f26f9059a4f13de809d1e4bffea5fb18f44a0928faa551d913b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.31-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.31-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 9487a651793ebe793cdefcdc7418cb9b697b3459e48aa6340bedfd56c06d133c
MD5 75327606c9099b8272ec1869f6031390
BLAKE2b-256 e2b0f90faac6bd6d2b5e8493ada318aab1bb54eedb488cf8d6fa362d819fde30

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.31-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.31-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4a747cc84fac3e6464c7dd027ed81d5e2d51961616747c19686791176dccbb52
MD5 a3667a7a8058d7336a0f5dee1f80cf9a
BLAKE2b-256 b78bb5df533c565d4fe9a847926904747559d7ec6f819f6d406d2abbe1a794e3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.31-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.31-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f84df5f1bd8e42a338d217ba816f4f6c496eb15a24c12887f89e7bd8c6c45f42
MD5 a716bd7b2cc6770a556b443d00a199ec
BLAKE2b-256 f09587a78687b7cd064df103b9b55e698b84ea6da87135788581acfa02d5350e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.31-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.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.31-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a0da9ad6a11809a5cbb63371302af341bc43578b8808431417566538a805568e
MD5 f64ca0b521efd9e760102a12eecc7207
BLAKE2b-256 e471b42192da2f10aad9b36431f5ca722903fbc174af68e7dede9dbe514ac74a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.31-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.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.31-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eb80421dc179549896dea749f1399bb93dbd143f792b09469a72ab9f149b1162
MD5 3735c6636c294e14b5928231b9d614c6
BLAKE2b-256 05adffdf541451b930e9e462102444ca860160e756637b6352851afd4d44b459

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.31-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.31-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a7443296f93452dd5bb7e727604efb1c0d0a7ae410c0d487d73074430e5bcd4b
MD5 9c6d21bbfd4d87d91b688b564cf7ad73
BLAKE2b-256 f111dfc735160552fd8bc577ea91c979b4093f1b481db896a01c095416c6c2f3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.31-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.31-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 28a30eb814249590c3f23414e12f07d3cb8a0daa268f856cce632b46e457ecb6
MD5 455736b7169fc79623530f18820c85d5
BLAKE2b-256 d47881ec4cd93c2e40c38435eb157608aa336cd4ca9be4f6dc516ddb2e1914d2

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