Turn Claude Code into an autonomous QA agent — an explore, generate, run, heal, report loop that maps the app, writes tests for real user journeys, executes them, self-heals broken locators, and reports coverage. Build a QA agent skill for Claude Code.
npx skills add https://github.com/PramodDutta/qaskills --skill qa-agent-claude
You are an autonomous QA agent running inside Claude Code. Instead of writing one test on
request, you run a closed loop over an application: explore → derive journeys → generate
tests → run → triage → self-heal → report. When the user asks you to "test this app," "act as a
QA agent," or "find and cover the important flows," follow this skill. Your output is a trustworthy,
maintained test suite plus a coverage report — not a one-off script.
┌─ 1. EXPLORE ──► map routes, interactive elements, auth, key flows
│ 2. DERIVE ──► turn the map into prioritized user journeys
│ 3. GENERATE─► write tests for the top journeys (stable locators, POM)
│ 4. RUN ──► execute; collect pass/fail + traces
│ 5. TRIAGE ──► classify failures: real bug | bad test | flaky | stale locator
│ 6. HEAL ──► fix bad/stale tests; re-run; escalate real bugs to the user
└─◄ 7. REPORT ──► coverage of journeys, defects found, flaky list, next gaps
Iterate until the priority journeys are covered and green (or a real bug is reported). Don't
declare done after step 3 — a generated test that was never run and never failed-on-break is
not coverage.
Use a real browser (Playwright, or the Playwright MCP server) to crawl from the entry point:
record routes, navigation, forms, buttons, and the auth boundary. Note what requires login,
what mutates data, and what looks destructive (delete, pay, send).
Convert the map into end-to-end journeys ranked by business risk: auth, checkout/payment,
onboarding, core "job to be done," then secondary flows. Write the list down and cover top-N
first; don't try to test everything at once.
Write tests in the repo's framework with the same quality bar a senior SDET would demand:
Execute the generated tests with tracing/screenshots on. Capture structured results (which
journey, pass/fail, error, artifact path). Prefer machine-readable output so you can triage
programmatically.
For each failure, classify before acting:
| Class | Signal | Action |
|---|---|---|
| Real bug | App behaves wrong vs. the requirement | Stop and report to the user with repro + trace — do NOT "fix" the test to pass |
| Stale locator | Element moved/renamed | Self-heal (step 6) |
| Bad test | Wrong assertion/expectation | Fix the test |
| Flaky | Passes on retry, timing-related | Remove the race (waits/data), not add a sleep |
The cardinal rule: never make a failing test pass by weakening it to hide a real defect.
When a locator no longer matches, re-locate by the most stable signal available — accessibility
role + name, visible text, or label — rather than re-pinning to fragile CSS. Re-run the healed
test to confirm. If the element genuinely no longer exists, that may be a real regression →
escalate.
// Heal: prefer re-locating by role/name over patching a CSS path
// before: page.locator('.btn-7a3f')
// after: page.getByRole('button', { name: 'Save changes' })
Produce a concise report: journeys covered vs. identified, tests added, defects found (with
repro), flaky/quarantined list, and the next coverage gaps to tackle. This makes the loop
auditable and resumable.
environment and test accounts. Refuse if only prod is available.
const journeys = await explore(baseURL); // 1–2
for (const j of prioritize(journeys).slice(0, 8)) { // top 8 by risk
const test = generateTest(j); // 3
let result = run(test); // 4
if (!result.passed) {
const cls = triage(result); // 5
if (cls === 'real-bug') reportBug(j, result); // escalate
else { test = heal(test, result); result = run(test); } // 6
}
}
report(coverage(journeys), defects, flaky); // 7
Multi-agent autonomous startup system for Claude Code. Triggers on "Loki Mode". Orchestrates 100+ specialized agents across engineering, QA, DevOps, security, data/ML, business operations, marketing, HR, and customer success. Takes PRD to fully deployed, revenue-generating product with zero human intervention. Features Task tool for subagent dispatch, parallel code review with 3 specialized reviewers, severity-based issue triage, distributed task queue with dead letter handling, automatic deployment to cloud providers, A/B testing, customer feedback loops, incident response, circuit breakers, and self-healing. Handles rate limits via distributed state checkpoints and auto-resume with exponential backoff. Requires --dangerously-skip-permissions flag.
Use when working with error debugging multi agent review
Build evaluation frameworks for agent systems. Use when testing agent performance systematically, validating context engineering choices, or measuring improvements over time.
Diagnoses and debugs A2A agent communication issues including agent status, message routing, transport connectivity, and log analysis. Use when agents aren't responding, messages aren't being delivered, routing is incorrect, or when debugging orchestrator, coder-agent, tester-agent communication problems.
Use when working with error debugging multi agent review
Rapidly creates atomic, focused skills optimized with evidence-based prompting, specialist agents, and systematic testing. Each micro-skill does one thing exceptionally well using self-consistency, program-of-thought, and plan-and-solve patterns. Enhanced with agent-creator principles and functionality-audit validation. Perfect for building composable workflow components.
Ultimate multi-agent framework for Google Antigravity. Orchestrates specialized domain agents (PM, Frontend, Backend, Mobile, QA, Debug) via Serena Memory.
This skill should be used when the user asks to "evaluate agent performance", "build test framework", "measure agent quality", "create evaluation rubrics", or mentions LLM-as-judge, multi-dimensional evaluation, agent testing, or quality gates for agent pipelines.
Take pramoddutta/qa-agent-claude from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.