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 skills add shennawardana23/skillme --skill test-driven-developmentgit clone --depth 1 https://github.com/shennawardana23/skillmeWrote 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/skills/shennawardana23/skillme/test-driven-development)<a href="https://agentmods.dev/skills/shennawardana23/skillme/test-driven-development"><img src="https://agentmods.dev/badge/skills/shennawardana23/skillme/test-driven-development.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.1 | $0.00090 | $0.01145 |
| Opus 5 | $0.00045 | $0.00573 |
| Sonnet 5 | $0.00018 | $0.00229 |
| Haiku 4.5 | $0.00009 | $0.00114 |
Grade A, and why
test-driven-development 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 — 103 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Test-Driven Development
Write a failing test before writing the code that makes it pass. For bug fixes, reproduce the bug with a test before attempting a fix. A test that passes on its first run proves nothing — it may be testing the wrong thing.
The cycle
- RED — write a test for behavior that doesn't exist yet. Run it. It must fail. If it passes immediately, the test is wrong, not the code.
- GREEN — write the minimum code to pass. Don't add behavior the test doesn't require.
- REFACTOR — clean up with tests green. Re-run tests after every step.
The Prove-It Pattern (bug fixes)
Do not edit the implementation until a reproduction test exists and its failure has been shown. This applies even to a one-line fix that looks obviously correct — the reproduction test is what proves the bug was real and what proves the fix addresses it, not the author's confidence in the diagnosis. Sequence, every time:
- Write a test that reproduces the reported bug.
- Run it and show that it fails, with the failure output.
- Only then change the implementation.
- Re-run the same test and show it now passes.
// Bug report: "CompleteTask doesn't set CompletedAt"
func TestCompleteTask_SetsCompletedAt(t *testing.T) {
task := createTask(t, "test")
completed, err := completeTask(task.ID)
if err != nil {
t.Fatalf("completeTask: %v", err)
}
if completed.CompletedAt.IsZero() {
t.Fatal("CompletedAt was not set") // fails first — confirms the bug
}
}
Go specifics
- Use table-driven tests for multiple input variations — one
t.Runsubtest per case, named for the behavior, not "case 1". - Call
t.Parallel()inside the subtest closure, and be aware that the common table-driven footgun is capturing the loop variable by reference across arangein Go versions before 1.22; if this repo'sgo.modtargets Go < 1.22, shadow the loop variable (tt := tt) before callingt.Parallel(), or Go 1.22+'s per-iteration loop variable semantics make it unnecessary. - Prefer the standard library's
testingpackage andtestify/requirefor fatal assertions; reservetestify/assertfor checks that should continue after failure to surface multiple problems in one run.
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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 · 103 lines · 90 tokens per session scan A 6aaeacfd759b
test-driven-development is a skill published in the GitHub repository shennawardana23/skillme (2 stars, last pushed 10d ago), licensed Apache-2.0. It adds 90 tokens to every session and 1,145 once invoked, about $0.0005 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-09-03.
Other skills, from other repositories
test-driven-development
Use when implementing any feature or bugfix, before writing implementation code.
tdd
Enforces strict Test-Driven Development with RED-GREEN-REFACTOR cycles. Writes one failing test at a time, implements minimal code to pass, then refactors. Delegates to the test-provenance-guard skill during REFACTOR to detect tests-by-construction (static + mutation checks). Pairs with the code-quality skill: invokes…
issue-driven-development
Use for any development work - the master 13-step coding process that orchestrates all other skills, ensuring GitHub issue tracking, proper branching, TDD, code review, and CI verification.
tdd-full-coverage
Use when implementing features or fixes - test-driven development with RED-GREEN-REFACTOR cycle and full code coverage requirement.
test-driven-development
Drives development with tests. Use when implementing any logic, fixing any bug, or changing any behavior. Use when you need to prove that code works, when a bug report arrives, or when you're about to modify existing functionality.
test-driven-development
Test-driven development, or TDD, is a way to build software by writing a test that fails, adding the smallest code that makes it pass, and then cleaning up the code. These instructions require that process for features, bug fixes, refactors, and behavior changes.