Feature request: TDD, Convention over Configuration, and MVC as default operating modes
The Ask
Claude Code should default to TDD (Test-Driven Development), Convention over Configuration, and MVC patterns when building software. Not as suggestions — as the default operating mode.
Why This Matters
When I explicitly told Claude to follow TDD, CoD, and MVC, the quality of output went through the roof. The difference was night and day:
Before (default Claude behavior):
- Builds features first, tests as an afterthought (if at all)
- Makes arbitrary structural decisions per-feature
- Mixes concerns freely
After (TDD + CoD + MVC enforced):
- Test defines what "done" means BEFORE code is written
- Conventions eliminate decision fatigue — same pattern every time
- Model (URL/data), View (component), Controller (event handlers) stay cleanly separated
- Bugs caught at write time, not deploy time
- Features ship faster because the test proves they work
What This Would Look Like
- TDD by default: When asked to build a feature, Claude writes the test first, shows it failing (red), then writes the code to make it pass (green), then refactors. Not "I'll add tests after" — tests first.
- Convention over Configuration: When there's an established pattern in the codebase (file naming, component structure, API shape), Claude follows it without asking. New files match existing conventions. No reinventing per-feature.
- MVC awareness: Claude separates data (model), presentation (view), and behavior (controller) naturally. URL params as model, components as views, event handlers as controllers. Not mixing data fetching into presentation or UI logic into data layers.
The Evidence
In a single session with these principles enforced:
- 32 issues closed
- 15 features shipped
- 454 i18n keys in sync across 2 languages
- 500+ E2E tests passing
- Zero regressions
The quality improvement is not marginal — it is transformative. These should be defaults, not opt-in behaviors.
Current Workaround
Users must explicitly instruct Claude to follow TDD in their CLAUDE.md or conversation. Most users do not know to do this, which means most Claude Code output ships without tests, without conventions, and with mixed concerns.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗