Deploy TDD workflow templates for Claude and Gemini AI assistants
Project description
tdd-llm
AI-Powered TDD Workflows for Claude and Gemini
Deploy structured Test-Driven Development workflows to your AI coding assistants. Guide Claude and Gemini through the RED-GREEN-REFACTOR cycle with consistent, reproducible prompts.
Features
- Deploy
.claude/and.gemini/configuration directories - Automatic conversion from Claude (.md) to Gemini (.toml) format
- Language-specific placeholders (Python, C#, TypeScript)
- Backend support for local files or Jira (via MCP)
- Global and project-level configuration (project overrides global)
- Configurable coverage thresholds per project
- Cross-platform (Linux, macOS, Windows)
- Update templates from GitHub without reinstalling the package
Installation
pip install tdd-llm
Quick Start
# Initialize project config (creates .tdd-llm.yaml)
tdd-llm init --lang python --backend files
# Deploy TDD templates to current project
tdd-llm deploy
# Deploy to user-level directories
tdd-llm deploy --target user --lang csharp --backend jira
# Preview changes without writing
tdd-llm deploy --lang typescript --dry-run
# List available languages and backends
tdd-llm list
# Show configuration (merged global + project)
tdd-llm config --show
# Update templates from GitHub (without reinstalling)
tdd-llm update
Configuration
tdd-llm supports two configuration levels:
- Global (user-level): Applies to all projects
- Project (local): Overrides global settings for a specific project
Global Configuration
Location:
- Linux/macOS:
~/.config/tdd-llm/config.yaml - Windows:
%APPDATA%\tdd-llm\config.yaml
default_target: "project" # or "user"
default_language: "python"
default_backend: "files" # or "jira"
platforms:
- claude
- gemini
coverage:
line: 80 # Line coverage threshold (%)
branch: 70 # Branch coverage threshold (%)
Project Configuration
Create a .tdd-llm.yaml file in your project root to override global settings:
# Initialize project config with custom settings
tdd-llm init --lang typescript --coverage-line 90
# Or modify existing project config
tdd-llm config --project --set-lang csharp
Project config file: .tdd-llm.yaml
default_language: "typescript"
coverage:
line: 90 # Override only what you need
Configuration Commands
# Show effective configuration (merged global + project)
tdd-llm config --show
# Modify global config
tdd-llm config --set-coverage-line 80
# Modify project config
tdd-llm config --project --set-lang typescript
Coverage thresholds are applied to the generated TDD templates and enforced during the review phase.
Updating Templates
Templates can be updated from GitHub without reinstalling the package:
# Update to latest templates
tdd-llm update
# Force re-download all templates
tdd-llm update --force
# Deploy using package templates (ignore cached updates)
tdd-llm deploy --no-cache
Updated templates are cached in:
- Linux/macOS:
~/.config/tdd-llm/templates/ - Windows:
%APPDATA%\tdd-llm\templates\
Supported Languages
| Language | Placeholders |
|---|---|
| Python | pytest, coverage, architecture/integration/perf tests |
| C# | dotnet test, xUnit, architecture/integration/perf tests |
| TypeScript | Jest, Vitest, architecture/integration/perf tests |
Backends
Files (default)
Uses local markdown files for epic/story management:
docs/epics/- Epic definitionsdocs/state.json- Progress tracking
Jira
Uses MCP Jira server for epic/story management:
- Fetches epics and stories from Jira
- Updates status via Jira API
TDD Workflow Commands
After deployment, use these commands with Claude or Gemini:
Flow Commands
| Command | Phase | Description |
|---|---|---|
/tdd:flow:1-analyze |
Plan | Analyze task, write specs |
/tdd:flow:2-test |
RED | Write failing tests |
/tdd:flow:3-dev |
GREEN+REFACTOR | Implement, then refactor |
/tdd:flow:4-docs |
Document | Update docs, CHANGELOG |
/tdd:flow:5-review |
Review | Code review, create PR |
/tdd:flow:6-done |
Done | Commit, update state |
/tdd:flow:status |
- | Show current progress |
Init Commands
| Command | Description |
|---|---|
/tdd:init:1-project |
Initialize project structure |
/tdd:init:2-architecture |
Define architecture |
/tdd:init:3-standards |
Define code standards |
/tdd:init:4-readme |
Generate README |
Development
# Clone and install in dev mode
git clone https://github.com/mxdumas/tdd-llm-workflow
cd tdd-llm-workflow
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
pip install -e ".[dev]"
pre-commit install
# Run tests
pytest
# Run linter
ruff check src/
# Format code
ruff format src/
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tdd_llm-0.1.0.tar.gz.
File metadata
- Download URL: tdd_llm-0.1.0.tar.gz
- Upload date:
- Size: 46.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31319d05cf104a2304ebb08b499932699c999febe0e266f19916b7754bcc3bde
|
|
| MD5 |
daa1c8d69e8030b9edcd76dd84db6fa3
|
|
| BLAKE2b-256 |
f0416c099d7850b9c2135b4ad094d8ae04fbe98efd41b0e1826591fae3686e48
|
Provenance
The following attestation bundles were made for tdd_llm-0.1.0.tar.gz:
Publisher:
publish-pypi.yml on mxdumas/tdd-llm-workflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tdd_llm-0.1.0.tar.gz -
Subject digest:
31319d05cf104a2304ebb08b499932699c999febe0e266f19916b7754bcc3bde - Sigstore transparency entry: 803433643
- Sigstore integration time:
-
Permalink:
mxdumas/tdd-llm-workflow@440d2479f5fdbb6cb737b89a891475c2aae3abc4 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/mxdumas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@440d2479f5fdbb6cb737b89a891475c2aae3abc4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file tdd_llm-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tdd_llm-0.1.0-py3-none-any.whl
- Upload date:
- Size: 55.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ef0ac9d0c0d573f662a6edc483d438f7115099d29dfa22073eb5d1826caf467
|
|
| MD5 |
e91184f901da78d0e728c48b5c810fe3
|
|
| BLAKE2b-256 |
6edc355355cfa58f06ccc86a13e788738e52c0f8fa105ab5504b6755af64b832
|
Provenance
The following attestation bundles were made for tdd_llm-0.1.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on mxdumas/tdd-llm-workflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tdd_llm-0.1.0-py3-none-any.whl -
Subject digest:
5ef0ac9d0c0d573f662a6edc483d438f7115099d29dfa22073eb5d1826caf467 - Sigstore transparency entry: 803433649
- Sigstore integration time:
-
Permalink:
mxdumas/tdd-llm-workflow@440d2479f5fdbb6cb737b89a891475c2aae3abc4 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/mxdumas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@440d2479f5fdbb6cb737b89a891475c2aae3abc4 -
Trigger Event:
push
-
Statement type: