Skip to main content

TDD Guard

npm version PyPI version CI Security License: MIT

Automated TDD enforcement for Claude Code.

Overview

TDD Guard monitors file operations in real-time and blocks any changes that violate TDD principles. By analyzing test results, todos, and code changes, it ensures Claude Code follows the red-green-refactor cycle without manual reminders.

TDD Guard Demo
Click to watch TDD Guard in action

Why TDD Guard?

  • Focus on solving problems - TDD Guard enforces the rules while you design solutions
  • Save context for what matters - No more TDD instructions cluttering your CLAUDE.md
  • Works with your stack - TypeScript, JavaScript, and Python today. More languages coming soon
  • Control without context switches - Toggle with tdd-guard on/off mid-session
  • Flexible validation - Use local Claude or configure Anthropic API

Requirements

  • Node.js 18+
  • Test Runner:
    • JavaScript/TypeScript: Vitest
    • Python: pytest

Installation

Install the TDD Guard CLI globally:

npm install -g tdd-guard

For Python projects, also install the pytest reporter:

pip install tdd-guard

Quick Start

Getting started is quick and simple:

1. Configure Claude Code Hook

Use the /hooks command in Claude Code:

  1. Type /hooks in Claude Code
  2. Select PreToolUse - Before tool execution
  3. Choose + Add new matcher...
  4. Enter: Write|Edit|MultiEdit|TodoWrite
  5. Select + Add new hook...
  6. Enter command: tdd-guard
  7. Choose where to save (Project settings recommended)

Tip: Also configure quick commands for tdd-guard on/off and ESLint integration for automated refactoring support.

2. Configure Test Reporter

TDD Guard captures test results from your test runner. Ensure your package.json or project scripts use the correct test command.

JavaScript/TypeScript (Vitest)

Add to vitest.config.ts:

import { VitestReporter } from 'tdd-guard'

export default defineConfig({
  test: {
    reporters: ['default', new VitestReporter()],
  },
})

Python (pytest)

No configuration needed - the pytest plugin activates automatically when installed.

Security Notice

As stated in the Claude Code Hooks documentation:

Hooks execute shell commands with your full user permissions without confirmation. You are responsible for ensuring your hooks are safe and secure. Anthropic is not liable for any data loss or system damage resulting from hook usage.

We share this information for transparency. Please read the full security considerations before using hooks.

TDD Guard runs with your user permissions and has access to your file system. We follow security best practices including automated security scanning, dependency audits, and test-driven development. Review the source code if you have security concerns.

Known Limitations

  • Not tested with multiple subagents in the same project

Roadmap

  • Add support for more testing frameworks (Jest, Mocha, unittest, etc.)
  • Add support for additional programming languages (Go, Rust, Java, etc.)
  • Encourage meaningful refactoring opportunities when tests are green
  • Add support for multiple concurrent subagents per project

Contributing

Contributions are welcome! Feel free to submit issues and pull requests.

Contributors:

Learn More

License

MIT

Metadata

Release files for tdd-guard 0.5.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tdd-guard 0.5.3
File Size Uploaded
tdd_guard-0.5.3.tar.gz 5.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tdd-guard 0.5.3
File Interpreter ABI Platform
tdd_guard-0.5.3-py3-none-any.whl Python 3 none any Details

Total release size: 12.1 kB

Release files / tdd_guard-0.5.3.tar.gz

Download URL tdd_guard-0.5.3.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2da053e50dde5563fdda829a872557ea779f0d7379c3342a1bf4d2c334ad6a35
BLAKE2b-256 checksum
How to use checksums
495b43f484dab023bbf730c7798841202811f0f417b131704878be3aa5f225ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.0

Release files / tdd_guard-0.5.3-py3-none-any.whl

Download URL tdd_guard-0.5.3-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
13b8acf665d32843534b4c1c8689d9d3984030ede8a2620cbf30c932b7514050
BLAKE2b-256 checksum
How to use checksums
57195cf4e5d908c5e7cf0536f11794e9bfa517e5903c78cdfbb00e98dd8ced1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.0

Release history Release notifications | RSS feed

This release

0.5.3 This release

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page