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
{
"context": "Tests choosing fakes/mocks and behaviour-focused tests.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Behaviour focus",
"description": "Tests observable returned values, persisted effects, or outgoing side effects rather than private choreography.",
"max_score": 12
},
{
"name": "Avoid internals",
"description": "Does not assert private methods or exact internal call order except where the outgoing interaction is the behaviour.",
"max_score": 10
},
{
"name": "Fakes preferred",
"description": "Uses fakes or spies for owned repo/payment/email boundaries rather than heavy mocks for everything.",
"max_score": 12
},
{
"name": "Mock rationale",
"description": "Uses mocks only for side effects that are the behaviour, such as sending receipt email, or explains why.",
"max_score": 10
},
{
"name": "Own types",
"description": "Substitutes owned interfaces/adapters rather than mocking third-party library objects directly.",
"max_score": 8
},
{
"name": "Public seam",
"description": "Tests through the service public API or stable seam production uses.",
"max_score": 10
},
{
"name": "AAA",
"description": "Tests are arranged in Arrange-Act-Assert form with short domain names.",
"max_score": 10
},
{
"name": "Precise assertions",
"description": "Assertions check coherent behaviours and meaningful values, not broad snapshots or weak existence checks.",
"max_score": 10
},
{
"name": "Refactor support",
"description": "Explains why rewritten tests should survive harmless internal refactoring.",
"max_score": 10
},
{
"name": "Smell review",
"description": "Identifies over-mocking/overspecification in the old suite.",
"max_score": 8
}
]
}