Enforces test-driven development with Red-Green-Refactor cycle. Use when writing new code, implementing features, fixing bugs, or when tests are mentioned. Ensures tests are written before implementation.
From genienpx claudepluginhub elmmly/genie-team --plugin genieThis skill is limited to using the following tools:
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
You MUST follow strict test-first development. This is NOT optional.
RED → GREEN → REFACTOR → (repeat)
Write ALL tests BEFORE any implementation code.
Requirements:
AAA Pattern by Language:
TypeScript (Jest/Vitest):
// Arrange
const user = createTestUser({ role: 'admin' });
const request = mockRequest({ userId: user.id });
// Act
const result = await authService.validateAccess(request);
// Assert
expect(result.allowed).toBe(true);
Go:
// Arrange
user := createTestUser(t, "admin")
req := mockRequest(user.ID)
// Act
result, err := authService.ValidateAccess(req)
// Assert
require.NoError(t, err)
assert.True(t, result.Allowed)
Rust:
// Arrange
let user = create_test_user(Role::Admin);
let request = mock_request(user.id);
// Act
let result = auth_service.validate_access(&request).unwrap();
// Assert
assert!(result.allowed);
C# (xUnit):
// Arrange
var user = CreateTestUser(role: "admin");
var request = MockRequest(userId: user.Id);
// Act
var result = await _authService.ValidateAccess(request);
// Assert
Assert.True(result.Allowed);
Java (JUnit 5):
// Arrange
var user = createTestUser("admin");
var request = mockRequest(user.getId());
// Act
var result = authService.validateAccess(request);
// Assert
assertThat(result.isAllowed()).isTrue();
Swift (XCTest):
// Arrange
let user = createTestUser(role: .admin)
let request = mockRequest(userId: user.id)
// Act
let result = try await authService.validateAccess(request)
// Assert
XCTAssertTrue(result.allowed)
Kotlin (JUnit 5):
// Arrange
val user = createTestUser(role = "admin")
val request = mockRequest(userId = user.id)
// Act
val result = authService.validateAccess(request)
// Assert
assertThat(result.allowed).isTrue()
AAA Rules:
ONLY after tests are confirmed failing:
ONLY after all tests pass:
| Pattern | Response |
|---|---|
| Writing implementation first | STOP — write tests first |
| Modifying tests to pass | STOP — fix implementation instead |
| Skipping the red phase | STOP — run tests, confirm failure |
| Complex test setup | Simplify — tests should be readable |
When implementing with TDD, structure your work:
=== PHASE 1: RED ===
Writing tests...
[test file changes]
Running tests: X failed (expected)
=== PHASE 2: GREEN ===
Writing implementation...
[implementation changes]
Running tests: X passed
=== PHASE 3: REFACTOR ===
[any cleanup]
Tests still passing: X passed