Use this skill for developing software in TDD (Test-Driven Design).
Scanned 9/12/2026
Install to Claude Code
npx -y skills add archibate/dotfiles-opencode --skill tdd-workflow --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Tdd Workflow?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/archibate-tdd-workflow)More formats (shields.io, HTML) on the badges page.
---
name: tdd-workflow
description: |
Use this skill for developing software in TDD (Test-Driven Design).
---
# TDD Workflow
## Overview
A strict 7-step TDD cycle that produces high-quality, well-tested code. Each step must be
**verified and confirmed** before proceeding. Status is only updated after real verification
- never hallucinated.
Core principle: **RED (failing test) -> GREEN (minimal implementation) -> REFACTOR**.
---
## Step 0 - Check Existing Progress
At the start of each session, before doing anything else:
- List `tdd-summary/` to check for existing step reports (e.g. `step-1.md`, `step-2.md`).
- If reports exist, read them to understand prior context, then **resume from the next step**.
---
## Step 1 - Understand Intent
- Explore the codebase for relevant context.
- Derive functional requirements from the available information (user prompt + codebase).
- If any requirement is ambiguous, document the assumption explicitly in `step-1.md` under
an "Assumptions" section rather than asking for clarification.
Write `tdd-summary/step-1.md`:
```markdown
# Step 1 - Understand Intent
## Functional Requirements
### FR-1: <title>
<description>
### FR-2: <title>
<description>
## Assumptions
- <any ambiguous point and the assumption made>
```
---
## Step 2 - Write Scenario Docs
For each functional requirement, create a scenario document at `docs/scenario/<name>.md`:
```markdown
# Scenario: <Title>
- Given: <precondition>
- When: <action>
- Then: <expected outcome>
## Test Steps
- Case 1 (happy path): <brief description>
- Case 2 (edge case): <brief description>
- Case N: ...
## Status
- [x] Write scenario document
- [ ] Write solid test according to document
- [ ] Run test and watch it failing
- [ ] Implement to make test pass
- [ ] Run test and confirm it passed
- [ ] Refactor implementation without breaking test
- [ ] Run test and confirm still passing after refactor
**IMPORTANT**: Only update above status when a step is confirmed complete. Do not hallucinate.
```
**Invariant**: Count of FR = count of scenario documents. Verify before continuing.
Write `tdd-summary/step-2.md`:
```markdown
# Step 2 - Write Scenario Docs
## Scenario Documents Created
- FR-1: <title> - `docs/scenario/<name>.md`
- ...
```
---
## Step 3 - Write Failing Test (RED)
For each scenario document:
- Write tests at `tests/scenario/test_<name>.py` (or equivalent).
- Each scenario must have **at least 2 test cases**. Add edge cases if missing.
- All acceptance criteria from the scenario document must be covered.
- Tests must **not** be empty or dummy.
- Update scenario status: check `- [x] Write solid test according to document`.
After writing, **run each test** and verify it fails:
- **Expected failure** (e.g. feature not found, endpoint missing) - this is correct.
- Update scenario status: check `- [x] Run test and watch it failing`.
- **Unexpected failure** (e.g. import error, missing dependency) - fix the environment first.
- **Test passes** - the feature is not implemented yet; there is no reason it should pass. Fix the test.
**Invariant**: Count of scenario documents = count of test files. Verify before continuing.
Write `tdd-summary/step-3.md`:
```markdown
# Step 3 - Write Failing Test
## Failing Tests Created
- FR-1: <title> - `docs/scenario/<name>.md` - `tests/scenario/test_<name>.py`
- ...
```
---
## Step 4 - Implement to Make Tests Pass (GREEN)
For each failing test:
- Write the **minimal production code** necessary to make the test pass. Nothing more.
- Do not introduce changes unrelated to the current functional requirement.
- Update scenario status: check `- [x] Implement to make test pass`.
- Run the test. If it fails, fix the implementation and retry.
- After confirming it passes, update scenario status: check `- [x] Run test and confirm it passed`.
Write `tdd-summary/step-4.md`:
```markdown
# Step 4 - Implement to Make Tests Pass
## Implementations Completed
- FR-1: <title> - `docs/scenario/<name>.md` - Implementation in `<module>`
- ...
All tests now pass. Scenario documents updated.
```
---
## Step 5 - Refactor for Maintainability
For each scenario where tests now pass:
- Improve readability, structure, and maintainability **without changing external behavior**.
- Update scenario status: check `- [x] Refactor implementation without breaking test`.
- Run the tests again after refactoring.
- If tests fail: fix the refactoring. If impossible, **rollback to the pre-refactor version**.
- After confirming tests still pass, update scenario status: check `- [x] Run test and confirm still passing after refactor`.
Write `tdd-summary/step-5.md`:
```markdown
# Step 5 - Refactor for Maintainability
## Refactorings Completed
- FR-1: <title> - `docs/scenario/<name>.md` - <what was improved>
- ...
All tests still pass after refactoring. Scenario documents updated.
```
---
## Step 6 - Regression Test
Run the **complete test suite** (all tests, not just those added in this session):
- If regression occurs in unrelated tests:
- Analyze the failure and understand its impact on existing functionality.
- Fix the implementation to restore all passing tests.
- Re-run the complete suite until everything passes.
**NEVER modify existing tests that are unrelated to the current functional requirements.**
Write `tdd-summary/step-6.md`:
```markdown
# Step 6 - Regression Test
## Regression Test Results
- Complete test suite executed: `<command>`
- All tests pass: Yes / No
- If regression found: <brief description of fix applied>
```
---
## Step 7 - Final Review
Verify that **every scenario document has all status checkboxes checked**.
Review:
- Every FR has a corresponding scenario document and test file.
- All tests pass and code is clean.
Write `tdd-summary/step-7.md`:
```markdown
# Step 7 - Final Review
## Summary
- Functional requirements addressed:
- FR-1: ...
- Scenario documents: `docs/scenario/...`
- Test files: `tests/scenario/...`
- Implementation complete and all tests passing after refactoring.
## How to Test
Run: `<test command>`
```
Finally, archive the summary folder:
```bash
mv tdd-summary/ completed-tdd-archives/tdd-$(date +%Y%m%d-%H%M%S)
```
TDD workflow complete.
---
## Iron Rules
- **Do not skip steps.** Each step must be verified before the next begins.
- **Do not edit tests** during implementation or refactor steps, unless the test itself was
obviously written incorrectly in Step 3.
- **Do not hallucinate status.** Only check a status checkbox after real, confirmed verification.
- **Keep counts equal.** FR count = scenario doc count = test file count at all times.
- **Step gates**: If running interactively, present each step report and wait for confirmation
before continuing. If running as a delegated subagent, proceed automatically through all steps.
- **If changes are requested at any step**, loop back to the appropriate step and adjust all
downstream artifacts accordingly.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!