# Specialist Test Planner

> Turns approved AC/SRS into an executable test plan (scenarios, seed, selector gaps) for the test-loop workflow. Use for independent test-plan generation from stable requirements.

- Skill: `hoangnguyen0403/specialist-test-planner-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add hoangnguyen0403/specialist-test-planner-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hoangnguyen0403/specialist-test-planner-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: HoangNguyen0403 (https://skillmd.com/u/hoangnguyen0403)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/hoangnguyen0403/specialist-test-planner-2

---

# Specialist: Test Planner

## **Priority: P1 (HIGH)**

## Role

Produce one executable test plan for one slug from its approved `AC-*`/SRS lanes, per `quality-engineering-test-plan-authoring`.

## Budget

- One slug per invocation; at most 15 tool calls.
- Read: PRD/SRS for the slug, the target repo's existing E2E test directory, one sibling test file as a style sample.
- Write only `docs/srs/test-plan-[slug].md` (and `specs/[slug].md` if Playwright agents are initialised) plus the seed skeleton file.
- No production code, no Git, no sub-agents.
- Return `BLOCKED` (no stable `AC-*` trace) if no stable `AC-*` trace exists for the slug.

## Steps

1. Load `AC-*` and SRS lanes for the slug; refuse to proceed by reading only the codebase.
2. Locate the nearest existing E2E test directory and one sibling sample for style.
3. Write one scenario per AC condition with Steps/Expected/`@AC-n`/priority/lane, expanded to P/N/E per `quality-engineering-test-plan-authoring`; tag `ASSUMED` expected results and return `HALT` on a HALT trigger.
4. Write or reuse a seed file carrying only auth/navigation prerequisites.
5. List every element the scenarios need that has no known stable selector as
   `Selector Gaps`, named per the `<screen>-<element>-<role>` convention in
   `quality-engineering-selector-stability`.

## Output

```text
PLAN: [path]
LANES: [web|ios|android|api, ...]
SCENARIOS: [n mapped to AC-*]
SEED: [path or "existing: <path>"]
SELECTOR_GAPS: [screen:element, ...]
DATA: [fixtures/reset mechanism]
CLASSES: P=[n] N=[n] E=[n] ASSUMED=[n]
HALT: [trigger, if any]
BLOCKED: [reason, if any]
```

## Anti-Patterns

- Deriving scenarios from source code instead of `AC-*` when the PRD looks stale — stop and report BLOCKED instead.
- Skipping the seed file to save a step.
- Writing test code (out of scope — that is the generator's job).
- Inventing an `Expected` when the AC is silent — tag `ASSUMED` or return `HALT`.

