Skip to main content

skill

AI Agent Skill Search and Management

Manage Agent Skills (SKILL.md files) across multiple AI coding agents — Claude Code, Cursor, GitHub Copilot, Windsurf, and more.

Install

pip install skill

Quick Start

from skill import search, create, install, validate

# Create a skill locally
skill = create("my-skill", description="My custom coding rules")

# Validate it
issues = validate("/path/to/skill-dir")

# Search for skills
results = search("react best practices", local_only=True)

# Install to an agent target
install("_local/my-skill", agent_targets=["claude-code"], scope="project")

If a project ships skills (in .claude/skills/, {pkg}/data/skills/, or a dedicated folder), you can symlink them all into your agent's skills directory in one shot:

from skill import link_skills

# Point at a project root — it finds the skills automatically
link_skills("/path/to/my-project")

# Or point at the skills folder directly
link_skills("/path/to/my-project/my_pkg/data/skills")

# Symlink into a specific target instead of ~/.claude/skills
link_skills("/path/to/my-project", target="/other/project/.claude/skills")

Each skill is validated before linking — invalid skills are skipped with a warning. The target directory is also checked to ensure it's a recognized skills directory.

CLI

skill create my-skill --description "My custom coding rules"
skill search "react best practices" --local-only
skill validate ./my-skill/
skill list-skills
skill install _local/my-skill --agent-targets claude-code
skill link-skills /path/to/project
skill link-skills /path/to/project --target ~/.claude/skills --force

Shell completion

Enable tab completion for all skill commands:

skill install-completion

This detects your shell (bash/zsh) and adds the registration line to your shell config (~/.bashrc or ~/.zshrc). Restart your shell or source the config file to activate.

If you prefer to set it up manually:

# Add to your shell config:
eval "$(register-python-argcomplete skill)"

The first time you run any skill command without completion set up, you'll see a one-time hint reminding you to run skill install-completion.

Skills

This package ships agent skills you can install into any agent host with gh skill (don't have it? install gh):

gh skill install thorwhalen/skill skill-package-setup --agent claude-code
gh skill install thorwhalen/skill skill-build
gh skill install thorwhalen/skill skill-enable
gh skill install thorwhalen/skill skill-docs
gh skill install thorwhalen/skill skill-manage
gh skill install thorwhalen/skill skill-sync
Skill Use it when…
skill-manage searching, listing, inspecting, or installing/uninstalling skills across agents
skill-enable shipping a package's skills via pip install and deciding which to ship
skill-package-setup deciding where a package's skills live and making them gh skill-installable (maintainer)
skill-build authoring skills for a package by analyzing its code, tests, and docs (developer)
skill-docs documenting a project's skills in its README (developer)
skill-sync keeping skills in sync with the source code they document (developer)

These are dev/maintainer skills, so they're not bundled in the wheel — install them with gh skill as above. See skill-package-setup for the layout policy this repo follows (real files in skills/, relative symlinks in .claude/skills/).

Packages can also install their own GitHub-published skills programmatically via skill.install_from_github(repo, names, agent='claude-code'), a thin wrapper over the gh skill CLI.

Plugin System

skill has a registry-based plugin architecture with four extension points:

Registry What it holds Import
Agent targets Where agents expect skills installed from skill.install import agent_targets
Translators SKILL.md → target format converters from skill.translate import translators
Backends Remote skill sources for search from skill.search import backends
Validators Pluggable validation rules from skill.create import validators

Register at runtime:

from skill.install import agent_targets, AgentTarget

agent_targets.register(
    "windsurf",
    AgentTarget(
        name="windsurf",
        project_path="{project}/.windsurf/rules/{name}.md",
        format="skill.md",
    ),
)

Or via entry points in your pyproject.toml:

[project.entry-points."skill.agent_targets"]
windsurf = "my_package:windsurf_target"

See Plugin System Documentation for full details on contracts, interfaces, and built-in registrations.

Metadata

Release files for skill 0.1.15

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for skill 0.1.15
File Size Uploaded
skill-0.1.15.tar.gz 157.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for skill 0.1.15
File Interpreter ABI Platform
skill-0.1.15-py3-none-any.whl Python 3 none any Details

Total release size: 201.6 kB

Release files / skill-0.1.15.tar.gz

Download URL skill-0.1.15.tar.gz
Size 157.9 kB
Tags Source
SHA-256 checksum
How to use checksums
bd0c65eea3a07a39845d81eb556f9c46f6b57ff8f9afe7ccb9b1aad372009b0c
BLAKE2b-256 checksum
How to use checksums
810f63667c12073e85da5ad0f95104962732500b983217354f49ff1a6f447055
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / skill-0.1.15-py3-none-any.whl

Download URL skill-0.1.15-py3-none-any.whl
Size 43.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
da5aa71e19339cf3020bd7f586193a90c1cf85248cd6e341b6d9b9148c548feb
BLAKE2b-256 checksum
How to use checksums
53b0f993a91d0f2c64f6cab400a629f4db1334a3654d2e59b09ab0d22a149f37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.15 This release

2 release files

0.1.14

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page