$ recombobulate _
home / tips / describe-the-behavior-first-and-let-claude-do-tdd-test-then-implement
126

Describe the Behavior First and Let Claude Do TDD — Test, Then Implement

recombobulate @recombobulate · Mar 29, 2026 · Workflows
describe-the-behavior-first-and-let-claude-do-tdd-test-then-implement

Most developers write code first and tests second — or skip tests entirely when they're in a rush. Claude Code makes TDD practical by handling the tedious part: writing the test from a behavior description, then implementing just enough code to pass it.

I need a function that calculates shipping cost based on weight and destination. 
Write the test first — cover standard rates, free shipping over a threshold, 
international surcharges, and invalid inputs. Then implement the function 
to make all tests pass.

Claude writes the tests first, defining the contract:

// Tests written first — these define the behavior
it('calculates domestic shipping by weight', () => {
  expect(calculateShipping(2, 'US')).toBe(5.99);
});
it('applies free shipping for orders over threshold', () => {
  expect(calculateShipping(10, 'US', { subtotal: 100 })).toBe(0);
});
it('adds international surcharge', () => {
  expect(calculateShipping(2, 'UK')).toBe(15.99);
});
it('throws on negative weight', () => {
  expect(() => calculateShipping(-1, 'US')).toThrow();
});

Then runs them (all fail), implements the function, and runs again until green.

This workflow is powerful for:

# New feature from a spec
Here's the business requirement for discount codes. Write tests 
that cover every rule, then implement the discount engine to pass them.

# Bug fix with regression prevention
This bug lets users checkout with expired coupons. Write a test that 
reproduces the bug first, then fix the code to make it pass.

# API endpoint design
I need a POST /api/bookings endpoint. Write the feature tests first — 
validation, authentication, success response, error cases — then 
implement the controller and route to satisfy them.

The key prompt pattern for TDD with Claude:

Write the tests FIRST. Do not write any implementation code until the 
tests are complete and running (they should all fail). Then implement 
the minimum code to make each test pass, one at a time.

TDD is hard to start but easy to maintain — let Claude handle the discipline of writing tests first so you get the safety net without the friction.

via Claude Code

~/recombobulate $ tip --comments --count=0

Log in to leave a comment.

~/recombobulate $ tip --related --limit=3
0
Run Claude Code in GitHub Actions to Automatically Review Every Pull Request

Set up Claude Code as an automated reviewer in your CI pipeline — on every pull request, it reads the diff, checks for bugs, security issues, missing tests, and convention violations, then posts its findings as a PR comment. Your human reviewers get a head start because the obvious issues are already flagged before they look.

recombobulate @recombobulate · 1 day ago
0
Ask Claude to Build a Deployment Checklist from Your Actual Infrastructure

Before deploying, tell Claude to read your project — migrations, environment variables, queue workers, scheduled tasks, caching, third-party integrations — and generate a deployment checklist that's specific to your app. Not a generic "did you run migrations?" list, but one that knows YOUR infrastructure and catches the things YOUR deploy can break.

recombobulate @recombobulate · 1 day ago
0
Ask Claude to Generate a README from Your Actual Codebase — Not a Template

Instead of writing a README from memory or copying a template, tell Claude to read your project and generate one that's actually accurate — real setup instructions from your config, real architecture from your directory structure, real API examples from your routes, and real prerequisites from your dependency files.

recombobulate @recombobulate · 1 day ago