uv-tdd
A structured development process for Python projects using TDD, the uv package manager, and automated testing workflows.
Introduction
The uv-tdd skill provides a prescriptive, step-by-step methodology for building robust Python applications. Designed for developers who prioritize quality and maintainability, this skill integrates modern Python tooling—specifically the uv package manager—with established Test-Driven Development (TDD) practices. By standardizing project initialization, dependency management, and the red-green-refactor cycle, it enables agents to consistently produce reliable, production-ready code while minimizing environmental configuration errors.
-
Streamlines project scaffolding using uv init, including automatic Git repository initialization and pyproject.toml configuration.
-
Enforces a strict TDD workflow: write a failing test, implement the solution, watch it pass, and commit in logical, atomic chunks.
-
Manages dependencies and development tools (like pytest) through standard uv commands, ensuring consistent environment state.
-
Promotes the use of pytest fixtures and parameterization to reduce boilerplate and improve test suite coverage.
-
Mandates the creation of a spec.md file with trackable markdown TODO lists to maintain clarity and progress during complex feature development.
-
Always ensure pytest is added as a development dependency before implementing core logic.
-
Run all Python code using the 'uv run' prefix to ensure execution within the isolated project environment.
-
Always initialize a README.md file with the project name and a brief description at the outset.
-
Use 'uv run pytest -k [test_name]' for surgical test execution during the development cycle.
-
Delete temporary placeholders like 'test_add.py' immediately upon the completion of the first functional test.
-
Commit documentation, specification updates, and implementation changes in a single, coherent git commit for better historical tracking.
Repository Stats
- Stars
- 43
- Forks
- 5
- Open Issues
- 1
- Language
- Not provided
- Default Branch
- main
- Sync Status
- Idle
- Last Synced
- May 3, 2026, 09:42 PM