Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/jaiminvadadoriya-ai-qa-review
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, testing, research
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/ai-qa-review
What's inside
- Skill name
ai-qa-review- Description
- QA-focused code review for test quality. Detects test smells across readability, reliability, diagnostic value, design, and coverage dimensions. Analyzes testability of application code and identifies coverage gaps. Based on xUnit Test Patterns and modern test smell research. Use when: "review tests," "test quality," "test code review," "test smells," "testability analysis," "coverage gaps." Related: unit-testing, shift-left-testing, coverage-analysis, ai-test-generation.
- License
- MIT
- Metadata
- author: kindlmann · version: 1.0 · category: ai-qa
- Instructions
- 499 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
<objective>
QA-focused code review that detects test smells, analyzes testability of application code, and identifies coverage gaps.
**Before starting:** Check for `.agents/qa-project-context.md` in the project root. It contains test framework conventions, naming patterns, and project-specific quality standards that calibrate review feedback.
</objective>
---
## Discovery Questions
1. **Review scope:** Reviewing test code for quality, application code for testability, or both? Each triggers different analysis patterns.
2. **Framework conventions:** What test framework (Jest, Vitest, Playwright, pytest)? Conventions differ -- `describe/it` nesting, fixture usage, assertion style.
3. **PR review or batch audit?** A PR review focuses on changed files. A batch audit scans the entire test suite for systemic patterns.
4. **Existing quality standards:** Does the team have documented test conventions? Check for `.eslintrc` test rules, `CONTRIBUTING.md` test guidelines, or a test style guide.
5. **Known pain points:** Are there recurring problems -- flaky tests, slow suites, unclear failures? These prioritize which smells to focus on first.
---
## Core Principles
1. **Test code is production code.** Apply the same quality standards: readability, maintainability, single responsibility. Test code that is hard to read is hard to trust.
2. **Testability review prevents test debt.** Reviewing application code for testability catches design problems before they force awkward test workarounds. If code is hard to test, it is usually hard to maintain.
3. **Codify patterns, not just knowledge.** Turn recurring review feedback into lint rules, custom ESLint plugins, or shared fixtures. Reviews that repeat the same feedback indicate missing automation.
4. **Smells are symptoms, not verdicts.** A test smell indicates a potential problem. Context determines whether it is actually harmful. A long test for a complex workflow may be appropriate. A mock-heavy test for a boundary may be correct.
5. **Actionable feedback only.** Every review comment must include what is wrong, why it matters, and how to fix it. "This test is bad" is not actionable. "This test uses sleep-based waiting which causes flakiness -- replace with explicit wait condition" is.
---
## Test Smell Buckets
Each smell is categorized by the dimension it affects. Each links to a specific review action.
### Readability Smells
Problems that make tests hard to understand at a glance.
#### Obscure Setup
**What it looks like:** 30+ lines of object construction with irrelevant fields drowning the test intent. The reader cannot tell which fields matter for the assertion.
**Fix:** Extract to factories. Only test-relevant data should appear in the test body: `buildOrder({ items: [buildItem({ weight: 2.5, quantity: 2 })] })` instead of constructing full user/product/order objects inline.
**Review action:** Request factory extraction.
#### Mystery Guest
**What it looks like:** `loadFixture('report.json')` -- the test depends on external data the reader cannot see. They must open another file to understand the assertion.
**Fix:** Inline the test-relevant data or use descriptively named fixtures. The reader should understand the test without opening other files.
**Review action:** Request inline data or descriptive fixture names.
#### Duplicate Assertions
**What it looks like:** Multiple tests assert the same behavior with varying specificity (`toBe('Alice')`, `toHaveProperty('name')`, `toBeDefined()`). Three tests, one behavior.
**Review action:** Request consolidation. Keep the most specific assertion. Redundant tests increase maintenance cost without increasing confidence.
---
### Reliability Smells
Problems that cause tests to fail intermittently or in unexpected environments.
#### Sleep-Based Waiting
**What it looks like:** `setTimeout`, `sleep()`, `waitForTimeout()` used for synchronization.
```typescript
// SMELL: Slow on fast machines, flaky on slow ones
it('should show notification after save', async () => {
await page.click('#save');
await page.waitForTimeout(3000);
expect(await page.isVisible('.notification')).toBe(true);
});
// FIX: Wait for the specific condition
it('should show notification after save', async () => {
await page.getByRole('button', { name: 'Save' }).click();
await expect(page.getByRole('alert')).toBeVisible();
});
```
**Review action:** Reject. Sleep-based waiting is never acceptable. Require explicit wait conditions.
#### Order Dependency
**What it looks like:** Tests pass when run together but fail in isolation or different order.
```typescript
// SMELL: Test B depends on Test A's side effects
describe('user management', () => {
it('A: should create a user', async () => {
await api.post('/users', { name: 'Alice' });
});
it('B: should list users', async () => {
const users = await api.get('/users');
expect(users).toContainEqual({ name: 'Alice' }); // Fails if A didn't run first
});
});
// FIX: Each test sets up its own state
describe('user management', () => {
it('should create a user', async () => {
const response = await api.post('/users', { name: 'Alice' });
expect(response.status).toBe(201);
});
it('should list users including recently created', async () => {
await api.post('/users', { name: 'Bob' }); // Own setup
const users = await api.get('/users');
expect(users).toContainEqual({ name: 'Bob' });
});
});
```From JaiminVadadoriya/Distributed-Cloud-Storage---Sync-Platform, MIT.
More from JaiminVadadoriya/Distributed-Cloud-Storage---Sync-Platform
- 0.502score
ai-test-generation
kindlmann
Staged pipeline for AI-assisted test generation: requirements extraction → risk analysis → coverage matrix → scenario generation → oracle design → test code →…
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
ci-cd-integration
kindlmann
Design CI/CD pipelines for test execution.
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
ai-bug-triage
kindlmann
Hybrid fingerprint + LLM pipeline for bug classification, deduplication, and ticket generation.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
cypress-automation
kindlmann
Build Cypress test suites with component testing, E2E testing, custom commands, cy.intercept for network control, Cypress Cloud integration, and TypeScript…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
chaos-engineering
kindlmann
Validate system resilience through controlled fault injection.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
ai-system-testing
kindlmann
Test AI-powered features including LLM prompts, tool calls, nondeterministic outputs, evaluation frameworks, and hallucination risk assessment.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
api-testing
kindlmann
Test REST and GraphQL APIs with Playwright APIRequestContext, Supertest, or standalone HTTP clients.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
accessibility-testing
kindlmann
Test for WCAG 2.2 compliance using axe-core with Playwright, keyboard navigation audits, screen reader testing, ARIA pattern validation, and legal compliance…
SkillCFreshness: C★ 1Claude Code +9 - 0.488score
database-testing
kindlmann
Validate database integrity, test migrations forward and backward, verify schema constraints, manage seed data, and identify query performance issues.
SkillCFreshness: C★ 1Claude Code +9 - 0.488score
compliance-testing
kindlmann
Test for regulatory compliance including GDPR/CMP consent verification, Better Ads Standards, cookie compliance auditing, and privacy policy validation.
SkillCFreshness: C★ 1Claude Code +9 - 0.488score
contract-testing
kindlmann
Implement consumer-driven contract testing with Pact.js.
SkillCFreshness: C★ 1Claude Code +9 - 0.488score
coverage-analysis
kindlmann
Measure and improve test coverage meaningfully.
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- May 30, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.0
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from kindlmann
- 0.570score
coverage-analysis
kindlmann
Measure and improve test coverage meaningfully.
SkillAFreshness: AClaude Code +9 - 0.570score
ai-qa-review
kindlmann
Review EXISTING test code for quality, smells, and testability issues.
SkillAFreshness: AClaude Code +9 - 0.570score
release-readiness
kindlmann
Validate release readiness with evidence-based go/no-go decisions.
SkillAFreshness: AClaude Code +9 - 0.570score
risk-based-testing
kindlmann
Produce a risk matrix or heatmap that quantifies what could break by business impact × probability, runs failure mode analysis on the top items, and maps test…
SkillAFreshness: AClaude Code +9 - 0.570score
qa-project-context
kindlmann
Create and fill .agents/qa-project-context.md with the project's tech stack, test frameworks, CI/CD pipeline, environments, quality goals, risk areas, team…
SkillAFreshness: AClaude Code +9 - 0.502score
ai-test-generation
kindlmann
Staged pipeline for AI-assisted test generation: requirements extraction → risk analysis → coverage matrix → scenario generation → oracle design → test code →…
SkillCFreshness: C★ 1Claude Code +9
Cite this page
ai-qa-review skill. Agent Mart. https://agentmart.dev/skills/jaiminvadadoriya-ai-qa-review (last updated 2026-10-24)