qa-run
QA Run
!IMPORTANT: Stay within the plan's audience constraints. If a step needs a terminal, DB shell, or GraphQL playground to verify, don't run it that way — log it as a plan-defect finding instead.
Step 0: Locate the plan
Resolve the plan file:
- Arg given → use it.
- No arg → most recent
./qa-plan-*.mdby mtime. None found → abort.
Derive the results path from the plan path: qa-plan-X.md → qa-results-X.md in the same directory.
Step 1: Initialize or resume
If qa-results-X.md does not exist:
- Create it from the template below.
- Pre-populate § Status with one
[ ]line per scenario (parsed from plan headings### N.M). - Start at §1.1.
If it exists:
- Read it.
- Find the first scenario whose status is
[ ]or[!]. - Echo:
Resuming at §X.Y — <title>. <K> passed, <M> failed, <P> pending.
Step 2: Iterate scenarios
For each scenario in plan order (skip [x], retry [ ] and [!]):
- Announce: §X.Y title, "How to reach this state", preconditions.
- Run together: present the steps from the plan's table. The user performs them in the browser/BO/Mailpit, or asks Claude to drive via CDP (same actions a human would do — no shortcuts via JS console, GraphQL, or DB).
- Decide outcome and append to results:
- Pass →
[x] §X.Y — passed (<short note if useful>) - Fail →
[!] §X.Y — failed → Finding #<n>+ new Finding entry - Skip →
[~] §X.Y — skipped (<reason>)+ Finding taggedplan-defectif the plan itself is the problem
- Pass →
- If a gotcha or recipe surfaced, append a one-liner to § Notes.
- Write immediately. Don't batch.
Step 3: End-of-run summary
- Totals: passed / failed / skipped / pending.
- Triage table grouped by severity:
blocker,improvement,nit,plan-defect. - Suggest next step based on what's open:
- Blockers → fix via
/ralph-tui, then re-run/qa-runon the same results file. - Plan defects → update via
/qa-plan(or hand-edit), then re-run. - Nits only → ready to flip the PR to ready-for-review.
- Blockers → fix via
qa-results.md template
# QA Results — <plan title>
**Plan:** ./qa-plan-<X>.md
**Started:** <date>
**Last run:** <date>
## Status
- [ ] §1.1 — <title>
- [ ] §1.2 — <title>
- [ ] §2.1 — <title>
## Findings
### #1 <title> — <blocker|improvement|nit|plan-defect>
**Scenario:** §X.Y
**Repro:** <steps observed>
**Expected:** <from plan>
**Observed:** <what happened>
**Notes:** <suspected cause / scope>
## Notes
- <gotcha or recipe>
Rules
- Plan is immutable. Never edit
qa-plan-X.md. If the plan is wrong, log aplan-defectfinding and tell the user to fix it separately. - Status lines are one line. Detail goes in Findings.
- Append-only. Never rewrite earlier entries. To retry a failed case, the user flips
[!]to[ ]manually, or asks Claude to retry a specific scenario. - Browser CDP is OK for clicking faster than a human, not for bypassing audience constraints. No
evaluate()shortcuts to read Mongo, no GraphQL fetches, nolocalStoragepoking beyond what a normal user does. - One scenario at a time. Don't pre-execute and dump all results — each step needs human verification before moving on.
More from benjaming/ai-skills
confluence-cli
Use confluence-cli (NPM package) to manage Confluence content, pages, and spaces from the command line. Ideal for documentation workflows, bulk content operations, page migration, and when users request CLI-based Confluence interactions. Trigger on requests like "use Confluence CLI", "create Confluence pages via CLI", "migrate Confluence content", "automate documentation workflows", or when users want to script Confluence operations.
43atlassian-cli-jira
Use Atlassian CLI (acli) to manage Jira work items, projects, and workflows from the command line. Ideal for bulk operations, automation, scripting, and when users request CLI-based Jira interactions. Trigger on requests like "use Jira CLI", "create Jira issues via CLI", "bulk update Jira tickets", "automate Jira workflows", or when users want to script Jira operations.
29ralph-loop
Create autonomous iterative loops (Ralph Wiggum pattern) for multi-step tasks. Use when setting up automated workflows that iterate over a backlog of tasks with clear acceptance criteria. Triggers on requests like "create a ralph loop", "set up an iterative agent", "automate this migration", or "create an autonomous loop".
21interview
Interview user to clarify any topic - exploring codebase, investigating issues, planning features, understanding requirements, or drilling into plans. Socratic questioning to uncover details.
20codex-cli
Use OpenAI Codex CLI in non-interactive mode for automated code analysis, review, and programmatic task execution. Trigger on requests like "use Codex to analyze", "run codex exec", "codex code review", or when users want AI-powered code analysis without interactive prompts. Ideal for automation workflows, code quality checks, and generating structured analysis reports.
19daily-standup
Daily standup assistant for Benjamin that compiles work priorities from Jira and Slack into a single prioritized task list. This skill should be used when Benjamin asks for morning standup, daily priorities, what to work on today, or needs to compile work items.
18