test-driven-development
Skill30 starsChanged 4 days agoApache-2.0View on GitHub
Guides the implementation of software using Red-Green-Refactor testing cycles, ensuring high coverage, robust mocks, and testable system designs. Use this skill when asked to write new features, add testing suites, or verify coverage.
We split this skill into the rules it gives an agent
12 rules. 0 are common, 7 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 179 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 27
Run existing tests to verify that the baseline suite is green before making any edits:
- Distinctive: line 34
RED: Write a focused, failing unit test asserting the expected behavior.
- Distinctive: line 35
Run the test suite and confirm the test fails specifically due to the missing behavior (not due to a syntax error or broken import).
- Distinctive: line 36
GREEN: Write the minimal amount of production code required to satisfy the test assertions.
- Very specific: line 39
Run verify_tests.py after each micro-refactoring step to confirm everything remains green.
- Distinctive: line 43
One Assertive Focus: Keep each unit test focused on a single logical behavior or failure mode.
- Distinctive: line 44
Clean Teardowns: Ensure fixtures, mocks, and environment variables are cleaned up automatically after test execution.
- Distinctive: line 49
Fixtures & Scope: Use explicit fixtures with dependency injection instead of global state or setup/teardown boilerplate:
- Very specific: line 57
Parametrization: Test boundary conditions and edge cases concisely with @pytest.mark.parametrize:
- Very specific: line 65
Hermetic Monkeypatching & Spies: Use monkeypatch or unittest.mock.patch for external APIs.
- Very specific: line 68
Widget Testing Lifecycle: Use testWidgets with explicit asynchronous settlement:
- Very specific: line 83
Settlement Guard: Always call await tester.pumpAndSettle() after tapping or animating widgets to drain the microtask queue before asserting …
“Common” is measured: kept by at least 6 in 10 of the 179 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
Test-Driven Development (TDD) Skill
Overview
This skill establishes a disciplined Test-Driven Development (TDD) workflow based on the Red-Green-Refactor cycle. It acts as a Software Quality and TDD Specialist, treating untested code as immediate technical debt. It enforces decoupled, highly testable architectures by defining verification contracts and behavioral specifications before writing any production implementation.
When to Use
Trigger Scenarios
- Implementing new features, user stories, domain models, or utility logic.
- Fixing software bugs by writing a reproducing regression test first.
- Refactoring complex systems while preserving exact behavior with a fast safety net.
- Measuring and enforcing test coverage boundaries across a codebase.
When NOT to Use
- Browser/UI End-to-End journeys: Route to
qa-tester. - BDD Gherkin specification authoring: Route to
testing-expert. - Pre-commit and linting pipelines: Route to
build-and-ci-gates. - Pure code smell identification without testing: Route to
code-smells-expert.
Process
Phase 1: Framework Discovery & Baseline Run
- Detect the project's testing framework (
pytest,jest,vitest,go test,flutter test). - Run existing tests to verify that the baseline suite is green before making any edits:
python3 ./skills/test-driven-development/scripts/verify_tests.py
Phase 2: Red-Green-Refactor Loop
For every atomic requirement or behavior:
- RED: Write a focused, failing unit test asserting the expected behavior. Follow the Arrange-Act-Assert (AAA) pattern.
- Run the test suite and confirm the test fails specifically due to the missing behavior (not due to a syntax error or broken import).
- GREEN: Write the minimal amount of production code required to satisfy the test assertions. Avoid premature abstractions. Confirm the test suite passes.
- REFACTOR: Clean up both production code and test code:
- Eliminate duplication, improve variable and function naming, extract cohesive helpers, and remove dead code.
- Run
verify_tests.pyafter each micro-refactoring step to confirm everything remains green.
Phase 3: Hermetic Boundary Mocking
- Mock External Boundaries: Mock network calls, file system I/O, database persistence (in unit tests), and external APIs to keep unit tests sub-millisecond fast and deterministic.
- One Assertive Focus: Keep each unit test focused on a single logical behavior or failure mode.
- Clean Teardowns: Ensure fixtures, mocks, and environment variables are cleaned up automatically after test execution.
Phase 4: Cross-Language Testing Patterns
1. Python (pytest) Patterns
- Fixtures & Scope: Use explicit fixtures with dependency injection instead of global state or setup/teardown boilerplate:
@pytest.fixture def auth_client(db_session): client = TestClient(app) client.headers = {"Authorization": "Bearer test-token"} yield client - Parametrization: Test boundary conditions and edge cases concisely with
@pytest.mark.parametrize:@pytest.mark.parametrize("input_val, expected", [ ("", False), ("user@example.com", True), ("invalid", False) ]) def test_email_validation(input_val, expected): assert validate_email(input_val) is expected - Hermetic Monkeypatching & Spies: Use
monkeypatchorunittest.mock.patchfor external APIs.
2. Dart & Flutter (testWidgets) Patterns
- Widget Testing Lifecycle: Use
testWidgetswith explicit asynchronous settlement:testWidgets('renders login button and handles submit', (WidgetTester tester) async { // Arrange await tester.pumpWidget(const MaterialApp(home: LoginScreen())); // Act await tester.enterText(find.byKey(const Key('email_field')), 'dev@example.com'); await tester.tap(find.byType(ElevatedButton)); await tester.pumpAndSettle(); // Assert expect(find.text('Dashboard'), findsOneWidget); }); - Settlement Guard: Always call
await tester.pumpAndSettle()after tapping or animating widgets to drain the microtask queue before asserting state.
3. Dataform & BigQuery Assertions
- Declarative Row-Level Assertions: In Dataform SQLX pipelines, embed automated validation assertions:
config { type: "assertion" } SELECT order_id, COUNT(*) as duplicate_count FROM ${ref("stg_orders")} GROUP BY order_id HAVING duplicate_count > 1 - Built-in Quality Assertions: Enforce uniqueness and nullability constraints in table definitions:
config { type: "table", assertions: { uniqueKey: ["user_id"], nonNull: ["user_id", "email", "created_at"] } }
Usage
Commands & Automation Scripts
# Run automated test verification and coverage scanner
python3 ./skills/test-driven-development/scripts/verify_tests.pyExample Prompts
- "Implement the discount calculation service using strict TDD — write the failing unit test first."
- "Write a regression test reproducing the expired token bug, then implement the fix following Red-Green-Refactor."
- "Add comprehensive Flutter widget tests with testWidgets and tester.pumpAndSettle() for the checkout screen."
- "Create a Dataform assertion verifying uniqueness and non-null constraints for the staging table."
Host Execution Instructions
- Claude Code: Execute
verify_tests.pyor the project's native test runner via shell commands between TDD phases. - Antigravity: Maintain a tight Red-Green-Refactor loop, verifying test suite execution before reporting completion.
Red Flags
- Writing production code before writing the failing test.
- Writing assertions that never failed in the RED phase (testing the wrong condition).
- Writing tests that assert implementation details (e.g. private helper calls) rather than public behavioral contracts.
- Flaky tests dependent on real network connections, time of day, or test execution ordering.
- Skipping assertions or using dummy
assert True. - Missing
await tester.pumpAndSettle()in Flutter widget tests leading to unhandled timers or assertions on intermediate frames.
Verification
- Failing test written and proven to fail for the expected reason in the RED phase.
- 100% of unit tests pass cleanly in the GREEN phase.
- Refactoring completed with zero test regressions.
- All external I/O boundaries properly isolated and mocked.
- Cross-language patterns adhere to conventions (
pytestfixtures,testWidgets+pumpAndSettle(), Dataform assertions). - Automated verification script executes cleanly:
python3 ./skills/test-driven-development/scripts/verify_tests.py
References
For concrete AAA templates, mocking recipes, and test layout guidelines:
- TDD & Testing Patterns Reference
Other versions190 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 190
- obra/superpowers★ 305ksame name
- NousResearch/hermes-agent★ 259ksame name
- addyosmani/agent-skills★ 112ksame name
- cloudflare/computer★ 9.8ksame name
- jnMetaCode/superpowers-zh★ 8.4ksame name
- openai/plugins★ 7.4ksame name
- farm-fe/farm★ 5.6ksame name
- microsoft/FluidFramework★ 5ksame name
- mikeyobrien/ralph-orchestrator★ 3.2ksame name
- crbnos/carbon★ 2.8ksame name
180 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.
Used alongsideProjects with it also use chinese-code-review, chinese-commit-conventions 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.
GEd520Skillchinese-code-review
中文 review 沟通参考——话术模板、分级标注(必须修复/建议修改/仅供参考)、国内团队常见反模式应对。仅在用户显式 /chinese-code-review 时调用,不要根据上下文自动触发。
Also in 7 projects that use this
GEd520Skillchinese-commit-conventions
中文 commit 与 changelog 配置参考——Conventional Commits 中文适配、commitlint/husky/commitizen 中文模板、conventional-changelog 中文配置。仅在用户显式 /chinese-commit-conventions 时调用,不要根据上下文自动触发。
Also in 7 projects that use this
obraSkilldiagnosing-superpowers
Use when a superpowers session went wrong and your human partner wants to know why — repeated work, ignored plans, stumbles, poor results, a skill that didn't fire, "it took too long", "why is it so expensive", "what is it doing" — or wants to build a bug report for the superpowers maintainers, for the current session or a past one identified by id or path, on any harness.
Also in 12 projects that use this
LLl0k0laDSkillgit-workflow-and-versioning
Use when making any code change. Use when committing, branching, resolving conflicts, or when you need to organize work across multiple parallel streams.
Also in 44 projects that use this
LLl0k0laDSkillusing-agent-skills
Use when starting a session or when you need to discover which skill applies to the current task. This is the meta-skill that governs how all other skills are discovered and invoked.
Also in 36 projects that use this
10CGSkillworkflow-runner
十步循环轻量编排器,协调 Phase Skills 执行,支持灵活组合。
Also in 8 projects that use this
- +2 more from GEd520
- +3 more from LLl0k0laD
In this repository40 other files it gives its agents.
- AGENTS.mdAGENTS.md
- adversarial-challengerSkill
- agent-metricsSkill
- bigquery-query-optimizationSkill
- blackbox-testerSkill
- build-and-ci-gatesSkill
- cdc-scd-patternsSkill
- code-criticSkill
- code-implementerSkill
- code-smells-expertSkill
- commit-expertSkill
- compliance-verifierSkill
- context-captureSkill
- context-restoreSkill
- database-migration-expertSkill
- design-spec-expertSkill
- documentation-expertSkill
- flutter-architecture-decisionsSkill
- flutter-performance-profilingSkill
- flutter-release-engineeringSkill
- flutter-review-checklistSkill
- flutter-senior-orchestrationSkill
- flutter-test-strategySkill
- flutter-upgrade-migrationSkill
- gcp-data-engineeringSkill
- guidelines-karpathySkill
- loop-engineeringSkill
- performance-scalabilitySkill
- product-analystSkill
- pull-request-expertSkill
- python-expertSkill
- qa-testerSkill
- refactoring-code-expertSkill
- repo-researchSkill
- security-auditSkill
- senior-architect-engineeringSkill
- senior-dev-orchestratorSkill
- sql-query-optimizationSkill
- testing-expertSkill
- ui-ux-designerSkill
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.

