How this skill is triggered — by the user, by Claude, or both
Slash command
/sage:qaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Announce: "Sage → qa workflow." before starting work
Browser-based functional testing. Finds integration failures that live in the gap between "code is correct" and "product works."
Report only — /qa does NOT fix bugs. /fix fixes.
Check Lightpanda MCP availability. Attempt to call a Lightpanda
MCP tool (e.g., goto with about:blank).
If available: Ask for URL:
Sage → qa workflow. Lightpanda browser connected.
What URL is the application running on?
(e.g., http://localhost:3000, https://staging.myapp.com)
Verify URL is reachable via goto. If not, report and offer to
wait or proceed with code-only.
If not available:
Sage: Lightpanda MCP is not connected. /qa needs a browser to test
your application.
Setup: See sage/core/references/lightpanda-setup.md for install guide.
[B] Set up browser — I'll install Lightpanda
[C] Continue without browser — code-only QA
[X] Cancel
Pick B/C/X, or tell me what you need.
Code-only fallback (no browser): Analyze the diff, identify affected routes, review code for common integration issues:
Report notes: "Browser testing: not available — code-analysis only."
If invoked after /build (cycle context exists): Read the cycle's spec.md and plan.md. Identify affected routes, user flows, and acceptance criteria to verify.
If invoked standalone (no cycle context):
Sage: What should I test?
[1] Everything — full app smoke test (I'll discover routes)
[2] Specific flow — describe what to test
[3] Specific URL — point me at a page
Pick 1-3, type / for commands, or describe what you need.
Produce and present a test scope:
TEST SCOPE:
Routes to test:
- /dashboard (modified: added new widget)
- /settings/notifications (new page)
Flows to test:
- Dashboard loads with new widget visible
- Navigate to notification settings
- Toggle preference → verify API → verify UI update
Acceptance criteria to verify:
- [from spec] Toggle persists across page reload
- [from spec] Widget shows unread count
Ask: "Does this scope look right, or should I add/remove anything?"
For each route in scope:
goto) to the routeevaluate: check for JS console errorsmarkdown: verify page renders content (not blank/error)semantic_tree: verify expected structural elementsFor each flow in scope:
interactiveElements)click buttons, links, togglesfill form fieldsevaluate), verify state (semantic_tree)Save report to .sage/work/[cycle-id]/qa-report.md (if cycle context)
or .sage/docs/qa-report-[topic].md (if standalone).
Use the report template from develop/templates/qa-report-template.md.
🔒 QA REPORT CHECKPOINT:
Sage: QA complete.
Tested: {N} routes, {M} flows
Results: {pass} pass, {fail} fail, {warn} warning
Verdict: {PASS | FAIL | PASS WITH WARNINGS}
Bugs found: {count}
Critical: {count} — [brief descriptions]
Major: {count}
Minor: {count}
Report: .sage/[path]/qa-report.md
[A] Approve report [R] Revise — retest something
[F] → /fix to address bugs [N] New session
Pick A/R/F/N, or tell me what to change.
Next steps (Zone 3):
Next steps:
/fix — diagnose → scope → fix → verify (reads qa-report)
/design-review — design quality audit
/reflect — review the cycle, extract learnings
Type a command, or describe what you want to do next.
Good QA output:
No fake browser testing: If Lightpanda is not available, do NOT fabricate browser test results. Code-only analysis is honest about what it can and cannot verify.
Report completeness: Untested routes must be listed as "not tested" in the report. Do NOT claim a route passes if you didn't load it.
Advisory only: /qa reports. It does NOT fix bugs. If the agent catches itself thinking "I'll just fix this real quick" — STOP. Save the finding to the report and let /fix handle it.
No fixing in /qa: The separation between find and fix is deliberate. An agent that finds AND fixes has incentive to minimize findings. /qa's only job is thoroughness.
npx claudepluginhub xoai/sage --plugin sageQA tests web apps, native macOS/Electron apps, CLI tools, REPLs via browser/Playwright, computer-use screenshots/clicks, or tmux modes. Delivers health scores, bug fixes, ship-readiness reports.
Automates systematic web app QA testing with issue taxonomy, health scoring, and regression tracking. Supports browser automation via Playwright, Puppeteer, or Cypress.