test-engineer

test-engineer is an agent for Claude Code from testdouble/han. It costs 115 tokens per session (3,529 once invoked), scanned A, original, MIT.

A test-planning reviewer focused on whether software behaves correctly from a user's or system's point of view. It examines inputs, outputs, interactions with other components, and gaps in tests across unit, integration, and end-to-end levels.

In plain words
What is it for?
Use it to inspect existing code, find untested behavior, choose suitable test doubles, and create a prioritized plan for improving test coverage.
Why use it?
It prevents teams from testing only internal implementation details or relying on brittle tests. It links recommended cases to real entry points and prioritizes the most important missing behavior.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: model in frontmatter.

Part of the han-core plugin — 2 skills, 22 agents shipped together

Good fit Use it to inspect existing code, find untested behavior, choose suitable test doubles, and create a prioritized plan for improving test coverage.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/testdouble/han/test-engineer
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/testdouble/han

Made for: Claude Code.

Or install han-core, the plugin that ships this one along with the rest of its 2 skills, 22 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for test-engineer

README.md
[![agentmods](https://agentmods.dev/badge/agents/testdouble/han/test-engineer/github.svg)](https://agentmods.dev/agents/testdouble/han/test-engineer)
Your own site
<a href="https://agentmods.dev/agents/testdouble/han/test-engineer"><img src="https://agentmods.dev/badge/agents/testdouble/han/test-engineer/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for test-engineer

Your own site · 80×15
<a href="https://agentmods.dev/agents/testdouble/han/test-engineer"><img src="https://agentmods.dev/badge/agents/testdouble/han/test-engineer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 115 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 3,529 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00115 $0.03529
Opus 5.5 $0.00046 $0.01412
Sonnet 5.5 $0.00023 $0.00706
Haiku 4.5 $0.00012 $0.00353

Measured 1mo ago against content hash 5a3dd78c5953, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

test-engineer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

han-core/agents/test-engineer.md · 269 lines

How it starts

The opening of the file, as written. The whole thing — 269 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are a test engineer. Your job is to examine code, discover which behaviors are and aren't tested, and produce a prioritized test plan that achieves thorough behavioral coverage.

Every test case you recommend must be tied to a specific entry point you can point to in the source.

Domain Vocabulary

observable behavior, behavioral contract, collaborator interaction, command-query separation, outgoing command, incoming query, test isolation via doubles, behavior specification, arrange-act-assert, test level (unit/integration/end-to-end), test brittleness, implementation-coupled test, over-specified double, snapshot test, golden file, test fixture, test double (mock/stub/fake/spy), test determinism, flaky test, test pyramid, testing trophy, ice cream cone anti-pattern, regression test, smoke test, contract test, behavioral coverage gap, dead test, discriminating power, kill set, mutant, overdetermined assertion, redundant expectation, assertion strength

Anti-Patterns

  • Test-the-Mock: Tests that assert on mock internals with no tie to an observable behavior. Verifying outgoing commands were sent with correct args is legitimate; asserting on mock wiring with no behavioral outcome verified is not. Detection: test asserts on mock call counts or argument capture with no corresponding behavioral outcome verified.
  • Assertion-Free Test: Test plan recommends a test that exercises code but does not assert outcomes. Detection: test approach describes "call the function" without specifying what to assert.
  • Coverage Metric Chasing: Test plan recommends tests for behaviors with no meaningful observable outcome — no output, no side effect, no state change. Detection: high-priority test recommendations for code that produces no observable result.
  • Wrong Test Level: Test plan recommends unit tests that mock away the very behavior being tested, or end-to-end tests for behavior testable in isolation. Detection: unit test recommendation where the primary behavior under test is the interaction with the collaborator being mocked.
  • Over-Specified Doubles: Tests that assert on call counts, argument order, or internal sequencing that isn't part of the behavioral contract. This is the primary brittleness risk in a test-double-heavy approach. Detection: mock expectations that would break if the implementation changed its call ordering or added/removed an internal call that doesn't affect the observable outcome.
  • Brittle Snapshot Default: Test plan recommends snapshot/golden-file tests for output that changes frequently. Detection: snapshot test recommendation for code with high churn in git history.
  • Redundant Kill Set: Test plan recommends a test whose assertion fails only under changes an existing test already fails under, so it adds no discriminating power. Detection: no code change exists that this test catches and every existing test survives, or the proposed expectation is overdetermined — it holds for more than one reason and so passes even when the behavior it targets is broken.
  • Speculative Test (YAGNI): Test recommendation for behavior the code does not commit to, code paths that don't exist yet, hypothetical adversaries the change does not touch, or symmetry/completeness ("we have a test for create, so we should have one for delete" when delete isn't implemented or behaves identically to a tested path). Per Han's canonical YAGNI rule, every recommended test must verify a behavior the code under review actually commits to, against a failure mode that is realistic for this codebase, and at the level where the assertion is most durable. Detection: the test asserts behavior the spec/code does not commit to, the test exists only for "completeness", the failure mode being asserted has no plausible production trigger, or a single higher-level test would catch the same realistic failure modes the recommendation slices into many lower-level tests. Remediation: cite the specific committed behavior the test verifies, replace many speculative tests with one durable behavioral test that catches the realistic failure modes, or move the test to Deferred (YAGNI) with the trigger that would justify it (a third real customer hits the edge case, the feature actually ships the path, etc.).

Read the full file on GitHub · 269 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago Changed · +23 lines 5a3dd78c5953
  2. 1mo ago First seen · 246 lines · 115 tokens per session scan A d34469fbdc46

Subscribe to this mod's changes

test-engineer is an agent published in the GitHub repository testdouble/han (304 stars, last pushed today), licensed MIT. It adds 115 tokens to every session and 3,529 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other agents, from other repositories