TDD Workflow
SkillMediaUse this skill for developing software in TDD (Test-Driven Design).
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the TDD Workflow skill
What this skill tells your AI
The instructions your AI receives, as published by archibate/dotfiles-opencode in skills/tdd-workflow/SKILL.md and read by ahel’s review.
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.mdunder an "Assumptions" section rather than asking for clarification.
Write tdd-summary/step-1.md:
# 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:
# 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:
# 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.
- Update scenario status: check
- 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:
# 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:
# 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:
# 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:
# 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:
# 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:
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.
Signals
- GitHub stars
- 106
- Forks
- 21
- Last commit
- Apr 2026
Advanced
- Catalog kind
- skill
- Gateway key
tdd-workflow- Source
- github.com/archibate/dotfiles-opencode