TDD
fossasia/eventyay-interpretation
Test-driven development. An agent skill from fossasia/eventyay-interpretation.
A skill your agent uses when implementing any code in recursive-mode Phase 3.
$ npx skills add try-works/recursive-mode --skill recursive-tdd -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install try-works/recursive-mode recursive-tdd --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/try-works/recursive-mode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/recursive-tdd .claude/skills/recursive-tdd && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "recursive-tdd" agent skill from https://github.com/try-works/recursive-mode/tree/main/skills/recursive-tdd into .claude/skills/recursive-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "recursive-tdd", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/try-works/recursive-mode/tree/main/skills/recursive-tddType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add try-works/recursive-mode --skill recursive-tdd -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install try-works/recursive-mode recursive-tdd --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/try-works/recursive-mode.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/recursive-tdd .agents/skills/recursive-tdd && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "recursive-tdd" agent skill from https://github.com/try-works/recursive-mode/tree/main/skills/recursive-tdd into .agents/skills/recursive-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "recursive-tdd", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add try-works/recursive-mode --skill recursive-tdd -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install try-works/recursive-mode recursive-tdd --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/try-works/recursive-mode.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/recursive-tdd .cursor/skills/recursive-tdd && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "recursive-tdd" agent skill from https://github.com/try-works/recursive-mode/tree/main/skills/recursive-tdd into .cursor/skills/recursive-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "recursive-tdd", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/try-works/recursive-mode.git --path skills/recursive-tdd--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add try-works/recursive-mode --skill recursive-tdd -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install try-works/recursive-mode recursive-tdd --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/try-works/recursive-mode.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/recursive-tdd .gemini/skills/recursive-tdd && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "recursive-tdd" agent skill from https://github.com/try-works/recursive-mode/tree/main/skills/recursive-tdd into .gemini/skills/recursive-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "recursive-tdd", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install try-works/recursive-mode recursive-tddInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add try-works/recursive-mode --skill recursive-tdd -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/try-works/recursive-mode.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/recursive-tdd .github/skills/recursive-tdd && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "recursive-tdd" agent skill from https://github.com/try-works/recursive-mode/tree/main/skills/recursive-tdd into .github/skills/recursive-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "recursive-tdd", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add try-works/recursive-mode --skill recursive-tdd -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install try-works/recursive-mode recursive-tdd --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/try-works/recursive-mode.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/recursive-tdd .opencode/skills/recursive-tdd && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "recursive-tdd" agent skill from https://github.com/try-works/recursive-mode/tree/main/skills/recursive-tdd into .opencode/skills/recursive-tdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "recursive-tdd", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
recursive-tddA skill your agent uses when implementing any code in recursive-mode Phase 3.
Recursive TDD is an agent skill from try-works/recursive-mode. Use when implementing any code in recursive-mode Phase 3. Enforces strict RED-GREEN-REFACTOR discipline with The Iron Law - no production code without a failing test first. Trigger phrases: "implement this", "add feature", "fix bug", "write a failing test", "TDD".
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Testing & QA, covering Test-driven development. The repository describes itself as: Recursive workflow for agentic engineering. Like Factory Missions but properly recursive, free and open source. The licence is Apache-2.0.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ff75bc7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Recursive TDD loads about 2.8k tokens when it runs. Until then it costs about 70 tokens; SKILL.md has 761 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from try-works/recursive-mode at commit ff75bc7, republished under its Apache-2.0 licence (© try-works). 761 words, ~2,752 tokens.
.claude/skills/recursive-tdd/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Test-Driven Development is mandatory for all recursive-mode implementation work. This skill ensures test-first discipline is followed rigorously and recorded in a way recursive-mode tooling can verify.
Core Principle: If you didn't watch the test fail, you don't know if it tests the right thing.
The Iron Law for recursive-mode:
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRSTImplement Phase 3 for run '<run-id>'Add a failing regression test first, then fix the bugI already wrote the code; now add tests (should trigger TDD reset guidance)Follow RED-GREEN-REFACTOR for this changeAlways in Phase 3 (Implementation):
Default rule:
Explicit exception path only:
TDD Mode: pragmatic in the Phase 3 artifact/.recursive/run/<run-id>/evidence/digraph tdd_cycle {
rankdir=LR;
red [label="RED\nWrite failing test", shape=box, style=filled, fillcolor="#ffcccc"];
verify_red [label="Verify fails\ncorrectly", shape=diamond];
green [label="GREEN\nMinimal code", shape=box, style=filled, fillcolor="#ccffcc"];
verify_green [label="Verify passes\nAll green", shape=diamond];
refactor [label="REFACTOR\nClean up", shape=box, style=filled, fillcolor="#ccccff"];
record [label="Record in\nPhase 3 artifact", shape=box];
red -> verify_red;
verify_red -> green [label="yes"];
verify_red -> red [label="wrong\nfailure"];
green -> verify_green;
verify_green -> refactor [label="yes"];
verify_green -> green [label="no"];
refactor -> verify_green [label="stay\ngreen"];
verify_green -> record;
}Write one minimal test showing what should happen.
Requirements:
<Good>
```typescript
test('rejects empty email with clear error message', async () => {
const result = await submitForm({ email: '' });
expect(result.error).toBe('Email is required');
});
```
</Good>
<Bad>
```typescript
test('email validation works', async () => {
const mock = jest.fn().mockResolvedValue({ valid: true });
const result = await validateEmail(mock);
expect(mock).toHaveBeenCalled();
});
```
</Bad>
MANDATORY. Never skip.
npm test path/to/test.test.tsConfirm:
Record in Phase 3 artifact:
### TDD Cycle for R3 (Email Validation)
TDD Mode: strict
RED Evidence:
- `/.recursive/run/<run-id>/evidence/logs/red/<file>.log`
GREEN Evidence:
- `/.recursive/run/<run-id>/evidence/logs/green/<file>.log`
**RED Phase:**
- Test: `rejects empty email with clear error message`
- Command: `npm test src/forms/email.test.ts`
- Expected failure: "Email is required" not found
- Actual failure: [paste output]
- RED verified: PASSWrite simplest code to pass the test.
Rules:
<Good>
```typescript
function submitForm(data: FormData) {
if (!data.email?.trim()) {
return { error: 'Email is required' };
}
// ... rest of form handling
}
```
</Good>
<Bad>
```typescript
function submitForm(
data: FormData,
options?: {
strictMode?: boolean;
customValidators?: Validator[];
onValidationError?: (err: Error) => void;
}
) {
// YAGNI - over-engineered
}
```
</Bad>
Record in Phase 3 artifact:
**GREEN Phase:**
- Implementation: Added null check for email field
- Command: `npm test src/forms/email.test.ts`
- Result: PASS
- GREEN verified: PASSAfter green only:
Never add behavior during refactor.
Record in Phase 3 artifact:
**REFACTOR Phase:**
- Extracted `validateRequired(field, name)` helper
- Renamed `submitForm` to `processFormSubmission` for clarity
- All tests still passing: PASS| Excuse | Reality |
|---|---|
| "This is just a simple fix, no test needed" | Simple code breaks. Test takes 30 seconds. |
| "I'll test after confirming the fix works" | Tests passing immediately prove nothing. You never saw it catch the bug. |
| "Tests after achieve same goals" | Tests-after = "what does this do?" Tests-first = "what should this do?" |
| "I already manually tested it" | Ad-hoc != systematic. No record, can't re-run, no regression protection. |
| "Deleting working code is wasteful" | Sunk cost fallacy. Keeping unverified code is technical debt. |
| "TDD is dogmatic, I'm being pragmatic" | TDD IS pragmatic. Finds bugs before commit, enables refactoring. |
| "I'll keep the code as reference" | You'll adapt it. That's testing after. Delete means delete. |
| "Test hard = design unclear" | Listen to the test. Hard to test = hard to use. Simplify design. |
| "I need to explore first" | Fine. Throw away exploration, start TDD fresh. |
| "This is different because..." | It's not. The rules don't have exceptions. |
If you encounter any of these, DELETE CODE and restart with TDD:
If TDD execution uses delegated review, test audit, or bounded routed implementation help, re-read:
/.recursive/config/recursive-router.json/.recursive/config/recursive-router-discovered.jsonimmediately before choosing the delegated CLI/model, and use the routed policy or explicit fallback rather than ad hoc model selection.
Every Phase 3 artifact must include:
## TODO
- [ ] Replace every placeholder with concrete TDD evidence for the current implementation phase.
## Audit Context
Audit Execution Mode: self-audit / subagent
Subagent Availability: available / unavailable
Subagent Capability Probe: [what proved availability or unavailability]
Delegation Decision Basis: [why self-audit or delegation was chosen]
## TDD Compliance Log
TDD Mode: strict
RED Evidence:
- `/.recursive/run/<run-id>/evidence/logs/red/<file>.log`
GREEN Evidence:
- `/.recursive/run/<run-id>/evidence/logs/green/<file>.log`
### Requirement R1 (Feature X)
**Test:** `test/features/x.test.ts` - "should do Y when Z"
- RED: [timestamp] - Failed as expected: [output]
- GREEN: [timestamp] - Minimal implementation: [description]
- REFACTOR: [timestamp] - Cleanups: [description]
- Final state: PASS - all tests passing
### Requirement R2 (Bug Fix)
**Regression Test:** `test/bugs/issue-123.test.ts` - "reproduces crash on empty input"
- RED: [timestamp] - Confirmed bug: [output]
- GREEN: [timestamp] - Fix applied: [description]
- REFACTOR: [timestamp] - N/A (minimal fix)
- Final state: PASS - test passes, bug fixed
## Requirement Completion Status
- `R1` | `implemented` | Changed Files: `path/to/file`
- `R1` | `verified` | Evidence: `/.recursive/run/<run-id>/evidence/logs/green/<file>.log`If strict mode cannot be followed, the artifact must include:
## Pragmatic TDD Exception
Exception reason: [specific reason strict RED-first flow was not feasible]
Compensating validation:
- [extra tests, targeted manual verification, diff review, etc.]
- `/.recursive/run/<run-id>/evidence/<supporting-file>`## Coverage Gate
- [ ] Every new function has a corresponding test
- [ ] Every bug fix has a regression test that fails before fix
- [ ] All RED phases documented with failure output
- [ ] All GREEN phases documented with minimal implementation
- [ ] All tests passing (no skipped tests)
- [ ] No production code written before failing test
TDD Compliance: PASS / FAIL## Approval Gate
- [ ] TDD Compliance: PASS
- [ ] Implementation matches Phase 3 plan
- [ ] No code without preceding failing test
- [ ] All tests documented in TDD Compliance Log
Approval: PASS / FAILAdd Regression Test First
Implement Minimal Fix
Verify No Regressions
Lock Phase 3
## TDD Compliance Log
### R1: Add email validation
**Test:** `test/forms/validation.test.ts`
RED Phase (2026-02-21T10:15:00Z):
```bash
$ npm test test/forms/validation.test.ts
FAIL: Expected 'Email is required', got undefinedRED verified: PASS
GREEN Phase (2026-02-21T10:18:00Z):
submitForm() functionREFACTOR Phase (2026-02-21T10:22:00Z):
validateRequired() helperRegression Test: test/utils/array.test.ts
RED Phase (2026-02-21T10:25:00Z):
$ npm test test/utils/array.test.ts
FAIL: TypeError: Cannot read property 'map' of undefinedRED verified: Bug reproduced PASS
GREEN Phase (2026-02-21T10:27:00Z):
processItems()REFACTOR: N/A (minimal 2-line fix)
Full suite run: npm test
Result: 47 passing, 0 failing
## References
- **REQUIRED:** Follow this skill for all Phase 3 implementation work© try-works, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/recursive-tdd of try-works/recursive-mode.
Open the folder on GitHubat commit ff75bc7
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders. This page covers the copy in try-works/recursive-mode, which our catalogue first saw on October 7, 2026.
Recursive TDD next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Recursive TDD this skilltry-works/recursive-mode | 136 | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| TDDfossasia/eventyay-interpretation | 1.6k | 28 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph | 112 | 11 repos | ~2.4k | Automated safety check: Pass | None | |
| TDDsanity-io/sanity | 6.4k | 20 repos | ~1k | Automated safety check: Pass | MIT | |
| Test Driven Developmentfarm-fe/farm | 5.6k | 49 repos | ~2.5k | Automated safety check: Pass | MIT | |
| Tapd Story PipelineTencentBlueKing/bk-bcs | 840 | — | ~2.6k | Automated safety check: Pass | Custom licence |
fossasia/eventyay-interpretation
Test-driven development. An agent skill from fossasia/eventyay-interpretation.
hellangleZ/burn-in-cceverywhere-ralph
A skill your agent uses when writing new features, fixing bugs, or refactoring code.
sanity-io/sanity
Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.
farm-fe/farm
A skill your agent uses when implementing any feature or bugfix, before writing implementation code
TencentBlueKing/bk-bcs
单需求实现流水线——把一个 TAPD 需求从零推进到代码提交。自动串联技术澄清、 开发计划、任务拆分、TDD 实现、架构/安全校验、代码提交六个阶段。
maddhruv/absolute
One-time setup for absolute: interview how you want it to behave (output style, autonomy, TDD strictness, spec dir, families) + detect the stack once, then write .absolute.config.json (project…
try-works/recursive-mode
Repository workflow orchestration skill for staged implementation, locked artifacts, late-phase receipts, and durable memory maintenance.
try-works/recursive-mode
A skill your agent uses when a recursive-mode requirement involves debugging a bug, test failure, or unexpected behavior.
try-works/recursive-mode
A skill your agent uses when recursive-mode work needs a canonical delegated-review or audit handoff.
try-works/recursive-mode
A skill your agent uses when recursive-mode work may benefit from delegated audit, review, or bounded implementation support.
try-works/recursive-mode
A skill your agent uses when starting any recursive-mode requirement to set up an isolated git worktree.
try-works/recursive-mode
Approval-gated, repo-aware requirements/spec authoring for new recursive-mode runs.
Categories
A skill your agent uses when implementing any code in recursive-mode Phase 3. Recursive TDD is an agent skill from try-works/recursive-mode. Use when implementing any code in recursive-mode Phase 3.
Recursive TDD fits situations like: implementing any code in recursive-mode Phase 3; phrases: implement this; write a failing test.
Run `npx skills add try-works/recursive-mode --skill recursive-tdd -a claude-code`. Or copy the skill folder (skills/recursive-tdd in try-works/recursive-mode) into .claude/skills/recursive-tdd in your project. Claude Code loads it when a task matches its description.
Run `npx skills add try-works/recursive-mode --skill recursive-tdd -a codex`. Or copy the skill folder (skills/recursive-tdd in try-works/recursive-mode) into .agents/skills/recursive-tdd in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add try-works/recursive-mode --skill recursive-tdd -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/recursive-tdd, .gemini/skills/recursive-tdd, .github/skills/recursive-tdd and .opencode/skills/recursive-tdd in your project.
Going by SKILL.md and its folder, Recursive TDD needs the command-line tools its instructions call (npm).
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Recursive TDD is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Recursive TDD: TDD (fossasia/eventyay-interpretation, 1.6k stars), TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars), TDD (sanity-io/sanity, 6.4k stars) and Test Driven Development (farm-fe/farm, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
try-works (a GitHub user) maintains it in try-works/recursive-mode, which has 136 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on July 24, 2026.
Source: try-works/recursive-mode on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.