Quality assurance
Guides agents through feature verification and fix validation — executing test scenarios against a spec, driving a browser or API, and producing a clear PASS/FAIL/PARTIAL verdict. Use when: verifying a feature works, confirming a fix resolved an issue, checking for regressions after changes, running a smoke test, executing a functional test plan, or any task where the goal is to confirm behaviour matches expected rather than to write new tests.From its SKILL.md
npx -y skills add Ghosteken/agent-harness --skill quality-assuranceAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.1 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it
Quality Assurance
Overview
This skill executes verification scenarios against a known expected behaviour (spec, acceptance criteria, or task description) and produces an evidence-backed verdict. It covers browser UI flows, API verification, and regression checks — always starting from a spec anchor, never from the current implementation.
When to Use
Use this skill when:
- Verifying that a new feature works end to end
- Confirming a bug fix resolved the reported issue
- Running a regression check after any code change
- Executing a functional test plan for a feature
- Performing a smoke test before or after deployment
Do not use this skill when:
- Writing new tests or designing test coverage → use
test-driven-development - Isolating a bug's root cause → use
debugging-and-error-recovery - Doing a visual/design audit → use
browser-testing-with-devtools
Core Process
Step 1 — Establish Expected Behaviour (mandatory)
Before executing anything:
- Look for a SPEC.md, task description, acceptance criteria, issue description, or feature doc
- If found — list the specific behaviours to confirm (one per scenario)
- If not found — stop and ask: "What is the expected behaviour for [X]? I need a reference before I can verify."
Never infer expected behaviour from the current implementation. That makes verification circular — you'd confirm the code matches itself, not that it matches intent.
Step 2 — Plan Scenarios
Map expected behaviours to concrete verification scenarios:
| Type | What to check |
|---|---|
| Happy path | Core flow with valid inputs → expected output |
| Edge cases | Empty state, boundary values, optional fields absent |
| Error handling | Invalid input, network failure → correct error shown |
| Fix confirmation | Specific issue from bug report no longer occurs |
| Regression | Previously passing behaviour still works |
Step 3 — Select Transport
Choose the right execution channel for each scenario. For full auth setup and Playwright MCP guidance, see transport-and-auth.md.
| Scenario | Transport |
|---|---|
| UI behaviour, visual correctness | Headless Playwright MCP (default) |
| API contract, response shape | curl / HTTP tool |
| Requires user's existing browser session (Google SSO) | Bridge mode |
Step 4 — Execute Scenarios
Drive each scenario to completion:
- Use role+name locators for browser interactions, not positional refs
- Seed test state through the same channel as the test (browser state ≠ API session)
- Apply the two-strikes rule: if a step fails twice with the same error, stop and report — do not iterate
Step 5 — Produce Verification Report
## Verification Report
**Feature / Fix:** [Name or issue reference]
**Spec reference:** [Source of expected behaviour]
### Summary
**Overall verdict:** PASS | FAIL | PARTIAL
### Scenario Results
| Scenario | Expected | Observed | Verdict |
|---|---|---|---|
| [Name] | [Spec says] | [What happened] | PASS / FAIL |
### Issues Found
- **[Critical / High / Medium]** — [Description + evidence]
### Regressions
- [Any previously passing behaviour that now fails]
### Evidence
- [Screenshots, response bodies, console output]
Common Rationalizations
| Excuse | Reality |
|---|---|
| "I'll just check it looks right" | Looking right is not a verdict. Run the scenario against the spec. |
| "The fix is obvious, I don't need a spec" | Every obvious fix has a different interpretation. Get the spec first. |
| "I'll try a few things until it works" | Two strikes and stop. Iteration without a baseline is guessing, not verification. |
| "The tests pass so it works" | Passing tests confirm what tests check — not that the feature works. Execute the scenarios. |
| "I can infer the expected behaviour from the code" | That makes verification circular. Spec or ask. |
Red Flags
- Producing a PASS verdict without observable evidence
- Starting execution before identifying expected behaviour
- Skipping regression scenarios because "only one thing changed"
- Using API-seeded state for a browser test (separate sessions)
- Retrying a failing step more than twice without stopping to report
Verification
Exit criteria — all must be met before marking QA complete:
- Expected behaviour source is documented (spec file, issue link, or user confirmation)
- Every planned scenario has a recorded result (PASS / FAIL + evidence)
- Regression scenarios were run (at least the scenarios most likely affected by the change)
- Issues found are categorised by severity with reproduction steps
- Overall verdict (PASS / FAIL / PARTIAL) is stated explicitly
What ships with it: 4 files
21.4 KB alongside SKILL.md, 1 of them executable
references/
- execute-test-plan.md2.6 KB
- transport-and-auth.md5.8 KB
- ui-validation.md9.6 KB
scripts/
- pixel-diff.mjsruns3.4 KB