qa
Verify a feature works after implementation. Actively try to break it — edge cases, error paths, integration wiring, and real usage flows.
Best use case
qa is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Verify a feature works after implementation. Actively try to break it — edge cases, error paths, integration wiring, and real usage flows.
Teams using qa should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/qa/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How qa Compares
| Feature / Agent | qa | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Verify a feature works after implementation. Actively try to break it — edge cases, error paths, integration wiring, and real usage flows.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# QA Verify that a feature works as intended after implementation. Assume bugs exist and hunt for them. Mindset: you are not confirming it works — you are discovering where it breaks. ## Available skills - **`/tdd`** — Use to write tests for any gaps found during QA. - **`/e2e`** — Use to write Playwright E2E tests for user-facing flows that lack coverage. --- ## Before starting: create the pipeline Create these tasks immediately (use your task/todo tracking tool if available): 1. **Understand the intent** — Read task/PR/commits to understand what was built 2. **Trace the wiring** — Verify the feature is actually connected end-to-end 3. **Test the happy path** — Run the feature as a user would 4. **Try to break it** — Boundary values, error paths, concurrency, auth 5. **Verify test coverage** — Check for missing tests, write them if needed 6. **Report** — Summarize findings with verdict Mark each task in_progress when you begin it and completed when you finish it. --- ## Phase 1: Understand the intent Mark task 1 as in_progress. Read the task description, PR, or recent commits to understand what was built and what it should do. Identify: - The expected behavior (happy path) - System boundaries (user input, API endpoints, external data) - Integration points (what calls what, data flow end-to-end) Mark task 1 as completed. --- ## Phase 2: Trace the wiring Mark task 2 as in_progress. Before testing behavior, verify the feature is actually connected: - Exports are imported and used (not just defined) - API routes have consumers (frontend calls them, or tests exercise them) - Data flows end-to-end: input -> handler -> storage -> response -> display - New config/env vars are documented and have defaults If something is orphaned or unwired, stop and report it — no point testing disconnected code. Mark task 2 as completed. --- ## Phase 3: Test the happy path Mark task 3 as in_progress. Run the feature as a user would. For backend changes, call the API. For frontend changes, trace the UI flow. For both, follow the full path: - Does the basic use case work? - Does the response/output match expectations? - Is the data persisted correctly? Mark task 3 as completed. --- ## Phase 4: Try to break it Mark task 4 as in_progress. Systematically test these categories (skip what doesn't apply): **Boundary values:** - Empty input, nil/null, zero, negative numbers, max values - Empty arrays/maps, single element, very large collections - Strings: empty, whitespace-only, special characters, very long **Error paths:** - What happens when dependencies fail (DB down, API timeout, invalid response)? - Are errors surfaced clearly or silently swallowed? - Does the system recover or get stuck in a bad state? **Concurrency:** - What happens with simultaneous requests to the same resource? - Race conditions: create/update/delete at the same time - Does it handle duplicate submissions? **Authorization:** - Can the feature be accessed without proper auth? - Does it respect permission boundaries? Mark task 4 as completed. --- ## Phase 5: Verify test coverage Mark task 5 as in_progress. Check that the implementation has tests covering the behaviors you just verified: - Are the happy path and key error paths tested? - Are edge cases from Phase 4 covered? - If tests are missing, write them using `/tdd` (or `/e2e` for user-facing flows) Mark task 5 as completed. --- ## Phase 6: Report Mark task 6 as in_progress. Summarize what was tested and what was found: **Verified working:** - List of behaviors confirmed working **Issues found:** - file:line - description, how to reproduce, severity (blocker/suggestion) **Missing test coverage:** - Behaviors that work but have no automated test **Verdict:** Feature complete / Has issues — fix before merge Mark task 6 as completed.
Related Skills
verify
Run format, typecheck, test, and lint across the monorepo. Use after implementing changes.
tdd
Implement changes using Test-Driven Development (Red-Green-Refactor). Use for bug fixes, new features, or any code change that should have test coverage.
spec
Write a feature spec — the "what & why" of a kandev product feature, before coding. Use when the user says "let's spec X" or starts a new product feature.
simplify
Simplify recently changed code — inline one-off abstractions, remove speculative code, reduce nesting, replace cleverness with clarity. Run after implementing a feature.
record
Record an architectural decision (ADR) or save an implementation plan. Use after making significant design choices or completing features.
push
Commit and push to the current branch. Use --fixup to also wait for CI/CodeRabbit and fix issues.
pr
Commit, push, and create a PR. Default is ready-for-review with auto-fixup. Use --draft to skip review/fixup.
pr-fixup
Wait for CI checks and automated reviews (CodeRabbit, Greptile, Claude) on a PR, fix failures and address comments, then push.
playwright-cli
Automate browser interactions, test web pages and work with Playwright tests.
fix
Fix bugs and issues — reproduce, find root cause, minimal fix with regression test. Use when something is broken.
feature
Guided feature development — brainstorm, explore codebase, design architecture, implement with TDD, and review. Use for new features or significant changes.
e2e
Write and run web E2E tests (Playwright) using TDD — locations, patterns, commands, and debugging.