keel-qa
Skill0 starsChanged 27 days agoMITView on GitHub
Real-browser QA for a web app before it ships — drive each acceptance criterion in a browser, check console, network, mobile layout and basic accessibility, and report pass/fail with evidence. Use at keel-dev Phase 6, or when asked to QA a running web app or a preview/staging URL.
In this repository16 other files it gives its agents.
- skills/keel-v2/CLAUDE.mdCLAUDE.md
- doc-syncSkill
- fused-landingSkill
- keel-contentSkill
- keel-designSkill
- keel-devSkill
- keel-financeSkill
- keel-legalSkill
- keel-marketingSkill
- keel-opsSkill
- keel-researchSkill
- keel-secureSkill
- keel-setupSkill
- keel-v2Skill
- keel-verifySkill
- lazy-loopSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 4 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Start the project's dev server through its launch config, read pages as text, take screenshots for evidence.
- Distinctive: line 26
If there are no criteria, ask for them.
- Distinctive: line 30
Prefer the local dev server.
- Distinctive: line 35
Do it the way a user would, then check:
- Very specific: line 45
Use the project's own test accounts and seed/fixture data, on local or preview hosts.
- Very specific: line 61
HEAVY: every criterion in the slice, plus the flows in its blast radius (graphify path from the changed files).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Keel QA — real-browser verification
A procedure, not a tool. It runs on the browsers Claude Code already has, so there is nothing to install or keep updated. It defers to keel-v2: QA observes and reports; fixes go back through the pipeline.
Pick the browser
- Built-in browser pane (default) — isolated from the user's own sessions. Start the project's dev server through its launch config, read pages as text, take screenshots for evidence.
- Claude in Chrome — only when a flow needs the user's real signed-in session and they asked for it.
agent-browserCLI — headless, for terminal and cloud sessions that have no browser pane. Run it from the shell;agent-browser --helphas the current commands (check it rather than recalling flags).- No browser reachable → say so and stop. A UI check that didn't run is reported as not run, never as a pass.
1. Scope — what "working" means
Turn the ticket's acceptance criteria (or the spec) into one row per criterion. If there are no criteria, ask for them; don't invent the bar you test against. Done when: every criterion is a row in the report.
2. Run the app
Prefer the local dev server; otherwise the preview/staging URL the human named. On production, stay read-only: no form submits, purchases or data changes. Done when: the app's first page loads clean — or that failure is finding #1.
3. Drive each criterion
Do it the way a user would, then check:
- Result — the visible outcome matches the criterion.
- Console — no new errors or unhandled rejections.
- Network — the flow's requests succeed (an expected 401/404 is noted, not failed).
- Mobile — repeat at a phone width (~375px): no sideways scroll, every control reachable.
- Accessibility basics — keyboard reachable, visible focus, labelled inputs and buttons, alt text on images.
Done when: every row has pass/fail and evidence (a screenshot or the quoted page text).
4. Test data
Use the project's own test accounts and seed/fixture data, on local or preview
hosts. A flow that needs a real secret, real payment or production write is a
wizard step for the human, not something QA types in.
5. Report
| # | Criterion | Result | Evidence | Notes |Each failure gets a one-line reproduction and goes to diagnosing-bugs or a
ticket — QA doesn't patch in place. A fixed bug gets a regression test (tdd)
before its slice closes.
Done when: the report is saved to .scratch/<feat>/qa.md (or the PR body) and
00-status.md links it from the slice.
Rigor
- FAST: the changed flow, desktop + mobile.
- HEAVY: every criterion in the slice, plus the flows in its blast radius
(graphify
pathfrom the changed files).
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.

