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')

Link skills from a 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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skill-0.1.12.tar.gz (157.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skill-0.1.12-py3-none-any.whl (43.7 kB view details)

Uploaded Python 3

File details

Details for the file skill-0.1.12.tar.gz.

File metadata

  • Download URL: skill-0.1.12.tar.gz
  • Upload date:
  • Size: 157.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","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}

File hashes

Hashes for skill-0.1.12.tar.gz
Algorithm Hash digest
SHA256 19e1a0b6ec78a02cd384135c63732fe573552ae97710d6f2111dded58833f6cd
MD5 b1110afec1e1fe53b4318c5a9c61b84b
BLAKE2b-256 ff306dcf2b6fb237c097ef5e5913a5c102bf9810d61b97adc87e2070a31ebd7b

See more details on using hashes here.

File details

Details for the file skill-0.1.12-py3-none-any.whl.

File metadata

  • Download URL: skill-0.1.12-py3-none-any.whl
  • Upload date:
  • Size: 43.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","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}

File hashes

Hashes for skill-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 8b629708032b46bf0cd73885d03c3183301c0233294d79962545f40709b51208
MD5 103adfae2452caf90be4a8b6a23001e1
BLAKE2b-256 c23570dd77a4429b0667801b6d168c3005b6eafd89e665c63b13995a927abaf4

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.12 This release

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

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

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