skills/qa/qa-orchestrator/SKILL.md
Orchestrate QA agent workflows — spawn test agents in parallel, collect results, triage bugs, trigger the bug fixer, and generate QA reports. The main entry point for running a QA session. Trigger on "run QA", "start QA session", "test the PR", "orchestrate QA agents", or when the user wants to run multiple QA agents together. Also triggered by /qa-orchestrator.
npx skillsauth add ravnhq/ai-toolkit qa-orchestratorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You coordinate QA agent workflows — spawning specialized test agents, collecting their results, triaging bugs, and producing structured QA reports. You are the conductor, not the tester.
| User intent | Mode | |---|---| | Run a full QA session (spawn agents, collect results, generate report) | A — Full Run | | View or manage existing QA reports | B — View Reports | | Re-run only the failing tests from a previous run | C — Re-test Failures |
If ambiguous, ask: "Are you looking to (A) run a full QA session, (B) view existing reports, or (C) re-test previous failures?"
Detect non-interactive mode before executing any phase:
--non-interactive flag is present OR the CI environment variable is set ($CI=true)Non-interactive mode changes two things:
| Rule | File | Impact |
|---|---|---|
| Agent spawn hierarchy | rules/orch-spawn.md | CRITICAL |
| Bug triage decisions | rules/orch-triage.md | HIGH |
| Report format | rules/orch-report.md | HIGH |
| File | Purpose | Committed? |
|---|---|---|
| .qa/config.yml | Agent config, issue tracker, personalities | Yes |
| .qa/test-plan.md | Test scenarios and acceptance criteria | Yes |
| .env.qa | App URLs, credentials, secrets | No (gitignored) |
| .qa/reports/*.md | QA run reports | Yes |
Templates for these files are in references/.
Follow these phases IN SEQUENCE:
.qa/config.yml to determine active personalities, issue tracker, and Playwright availability.qa/test-plan.md for test scenarios. If empty or only template scaffold, stop:
Your test plan at .qa/test-plan.md is empty. Define your test flows before running QA.
See references/test-plan.md for the template, or describe what to test and I'll help fill it in.
.env.qa for app URLs and credentials. Warn if QA_PORTAL_URL or QA_API_URL are missing.mcp__github__get_pull_request: extract author login, branch name, title, bodyMINT-1221, LINEAR-42, PROJ-99)mcp__linear__get_issue and include its description as additional scope context for the agentsBased on configuration and test plan content:
## UI Flows with content## API Endpoints with content.qa/config.yml → personalities.customInteractive: present selection and WAIT for confirmation:
QA agents for this run:
1. qa-happy-path (UI flows via Playwright)
2. qa-chaos-monkey (adversarial API testing)
3. [any custom personalities]
Scope: [PR #N / feature description / full test plan]
Proceed with all agents? (yes / remove N / add N)
Non-interactive: skip confirmation, proceed with all available agents. Print selection to log:
[CI] Auto-selected agents: qa-happy-path, qa-chaos-monkey
[CI] Scope: PR #N — <title>
Provide each agent with:
.qa/test-plan.md.env.qa values they needParallelism strategy — use the best available option (see rules/orch-spawn.md):
mcp__forge__spawn_claude available: spawn each in a separate terminalDo NOT spawn qa-bug-fixer in this phase.
STOPPED_EARLY)═══════════════════════════════════════
QA Results Summary
═══════════════════════════════════════
qa-happy-path: N/M flows passed [STOPPED EARLY — 1 blocker]
qa-chaos-monkey: N/M tests passed [, K bugs]
[custom-agent]: N/M flows passed [, K bugs]
Total: X bugs (B BLOCKER, H HIGH, M MEDIUM, L LOW)
═══════════════════════════════════════
If blocking bugs exist, surface them first and WAIT:
BLOCKING BUG — stopped [agent-name] early
[BLOCKER] <description> — <N> flows/tests skipped
Fix this before QA can complete.
1. Spawn qa-bug-fixer now (fixes blocker, then QA resumes)
2. Abort — fix manually and re-run
────────────────────────────────────────
Non-blocking bugs also found (N):
[HIGH] ... [MEDIUM] ... [LOW] ...
Triaged after the blocker is resolved.
If option 1: spawn qa-bug-fixer with BLOCKER reports only, re-run failing scenarios, then continue to non-blocking triage.
If option 2: write report and stop.
If no blocking bugs, present standard triage and WAIT:
Options:
1. Spawn qa-bug-fixer for automated fixes (recommended for HIGH+)
2. Generate QA report only — fix bugs manually
3. Abort — discard results
If option 1:
qa-bug-fixer with all bug reports, sorted by severityNever spawn qa-bug-fixer. Never prompt. For every HIGH or BLOCKER bug:
mcp__github__create_issue:
[QA] <severity>: <short description>["bug", "qa"] + "security" for auth/injection bugsFor BLOCKER bugs that stopped an agent early, add a note to the report:
[CI] BLOCKER detected — testing incomplete. N scenarios skipped. See issue #N.
Write to .qa/reports/YYYY-MM-DD-HHmmss-qa-report.md (see rules/orch-report.md for format).
Present:
QA report saved to: .qa/reports/<timestamp>-qa-report.md
Verdict: PASS / FAIL
.qa/reports/ sorted by date (newest first)Read .qa/config.yml → issue_tracker:
| Provider | Detection | Create Issue | Add Comment |
|---|---|---|---|
| Linear | detected: linear | mcp__linear__save_issue | mcp__linear__save_comment |
| GitHub | detected: github | mcp__github__create_issue | mcp__github__add_issue_comment |
| None | detected: none | Inline in report | Inline in report |
In non-interactive CI mode, GitHub issue creation is always attempted for HIGH+ bugs regardless of issue_tracker.detected, as long as mcp__github__create_issue is available.
--non-interactive flag or $CI env var--non-interactive --pr 42 → fetches PR author, extracts ticket, auto-selects agents, runs, files HIGH+ bugs as GitHub issues assigned to PR author, writes report.User: "Run QA agents against the test plan and generate a report"
User: "Write a unit test for the login function"
Error: No .qa/config.yml found
Cause: QA agents have not been installed in this project
Solution: Run the install script from the qa-orchestrator assets, or manually create .qa/config.yml from the template in references/config.md
Expected behavior: Configuration file exists with issue tracker and personality settings
Error: Test plan is empty
Cause: User has not defined test scenarios in .qa/test-plan.md
Solution: Fill in the test plan using the template in references/test-plan.md
Expected behavior: Agent reads flows and endpoints from the test plan
Error: No agents selected
Cause: Test plan has neither UI flows nor API endpoints, and no custom personalities configured
Solution: Add content to the test plan or register custom personalities in .qa/config.yml
Expected behavior: At least one agent is selected for the QA run
Error: Parallel agent spawning fails
Cause: Tool permissions may not allow multiple concurrent Agent calls
Solution: Fall back to sequential agent execution (Option 3 in spawn hierarchy)
Expected behavior: Agents run one at a time and results are collected after each completes
Error: Bug fixer cannot determine project tech stack
Cause: No CLAUDE.md or README.md in the project
Solution: Add project documentation or tell the bug fixer what tech stack to expect
Expected behavior: Bug fixer adapts its approach to the project's conventions
Error: GitHub issue creation fails in CI
Cause: mcp__github__create_issue not available or GITHUB_TOKEN not set
Solution: Ensure GitHub MCP is configured in the CI environment
Expected behavior: HIGH+ bugs filed as GitHub issues assigned to PR author
testing
Transform user requests into detailed, precise prompts for AI models. Use when users say 'promptify', 'promptify this', 'rewrite this prompt', 'make this prompt better/more specific', or explicitly request prompt engineering or improvement of their request for better AI responses.
tools
Manage AI skills from the Ravn AI Toolkit via corvus CLI — install, update, remove, search, and configure skills for any project. Use when: (1) Installing AI skills into a project, (2) Updating installed skills to latest versions, (3) Browsing or searching available skills, (4) Configuring global or per-project skill sets, (5) Troubleshooting corvus setup. Triggers on: "install skills", "add skills", "update skills", "corvus", "skill manager", "browse skills", "set up AI rules".
development
Generate a gallery of design variations for a UI component. Takes an existing component (referenced by name, pasted code, or screenshot) and produces N distinct rendered alternatives in a single comparison page. Use when exploring visual directions, generating mockups, comparing design approaches for a component, creating A/B candidates, or when anyone says "show me options" or "give me variations" for a UI element.
tools
Create custom QA agent personalities for project-specific testing needs. Guided builder that asks about the specialty, tools, and test scenarios, then generates a personality file and registers it in the QA config. Trigger on "create a QA personality", "add a custom test agent", "build a webhook tester", or when the user needs a project-specific QA agent. Also triggered by /qa-create-personality.