Agent skill
uv-scripts
Use when running or authoring standalone Python scripts with uv, especially when choosing Python versions, adding one-off dependencies, using no-project mode, or embedding inline script metadata.
Install this agent skill to your Project
npx add-skill https://github.com/narumiruna/agent-skills/tree/main/skills/uv-scripts
SKILL.md
UV Scripts
Overview
Use uv run to execute standalone scripts with automatic dependency management. Prefer inline metadata for self-contained scripts and --no-project when you are inside a project but do not need project code.
Quick Reference
| Need | Command |
|---|---|
| Run a script | uv run script.py |
| Run module | uv run -m http.server 8000 |
| Run from stdin | uv run - |
| Here-doc | uv run - <<EOF ... EOF |
| Skip project install | uv run --no-project script.py |
| One-off deps | uv run --with requests --with rich script.py |
| Pick Python | uv run --python 3.12 script.py |
| Init script metadata | uv init --script script.py --python 3.12 |
| Add script deps | uv add --script script.py requests rich |
| Lock script deps | uv lock --script script.py |
Running a Script Without Dependencies
uv run example.py
uv run example.py arg1 arg2
Run a module:
uv run -m http.server 8000
uv run -m pytest
Read from stdin:
echo 'print("hello")' | uv run -
Here-doc:
uv run - <<EOF
print("hello")
EOF
Project vs. No-Project Mode
- In a project (directory with
pyproject.toml),uv runinstalls the project first. - If the script does not need project code, use
--no-projectto skip installation. - The
--no-projectflag must be before the script name.
uv run --no-project example.py
If you use inline script metadata, project dependencies are ignored automatically and --no-project is not required.
Running a Script With Dependencies
Use --with to add per-invocation dependencies:
uv run --with rich example.py
uv run --with 'rich>12,<13' example.py
uv run --with rich --with requests example.py
In a project, these dependencies are added on top of project dependencies. Use --no-project to avoid that.
Inline Script Metadata (Recommended)
Initialize inline metadata:
uv init --script example.py --python 3.12
Add dependencies:
uv add --script example.py 'requests<3' 'rich'
Example script:
# /// script
# dependencies = [
# "requests<3",
# "rich",
# ]
# ///
import requests
from rich.pretty import pprint
resp = requests.get("https://peps.python.org/api/peps.json")
data = resp.json()
pprint([(k, v["title"]) for k, v in data.items()][:10])
Notes:
- The
dependenciesfield must be provided even if empty. - Inline metadata ignores project dependencies;
--no-projectis not required.
Specify a Python requirement in metadata:
# /// script
# requires-python = ">=3.12"
# dependencies = []
# ///
uv run will locate (and download if needed) the required Python version.
Shebang for Executable Scripts
#!/usr/bin/env -S uv run --script
print("Hello, world!")
Make executable and run:
chmod +x greet
./greet
Dependencies are supported in this mode via inline metadata.
Locking and Reproducibility
Lock dependencies for a script:
uv lock --script example.py
This creates example.py.lock next to the script. Subsequent uv run --script, uv add --script, and uv export --script reuse the lock.
To improve reproducibility across time, add exclude-newer:
# /// script
# dependencies = ["requests"]
# [tool.uv]
# exclude-newer = "2023-10-16T00:00:00Z"
# ///
Alternative Package Indexes
uv add --index "https://example.com/simple" --script example.py 'requests<3' 'rich'
This adds tool.uv.index metadata to the script.
Python Version Selection
uv run --python 3.10 example.py
Windows GUI Scripts
On Windows, .pyw scripts run with pythonw:
uv run example.pyw
Dependencies still work, e.g. uv run --with PyQt5 example_pyqt.pyw.
Common Mistakes
- Using
python script.pyafter installing deps manually instead ofuv run. - Forgetting
--no-projectin project directories when you do not need project code. - Placing
--no-projectafter the script name. - Omitting the
# /// scriptmetadata block when you want self-contained scripts. - Assuming inline metadata uses project dependencies (it ignores them).
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
slide-creator
Use when creating slide decks with Marp/Marpit Markdown (marp), including authoring slide content, designing slide color schemes, and building SVG diagrams or illustrations for the deck.
slide-color-design
Use when you only need slide color systems, palette selection, or palette generation workflows and want direct pointers to the color design references.
mermaid-creator
Use when creating or converting Mermaid diagrams (for example flowcharts, sequence diagrams, ER diagrams, and Gantt charts), including exporting to SVG for docs or slides.
test-driven-development
Use when implementing non-trivial code changes that should follow TDD (write a failing test first, make the smallest passing change, then refactor safely).
svg-illustration
Use when you need SVG diagram rules, layout patterns, or embedding guidance for slide decks and want the minimal SVG-focused reading path.
python-cli-typer
Use when building or structuring Python CLI commands with Typer, including commands, options, and multi-command apps.
Didn't find tool you were looking for?