Test-Driven Development workflow enforcement with RED-GREEN-REFACTOR cycle. Use when implementing features test-first or improving test coverage.
A disciplined approach to development where tests drive design and implementation.
"Never write a line of code without a failing test."
Goal: Define the expected behavior BEFORE implementation.
Rules:
Example:
// RED: Test the behavior we want
describe("Calculator", () => {
it("should add two numbers", () => {
const calc = new Calculator();
expect(calc.add(2, 3)).toBe(5);
});
});
// Run: npm test
// Result: FAIL - Calculator is not defined
// This is RED ✓
Checklist:
Goal: Write the MINIMUM code to pass the test.
Rules:
Example:
// GREEN: Minimum implementation to pass
class Calculator {
add(a: number, b: number): number {
return a + b; // Simplest thing that works
}
}
// Run: npm test
// Result: PASS
// This is GREEN ✓
Checklist:
Goal: Clean up while keeping tests green.
Rules:
Examples of refactoring:
Checklist:
1. Write high-level acceptance test (may not run yet)
2. Write first unit test (RED)
3. Implement minimum code (GREEN)
4. Refactor if needed (REFACTOR)
5. Repeat 2-4 until feature complete
6. Verify acceptance test passes
it("should [behavior] when [condition]", () => {
// Arrange - Set up test data and dependencies
const user = createTestUser({ role: "admin" });
const service = new UserService();
// Act - Execute the code under test
const result = service.getPermissions(user);
// Assert - Verify expected outcomes
expect(result).toContain("delete");
expect(result).toContain("edit");
});
[Unit]_[Scenario]_[ExpectedResult]
Examples:
add_withPositiveNumbers_returnsSumlogin_withInvalidPassword_throwsAuthErrorgetUser_whenNotFound_returnsNullAlways test:
| Metric | Minimum | Target | | ---------- | ------- | ------ | | Statements | 70% | 85% | | Branches | 70% | 80% | | Functions | 80% | 90% | | Lines | 70% | 85% |
Coverage is a metric, not a goal. 100% coverage doesn't mean bug-free.
RED → Write failing test (define behavior)
GREEN → Minimum code to pass (make it work)
REFACTOR → Clean up (make it right)
COMMIT → Save progress (make it permanent)
| Mistake | Problem | Solution | | ---------------------- | ------------- | ---------------------- | | Testing implementation | Brittle tests | Test behavior/outcomes | | Tests too large | Hard to debug | Smaller, focused tests | | Shared state | Flaky tests | Isolate each test | | Slow tests | Skipped tests | Mock external deps | | Testing obvious code | Wasted time | Focus on logic |
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer