python-tdd-with-uv — скилл для Claude Code: TDD на Python через uv
Ведёт агента по циклу red-green-refactor в Python и настраивает проект на uv. Пригодится, когда пишете тесты до кода.
npx skills add spencerpauly/awesome-cursor-skills --skill python-tdd-with-uv -a claude-codeЧто делает python-tdd-with-uv
Скилл задаёт агенту рабочий порядок: сначала один падающий тест, потом минимальный код, чтобы он прошёл, затем рефакторинг без смены поведения. Больше одного падающего теста за раз писать нельзя — так цикл остаётся коротким. Перед кодом скилл просит ответить на три вопроса: какие интерфейсы меняются, какие поведения важнее, можно ли спроектировать код под тесты через внедрение зависимостей.
Настройка проекта идёт через uv. Скилл проверяет uv --version, при отсутствии pyproject.toml запускает uv init, добавляет pytest и pytest-cov как dev-зависимости и проверяет, что раннер виден: uv run pytest --co. Дальше все команды выполняются через uv run — активировать виртуальное окружение вручную не нужно. В репозиторий советует коммитить и pyproject.toml, и uv.lock.
Моки скилл разрешает только на границах системы: ввод-вывод, сеть, часы. Тесты должны проверять наблюдаемое поведение, а не внутреннее устройство. Если в проекте нет uv, порядок установки зависимостей придётся переписать под свой менеджер — это повод проверить, чем вы управляете окружением.
Какие задачи решает
- настроить Python-проект на uv с pytest и покрытием
- писать тест до реализации, а не после
- держать цикл red-green-refactor коротким
- решить, где в тестах уместны моки
- проверить, что тестовый раннер вообще запускается
Примеры запросов агенту
- Настрой Python-проект на uv и добавь pytest с покрытием
- Напиши падающий тест на эту функцию, потом минимальный код
- Прогони тесты через uv run pytest -x и покажи, что упало
Как установить python-tdd-with-uv
1Через Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill python-tdd-with-uv -a claude-code2Вручную: положить файлы
~/.claude/skills/python-tdd-with-uv/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/python-tdd-with-uv/
1Через Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill python-tdd-with-uv -a codex2Вручную: положить файлы
.agents/skills/python-tdd-with-uv/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill python-tdd-with-uv -a cursor2Вручную: положить файлы
.cursor/skills/python-tdd-with-uv/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install spencerpauly/awesome-cursor-skills python-tdd-with-uv2Вручную: положить файлы
.github/skills/python-tdd-with-uv/SKILL.md1Через Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill python-tdd-with-uv -a gemini-cli2Командой платформы
gemini skills install https://github.com/spencerpauly/awesome-cursor-skills --path resources/python-tdd-with-uvВручную: положить файлы
.devin/skills/python-tdd-with-uv/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add spencerpauly/awesome-cursor-skills --skill python-tdd-with-uv -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о python-tdd-with-uv
Как установить python-tdd-with-uv в Claude?
Выполните npx skills add spencerpauly/awesome-cursor-skills --skill python-tdd-with-uv -a claude-code. Скилл окажется в ~/.claude/skills/python-tdd-with-uv/SKILL.md.
Что делает python-tdd-with-uv?
Задаёт агенту цикл red-green-refactor для Python: один падающий тест, минимальная реализация, рефакторинг. Плюс показывает, как поднять проект на uv с pytest и pytest-cov.
Нужен ли uv, если проект уже настроен иначе?
Скилл построен вокруг uv: проверка версии, uv init, uv add --dev, запуск через uv run. С другим менеджером шаги установки придётся переписать.
Исходный текст
SKILL.md · CC0-1.0
---
name: python-tdd-with-uv
description: Test-driven development in Python using uv as the package manager. Covers the red-green-refactor cycle, vertical slicing, and uv project setup.
user-invocable: true
---
# Python TDD with uv
Write Python code test-first using `uv` for fast dependency and environment management.
## Setting Up the Project
1. Check if `uv` is installed: `uv --version`
2. If the project doesn't have a `pyproject.toml`, initialize:
```bash
uv init
```
3. Add pytest as a dev dependency:
```bash
uv add --dev pytest pytest-cov
```
4. Confirm the test runner works:
```bash
uv run pytest --co
```
## TDD Workflow — Vertical Slicing
Work in small cycles. Never write more than one failing test at a time.
### Planning Phase
Before writing code, answer:
1. What interface changes are needed? (functions, classes, APIs)
2. Which behaviors matter most? (prioritize critical paths)
3. Can we design for testability? (inject dependencies, avoid global state)
### The Cycle
```
RED → Write ONE failing test for the next behavior
GREEN → Write the MINIMUM code to make it pass
REFACTOR → Clean up without changing behavior
REPEAT
```
**Rules:**
- Never write implementation before a failing test exists
- Never write more than one failing test at a time
- Run `uv run pytest` after every change
- Tests must assert observable behavior, not implementation details
- Mocks should only be used at system boundaries (I/O, network, clock)
### Test File Structure
```python
# tests/test_<module>.py
class TestFeatureName:
"""Group related behaviors."""
def test_does_expected_thing_when_given_input(self):
result = function_under_test(input_value)
assert result == expected
def test_raises_when_given_invalid_input(self):
with pytest.raises(ValueError):
function_under_test(bad_input)
```
### Running Tests
```bash
uv run pytest # all tests
uv run pytest tests/test_foo.py # single file
uv run pytest -k "test_name" # by name pattern
uv run pytest --cov=src # with coverage
uv run pytest -x # stop on first failure
```
## uv Essentials
```bash
uv add <package> # add dependency
uv add --dev <package> # add dev dependency
uv remove <package> # remove dependency
uv sync # sync environment from lockfile
uv run <command> # run in managed environment
uv lock # regenerate lockfile
```
- Always use `uv run` to execute commands — never activate venvs manually
- Commit both `pyproject.toml` and `uv.lock`
## References
- [mattpocock/skills — TDD skill](https://github.com/mattpocock/skills) — vertical-slice TDD philosophy
- [nizos/tdd-guard](https://github.com/nizos/tdd-guard) — automated TDD enforcement via hooks
- [s2005/uv-skill](https://github.com/s2005/uv-skill) — uv workflow patterns
© spencerpauly · CC0-1.0 · spencerpauly/awesome-cursor-skills