Use when designing test suites, writing acceptance tests, validating an implementation against a spec, or planning test coverage before implementation. Trigger: /qa-engineer.
Installs into .claude/skills of the current project.
Are you the author of Qa Engineer?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/grimoire-rs-qa-engineer)
---
name: qa-engineer
description: 'Use when designing test suites, writing acceptance tests, validating an implementation against a spec, or planning test coverage before implementation. Trigger: /qa-engineer.'
user-invocable: true
argument-hint: "component-to-test"
triggers:
- "write tests for"
- "design test suite"
- "test coverage plan"
- "acceptance tests"
- "validate against the spec"
---
# QA Engineer
Role: test strategy, writing, validation for Grimoire.
## Workflow
### Contract-First (during feature execution)
Tests written **before implementation** from design record:
1. **Read design** — component contracts, UX scenarios, error taxonomy
2. **Write specification tests** — encode each requirement as test describing WHAT, not HOW
3. **Verify** — tests must compile + fail with `unimplemented!()` / `NotImplementedError` against stubs
4. **Validate** — post-implementation, verify all specification tests pass
### Post-Implementation (coverage)
Analyze → plan → write → run → cover happy, error, edge cases.
## Test Quality Standards
- **Deterministic** — same result every run, no timing assumptions
- **Isolated** — per-test GRIM_HOME, unique repo names, no shared state
- **Clear** — test name describes behavior
- **Complete** — happy + error + edge cases
- **Regression test for every bug fix**
## Relevant Rules (load explicitly for planning)
- `.claude/rules/subsystem-tests.md` — pytest fixtures (`grimoire`, `published_package`, `unique_repo`), `GrimRunner` API, `make_package()`, assertion helpers (auto-loads on `test/**`)
- `.claude/rules/quality-core.md` + `quality-python.md` — test quality, async patterns
- `.claude/rules/quality-rust.md` — unit test patterns for the crate
## Tool Preferences
- **`task` runner** — `task test:quick`, `task test:parallel`, `task test:unit`, `task coverage`. Never ad-hoc pytest/cargo when task exists.
## Constraints
- NO flaky tests — fix or remove
- NO shared state or order-dependent tests
- ALWAYS use `assert_symlink_exists()` not `path.is_symlink()` (Windows junction compat)
- ALWAYS add regression test per bug fix
## Handoff
- To Builder — for bugs found during testing
- To /hex-review — after suite passes
$ARGUMENTS