Skip to main content

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, Bitbucket Cloud, Bitbucket Data Center, 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 <repository-url> Install one or more skills from a supported repository
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 directory
configure Manage directories and repository credentials

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 Repository 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.

Configuration

skilly configure manages directories and saved repository credentials.

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

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.). When viewing a skill's files, press / to filter by filename and Esc to clear the filter.

Repository Authentication

For download, list, and update, Skilly resolves credentials in this order:

  1. --token <TOKEN> for a one-off command.
  2. A saved provider credential with the exact provider and base URL.
  3. A provider environment variable.
Provider Environment fallback Saved base URL example
GitHub SKILLY_GITHUB_TOKEN, GITHUB_TOKEN, GH_TOKEN https://github.com
Bitbucket Cloud SKILLY_BITBUCKET_CLOUD_TOKEN https://bitbucket.org
Bitbucket Data Center SKILLY_BITBUCKET_DATA_CENTER_TOKEN https://git.example.com/bitbucket

Save a reusable credential with skilly configure, or use the non-interactive command:

skilly configure --add-provider bitbucket-data-center \
  --provider-url https://git.example.com/bitbucket \
  --provider-token "$BITBUCKET_TOKEN"

Saved tokens are redacted from skilly configure --show, never written to installed skill metadata, and stored in ~/.skilly.toml; on Unix that file is owner-only. Remove a saved credential with:

skilly configure --remove-provider bitbucket-data-center \
  --provider-url https://git.example.com/bitbucket

Use --provider bitbucket-data-center for Bitbucket Data Center repositories:

uvx skilly download https://git.example.com/bitbucket/projects/ENG/repos/skills \
  --provider bitbucket-data-center --token "$SKILLY_BITBUCKET_DATA_CENTER_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 pathlib import Path

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.
  • MavenSource includes compile, runtime, and test scopes by default; provided and system scopes 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

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

Uploaded CPython 3.10+Windows x86-64

skilly-0.0.33-cp310-abi3-win32.whl (2.1 MB view details)

Uploaded CPython 3.10+Windows x86

skilly-0.0.33-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.33-cp310-abi3-musllinux_1_2_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

skilly-0.0.33-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB view details)

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

skilly-0.0.33-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.10+macOS 11.0+ ARM64

skilly-0.0.33-cp310-abi3-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: skilly-0.0.33.tar.gz
  • Upload date:
  • Size: 212.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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.33.tar.gz
Algorithm Hash digest
SHA256 bb441c5c7d98e7401df373cdbd9bd32ce24d6a5162baafdd35d2d6527a68c4a3
MD5 1100923b5992f41561c82030264396f4
BLAKE2b-256 ac377265189dea66fad1ed5ab89ff841d558a8103f147f0e854cec0c30654974

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.33-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.28 {"installer":{"name":"uv","version":"0.11.28","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.33-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 37dcb6c828036c3aa95547c1613ce31c75d5c7be95ecc67462c4046b357e788f
MD5 29aa79faafd925c0241b22dc41194802
BLAKE2b-256 a53085eb31773d042d9f7802d0367fd4cde8994d2e8d35d32ff0a54fec569cef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.33-cp310-abi3-win32.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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.33-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 a8ce07a7ce14a575574167cd3f255dce52c1685e19c688bea3a61652d89bb1df
MD5 d1e2068e76815441ff644a2003a8b386
BLAKE2b-256 7eb70666535b347b34482084a589bfb1734a61cc0891ffc832d16cd0dd55d109

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.33-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.28 {"installer":{"name":"uv","version":"0.11.28","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.33-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ab1c62060dc8737667852fcf202a07e3b0c423c5b8de4c79ab03af39337b8445
MD5 1a46f1db4418e65f88911a10e1bdf3bb
BLAKE2b-256 be4708719a0cebfe938637286717112b0fe37d17536556dfdad7b0f21c9cf2eb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.33-cp310-abi3-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.10+, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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.33-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7f22c2f99dc318d8862414fe57923cf08f4da0a53c7379979338415f8a6ee5f6
MD5 a4c7a3e235c6e513de3480fe3f35237e
BLAKE2b-256 6faea9feb9545eb6b311fefa19b4450bce4435d921943199ae08c02d6f253e73

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.33-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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.33-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 74c9a6b66e23c0f8eb38bdb42b34e7721c4bd89e26dd933729e9b020a73ba54d
MD5 5c258fea8ca51e0718ff0a8a412e71e8
BLAKE2b-256 bb3b2b90e3d6e0fca54893dc92005c644246199775ca85ac000b244eab8d7e46

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.33-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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.33-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c16e7b4669816d885dc12e1c442ffc9612b882ac28f05e5e97827e359a313f89
MD5 1f38fa5ffcdaef96b08a1069bada639f
BLAKE2b-256 0ff3dbc66ccb404a9a13af2b40c22173bb2386c6e4128eced292b76d4831cb82

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.33-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.28 {"installer":{"name":"uv","version":"0.11.28","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.33-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 136ddaf742470b36f40101e278efa276a17a505d21a1d89e788a821951cfa798
MD5 7cacac36e8c00546a7f285acb9aa0c17
BLAKE2b-256 cab3395675167dc5f1bbcb915c797446aa5ae616b1b7e802e175e7d8a1ca8837

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.33-cp310-abi3-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.10+, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","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.33-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 016d0425833a6a5eaef6fcde48b441f4590a8b0991e0ab9da1aa51e829d43819
MD5 95333705894596926208c144fbe38639
BLAKE2b-256 a092aee57d3acdd41d252b099e7c86067a508afde9b458a9ad2eacc96aca2ba6

See more details on using hashes here.

Release history Release notifications | RSS feed

0.0.37

9 files

0.0.36

9 files

0.0.35

9 files

0.0.34

9 files

This release

0.0.33 This release

9 files

0.0.32

9 files

0.0.31

9 files

0.0.30

9 files

0.0.29

9 files

0.0.28

9 files

0.0.27

9 files

0.0.26

9 files

0.0.25

9 files

0.0.24

9 files

0.0.23

9 files

0.0.21

9 files

0.0.20

9 files

0.0.19

9 files

0.0.18

9 files

0.0.17

9 files

0.0.16

9 files

0.0.15

9 files

0.0.14

9 files

0.0.10

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

Supported by

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