tdd-asynclisted
Install: claude install-skill hnidboubker/symphony-async
# tdd-async
## Workflow
```text
Requirement
↓
Understand behavior
↓
Write failing TUnit test
↓
RED
↓
Implement minimum production code
↓
GREEN
↓
REFACTOR
↓
Run tests
↓
GREEN
```
## STEP 1 — UNDERSTAND
Before modifying code:
1. Inspect the repository.
2. Identify the relevant project.
3. Identify the relevant test project.
4. Identify existing TUnit tests.
5. Understand project conventions.
6. Identify the behavior that must be implemented.
Do not immediately write production code.
## STEP 2 — RED
Write the smallest possible TUnit test expressing the desired behavior.
Example:
```csharp
[Test]
public async Task Add_WithTwoNumbers_ReturnsSum()
{
var calculator = new Calculator();
var result = calculator.Add(2, 3);
await Assert.That(result).IsEqualTo(5);
}
```
TUnit assertions must be awaited.
Use:
```csharp
await Assert.That(actual).IsEqualTo(expected);
```
Do not use xUnit, NUnit, MSTest, or another assertion syntax.
## STEP 3 — RUN RED
Run the smallest relevant test scope.
Prefer:
```bash
dotnet test
```
when appropriate.
If the repository contains multiple test projects, identify the appropriate project first.
The expected state is:
RED
The test should fail because the behavior does not yet exist or is not yet correct.
Do not modify the test simply to make it pass.
## STEP 4 — GREEN
Implement the minimum production code required to make the failing test pass.
Do not:
- over-engineer;
- implement specul