Help us improve
Share bugs, ideas, or general feedback.
From claude-tdd-pro
Use when the user reports a BUG (existing behavior is wrong) — phrases like "X breaks when Y", "this used to work", "got an error/exception/500", "regression", "this is a bug". NOT for new features (use tdd-feature-build). Enforces bug-as-failing-test — capture the broken behavior FIRST, confirm red, fix, confirm green. The fix never lands without the test that would have caught it.
npx claudepluginhub drumfiend21/claude-tdd-proHow this skill is triggered — by the user, by Claude, or both
Slash command
/claude-tdd-pro:bug-fix-disciplineThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A bug is evidence the test net failed. Every bug fix must close that
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Explores codebases via GitNexus: discover repos, query execution flows, trace processes, inspect symbol callers/callees, and review architecture.
Share bugs, ideas, or general feedback.
A bug is evidence the test net failed. Every bug fix must close that gap by adding the test that would have caught it.
fix(scope): one-line summary of what was wrong
Root cause: <one paragraph on why the bug existed>
Test: <test file + test name that would have caught this>
Tests: +1 test covering the regression. Suite NN/NN green.
Assisted-by: Claude (claude-tdd-pro 0.3.0)
If you fix a bug without writing a test first:
The bug-as-test pattern guarantees that every bug ever reported has a test guarding it.
Sometimes the bug is real but you can't fix it in this PR (architectural reasons, deferred to a later phase). In that case:
// CURRENT BUG: bug #N. Phase 3 will flip this assertion when fixing.Example from prior session:
// Phase 3 bug #2: malformed JSON in word_selections crashes the GET
// response. Capturing current behavior; Phase 3 will fix and flip
// to expect the row to be returned with translations: {}.
it('CURRENT BEHAVIOR (bug #2): malformed JSON crashes the GET endpoint', async () => {
// ... seed a row with bad JSON ...
const res = await request(app).get('/api/saved-translations/...');
expect(res.status).toBe(500); // ← will flip to 200 in Phase 3
});
This is the technique that lets you triage bugs incrementally without losing track of any of them.
If the user says "just fix it, I don't have time for a test":
The Root cause section is critical. It's what future-you (or a reviewer) will read to understand why the codebase had this gap. Be specific:
>= against NaN which is always false, so newer entries were
silently overwritten."A good Root cause explanation prevents the same class of bug elsewhere.