Use before implementing or refactoring software. Contains two skills: (1) Modular Software Design — for designing module boundaries, APIs, layers, abstractions, services, repositories, adapters, or architecture, helping reduce total system complexity by creating deep modules, hiding implementation knowledge, avoiding leakage and pass-through APIs, comparing alternative designs, documenting interfaces before coding, and critiquing existing architecture; and (2) Software Testing — for writing unit tests, integration tests, or end-to-end tests, creating mocks/stubs/fakes, designing a testing strategy, doing TDD, reviewing test quality, fixing flaky tests, or refactoring test suites, generating risk-focused test plans, picking appropriate test levels, choosing between mocks/fakes/real dependencies, and applying Arrange-Act-Assert patterns with concrete examples.
93
94%
Does it follow best practices?
Impact
92%
1.12xAverage score across 5 eval scenarios
Passed
No known issues
An order service currently has brittle tests that mock every collaborator and assert internal call order. The team wants rewritten tests that still protect charging and welcome-email behaviour but survive refactoring.
Produce testing_review.md and order_tests.py.
Input:
class OrderService:
def __init__(self, repo, payment_gateway, email_gateway):
self.repo = repo; self.payment_gateway = payment_gateway; self.email_gateway = email_gateway
def complete(self, order_id):
order = self.repo.load(order_id)
result = self.payment_gateway.capture(order.total, order.currency)
self.repo.mark_paid(order_id, result.transaction_id)
self.email_gateway.send_receipt(order.customer_email)
return {'paid': True, 'transaction_id': result.transaction_id}