A collection of python-tool-skills — plus the creator skill that makes building new ones fast.
A python-tool-skill is an AI agent tool in the form of a skill. It bundles a Python CLI tool in its assets/ directory. The CLI is built with Click and executed at runtime via uvx, so:
- No
venv/, no__pycache__, no.pycfiles pollute the skill directory - No persistent server process to manage (unlike MCP tools)
- Dependencies are pinned via a committed
uv.lock— reproducible and offline-capable after first run
my-skill/
├── SKILL.md ← trigger description + agent instructions
└── assets/
├── tool.py ← Click CLI (entry point)
├── pyproject.toml
└── uv.lock
The agent runs the tool with:
uvx --from /path/to/skill/assets my-skill <command> [options]The original prototype skill. Provides F1 race calendar and session schedule data via the OpenF1 API.
| Command | Description |
|---|---|
f1 races |
List all races for the current year (or --year YYYY) |
f1 race <round> |
Show session schedule for a specific round number |
A meta-skill: load it and ask the agent to build a new python-tool-skill. It bundles a scaffolding script and a reference document that guide the agent through the full creation workflow.
What it does:
- Runs
scripts/init_python_tool_skill.pyto generate the directory skeleton - Implements
assets/tool.pywith the requested Click commands - Updates
assets/pyproject.tomlwith dependencies - Locks dependencies with
uv lock - Tests the tool via
uvx - Fills in
SKILL.mdwith an accurate description and command table
# Scaffold a new skill manually
python python-tool-skill-creator/scripts/init_python_tool_skill.py <skill-name> --path <output-dir>Created by python-tool-skill-creator. Provides weather data via the Open-Meteo API — free, no API key required.
| Command | Description |
|---|---|
weather current LOCATION |
Current temperature, conditions, humidity, and wind |
weather forecast LOCATION [--days N] |
Daily forecast table (1–16 days, default 7) |
python-tool-skill-creator/
├── f1/ ← prototype skill
├── weather/ ← skill created by the creator skill
└── python-tool-skill-creator/ ← the creator skill itself
├── assets/template/ ← tool.py + pyproject.toml templates
├── scripts/ ← init_python_tool_skill.py scaffolder
├── references/pattern.md ← full pattern specification
└── SKILL.md
Load python-tool-skill-creator as a skill and prompt:
"Create a python-tool-skill for <your domain>"
The agent will scaffold, implement, lock, and test the skill end-to-end.
-
Scaffold the skeleton:
python python-tool-skill-creator/scripts/init_python_tool_skill.py my-skill --path . -
Implement
my-skill/assets/tool.pywith your Click commands. -
Add dependencies to
my-skill/assets/pyproject.tomlif needed. -
Lock:
cd my-skill/assets && uv lock
-
Test:
uvx --from my-skill/assets my-skill --help uvx --from my-skill/assets my-skill <command>
-
Fill in
my-skill/SKILL.md— thedescriptionfield controls when the agent triggers the skill.
After any edit to tool.py or dependencies, add --reinstall to force uvx to rebuild its cache:
uvx --from my-skill/assets --reinstall my-skill <command>| Concern | MCP tool | Python-tool-skill |
|---|---|---|
| Runtime | Persistent server process | Ephemeral uvx invocation |
| Setup | Server config in client | uvx --from assets/ |
| Environment isolation | User-managed venv/container | uvx-managed, automatic |
| Repo pollution | Optional | None — no venv, no .pyc |
| Offline use | Depends on server | Works after first cache population |
| Dependency pinning | Server-side | uv.lock committed in skill assets |
- uv (
curl -LsSf https://astral.sh/uv/install.sh | sh)