qa-automation
Skill0 starsChanged 18 days agoMITView on GitHub
Entry point for any QA automation work on a web app - planning test cases, writing or fixing Playwright E2E tests, running and triaging test results, reviewing coverage, or asking what is already tested. Loads the project's QA memory (.qa-kit/), routes to the specialised qa-* skills, and makes sure what was learned is saved for the next session.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- keber/qa-frameworktheir own version, first seen Nov 8, 2026
- hammu1/claude-qa-skillstheir own version, first seen Oct 11, 2026
- alex-macra/claude-codex-skills-assemblytheir own version, first seen Aug 14, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- keber/qa-framework★ 9same name
- alex-macra/claude-codex-skills-assembly★ 1same name
- hammu1/claude-qa-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- qa-explore-appSkill
- qa-memorySkill
- qa-playwright-authorSkill
- qa-run-triageSkill
- qa-test-casesSkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 7 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 30
Read .qa-kit/memory/conventions.md before writing any test.
- Very specific: line 31
Read the project's own rules listed under "Project rules to obey".
- Distinctive: line 63
A known bug stays a failing test: Do not weaken the assertion or hide it with skip/fixme.
- Distinctive: line 65
Do not run E2E suites unless the user asks: When asked, run the narrowest scope (one page, one ID).
- Very specific: line 70
Catalog and spec change together: After editing either, qa-kit index and check qa-kit gaps for drift on that page.
- Distinctive: line 82
Ask which to do before reading code.
- Distinctive: line 83
Start subagents only when the user named 3 or more pages or modules and agreed to run them in parallel.
- Distinctive: line 90
Read only the code the current rows need: the page component, its schema, and the API types of the endpoints it calls (searched, not read …
- Distinctive: line 93
Never rewrite tests that already exist.
- Distinctive: line 101
Use them only within the work budget above.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
QA automation loop
qa-kit gives every agent the same long-term QA memory for a project. The memory lives in
<project>/.qa-kit/ and is reachable through the qa-kit CLI or the qa-kit MCP server
(tools qa_*). Use whichever your harness has; they do the same thing.
CLI invocation: qa-kit <command>. If qa-kit is not on PATH, use the command printed at
session start or by qa_status (node "<kit>/bin/qa-kit.mjs"), the kit.cli value in
.qa-kit/config.json, or run it without installing: npx -y github:MahmulP/qa-kit <command>
(needs Node.js 18+). Pass --root <project> when your cwd is not the project.
qa-kit is app-agnostic: it assumes no framework, folder layout, team structure, catalog
language, or naming scheme. Each app's conventions are detected into
.qa-kit/config.json (qa-kit config) and described in its memory files; lessons that hold
for every app live in the global store (--global). Several apps can use qa-kit side by
side; qa-kit apps lists them.
Every task follows the same loop
- Recall (always, takes seconds)
qa-kit status/qa_status: stack, e2e layout, coverage, health, top lessons.- No
.qa-kit/yet:qa-kit initfirst, then theqa-explore-appskill. qa-kit memory search "<area words>" --scope <path>/qa_memory_searchfor the area you are about to touch.- Read
.qa-kit/memory/conventions.mdbefore writing any test. - Read the project's own rules listed under "Project rules to obey". They win over
anything in qa-kit. The "Detected conventions" line tells you the fixtures import,
catalog names, ID pattern, suite script, scopes, and mutation tags; if one is wrong,
fix it with
qa-kit config setbefore working.
- Explore: understand the page/feature from code, contracts, and (if allowed) the
running app → skill
qa-explore-app. - Design cases: catalog what should be tested, with expectations from requirements
→ skill
qa-test-cases. - Write specs: Playwright tests that follow the project's conventions → skill
qa-playwright-author. - Run, only when the user asks: narrowest scope, results recorded automatically →
skill
qa-run-triage. - Triage: app bug vs test bug vs environment vs flaky; keep known bugs visible.
- Learn (never skip): save what will matter next time → skill
qa-memory.
Pick the entry point from the request:
| Request | Start at |
| "What's tested / coverage / what's missing for X" | qa-kit gaps --page X, qa-kit cases --page X |
| "Learn this app / onboard / map the modules" | qa-explore-app |
| "Make test cases for page/ticket X" | qa-test-cases |
| "Write/automate tests for X", "fix this spec" | qa-test-cases (catalog first) → qa-playwright-author |
| "Run tests for X", "why did these fail" | qa-run-triage |
| "Remember that…", reviewer feedback, "that's wrong, we do it like…" | qa-memory |
Rules that hold in every project
- Expectations come from requirements: ticket acceptance criteria, business rules, API contract (OpenAPI/types), validation schema, UI copy. Never assert whatever the app does today just because it does it. Where code and requirement disagree, the requirement is the expectation and the gap is a finding.
- A known bug stays a failing test. Do not weaken the assertion or hide it with skip/fixme. Annotate it with the issue ID and record it in the catalog's findings section.
- Do not run E2E suites unless the user asks. When asked, run the narrowest scope (one
page, one ID). Never set the env vars in
e2e.protectedEnvor other data-mutation switches, never point tests at production, never write credentials or session files anywhere. - IDs are stable. Get new ones with
qa-kit next-id <PREFIX>; never renumber. - Catalog and spec change together. After editing either,
qa-kit indexand checkqa-kit gapsfor drift on that page. - Leave the memory better than you found it. End every QA task by saving at least the
lessons that would have saved you time today (see
qa-memory). Say in your final message what you saved.
Work budget: fast and cheap by default
- Work in the main session. One page, one module, or one failing feature never needs a subagent.
- A request without a clear scope ("write tests", "explore the app", a whole module) gets a
short plan first: the pages or modules with their todo and gap counts from
qa-kit gaps. Ask which to do before reading code. - Start subagents only when the user named 3 or more pages or modules and agreed to run them in parallel; at most 3 at a time. Brief each one with what you already know (page folder, case IDs, fixtures import, a reference spec, empty memory sections) so it does not rediscover it.
- Recall with the compact commands (
status,cases --page,gaps --page,memory search) instead of opening catalogs and specs one by one. Read conventions once per session. - Read only the code the current rows need: the page component, its schema, and the API types of the endpoints it calls (searched, not read whole). Skip backend source, other teams' folders, and unrelated modules unless a row cannot be done without them.
- Never rewrite tests that already exist; only add what is missing.
Subagents (Claude Code plugin; other harnesses can follow the same briefs)
qa-explorer: read-only mapping of one module or page into memory.qa-author: catalog + spec for one page.qa-triager: analyse a large failed run, classify, propose fixes and bug reports.
Use them only within the work budget above; each one reads memory first and saves lessons at the end.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

