Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Set up or update TDD Guard for the current project. Detects the test framework, installs or updates the matching reporter, and configures or migrates its configuration to match the current specification.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 11% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 96% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 6% | 0% |
Set up TDD Guard for the current project. Your goal is to:
| Framework | Reporter package | Registry | | --------- | -------------------------------------------------------- | ---------- | | Vitest | tdd-guard-vitest | npm | | Jest | tdd-guard-jest | npm | | Storybook | tdd-guard-storybook | npm | | pytest | tdd-guard-pytest | PyPI | | PHPUnit | tdd-guard/phpunit | Packagist | | Go | github.com/nizos/tdd-guard/reporters/go/cmd/tdd-guard-go | go install | | Rust | tdd-guard-rust | crates.io | | RSpec | tdd-guard-rspec | RubyGems | | Minitest | tdd-guard-minitest | RubyGems |
All reporters write test results to .claude/tdd-guard/data/test.json relative to the project root.
Vitest — Add the reporter entry to the reporters array with projectRoot in the options object.
typescriptreporters: [ 'default', ['tdd-guard-vitest', { projectRoot: '/absolute/path/to/project' }], ]
Jest — Add reporter entry to the reporters array with projectRoot option.
typescriptreporters: [ 'default', ['tdd-guard-jest', { projectRoot: '/absolute/path/to/project' }], ]
Storybook — Construct StorybookReporter in .storybook/test-runner.ts and wire it into the postVisit hook.
typescript// .storybook/test-runner.ts import { StorybookReporter } from 'tdd-guard-storybook' const reporter = new StorybookReporter({ projectRoot: '/absolute/path/to/project', }) module.exports = { async postVisit(page, context) { await reporter.onStoryResult(context) }, } process.on('exit', () => { reporter.onComplete() })
pytest — Set tdd_guard_project_root in pytest config (pyproject.toml, pytest.ini, or setup.cfg).
toml[tool.pytest.ini_options] tdd_guard_project_root = "/absolute/path/to/project"
PHPUnit — Add extension (PHPUnit 10+) or listener (PHPUnit 9.x) to phpunit.xml with project root path.
xml<!-- PHPUnit 10+ --> <extensions> <bootstrap class="TddGuard\PHPUnit\TddGuardExtension"> <parameter name="projectRoot" value="/absolute/path/to/project"/> </bootstrap> </extensions> <!-- PHPUnit 9.x --> <listeners> <listener class="TddGuard\PHPUnit\TddGuardListener"> <arguments> <string>/absolute/path/to/project</string> </arguments> </listener> </listeners>
Go — Add a test target using the piped command below. Update an existing Makefile, Taskfile, or similar build system if one exists.
bashgo test -json ./... 2>&1 | tdd-guard-go -project-root /absolute/path/to/project
Rust — Add a test target using the piped command below. Update an existing Makefile, Taskfile, or similar build system if one exists.
bashcargo nextest run 2>&1 | tdd-guard-rust --project-root /absolute/path/to/project --passthrough
RSpec — Add the formatter to .rspec and set TDD_GUARD_PROJECT_ROOT environment variable to the absolute project root path.
--format TddGuardRspec::Formatterbashexport TDD_GUARD_PROJECT_ROOT="/absolute/path/to/project"
Minitest — Require tdd_guard_minitest/autorun from test/test_helper.rb (or pass -rtdd_guard_minitest/autorun via Rake::TestTask ruby_opts) and set TDD_GUARD_PROJECT_ROOT to the absolute project root path.
ruby# test/test_helper.rb require "tdd_guard_minitest/autorun"
bashexport TDD_GUARD_PROJECT_ROOT="/absolute/path/to/project"
Your scope is limited to installing, updating, configuring, and migrating a TDD Guard reporter. Do not make changes beyond that.
Once complete, inform the user of what was done and that:
tdd-guard off / tdd-guard on to toggle it mid-session.claude/tdd-guard/data/instructions.mdOther measured skills in the registry, with their headline benchmark lift.