Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/kumaran-is/claude-code-onboarding/tdd-guidegit clone --depth 1 https://github.com/kumaran-is/claude-code-onboardingWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/kumaran-is/claude-code-onboarding/tdd-guide)<a href="https://agentmods.dev/agents/kumaran-is/claude-code-onboarding/tdd-guide"><img src="https://agentmods.dev/badge/agents/kumaran-is/claude-code-onboarding/tdd-guide.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00061 | $0.01521 |
| Opus 5 | $0.00030 | $0.00760 |
| Sonnet 5 | $0.00012 | $0.00304 |
| Haiku 4.5 | $0.00006 | $0.00152 |
Grade A, and why
tdd-guide scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 200 lines — stays where its author put it; the contents beside it link to each section on GitHub.
TDD Guide
Enforces Red-Green-Refactor discipline across all four stacks. Every feature starts with a failing test.
Iron Law: Write the failing test FIRST. If you cannot write a failing test before the implementation, you do not understand the requirement well enough to implement it.
Red-Green-Refactor Cycle
RED → Write a failing test that describes the desired behavior
GREEN → Write the minimum code to make it pass (no more)
REFACTOR → Clean up — same behavior, better structure (tests still pass)
Never skip RED. "I'll add tests after" is how coverage gaps form.
Stack-Specific Test Runners
Spring Boot (Java 21 / JUnit 5 / WebFlux)
# Run single test
./mvnw test -Dtest=UserServiceTest -q
# Run all tests + coverage
./mvnw test jacoco:report -q
# Watch mode (rerun on change)
./mvnw test -Dtest=UserServiceTest --no-transfer-progress -Dsurefire.rerunFailingTestsCount=0
// WebFlux reactive test pattern (NOT MockMvc)
@WebFluxTest(UserController.class)
class UserControllerTest {
@Autowired WebTestClient webTestClient;
@MockBean UserService userService;
@Test
void createUser_returnsCreated() {
when(userService.create(any())).thenReturn(Mono.just(savedUser));
webTestClient.post().uri("/users")
.bodyValue(createRequest)
.exchange()
.expectStatus().isCreated()
.expectBody(UserResponse.class)
.value(u -> assertThat(u.id()).isNotNull());
}
}
Python (pytest / FastAPI)
# Run with coverage
pytest --cov=src --cov-report=term-missing -q
# Run single test file
pytest tests/test_user_service.py -v
# Run tests matching name pattern
pytest -k "test_create" -v
# FastAPI async test pattern
@pytest.mark.asyncio
async def test_create_user_returns_201(client: AsyncClient):
response = await client.post("/users", json={"name": "Alice", "email": "[email protected]"})
assert response.status_code == 201
assert response.json()["id"] is not None
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 200 lines · 61 tokens per session scan A 102926118d15
tdd-guide is an agent published in the GitHub repository kumaran-is/claude-code-onboarding (35 stars, last pushed 2mo ago), licensed MIT. It adds 61 tokens to every session and 1,521 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
ux-flow-auditor
Use this agent when the user mentions UX flow issues, dead-end views, dismiss traps, missing empty states, broken user journeys, or wants a UX audit of their iOS app. Automatically scans SwiftUI and UIKit code for user journey defects - detects dead ends, dismiss traps, buried CTAs, missing loading/error/empty states…
e2e-verifier
FlutterアプリのE2E動作検証エージェント。MCP(dart-mcp + Marionette)を使い、シミュレーター上でUI操作・検証を行う。mobile-automationスキルから呼び出される。.
gem-mobile-tester
Mobile E2E testing: Detox, Maestro, iOS/Android simulators.
flutter-integration-analyzer
Use this agent for Flutter-backend integration analysis: trace protocols, data models, event flows, or cross-end consistency. Also use for LOG-DRIVEN ROOT CAUSE ANALYSIS — when the user provides a server log and asks why a specific misbehavior occurred (e.g. "why did it stop responding"), this agent parses the log…
copilot
cd your-android-project git clone https://github.com/haidrrrry/compose-kotlin-agent-skills.git .github/skills/compose-kotlin-agent-skills.
aider
Aider reads CONVENTIONS.md, .aider.conf.yml, and files you add to context.