SkillLib
21,516 leading agent skills, ready to search.
SkillLib collects public repositories of Anthropic-compatible (Claude) and OpenAI-compatible (Codex) skills, keeps one skill to follow for each overlapping name, and lets an agent find and load a procedure without putting the library in the prompt.
MIT · Python 3.11+ · no third-party dependencies
Install
Python 3.11 or newer. SkillLib has no runtime dependencies.
Download the package from pypi.org/project/skilllib.
python -m pip install skilllib
That install provides the library and the skilllib command. The skill catalog is the catalog/ directory in the git repository. Commands and the Python functions read that directory from the current working directory, so a search runs from a checkout:
git clone https://github.com/DistriAI/SkillLib.git
cd SkillLib
skilllib find "Run GSEA on a ranked gene list"
To work on the library itself, install the checkout in place with python -m pip install -e .. To use the checkout without installing it:
export PYTHONPATH=src
python -m skilllib find "Run GSEA on a ranked gene list"
search, add, and update call GitHub. visit checks a repository out with git. Judging a new overlap with a model uses the OpenAI-compatible endpoint in catalog/judge_config.json (SKILLLIB_LLM_BASE_URL, SKILLLIB_LLM_MODEL, and SKILLLIB_LLM_API_KEY override it). update --judge heuristic judges from the repository metadata alone.
The library
The catalog is the public skill-content repositories with more than 1,000 GitHub stars, indexed on 16 October 2026. A match is a repository full of task skills (SKILL.md), or a curated collection that points at those repositories. Skill specifications, skill SDKs, and agent products are left out.
| 32,977 | skill files in the source repositories |
| 21,516 | leading skills an agent can be offered |
| 179 | skill repositories, and 15 collections |
| 13 | domains, 13,320 scenarios |
| 389 | task families, 964 product channels |
| 8,902 | duplicate copies kept as variants, not as peers |
A separate skill is the only copy of that name. An authentic skill is the copy to follow when several copies agree. A combined skill is what remains when the copies disagree: the conflict note says how to proceed, and each peer keeps its repository and path.
Use it
The integration is three calls.
from skilllib import find_skills, load_skill
found = find_skills("Run GSEA on a ranked gene list")
skill = load_skill(found["cards"][0]["id"])
skilllib find "Run GSEA on a ranked gene list"
skilllib load combined::gsea
skilllib prompt --working-set catalog/working_set.example.json
find_skills returns a few cards for the task: name, description, when to use the skill, when not to, and where it came from. load_skill returns the procedure. render_prompt writes the standing prompt for those Python function names: one sentence for each of the 13 domains, an instruction to search before deciding that no skill applies, and a cap of three loaded bodies.
Integrating an agent
An agent runtime takes the prompt and the tool descriptions from skilllib.integrate: tool_specs(), resident_prompt(), task_instruction(), and call_tool(). Register the specs under the names they already carry (skill_library_find, skill_library_load, skill_library_visit), append resident_prompt() to the system prompt, and return call_tool(name, arguments, root=checkout) to the model. The field reference is docs/interface.md.
An agent that already has skill_view (Hermes) or the equivalent Claude or Codex skill loader should keep it. That tool opens a skill installed on the machine, including its scripts and references. SkillLib answers the prior question, at a size those lists are not built for: which skill from the library is worth installing. load_skill can show the cached text before that install. When the skill names bundled files that are not checked out, the tool result names the repository to visit instead of pretending the procedure can run.
On a hand-labeled set of 40 tasks, the finder returned the expected skill for 36.
Shelves
Pass a domain to search one shelf: find_skills(task, domain="science").
| Domain | Scenarios | Skills |
|---|---|---|
| research | 1,527 | 4,997 |
| science | 1,609 | 2,446 |
| software-engineering | 1,690 | 2,146 |
| business | 1,539 | 2,134 |
| security | 1,418 | 1,787 |
| agent-tooling | 882 | 1,478 |
| marketing | 957 | 1,347 |
| devops | 928 | 1,106 |
| general | 638 | 1,020 |
| data | 683 | 889 |
| design | 594 | 872 |
| media | 423 | 671 |
| documents | 432 | 623 |
Regenerate the local shelf with python -m skilllib browse. Open html/index.html. The web homepage is distriai.github.io/SkillLib.
Grow the catalog
New repositories merge in. A later search does not throw away the 1,000-star collection.
python -m skilllib add owner/name
python -m skilllib update
python -m skilllib search --min-stars 500 --merge
update judges a name again only when a copy joins it, leaves it, or a stored skill file changes. Rebuild the task families when you want the shelves collapsed again. That is a separate command, because re-collapsing every domain on each added repository is expensive:
python -m skilllib families --name-with heuristic
Commands
Run these from the repository root as skilllib <command>, or as python -m skilllib <command>. Full arguments are in docs/interface.md. The stage log for the first catalog is in docs/history.md.
| Command | What it does |
|---|---|
search |
Find skill repositories on GitHub. --merge keeps the ones already stored. |
add owner/name |
Inspect one repository and merge it into the catalog. |
list |
Print the saved catalog. |
update |
Index skills added or edited since the last update. |
find "..." |
Return a few routing cards for a task. |
load <id> |
Print the cached procedure for one card. |
prompt |
Write the standing prompt fragment. |
families |
Collapse the current cards into families again. |
browse |
Write the HTML shelf under html/. |
visit owner/name |
Check out one repository as a submodule. |
screen, download, index, cards, enrich, and link run a single stage. download --leaders fetches the skill file behind every leading skill, including a name that occurs once. update runs the stages that a new repository needs.
License
This project is MIT licensed. Skill files collected from other repositories keep the license recorded for each repository in the catalog.
Metadata
Release files for skilllib 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| skilllib-0.1.1.tar.gz | 80.9 kB | Without provenance | Details for skilllib-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| skilllib-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for skilllib-0.1.1-py3-none-any.whl |
Total release size: 175.1 kB
Release files / skilllib-0.1.1.tar.gz
| Download URL | skilllib-0.1.1.tar.gz |
|---|---|
| Size | 80.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8964caf86cdaca7ece52472ab89d9bc801f9257fe2f7e18aa93afaf0a5f6ef04
|
|
BLAKE2b-256 checksum How to use checksums |
3818b9b885a048a6c6df9d97c8d4221f42d3fbabffc46bdcf5ed058d8b440882
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / skilllib-0.1.1-py3-none-any.whl
| Download URL | skilllib-0.1.1-py3-none-any.whl |
|---|---|
| Size | 94.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
22eca0e36ec9f5fe228243f54d2c6a169ffa6633cf75d7f778d23b8a238cc0e7
|
|
BLAKE2b-256 checksum How to use checksums |
2ffd62b11df013a03e0e77386c570cef67e7ab220e7c406c1a6a7ba85e5adf24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for skilllib 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.