Composable QA agent for AI coding assistants. Installs multi-specialist analysis, exploratory testing, and test generation into any project. Supports Claude Code, Cursor, Windsurf, GitHub Copilot, and Octobots.
cd your-project
npx github:onetest-ai/qa-agent initInteractive installer with arrow-key navigation — walks you through:
- Prerequisites — checks Chrome, Node.js 22+, gh CLI
- Targets — Claude Code, Cursor, Windsurf, GitHub Copilot, Octobots
- Skills — 10 specialist domains + integration connectors
- MCP servers — optional tool integrations with credential setup
- Install — copies agents, skills, permissions, MCP configs
Non-interactive (agents + skills only, no MCP):
npx github:onetest-ai/qa-agent init --allInstalls all skills to Claude Code target. MCP servers are skipped — configure them via .mcp.json.example or re-run the interactive installer.
Update existing installation:
npx github:onetest-ai/qa-agent init --updateOverwrites agent + skills. Preserves settings and .gitignore.
After installation, start the QA agent and onboard it to your product:
claude --agent qa
> /qa-init/qa-init is a 6-phase data ingestion pipeline that teaches the QA agent about your product:
| Phase | What happens |
|---|---|
| 1. Interview | Asks about your product, user flows, environments, pain points, documentation sources, test infrastructure, team process |
| 2. Pre-flight | Maps your answers to required tooling (MCPs, CLIs, auth). Presents a checklist. Waits for you. |
| 3. Ingest | Reads codebase, clones related repos, fetches wikis/docs URLs, parses API specs, scans test infrastructure |
| 4. Synthesize | Generates project-context.md — the agent's knowledge base about your product |
| 5. Configure | Suggests CLAUDE.md additions, MCP setup, specialist tuning |
| 6. Verify | Smoke tests the app to confirm everything works |
Re-run /qa-init anytime the product changes significantly. It merges new info with existing context.
claude --agent qa # Start the QA agent
> /qa-init # Onboard to the product (do this first)
> audit https://example.com # Multi-specialist bug analysis
> reproduce issue #42 # Confirm and document a bug report
> explore the checkout flow # Exploratory testing session
> write tests for the login page # Generate test scripts
> verify the fix for #42 # Re-test a reported issue
> persona review for homepage # Diverse user perspective analysis
> /qa-research stripe integeation # Build domain knowledge before testing
> /qa-github push findings # Create GitHub issues from audit
> /qa-onetest run # Execute a OneTest test runyour-project/
.claude/
agents/qa/
AGENT.md # QA agent
references/
qa-methodology.md # Shared audit workflow, finding schema
specialists.md # Check-type → skill mapping
html-templates.md # Report templates (light theme)
persona-review.md # Persona review methodology
skills/
browser-verify/ # CDP browser automation (Chrome + Node 22)
qa-accessibility/ # Accessibility + WCAG (axe-core, WCAG checklist)
qa-security/ # Security + OWASP (OWASP Top 10 checklist)
qa-privacy/ # Privacy + GDPR (tracker detection, GDPR checklist)
qa-performance/ # Performance + Console + JS (CWV thresholds)
qa-mobile/ # Mobile + Responsive (touch targets, emulation)
qa-content/ # Content + SEO (meta tags, copy quality)
qa-ux/ # UI/UX + 20 page-type checks
qa-testgen/ # Test case generation (4 suites)
qa-reproduce/ # Bug reproduction + verification
qa-research/ # Topic research + domain knowledge
qa-onetest/ # OneTest integration (optional)
qa-github/ # GitHub Issues integration (optional)
qa-init/ # Onboarding pipeline
settings.json # Permissions (merged additively)
.mcp.json # MCP server configs (if configured)
.mcp.json.example # MCP config template
reports/ # HTML report output
tests/ # Generated test scripts
User asks QA question
→ Claude delegates to qa agent (AGENT.md)
→ Agent reads qa-methodology.md (shared workflow)
→ Loads specialist skills on demand (only what's needed)
→ Each skill has its own references (WCAG, OWASP, GDPR, CWV...)
→ Generates findings with p0-p3 priorities
→ Produces HTML report (light theme, glass morphism)
→ Optionally syncs to OneTest or GitHub (data bridges)
- Agent is thin — personality + pointers to references. Methodology lives in shared files consumable by both standalone and team contexts.
- Skills load on demand — only relevant specialists enter the context. An accessibility audit doesn't load performance thresholds.
- Integration skills are data bridges — qa-onetest and qa-github don't contain QA logic. They read/write to external systems; the actual analysis stays in specialist skills.
- Persona perspective is embedded — every specialist considers diverse user impact, not just technical correctness.
- Never touches CLAUDE.md — everything lives in
.claude/agents/and.claude/skills/.
Aligned with OneTest:
| Priority | Meaning | Color |
|---|---|---|
| p0 | Critical — blocks UX, security risk, data loss | Red |
| p1 | High — degrades experience, affects many users | Orange |
| p2 | Medium — noticeable, workaround exists | Gray |
| p3 | Low — minor polish, edge case | Blue |
Each specialist has its own SKILL.md with focused methodology and domain-specific references.
| Skill | Domain | References |
|---|---|---|
qa-accessibility |
Accessibility + WCAG 2.1 | wcag-checklist.md — AA/AAA criteria with priority mapping |
qa-security |
Security + OWASP | owasp-checklist.md — Top 10 browser-visible indicators |
qa-privacy |
Privacy + GDPR | gdpr-checklist.md — consent, notices, technical compliance |
qa-performance |
Performance + Console + JS | cwv-thresholds.md — Core Web Vitals, resource budgets |
qa-mobile |
Mobile + Responsive | Touch targets, viewport, device emulation |
qa-content |
Content + SEO | Meta tags, structured data, copy quality |
qa-ux |
UI/UX + Page Types | page-types.md — 20 page-type specific checks |
qa-testgen |
Test Case Generation | 4 suites: smoke, regression, accessibility, negative |
qa-reproduce |
Bug Reproduction | 5-phase: intake, setup, attempt, evidence, confirm |
qa-research |
Topic Research | Web search, domain knowledge for unfamiliar products |
Optional connectors — no QA logic, just data bridges.
Syncs with GitHub Issues via gh CLI. No MCP needed.
| Command | What it does |
|---|---|
/qa-github push findings |
Audit findings → GitHub issues with priority labels |
/qa-github pull issues |
Fetch bugs for reproduction |
/qa-github verify |
Re-test fixed issues, comment results |
/qa-github status |
Open bugs by priority, verification queue |
Syncs with OneTest test management via MCP.
| Command | What it does |
|---|---|
/qa-onetest push findings |
Audit findings → OneTest test cases |
/qa-onetest pull tests |
Fetch test cases for execution |
/qa-onetest run |
Create, execute, and complete test runs |
/qa-onetest status |
Execution queue and active runs |
Supports multi-browser parallel execution via CDP_PORT for non-conflicting tests.
The interactive installer offers a multi-select of MCP servers grouped by capability. Each server that requires credentials will prompt during installation. Or copy .mcp.json.example to .mcp.json and configure manually.
| Server | Package | Auth | What it does |
|---|---|---|---|
playwright |
@playwright/mcp |
None | Multi-browser automation via MCP |
chrome-devtools |
chrome-devtools-mcp |
None | Chrome automation + Lighthouse built-in |
browser-verify(included by default) handles browser automation without MCP. These are alternatives for teams already using Playwright or Chrome DevTools.
| Server | Package | Auth | What it does |
|---|---|---|---|
accessibility-scanner |
mcp-accessibility-scanner |
None | Automated axe-core WCAG scanning |
snyk |
snyk CLI |
Snyk auth | SAST, SCA, IaC, container security scanning |
sentry |
@sentry/mcp-server |
Auth token | Correlate findings with production errors |
browserstack |
@browserstack/mcp-server |
Username + key | Real cross-browser/device testing |
postman |
@postman/postman-mcp-server |
API key | API collections, requests, mock servers |
| Server | URL | Auth | What it does |
|---|---|---|---|
context7 |
https://mcp.context7.com/mcp |
API key | Library docs lookup for up-to-date API knowledge |
websearch |
https://mcp.tavily.com/mcp/ |
API key (in URL) | Web search, extract, and crawl for domain research |
| Server | Package / URL | Auth | What it does |
|---|---|---|---|
github |
https://api.githubcopilot.com/mcp/ |
GitHub PAT | Issues, PRs, actions, code search |
atlassian |
https://mcp.atlassian.com/v1/mcp |
OAuth or API token | Jira issues, Confluence pages, Compass |
test-management |
OneTest HTTP MCP | API key | Sync with OneTest TMS |
The /qa-init pre-flight phase may recommend these based on your stack:
| Source | MCP |
|---|---|
| Notion | @notionhq/notion-mcp-server |
| Figma | figma-developer-mcp |
| Stripe | @stripe/mcp |
| Database | @bytebase/dbhub |
| GitLab | @zereight/mcp-gitlab |
The QA methodology at agents/qa/references/qa-methodology.md is designed to be consumed by multiple contexts:
- Standalone agent — AGENT.md reads it directly
- Team integration (e.g. octobots) — qa-engineer role's CLAUDE.md reads the same file
This means the same audit workflow, finding schema, and testing methodology works whether you're using qa-agent standalone or as part of a multi-agent team.
- Chrome/Chromium installed
- Node.js 22+ (for browser-verify CDP scripts and installer)
- At least one supported AI coding assistant (Claude Code, Cursor, Windsurf, GitHub Copilot)
ghCLI (optional, for qa-github)
Contributions are welcome! Here's how to get involved:
- Create
skills/qa-<name>/SKILL.mdwith YAML frontmatter (name,description) - Add domain-specific references in
skills/qa-<name>/references/ - Register the skill in
agents/qa/references/specialists.md - Add it to the installer's specialist selection in
bin/init.mjs
- Add the server definition to
mcpDefsinbin/init.mjs - Add it to the
mcpItemsarray with the appropriate group - If it needs credentials, add a prompt block or an entry in
envMcpCredentials - Add the config to
templates/mcp.json.example - Update the MCP table in this README
- Create a
install<Target>()function inbin/init.mjs - Add a target compiler if the format differs from SKILL.md
- Add it to the target selection in Step 2
- Wire it up in the Step 5 install loop
git clone https://github.com/onetest-ai/qa-agent
cd qa-agent
# Test the installer locally
mkdir /tmp/qa-test && cd /tmp/qa-test
node /path/to/qa-agent/bin/init.mjs init
# Syntax check
node --check bin/init.mjs- Keep skills self-contained — each SKILL.md should work independently
- No build step — the repo is distributed as-is via npx
- Never modify the target project's CLAUDE.md
- MCP credential prompts must be non-fatal (skip gracefully if user hits Enter)
- Test the interactive installer flow end-to-end after changes
Apache-2.0 — see LICENSE for details.