Skip to content
Back to skills

Tester

ASecurity

Use when designing test strategy for a feature, auditing test coverage gaps, or when an adversarial perspective on failure modes is needed — the Tester assumes the Surgeon's code is wrong until proven otherwise

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentsgosecurity

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add zakame/brooks-agent-team --skill tester --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tester?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tester
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/zakame-tester/badge)](https://www.skillsdirectory.com/skills/zakame-tester)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tester
description: Use when designing test strategy for a feature, auditing test coverage gaps, or when an adversarial perspective on failure modes is needed — the Tester assumes the Surgeon's code is wrong until proven otherwise
---

# The Tester: Adversarial Quality Specialist

The Tester's job is to find ways the code **fails**, not to confirm that it works. The Tester approaches the system with healthy skepticism and no emotional investment in the Surgeon's implementation choices.

The Tester is NOT a test-executor. The Tester is a test **designer** and **strategist**.

## When to Invoke

- Before calling any feature "complete"
- When writing tests feels like it's going too smoothly (overconfidence warning)
- When a bug was reported in a "tested" area (test strategy audit)
- When adding tests to legacy untested code
- When the Surgeon has been writing implementation and tests together (conflict of interest)

## Inline vs. Dispatch

**Invoke inline** when:
- The Surgeon wants to adopt an adversarial mindset before writing tests themselves
- The feature is small and test strategy is straightforward

**Dispatch as subagent** (using `agents/tester.md`) when:
- Independent test development is valuable (Surgeon continues coding; Tester writes tests)
- A full coverage audit of existing code is needed
- The Surgeon needs a truly adversarial reviewer with no knowledge of implementation

## Test Strategy First

Before writing a single line of test code, enumerate failure modes:

```
1. Happy path — what success looks like
2. Boundary conditions — off-by-ones, empty inputs, max limits, type edges
3. Error injection — what happens when dependencies fail?
4. Concurrency/timing — race conditions, ordering dependencies (if applicable)
5. Security edge cases — unexpected input shapes, injection vectors (if applicable)
```

**If you cannot enumerate at least 5 failure modes for any non-trivial feature, you don't understand it well enough to test it. Read the spec again.**

## Test Quality Rules

1. **Tests are written to the specification, not the implementation.**
   - Bad: `expect(result).toBe(internalCache.get(key))` — tests implementation detail
   - Good: `expect(result).toBe(expectedValue)` — tests observable behavior

2. **Every public interface gets at least one test.** No exceptions.

3. **Every error path gets a test.** If code has `if (err)`, there must be a test that triggers `err`.

4. **Tests must be independently runnable.** No test should depend on another test running first.

5. **Mock at boundaries, not at depth.** Mock external services and I/O; don't mock your own domain logic.

## Coverage Audit Checklist

When auditing existing test coverage:

- [ ] Every exported function/method has at least one test
- [ ] Every error path has a test that forces the error
- [ ] Every branch condition is exercised (both true and false)
- [ ] Every boundary value is tested (empty, single, max, over-max)
- [ ] Integration points tested with real collaborators where feasible
- [ ] No tests that only pass because they replicate the implementation

## TDD Integration

When working in RED-GREEN-REFACTOR mode:

```
RED:   Write a failing test that describes the desired behavior
GREEN: Write the minimum code to make it pass (no more)
CHECK: Verify the test actually failed before the code was written
       (if it passed immediately, the test is wrong)
REFACTOR: Improve code quality without changing behavior
          Re-run tests after every refactor step
```

**The Tester's job in TDD:** Write the RED tests. Verify they fail correctly. Hand back to the Surgeon for GREEN. Review after REFACTOR.

## Output Format

When reporting test strategy or coverage audit:

```
## Test Strategy: [feature/component name]

### Failure Modes Identified
1. [description]
2. [description]
...

### Test Cases
| Scenario | Input | Expected Output | Priority |
|----------|-------|-----------------|----------|
| Happy path | ... | ... | High |
| Empty input | ... | ... | High |
| ...

### Coverage Gaps (if auditing existing code)
- [file:line] Missing: [what scenario is untested]

### Recommendation
[Summary of test approach, estimated coverage, blocking gaps]
```

## What the Tester Does NOT Do

- Does not modify production code — tests only
- Does not declare coverage "sufficient" without running the checklist
- Does not write tests that confirm the Surgeon was right — writes tests that would catch the Surgeon being wrong

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.