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].repository_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.34.tar.gz (207.3 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.34-cp310-abi3-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

skilly-0.0.34-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.34-cp310-abi3-musllinux_1_2_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

skilly-0.0.34-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.34-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.34-cp310-abi3-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

skilly-0.0.34-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.34.tar.gz.

File metadata

  • Download URL: skilly-0.0.34.tar.gz
  • Upload date:
  • Size: 207.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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.34.tar.gz
Algorithm Hash digest
SHA256 9e0b4f7449c2347a9bb135468da8974547b5329117d3854d314c24945230ee44
MD5 152b8ccf3e16e811686fb895ec85f60f
BLAKE2b-256 c4ac3967675db1119881092645068c91bb333b77dab43e4dfa2e16fe79ae89b2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.34-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.29 {"installer":{"name":"uv","version":"0.11.29","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.34-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 426d499b7095c64abc294345838b4f307431ca90b2a010cb9d674d98d890b2db
MD5 0cd85b34c3bcf28ce3ec7b808f4d2ae2
BLAKE2b-256 becf10a73d41defc72dc73db5b6f138041b090d4e41bbcc56b31d24626be04f4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.34-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.29 {"installer":{"name":"uv","version":"0.11.29","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.34-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 c1a266034c9f850c337042ba2ea492f45b4afb34317e88253d8221f16c24d831
MD5 fd7e535afc5e61df496935b102447249
BLAKE2b-256 430549164758bba2da1149e411061e4a865ddf04f4356ae74b4320e84f1a3186

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.34-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.29 {"installer":{"name":"uv","version":"0.11.29","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.34-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6f4189bcf5adef5e53af566fa26f00756386ea3cee9ccff14afe368210edb3c9
MD5 3c8bbe72f420b4d3527b979e1263f40b
BLAKE2b-256 27acff96bc7ea183937f1c52add9e962b31337d2f99f8bf987cb189f45e23624

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.34-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.29 {"installer":{"name":"uv","version":"0.11.29","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.34-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5a6bb39af54501cfe3a9d56b0d8c59347a68f1205761f57897fb8667fb7aa593
MD5 013cc3b17bb47d0542ff27fec482078a
BLAKE2b-256 d1ea5f06c9089001a17186f73576985650a21503ff74e700651d96e503d976e7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.34-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.29 {"installer":{"name":"uv","version":"0.11.29","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.34-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c210c3d8f1df3107a755d1adb50bd324c0f5a889e8e0e780998628f354d77b14
MD5 983bf478eb092c1e0ee32523332b26bc
BLAKE2b-256 2b838e3f6851c8d9e17f0e08dbaf9d58ef527216f29385e23e68815acaab0d8d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.34-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.29 {"installer":{"name":"uv","version":"0.11.29","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.34-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7e04fd4dfd7f16efc449418e1d4ed3488de0baf147419837c91a21d586e00fad
MD5 ea4e97ec5e7e4bf59555bc3c1265a7f3
BLAKE2b-256 b411392740b406891221ffe6e3a9b3c0189d9517cef1f399a39ed91557192c7d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.34-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.29 {"installer":{"name":"uv","version":"0.11.29","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.34-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad283753b1e40de5e4997f16905efb04cf0cdfdd4e969ada7e697268d1d81f96
MD5 758fecb6d9e5c918fcde155c195c7e38
BLAKE2b-256 e73a389b4715e990f60f3b80c3e98d16604d4988c62bb06ee37e7434eefc927b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: skilly-0.0.34-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.29 {"installer":{"name":"uv","version":"0.11.29","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.34-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d7993f1469cc65e6c3504d0257001d8fcc0977750a573311aacda21aec4ff693
MD5 d241bf2f05014d6cae05a3b6ccc8f1d0
BLAKE2b-256 122c233c4e93ff30e1725e2429ce5fc2fe73b4642806a7e28a5fd3da07cf46ee

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

This release

0.0.34 This release

9 files

0.0.33

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