tdd
Skill0 starsChanged 50 days agoMITView on GitHub
Test-driven development driven only by the original requirement document. Lists every rule in a spec section, writes one failing test per testable rule cited to its source line, then the minimum code to pass, and records gaps as NOT IN SPEC instead of inventing tests. Use when asked to do TDD, write tests from the spec, PRD, FSD or requirements, implement a requirement test-first, cover a spec section or the whole spec with tests, or check that code conforms to the spec.
194 other projects use a version of this.
Adopted by
Most recently taken up by
- ishandutta2007/Awesome-Claude-Skillstheir own version, first seen Nov 8, 2026
- trpc/trpctheir own version, first seen Nov 8, 2026
- wowyuarm/dsh-agent-teamtheir own version, first seen Nov 8, 2026
- Contexera/dsh-agent-teamtheir own version, first seen Nov 8, 2026
- Dimon94/dveritytheir own version, first seen Nov 8, 2026
- Dimon94/skillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use capture-learning-tools, design-frontend-dev and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
The-Vibe-CompanySkillcapture-learning-tools
Turn technical conversations, bugs, CI failures, review comments,
Also in 5 projects that use this
The-Vibe-CompanySkilldesign-frontend-dev
Clean Impeccable frontend design skill. Use when the user wants to
Also in 5 projects that use this
tristanphvnSkillketchup-video
Catch the user up like /keel:ketchup, with a short silent video of slides for what happened and the waiting calls as text under it. Use for /keel:ketchup-video.
Also in 14 projects that use this
jaydubya818Skillfigure-it-out
Use when novel or multi-phase work needs an auditable workflow and no narrower playbook fits.
Also in 54 projects that use this
jaydubya818Skillprinciple-laziness-protocol
Apply when a refactor is adding wrappers or abstractions instead of simplifying.
Also in 45 projects that use this
- +2 more from The-Vibe-Company
- +5 more from jaydubya818
Other versions194 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 194
- mattpocock/skills★ 309ksame name
- trpc/trpc★ 41ksame name
- Yeachan-Heo/oh-my-claude-sisyphus★ 41ksame name
- Yeachan-Heo/oh-my-claudecode★ 41ksame name
- QuivrHQ/quivr★ 40ksame name
- The-Vibe-Company/quivr★ 40ksame name
- ccusage/ccusage★ 19ksame name
- ryoppippi/ccusage★ 19ksame name
- MODSetter/SurfSense★ 17ksame name
- GreyDGL/PentestGPT★ 16ksame name
184 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository2 other files it gives its agents.
- code-reviewSkill
- shardSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. 0 are common, 11 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 186 edited versions we read keep these.
11
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
If none exists, stop and ask for the path.
- Very specific: line 19
If the user points at a shard, INDEX.md or the shards folder, the source is the path in the shard's line-1 marker (<!-- source: …
- Very specific: line 22
Reading the spec: If shards exist and are fresh, use INDEX.md and ID-MAP.md to find the section, then read that shard (its content is a …
- Distinctive: line 42
Rule inventory: Read the whole section and split it into atomic rules: every sentence in prose,
- Distinctive: line 54
Before moving on, re-read the section line by line against the inventory.
- Distinctive: line 66
Red: Write one test per TEST row with the project's existing test framework and conventions.
- Distinctive: line 67
Put the rule label in the test name or docstring and the source line in a short comment.
- Distinctive: line 77
Green: Write the minimum code that makes the failing tests pass.
- Very specific: line 94
When the scope is more than one section, keep docs/spec-coverage.md (outside the shards folder, because re-sharding deletes files there).
- Distinctive: line 101
Don't write a test whose expected value you cannot cite.
- Distinctive: line 102
Don't assert existing code behaviour (messages, formats, fallbacks) that the spec does not state.
- Distinctive: line 104
Don't infer a rule from a hint ("git-ignored" does not mean "optional").
- Distinctive: line 105
Don't cite shard lines. Cite the source.
- Distinctive: line 106
Don't edit the requirement document or the shards.
- Distinctive: line 107
Don't call a section covered while any inventory row has no outcome or a TEST row has no passing test.
“Common” is measured: kept by at least 6 in 10 of the 186 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
grepable:tdd
Red → green → refactor, where every test traces to a line of the original requirement document. The spec decides what is tested. Code, habit and "common practice" never do.
Spec location (shared by all grepable skills)
Find the requirement document in this order and use the first that exists:
- A path the user gives in the request.
- A
Spec source: <path>line in the repo'sCLAUDE.mdorAGENTS.md. docs/original-requirement.md(the default).
If none exists, stop and ask for the path. Never pick a "similar-looking" document yourself.
Shards live in the Spec shards: <dir> line if present, otherwise docs/fsd/.
If the user points at a shard, INDEX.md or the shards folder, the source is the path in the shard's
line-1 marker (<!-- source: <path>:L<start>-L<end> -->).
Reading the spec. If shards exist and are fresh, use INDEX.md and ID-MAP.md to find the section,
then read that shard (its content is a byte-exact copy of the source). Shards are stale when the source
changed after INDEX.md was generated (compare git log -1 or file times); then re-run grepable:shard
or read the source directly. With no shards, grep the source for the ID or term and read the whole
section around it.
Citations always point at the source document, never at a shard.
- With IDs:
LN-03.R2 (docs/original-requirement.md:L103).ID-MAP.mdgives the source line. - Without IDs:
docs/original-requirement.md:L103. From a shard, source line = marker start + shard line − 2. If the spec has no IDs at all, say so once and suggest adding them; then proceed with lines.
Steps
- Scope and mode.
- Scope: the IDs, section(s) or feature the user names. For "the whole spec" or "all sections", work
one section at a time in
INDEX.mdorder and report after each (see Coverage ledger). - Existing code: check whether the behaviour is already implemented or tested. If it is, ask once: gap-check (add tests only for rules with no test today) or full (one test per rule, ignoring existing tests). Record the answer in the ledger.
- Scope: the IDs, section(s) or feature the user names. For "the whole spec" or "all sections", work
one section at a time in
Rule inventory. Read the whole section and split it into atomic rules: every sentence in prose, every sentence inside a table cell, every bullet, every value in a list of allowed values. A cell or sentence that states two things is two rules. Give each a label (its ID, or
L<source line>, witha/bfor several rules on one line) and one outcome:Outcome Meaning TEST Observable behaviour the code can be tested for NOT TESTABLE Operator instructions, setup steps or absence claims with no code path (give the reason) DEFERRED Depends on a later section; name it (e.g. "→ §10"). It stays open in the ledger OPEN Marked Decision pending,TBDorNOT IN SPEC, or ambiguous. Becomes a questionBefore moving on, re-read the section line by line against the inventory. Every normative line must appear in it.
Test plan. Show it in chat before the first file write, even if there is nothing to ask:
Rule (source line) Rule text (verbatim) Outcome Test name Below it list the NOT IN SPEC items: things the code needs but the spec does not state (messages, limits, defaults, error handling), plus any conflicts. If there are OPEN items, NOT IN SPEC items the tests would depend on, or conflicts, ask before continuing. Otherwise continue.
- Red. Write one test per TEST row with the project's existing test framework and conventions.
Put the rule label in the test name or docstring and the source line in a short comment.
- Assert only values the spec states, copied verbatim. If the spec names an outcome but no text (for example, "refused with a message"), assert the outcome (the error type, the status, the fact that nothing was saved) and never the wording the code happens to use.
- Tests for new code must fail on the assertion. An import error or missing function is not red: add a stub (the signature, raising "not implemented") so the tests collect, then watch them fail.
- Tests for code that already exists will pass on the first run. That proves nothing until you show the test can fail: break the behaviour temporarily (change the value or condition the rule is about), confirm that this test fails, then revert. Mark it "conforms (verified can fail)".
- Green. Write the minimum code that makes the failing tests pass. Add no behaviour the spec does not cite. If the code needs something the spec does not state (a message, a limit, a fallback), keep it minimal and list it under NOT IN SPEC as a question. Never present an invented value as spec. Run the full suite.
- Refactor. Clean up with the suite green. Behaviour must not change.
Report and ledger.
Rule (source line) Outcome Test Status Status is one of: red→green, conforms (verified can fail), not testable (reason), deferred (→ §N), open. Then list the NOT IN SPEC questions, open items and conflicts for the spec owner. Update the ledger.
Coverage ledger (multi-section runs)
When the scope is more than one section, keep docs/spec-coverage.md (outside the shards folder, because
re-sharding deletes files there). Keep one row per section: the section, mode (gap-check or full), rules
inventoried, TEST / NOT TESTABLE / DEFERRED / OPEN counts, test file, and date. Below the table, list
every DEFERRED rule with its target section and every open question. At the start of a run, read the
ledger and continue from the first unfinished section. Pick up the DEFERRED rules when their section comes.
Don't
- Don't write a test whose expected value you cannot cite. A plausible default is an invented requirement.
- Don't assert existing code behaviour (messages, formats, fallbacks) that the spec does not state. Existing code is not the spec.
- Don't infer a rule from a hint ("git-ignored" does not mean "optional"). Make it OPEN and ask.
- Don't cite shard lines. Cite the source.
- Don't edit the requirement document or the shards.
- Don't call a section covered while any inventory row has no outcome or a TEST row has no passing test.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

