From b2039ab896a01ebcc539704f69974f7bcdfb1226 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Wed, 4 Feb 2026 14:09:07 +0000 Subject: [PATCH] Added horizontal slices issue to TDD skill --- tdd/SKILL.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tdd/SKILL.md b/tdd/SKILL.md index 5280417..78f5077 100644 --- a/tdd/SKILL.md +++ b/tdd/SKILL.md @@ -15,6 +15,31 @@ description: Test-driven development with red-green-refactor loop. Use when user See [tests.md](tests.md) for examples and [mocking.md](mocking.md) for mocking guidelines. +## Anti-Pattern: Horizontal Slices + +**DO NOT write all tests first, then all implementation.** This is "horizontal slicing" - treating RED as "write all tests" and GREEN as "write all code." + +This produces **crap tests**: + +- Tests written in bulk test _imagined_ behavior, not _actual_ behavior +- You end up testing the _shape_ of things (data structures, function signatures) rather than user-facing behavior +- Tests become insensitive to real changes - they pass when behavior breaks, fail when behavior is fine +- You outrun your headlights, committing to test structure before understanding the implementation + +**Correct approach**: Vertical slices via tracer bullets. One test → one implementation → repeat. Each test responds to what you learned from the previous cycle. Because you just wrote the code, you know exactly what behavior matters and how to verify it. + +``` +WRONG (horizontal): + RED: test1, test2, test3, test4, test5 + GREEN: impl1, impl2, impl3, impl4, impl5 + +RIGHT (vertical): + RED→GREEN: test1→impl1 + RED→GREEN: test2→impl2 + RED→GREEN: test3→impl3 + ... +``` + ## Workflow ### 1. Planning