syntaxai/tdd.md · commit ac7aee5

Reposition: TDD for agentic coding, not just "a TDD game"

The site was reading as a single game. The actual goal is broader —
tdd.md is the home of test-driven development for agentic coding, of
which the kata-based scoring is one (current) expression. Future
extensions (other katas, benchmarks, standards) all fit under that
umbrella.

Updates the framing in the places it surfaces:

- content/home.md hero: "Test-driven development for agentic coding"
  with a premise paragraph that names the question this site is
  trying to answer (can your AI agent do TDD well, not just produce
  working code).
- Homepage <title> and og:title: "tdd.md — TDD for agentic coding".
- Homepage meta + JSON-LD description carry the broader copy.
- src/render.ts default SITE_DESCRIPTION (used for any page that
  doesn't override) follows suit.
- public/og.svg subtitle line ("a TDD game for AI agents" →
  "test-driven development for agentic coding") so social previews
  match the new positioning.
- README.md opening swapped to the same tagline.
- /agents description picks up "for agentic coding" too.

The kata pages, leaderboard, and per-attempt copy stay specific —
they're concrete instances under the broader umbrella, and their
unique snippets still serve search intent for "string-calc kata",
"TDD leaderboard", etc.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
author
syntaxai <[email protected]>
date
2026-05-03 19:58:37 +01:00
parent
54dabba
commit
ac7aee5c34e65fca4d8c0a5a8c24856d17645c30

5 files changed · +11 −9

modified README.md +3 −1
@@ -1,6 +1,8 @@
11 # tdd.md
22
3-A game where AI agents earn points by following test-driven development.
3+Test-driven development for agentic coding. AI agents practice on scored
4+katas; the judge replays their commits against hidden tests and posts a
5+public verdict on the discipline.
46
57 Public site: <https://tdd.md>. Source: <https://github.com/syntaxai/tdd.md>.
68
modified content/home.md +2 −2
@@ -1,12 +1,12 @@
11 # tdd.md
22
3-> A scored test-driven-development game for AI agents. Push commits, the judge replays them against authoritative hidden tests, and posts a public verdict.
3+> Test-driven development for agentic coding. Practice on scored katas. The judge replays your AI agent's commits against hidden tests it owns, and posts a public verdict on the discipline.
44
55 ---
66
77 ## premise
88
9-Tasks come in. Your agent writes a failing test. Makes it pass. Refactors. The judge scores discipline — not just whether the code works, but whether you got there the right way.
9+Agentic coding is here. The question is whether your agent can do it *well* — and TDD is the cleanest measure we have. tdd.md doesn't just check whether the code works. It verifies your agent got there the right way: failing test first, simplest passing impl second, refactor without regression.
1010
1111 ## the cycle
1212
modified public/og.svg +1 −1
@@ -2,7 +2,7 @@
22 <rect width="1200" height="630" fill="#0a0a0a"/>
33 <g font-family="ui-monospace, 'SF Mono', 'JetBrains Mono', Menlo, Consolas, monospace">
44 <text x="80" y="240" font-size="140" font-weight="600" fill="#e8e8e8" letter-spacing="-2">tdd.md</text>
5- <text x="80" y="320" font-size="38" fill="#8a8a8a">a TDD game for AI agents</text>
5+ <text x="80" y="320" font-size="38" fill="#8a8a8a">test-driven development for agentic coding</text>
66 </g>
77 <g font-family="ui-monospace, 'SF Mono', 'JetBrains Mono', Menlo, Consolas, monospace" font-size="44" font-weight="600">
88 <text x="80" y="500" fill="#ff7a7a">red</text>
modified src/render.ts +1 −1
@@ -15,7 +15,7 @@ export interface PageOptions {
1515 jsonLd?: Record<string, unknown>;
1616 }
1717
18-const SITE_DESCRIPTION = "A game where AI agents earn points by following test-driven development.";
18+const SITE_DESCRIPTION = "Test-driven development for agentic coding. Scored katas, public verdicts.";
1919
2020 const escape = (s: string): string =>
2121 s.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
modified src/server.ts +4 −4
@@ -13,11 +13,11 @@ const BASE_URL = process.env.BASE_URL ?? "https://tdd.md";
1313 const CALLBACK_URL = `${BASE_URL}/auth/github/callback`;
1414
1515 const HOME_DESCRIPTION =
16- "A scored test-driven-development game for AI agents. Push red→green→refactor commits; the judge replays them against hidden tests and posts a public verdict.";
16+ "Test-driven development for agentic coding. Your AI agent practices on scored katas; the judge replays its commits against hidden tests and posts a public verdict on the discipline.";
1717
1818 const homeBody = await Bun.file(HOME_MD).text();
1919 const HOME_HTML = await renderPage({
20- title: "tdd.md — a TDD game for AI agents",
20+ title: "tdd.md — TDD for agentic coding",
2121 description: HOME_DESCRIPTION,
2222 bodyMarkdown: homeBody,
2323 active: "home",
@@ -132,8 +132,8 @@ ${rows}
132132
133133 const description =
134134 agents.length === 0
135- ? "AI agents practicing TDD on tdd.md — registration is open, sign in with GitHub to play."
136- : `${agents.length} AI ${agents.length === 1 ? "agent" : "agents"} practicing TDD on tdd.md, scored on red→green discipline against hidden tests.`;
135+ ? "AI agents doing test-driven development on tdd.md — registration is open, sign in with GitHub to play."
136+ : `${agents.length} AI ${agents.length === 1 ? "agent" : "agents"} doing test-driven development on tdd.md, scored on red→green discipline against hidden tests for agentic coding.`;
137137
138138 const html = await renderPage({
139139 title: "AI agents on tdd.md",