code-critic
Reviews code changes against project standards and the approved plan; returns PASS/FAIL/NEEDS_DECISION per checklist item plus…
Exploratory QA of a running feature through its UI (Playwright) and/or API (curl) to find issues the plan and committed tests missed; returns findings with evidence, known issues, and blockers. Use when the user asks to QA, probe, or try to break a feature, after code review
Claude Code
$ npx -y skills add cunhaax/ai-workflow --skill adversarial-qa --agent claude-code
Codex
$ npx skills add cunhaax/ai-workflow --skill adversarial-qa -a codex -y
Cursor
$ npx skills add cunhaax/ai-workflow --skill adversarial-qa -a cursor -y
Gemini CLI
$ npx skills add cunhaax/ai-workflow --skill adversarial-qa -a gemini-cli -y
GitHub Copilot
$ npx skills add cunhaax/ai-workflow --skill adversarial-qa -a github-copilot -y
OpenCode
$ npx skills add cunhaax/ai-workflow --skill adversarial-qa -a opencode -y
Windsurf
$ npx skills add cunhaax/ai-workflow --skill adversarial-qa -a windsurf -y
name: adversarial-qa description: > Exploratory QA of a running feature through its UI (Playwright) and/or API (curl) to find issues the plan and committed tests missed; returns findings with evidence, known issues, and blockers. Use when the user asks to QA, probe, or try to break a feature, after code review passes. license: MIT compatibility: > Needs a runnable dev server (AGENTS.md Commands) and, for UI surfaces, the plugin's bundled Playwright MCP server; API probing uses curl. metadata: author: André Cunha
Exercise a feature in the running app and surface anything wrong, confusing, or likely to bite a real user. Go beyond the committed tests; don't re-verify the spec or review code.
does, not as a checklist
is a value, not an omission)
real command/tool call → run it
`gh issue list --label known-issue --state open`
never fall back to `gh` (wrong tracker). Report under *Blockers* "known issues not checked: <reason>", skip step 5, continue the rest
views, a controller path rendering a view/fragment/client-driven response), **API** (REST or other network-callable endpoint, no view layer), or both
for another
Start the server with the project's dev-server command; app URL from `AGENTS.md` → *Commands*. Stop it with the documented stop command when done (never `kill` by PID, never hunt processes with `lsof`).
exploration on a UI surface
feature) → batch it in one `browser_run_code_unsafe` call, not a click/type/snapshot round trip per step
exploration in step 4
capturing a full `browser_snapshot`
STOP, report the blocker
Try what the planner likely didn't enumerate.
multiple tabs on the same form · paste of weird/long/XSS content · reload mid-edit · error-toast timing · interaction with unrelated UI on the page · stale state after a failed submit · light/dark colour scheme and reduced motion (`browser_emulate_media`)
auth/authz boundaries (missing/expired token, wrong role or tenant) · idempotency and duplicate submission · pagination and limit edge cases · concurrent/racing requests · oversized payloads · unicode/injection strings · status-code and error-envelope correctness · rate limiting
Report anything that looks off, even outside this feature's plan. Never work around issues, infer intent, or decide a bug is "probably expected"; the developer decides.
(Skip if *Blockers* already reports them as unchecked.)
task id; not in *Findings*
that difference IS a finding
Capture only once something is a confirmed finding, never while exploring.
it only for a confirmed finding)
directory)
of one request listed by `browser_network_requests`), saved with its `filename` parameter under `.qa-evidence/`
relevant headers, status code, body
what it shows
### Findings - [Short description] — [evidence path] — [severity: bug / concern / nit] ### Known issues (already deferred — no action needed) - [task id] [title] — [still present / not observed on this pass] ### Blockers (if any) [Anything that prevented exploring — server won't start, Playwright unavailable, credentials needed, etc.]
worth flagging; "ran out of ideas" is not
Turns Claude Code into a small development team instead of one agent guessing alone — with a git-level gate that keeps the humans in charge of what actually ships.
Reviews code changes against project standards and the approved plan; returns PASS/FAIL/NEEDS_DECISION per checklist item plus…
Runs the full AI-assisted workflow for a non-trivial feature or change: plan, plan critique, user approval, implementation with…
Sets up and checks the AI workflow in a project that has this plugin installed: scaffolds missing AGENTS.md, CLAUDE.md, hooks,…
Critiques a draft implementation plan with pre-mortem, inversion, load-bearing-assumption and consistency checks; returns…
Drafts a structured implementation plan (approval summary with acceptance criteria, contract, files, edge cases, test strategy)…
Computes a PR's Tier floor and unplanned-changes list with a bundled read-only script, then writes the PR's Tier line and Review…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.