Agent skill
dev-tdd
Test-driven development workflow. Auto-detects backend (.NET) and frontend (Angular/TypeScript) from project files. Loops RED→GREEN→REFACTOR cycles until 80%+ coverage is reached. Filter with "dotnet" or "angular" to target one stack. Use when the user says "TDD", "write tests first", "test-driven", or invokes /dev-tdd.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/dev-tdd-eriklieben-agentic-dev-workflow
SKILL.md
TDD — Unified Entry Point
Routes to the appropriate backend and/or frontend TDD skill, then drives RED→GREEN→REFACTOR cycles until the coverage target is met.
Step 1: Detect Stack
- Explicit filter — if the user passed
dotnetorangular, use that stack - Context from the feature — if the feature description mentions API/endpoint/aggregate → .NET, if it mentions component/page/signal → Angular
- Project detection:
- .NET: any
*.csproj,*.slnfile exists - Angular:
angular.jsonorpackage.jsonwith@angular/coreexists
- .NET: any
- workflow.json fallback:
type: "api"ortype: "library"→ .NETtype: "frontend"→ Angular
Unlike verification/dependency, TDD typically targets one stack at a time — a feature is usually backend or frontend, not both. If both are detected and no filter given, ask the user which stack this feature targets.
Step 2: Plan Test Cases
Before writing any code, analyze the feature and propose test cases:
Feature: Profile email verification
Test Cases
──────────
1. VerifyEmail_WithCorrectCode_ShouldSucceedAndSetEmail
2. VerifyEmail_WithExpiredCode_ShouldFail
3. VerifyEmail_WithWrongCode_ShouldFail
4. VerifyEmail_WhenAlreadyVerified_ShouldReturnAlreadyVerified
5. VerifyEmail_WithNullCode_ShouldThrowValidation
───────────────────────────────────────────────
Proceed? [y]es [e]dit list [a]dd more tests
Wait for user input. This ensures alignment on what to test before writing anything.
Step 3: TDD Loop
Read the appropriate sub-skill for patterns and conventions:
- .NET:
.claude/skills/dev-tdd-backend/SKILL.md - Angular:
.claude/skills/dev-tdd-frontend/SKILL.md
Then loop through each test case:
For each test case:
RED — Write a failing test
Write the test following the sub-skill's conventions (naming, AAA pattern, etc.). Run it to confirm it fails:
[1/5] VerifyEmail_WithCorrectCode_ShouldSucceedAndSetEmail
RED ✗ test fails (method not implemented) — expected
GREEN — Write minimal code to pass
Implement just enough production code to make the test pass. Run the test again:
GREEN ✓ test passes
REFACTOR — Improve while green
Clean up the implementation if needed. Run tests to confirm still passing.
REFACTOR ✓ tests still green
After each test case, show progress:
Progress
────────
✓ 1. VerifyEmail_WithCorrectCode_ShouldSucceedAndSetEmail
✓ 2. VerifyEmail_WithExpiredCode_ShouldFail
▸ 3. VerifyEmail_WithWrongCode_ShouldFail ← next
· 4. VerifyEmail_WhenAlreadyVerified_ShouldReturnAlreadyVerified
· 5. VerifyEmail_WithNullCode_ShouldThrowValidation
Tests: 2/5 done | All passing
──────────────────────────────────────
[c]ontinue [s]kip to coverage check [q]uit
Continue to next test case unless user intervenes.
Step 4: Coverage Check
After all planned test cases are done, run coverage:
# .NET
dotnet test --collect:"XPlat Code Coverage" --results-directory ./TestResults
# Angular
npx vitest run --coverage
Present the results:
Coverage Report
───────────────
Overall: 74% (target: 80%)
ProfileAggregate: 68% ← below target
EmailService: 82% ✓
VerifyEndpoint: 71% ← below target
Uncovered areas in ProfileAggregate:
- Line 42-48: error path when stream is empty
- Line 63-67: concurrent verification guard
Uncovered areas in VerifyEndpoint:
- Line 28-35: authorization failure path
────────────────────────────────────────
Add tests for uncovered areas? [y]es [p]ick [s]kip
Step 5: Coverage Loop
If coverage is below 80% and user chose y or p:
- Identify the uncovered code paths
- Propose additional test cases for them
- Run more RED→GREEN→REFACTOR cycles
- Re-check coverage
- Repeat until 80%+ or user skips
Additional Test Cases (for coverage)
─────────────────────────────────────
6. VerifyEmail_WhenStreamEmpty_ShouldThrowAggregateNotFound
7. VerifyEmail_WhenConcurrentVerification_ShouldFailWithConflict
8. VerifyEndpoint_WithUnauthorized_ShouldReturn401
───────────────────────────────────
Proceed? [y]es [p]ick [s]kip
After each round, re-check coverage:
Coverage: 74% → 83% ✓ target met
Result: 8 tests, all passing, 83% coverage
Step 6: Summary
TDD Complete
────────────
Feature: Profile email verification
Stack: .NET (xUnit + NSubstitute)
Tests: 8 written, 8 passing
Coverage: 83% (target: 80% ✓)
Files:
new tests/Api.Tests/Domain/ProfileVerifyEmailTests.cs
mod src/Domain/Aggregates/Profile.cs
mod src/Api/Endpoints/ProfileEndpoints.cs
Flags
| Flag | Behavior |
|---|---|
dotnet |
Use .NET TDD workflow |
angular |
Use Angular TDD workflow |
--target N |
Override coverage target (default: 80) |
| (feature description) | What to build test-first |
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?