ワンクリックで
running-tdd-cycles
Drive strict red-green-refactor TDD discipline on any code change, any language.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Drive strict red-green-refactor TDD discipline on any code change, any language.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Generate one "Implement Block X" GitHub issue per Spec Kit tasks.md PR-stack block, with a minimal body pointing at tasks.md as the source of truth.
Implement one Spec Kit `tasks.md` PR-stack block end-to-end — TDD + review + PR + CI fix loop.
Apply KISS, YAGNI, DRY, SOLID, fail-fast, be-brief on every code decision.
Five-pass review of a diff: code, security, architecture, acceptance, AI-native.
Apply Solidity conventions — Foundry only, forge fmt, solhint:all, fuzz tests.
Commit via feature branch + PR + git hooks; never push main, never merge.
| name | running-tdd-cycles |
| description | Drive strict red-green-refactor TDD discipline on any code change, any language. |
| allowed-tools | Read, Edit, Write, Grep, Glob, Bash(pytest *), Bash(uv run pytest *), Bash(npm test *), Bash(npm run test *), Bash(npx vitest *), Bash(npx jest *), Bash(go test *), Bash(cargo test *), Bash(rspec *), Bash(mvn test *), Bash(gradle test *), Bash(forge test *), Bash(forge coverage *), Bash(git status *), Bash(git diff *), Bash(git add *), Bash(git commit *) |
For each new piece of behaviour:
1. Extract <requirement> — the smallest piece of logic that adds value.
2. RED → write ONE failing test that pins down <requirement>.
3. GREEN → write the minimal code that makes it pass.
4. REFACTOR → improve structure with the test as a safety net.
5. COMMIT → one logical change per commit (defer to committing-changes).
6. Repeat 2–5 until the task is done.
7. REVIEW → defer to reviewing-changes for the final pass.
Always one requirement per cycle. If the cycle feels big, the requirement was too big — split it.
test_decodesV4Quote that loads a V5 fixture is silently broken: it passes but pins the wrong invariant, and the regression lands in the wrong place. Common causes: renamed a test and forgot to update the fixture; copy-pasted a fuzzy assertion from a sibling test without re-targeting it.should_X_when_Y naming where the framework allows it.null, empty collections, boundary values, concurrent access, errors) get their own RED-GREEN-REFACTOR cycles.hypothesis (Python), fast-check (JS/TS), or quickcheck (Haskell/Rust) for invariants. Example-based tests are for specific edge cases or documentation. See reference/property-based-testing.md.tests/strategies.py (or the project equivalent) for shared fixtures/strategies. Add new ones back to the shared module.pytest.mark.parametrize for multiple cases, hypothesis for properties.vi.fn() / jest.fn() mocks; @testing-library/* for components; fast-check for properties.t.Run(name, func(t *testing.T) {...}); t.Parallel() where safe.let for lazy fixtures, let! for eager; nested context for branching scenarios.forge test -vvv; parametric fuzz tests via function testFoo(uint256 x); bound(x, min, max) not if-guards. See solidity-conventions.If the discipline breaks: stop, identify the violated phase, revert to the last green state, resume from the right phase, note what went wrong.
End of RED: test exists, test fails, failure message names the missing behaviour, no false positive.
End of GREEN: all tests pass, the change is the minimum that could possibly work, the test wasn't modified, coverage didn't drop.
End of REFACTOR: all tests still pass, complexity (cyclomatic, length) at least no worse, duplication addressed, names readable, performance measured if performance was the goal.
Quick exploration belongs in a gitignored scratch file, not in production code or in the test suite:
test.py (see python-conventions and reference/scratch-testing.md).test.go with //go:build scratch tag (see go-conventions).script/Scratch.s.sol or chisel REPL (see solidity-conventions).Never use inline heredocs (uv run python << EOF, go run -, forge script --via-stdin) — the file pattern keeps history and stays inspectable.
committing-changes — commit after every successful GREEN or REFACTOR phase.reviewing-changes — final pass after the loop ends.python-conventions / go-conventions / solidity-conventions — language-specific test runner setup.engineering-philosophy — Small Steps, Investigate-Don't-Mask, KISS, YAGNI all apply directly.rules/tdd-workflow.md verbatim.