From traxxall-delivery-qa
Primary orchestrator for the blind adversarial QA panel. Enforces the isolation gate — refusing diffs, PRs, and source access — then sequences spec-reader, test-author, adversarial-critic (loop-until-dry), and executor to produce a uniform PASS/FAIL/ERROR envelope shaped for the ADO QA child ticket.
How this skill is triggered — by the user, by Claude, or both
Slash command
/traxxall-delivery-qa:traxxall-delivery-qaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill operates under a strict context-isolation contract. Permitted inputs are **exclusively**:
This skill operates under a strict context-isolation contract. Permitted inputs are exclusively:
Forbidden inputs — refuse and name them if offered:
UnitTests.Core, TransactionScope pattern tests, or any dev-written test artefact).traxxall-dev-tests, traxxall-task-decomposer, or any implementer-facing skill).main/ (the product source tree) — never call Read, Grep, or Glob against main/.Isolation gate procedure (run this first, before any other step):
Scan the user's message for forbidden inputs. If any are present:
ISOLATION GATE: I have detected a forbidden input: [name the specific item]. This skill's permitted inputs are (1) the acceptance criteria text and (2) the running TEST application via Playwright. I am proceeding from the acceptance criteria only and discarding the forbidden input.
isolation_ok: false and list the refused item(s) in refused_inputs.If no forbidden inputs are present, set isolation_ok: true and refused_inputs: [].
Work through these four phases in order. Each phase has a dedicated sub-skill; you may invoke them by name or execute their logic inline.
qa-spec-reader)Parse the acceptance criterion into a structured list of testable claims. Each claim must be:
admin (Web Forms) or 360 (React).Do not infer claims from your knowledge of the codebase. Derive them solely from the text of the acceptance criterion.
qa-test-author)From the structured claims produced in Phase 1, author a Playwright TypeScript test suite covering:
| Type | What it tests |
|---|---|
happy | The acceptance criterion's primary success path |
edge | Boundary conditions implied by the criterion (future dates, zero quantities, maximum lengths) |
negative | Invalid inputs, missing required fields, rejected state transitions |
abuse | SQL metacharacters, oversized payloads, rapid repeated submissions |
cross-module | Side effects on other aircraft, tenants, or modules the criterion does not mention but the domain implies |
Surface detection: If the acceptance criterion references Web Forms controls, .aspx pages, Admin screens, or legacy Traxxall terminology, the surface is admin. If it references React components, the 360 portal, MMS, MTS modern views, or async/SignalR patterns, the surface is 360.
Playwright conventions (non-negotiable):
getByRole > getByLabel > getByText > data-testid. Never use CSS classes, nth-child, dynamic IDs, or layout-position selectors.admin surface: import and extend the TxAdmin page objects from the warm-up project (src/pages/TxAdmin/). Do not duplicate locators that already exist in homePageAdm.ts, aircraftsPageAdm.ts, schedulerPageAdm.ts, or reportsPageAdm.ts.360 surface: scaffold fresh page objects — create a new src/pages/Tx360/ directory with one page object class per feature area.storageState-based auth fixtures. Reference .auth/storageState.TEST.json. Never re-login inside a test body.waitForSelector, waitForResponse, waitForEvent, or role-visible assertions. Never use page.waitForTimeout (hard sleeps).page.waitForEvent('console', ...) or waitForResponse intercepting the notification endpoint — never a timed sleep.test.use block must include trace: 'retain-on-failure', screenshot: 'only-on-failure', video: 'retain-on-failure'.TEST environment only. Never emit a URL pointing to staging, production, or localhost without an explicit env-var override.Result when authoring without execution: Set every test case result to NOT_RUN. The executor phase will update results after running against TEST.
qa-adversarial-critic)Loop the critic role until it produces zero new cases for two consecutive passes. Each pass asks:
"What boundary condition, invalid input, permission boundary, or cross-module side-effect does the acceptance criterion imply but not state? Have I covered it?"
Terminate and move to Phase 4 when two consecutive passes return no new cases. Append any new cases discovered to the test suite with their correct type tags.
qa-executor)When the caller requests execution against the TEST app:
mcp__plugin_playwright_playwright__browser_navigate.PASS, FAIL, or ERROR per test case.
PASS: the expected outcome was observed.FAIL: the application produced a different outcome than expected.ERROR: the test could not complete due to a timeout, infrastructure failure, or unexpected exception. Never allow a test to hang — set a hard timeout and record ERROR if it fires.FAIL or ERROR: capture a screenshot and note the failure message.traxxall-ado-auth skill to post comments and record PASS/FAIL/ERROR counts. Call traxxall-ado-auth only to (a) read the spec/AC text and (b) file QA child tickets — never to read the PR, diff, branch, or any code artefact.Every invocation of this skill — whether authoring only, authoring + execution, or refusal only — must produce exactly two things in this order:
1. A concise human-readable section (plain prose or a Markdown table) summarising:
2. Exactly one fenced JSON block with this envelope shape. Every key is required. Do not add or remove top-level keys:
{
"isolation_ok": true,
"refused_inputs": [],
"surface": "admin|360|unknown",
"target_env": "TEST",
"acceptance_claims": [
"Claim 1: observable outcome ...",
"Claim 2: observable outcome ..."
],
"test_cases": [
{
"id": "tc1",
"title": "Happy path: ...",
"type": "happy",
"steps": [
"Navigate to <screen>",
"Perform <action>",
"Assert <observable outcome>"
],
"expected": "...",
"result": "NOT_RUN"
}
],
"notes": []
}
Envelope rules:
isolation_ok is false and the offending item is listed in refused_inputs ONLY when a forbidden input was offered and correctly refused. Authoring proceeds regardless.result is NOT_RUN when the suite was authored without execution. It is PASS, FAIL, or ERROR after execution.type from the set: happy, edge, negative, abuse, cross-module.surface must be "admin", "360", or "unknown" — never null.TxAdmin page objects (structural reuse only).Read, Grep, or Glob against any path under main/.traxxall-ado-auth to fetch a PR, diff, branch contents, or any code artefact.UnitTests.Core, TransactionScope).page.waitForTimeout in any authored test.eval/rubric.private.md or any file under eval/.source/Traxxall.Tests/JSSI.Traxxall.PlaywrightWarmUp/source/Traxxall.Tests/JSSI.Traxxall.PlaywrightWarmUp/src/pages/TxAdmin/.auth/storageState.TEST.json with Setup User Login project dependencypublishTestResultsMode: 'testRun', attachmentsType: ['screenshot', 'video', 'trace']traxxall-ado-auth skill: call only for spec retrieval and QA ticket filingtraxxall-triage-agent agent: safe to consult for module/surface classification from symptom text; never pass it a diff or PR linknpx claudepluginhub skobyn/upskill-me --plugin traxxall-delivery-qaGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.