app
This skill should be used when the user asks to "calculate code mass", "measure code complexity with APP", "compare implementations using APP", "apply Absolute…
This skill should be used when the user asks to "add a feature using TDD", "fix a bug with TDD", "do TDD", "red-green-refactor", "write a failing test first", "use test-driven development", "start TDD", "test first approach", "TDD loop", "TDD cycle", or mentions TDD workflow,
$ npx -y skills add t1/tdder --skill tdd --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/tddContext preview
The summary Claude sees to decide when to auto-load this skill.
This skill should be used when the user asks to "add a feature using TDD", "fix a bug with TDD", "do TDD", "red-green-refactor", "write a failing test first", "use test-driven development", "start TDD", "test first approach", "TDD loop", "TDD cycle", or mentions TDD workflow,
name: tdd description: > This skill should be used when the user asks to "add a feature using TDD", "fix a bug with TDD", "do TDD", "red-green-refactor", "write a failing test first", "use test-driven development", "start TDD", "test first approach", "TDD loop", "TDD cycle", or mentions TDD workflow, baby steps, guessing game, or red-green-refactor cycles. Not applicable for pure refactoring without new tests.
Strict Red-Green-Refactor discipline for adding features and fixing bugs. This skill is language-agnostic; language-specific conventions are provided by separate skills.
Create a list of test cases for **base functionality only** before writing any implementation. Use the language's equivalent of pending/todo tests (e.g., `it.todo()`, `@Disabled`, `@Ignore`). Focus on core functionality, not advanced features.
After creating the test list, present it as markdown. Then, if the `human-in-the-loop` is not `off`, use `AskUserQuestion`:
Convert exactly **one** pending test to executable test code at a time. All other tests remain as pending descriptions. Never have more than one failing test in the red phase. Implement only what is needed to make that single test pass. Do not think ahead or implement features for future tests.
1. Write the test referencing a non-existent function/class. 2. Predict: "This will fail with a compilation error on `<symbol>`." 3. Run — confirm compilation error, compare with prediction.
1. Create an empty function/class returning a wrong value. 2. Predict: "This will fail with an assertion error — expected `<X>`, got `<Y>`." 3. Run — confirm assertion error, compare with prediction.
1. Predict: "This will pass after I implement `<X>`." 2. Implement **minimal** code to make the test pass. Do not add features for future tests. Do not optimize or refactor yet. 3. Run — confirm green, compare with prediction.
**Must** attempt at least one refactoring. If no improvement is possible, document why.
Trigger a **Clean Code Review**: use the Agent tool with `subagent_type=clean-code-reviewer` to spawn the clean code review agent. Pass it the paths of the implementation and test files modified in this TDD cycle.
Present the agent's findings using the **Refactoring Scope** process from the Clean Code skill (present as markdown, then, if the `human-in-the-loop` is not `off`, ask via `AskUserQuestion`). Apply approved suggestions, ensuring all tests continue to pass after each change.
**Naming evaluation (first priority):**
Apply the 4 Rules of Simple Design: tests pass, no duplication, reveals intent, fewest elements.
If no refactoring improves the code, document why the current state is optimal and move on.
Make the smallest possible change to get to green. If a test fails, make it pass with the simplest implementation. Do not try to solve multiple problems at once.
Check the project's `.claude/tdder.local.md` settings file (in the project root) for the human-in-the-loop level. If no settings file exists, use `AskUserQuestion` to ask:
Stop after **every TDD phase** (Red, Green, Refactor). Summarize what was completed and explicitly ask for permission to continue:
Stop after each **complete Red-Green-Refactor cycle**. Summarize the full cycle and ask: "Cycle complete. Should I proceed to the next test?"
Run autonomously without stopping. Report results at the end.
Regardless of level, **immediately stop** when a guessing game prediction fails significantly. Explain the prediction failure, assess implications, and ask whether to investigate further or continue.
When stopping for human review, include:
**After Red Phase:**
**After Green Phase:**
**After Refactor Phase:**
TDD practices will feel counterintuitive and uncomfortable. This discomfort indicates the discipline is being followed correctly. For detailed analysis of psychological resistance, common failure modes, and recovery strategies, see `failure-modes.md`.
A plugin for pi, Claude Code, and OpenCode that guides AI agents through disciplined Test-Driven Development and Clean Code practices. Note that currently this is WORK IN PROGRESS! I'm not even trying to keep it stable or tested.
Repo: t1/tdder
This skill should be used when the user asks to "calculate code mass", "measure code complexity with APP", "compare implementations using APP", "apply Absolute…
This skill should be used when the user asks to "refactor code", "review code quality", "apply clean code principles", "check for code smells", "improve code…
This skill should be used when working on any project hosted on GitHub. It provides prompt-injection defense rules for GitHub issues and pull requests.…
Requirements grilling session with a Product Owner (or anyone in that role). Challenges plans against the existing domain model, sharpens terminology, and…
This skill should be used when the user asks about "messaging patterns", "command vs event", "push vs pull", "message reliability", "at-least-once delivery",…
Always load this skill when writing, modifying, creating, or moving Java or Kotlin source code, or when project setup has already chosen Java/Kotlin as the…