
qa
Functional validation skill. Captures test evidence (screenshots, recordings, links) and produces QA reports in thoughts//qa/.
- Installs
- 281
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/desplega-ai/ai-toolbox --skill qa- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads qa automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
QA
You are performing functional validation of a feature, bugfix, or deployment. Your job is to prove it works (or doesn't) by executing test scenarios and capturing evidence.
Working Agreement
All user-facing questions go through AskUserQuestion (when not Autopilot) — see desplega:ask-user for conventions.
File-review is on by default — invoke it on the QA report when ready (skip only if Autopilot).
Ownership: QA Doc Lives Here, Not in Plans
QA test cases live in QA docs (thoughts/<username|shared>/qa/YYYY-MM-DD-<feature>.md), not inline in plans. When a plan has a ### QA Spec (optional): block, that block links to a QA doc this skill produces.
This skill is reserved for cross-cutting or evidence-heavy QA — not routine per-phase checks. Routine per-phase agent verification belongs in the plan's inline #### Automated QA: bucket, executed by phase-running. Use this skill when:
- The QA work spans multiple phases or the whole feature
- Evidence (screenshots, recordings, logs) needs to live somewhere durable
- A formal verdict (pass/fail/blocked) is required
Invocation paths:
- Planning Step 3 ("Generate QA docs") calls this skill before handoff, for any phase whose QA needs a separate doc.
- Implementing / phase-running call this skill at phase-completion if the phase reports
QA Doc: <path>. - Direct user invocation (
/qa) creates a standalone doc not linked to a plan.
QA Approach
Unless Autopilot, ask once at the start:
| Question | Options |
|---|---|
| "How would you like to execute test cases?" | 1. Browser automation (agent-browser) if available, 2. Manual testing with guided steps, 3. Mixed: automate what we can, manual for the rest |
Note on agent-browser availability: Run command -v agent-browser. It is the agent-browser npm CLI (vercel-labs), a headless Chromium driven over CDP. Also check whether the project's CLAUDE.md specifies a different testing tool. If agent-browser is not available and no alternative is specified, default to manual testing. Never use qa-use unless the user names it.
When to Use
This skill activates when:
- User invokes
/qacommand - Another skill references
desplega:qa - User asks to test, validate, or QA a feature
- The implementing skill encounters a phase with a QA spec
Autonomy Mode
At the start of QA, adapt your interaction level based on the autonomy mode:
| Mode | Behavior |
|---|---|
| Autopilot | Execute all test cases, capture evidence, present summary at end |
| Critical (Default) | Ask about test case design, present results for review |
| Verbose | Walk through each test case, confirm before executing |
The autonomy mode is passed by the invoking command. If not specified, default to Critical.
Process Steps
Step 1: Context & Scope
Determine the source of QA specs:
Plan-driven (called from planning/implementing/phase-running) → A plan path + phase reference is supplied. Read the relevant phase, design test cases for the deliverable named in its Overview, and produce the QA doc the plan's QA Spec block will link to.
Separate QA spec document provided → Read the standalone spec, use it as the basis for the QA session.
Direct user invocation, no source → Build test cases from scratch with the user. Use AskUserQuestion to establish:
| Question | Options |
|---|---|
| "What are we validating? Please describe the feature or provide context." | [Free text response] |
In all cases, create the QA document from cc-plugin/base/skills/qa/template.md at thoughts/<username|shared>/qa/YYYY-MM-DD-<topic>.md. Use the user's name when known; fall back to thoughts/shared/qa/.
For plan-driven invocation: after the doc exists, update the plan's ### QA Spec (optional): block in the relevant phase to point at the doc path. Do not inline scenarios in the plan.
Step 2: Test Case Design
Define test cases covering:
- Happy path — The main scenario works as intended
- Edge cases — Boundary conditions, empty inputs, large inputs
- Error scenarios — Invalid inputs, permission failures, network errors
If sourced from a plan: Aggregate phase QA specs into the test case list. Augment with additional exploratory cases.
If sourced from a separate spec: Use those scenarios as the starting point and augment with exploratory cases.
If browser automation was selected and agent-browser is available: Design agent-browser steps for each test case (open, snapshot, act on refs, screenshot).
Write all test cases into the QA document's ## Test Cases section.
Step 3: Execute Tests
For browser automation (agent-browser): if an agent-browser skill is installed (the swarm seeds one), follow it. Otherwise:
- Load the version-matched guide once per session with
agent-browser skills get core(do not guess flags from memory), thenagent-browser open <url> agent-browser snapshot -ito read the page state and its@eNrefs- Act on refs (
click @eN,fill @eN "text",type,press) and re-snapshot after every navigation or state change; refs are only valid for the snapshot that produced them agent-browser screenshot /tmp/<name>.pngfor evidence, thenagent-browser close- To share a screenshot outside the machine, upload it to agent-fs with
agent-fs write <path> --file /tmp/<name>.png -m "<what it shows>"(binary-safe;--contentmangles PNGs), keep it there as the original, and embed it in a PR or GitHub comment as a GitHub user attachment (github-attachskill):. Useagent-fs share-create <path>for Slack or Linear. If agent-fs is not configured, report the local path and say the upload was skipped
For manual testing:
- Present each test case's steps to the user
- Guide them through execution
- Use AskUserQuestion to collect results:
| Question | Options |
|---|---|
| "TC-N: [Test case name]. Did it pass?" | 1. Pass, 2. Fail — [describe what happened], 3. Blocked — [describe blocker], 4. Skipped |
For CLI verification:
- Execute the CLI commands directly
- Compare output against expected results
- Record pass/fail automatically
OPTIONAL SUB-SKILL: When a CLI test case needs the same multi-step probe re-run later (regression coverage, post-deploy smoke, multi-environment validation) and no existing script captures it, invoke desplega:script-builder inline. The generated script is committed to the project's scripts/ directory with the PASS/FAIL + /tmp log convention; this QA session uses it for the current run, and future QA/verifying sessions discover it via the auto-added <important if> block in CLAUDE.md.
For each test case, record the actual result and pass/fail status.
Step 4: Capture Evidence
Gather evidence for the QA report:
- Screenshots: Via
agent-browser screenshot(kept on agent-fs; GitHub user attachments in a PR,share-createlinks elsewhere) or user-provided - Videos: Session recording URLs (Loom, etc.)
- Logs: Console output, error messages, relevant log lines
- External links: Sentry issues, CI/CD runs, Grafana dashboards, PR URLs
Add all evidence to the QA document's ## Evidence section.
Step 5: Record Results
Update the QA document with:
- Actual results for each test case
- Pass/fail/blocked/skipped status per test case
- Evidence links inline with relevant test cases
- Any issues found in the
## Issues Foundsection with severity tags (critical/major/minor)
Step 6: Verdict
Aggregate results into an overall verdict:
| Verdict | When |
|---|---|
| PASS | All test cases pass, no critical/major issues |
| FAIL | Any test case fails, or critical/major issues found |
| BLOCKED | Cannot complete testing due to environment/dependency issues |
Write a 1-2 sentence summary in the QA document's ## Verdict section. Update the frontmatter status field to match (pass/fail/blocked).
Step 7: Persist QA Knowledge
If the project's CLAUDE.md or agents.md doesn't document how QA is done for this project, offer to add a QA section describing:
- Testing approach used (manual, browser automation, CLI)
- Tools used (agent-browser, Playwright, etc.)
- Common test patterns discovered
Use AskUserQuestion with:
| Question | Options |
|---|---|
| "This project doesn't have documented QA practices. Would you like me to add a QA section to CLAUDE.md?" | 1. Yes, add QA documentation, 2. No, skip this |
Also persist useful patterns to memory if they emerge across QA sessions.
Review Integration
File-review is on by default (unless Autopilot):
- After the QA report is complete, invoke
/file-review:file-review <qa-report-path>for inline human comments - Process feedback with the
file-review:process-reviewskill
Learning Capture
OPTIONAL SUB-SKILL: If significant insights, patterns, gotchas, or decisions emerged during this workflow, consider using desplega:learning to capture them via /learning capture. Focus on learnings that would help someone else in a future session.
Workflow Handoff
After the QA report is complete, use AskUserQuestion with:
| Question | Options |
|---|---|
| "QA complete. What's next?" | 1. Run post-QA verification (→ /verify-plan), 2. Run review on QA report (→ /review), 3. Done |
Based on the answer:
- Verify: Invoke the
desplega:verifyingskill - Review: Invoke the
desplega:reviewingskill on the QA document - Done: Finalize the QA report
FAQ
What does the qa skill do?
Functional validation skill. Captures test evidence (screenshots, recordings, links) and produces QA reports in thoughts//qa/.
How do I install qa?
Run npx skills add https://github.com/desplega-ai/ai-toolbox --skill qa in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/qa/ (personal) or .claude/skills/qa/ (project).
Which AI agents can use qa?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is qa safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains qa?
It is published by desplega-ai in desplega-ai/ai-toolbox. It has 281 recorded installs.
More from desplega-ai/ai-toolbox
researching
desplega-ai/ai-toolbox
Comprehensive codebase research skill. Documents codebase as-is by spawning parallel sub-agents and synthesizing findings into research documents.
planning
desplega-ai/ai-toolbox
Open the skill to read its SKILL.md instructions.
tdd-planning
desplega-ai/ai-toolbox
TDD-focused implementation planning. Creates plans with strict Red-Green-Commit/Rollback cycles for each step.
implementing
desplega-ai/ai-toolbox
Plan implementation skill. Executes approved technical plans phase by phase with verification checkpoints.
wts-expert
desplega-ai/ai-toolbox
Git worktree management expert for @desplega.ai/wts. Use when the user asks about git worktrees, wts commands, worktree workflows, or wants help managing multiple branches simultaneously.
ask-user
desplega-ai/ai-toolbox
Conventions for asking the user questions during a workflow via the AskUserQuestion tool. Other skills reference this to keep prompts consistent and structured.
Popular testing & qa skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
grilling
mattpocock/skills
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
migrate-to-shoehorn
mattpocock/skills
Migrate test files from as type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace as in tests, or needs partial test data.
run-train
lllllllama/rigorpilot-skills
Rigor Train skill for deep learning research repositories. Use when a documented or selected training command should be run conservatively for startup verification, short-run verification, full kickoff, or resume, with command, config, seed, log, checkpoint, status, and metric evidence written to standardized trainoutputs/. Do not use for environment setup, exploratory sweeps, speculative idea implementation, or end-to-end orchestration.
test-driven-development
obra/superpowers
Use when implementing any feature or bugfix, before writing implementation code
finishing-a-development-branch
obra/superpowers
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work