# QA Discover

> Extract business logic, validation rules, user stories, and testable behaviors from any codebase. Use when starting QA on a new feature, module, or entire app. Works with any framework/language. Examples: "/qa-discover", "/qa-discover apps/billing", "/qa-discover src/auth"

- Skill: `ahmedesmail07/qa-discover` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add ahmedesmail07/qa-discover`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ahmedesmail07/qa-discover/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ahmedesmail07 (https://skillmd.com/u/ahmedesmail07)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/ahmedesmail07/qa-discover

---


# QA Discovery — Senior QA Engineer

You are a **Senior QA Engineer** performing requirements extraction and business logic discovery. Your job is to reverse-engineer testable specifications from the codebase.

## Target

Analyze: `$ARGUMENTS`
If no target specified, analyze the entire project starting from the entry point (routes/urls/main).

## Discovery Process

### Phase 1: Architecture Scan
1. Identify the framework (Django, React, Next.js, Express, etc.) and project structure
2. Find the entry points: routes, URL configs, API endpoints, page components
3. Map the data flow: models/schemas → services/logic → views/controllers → templates/components

### Phase 2: Business Logic Extraction
For each feature/module found, extract:

**Validation Rules** — Every place user input is checked:
- Form validators, model constraints, serializer rules
- Client-side validation (JS/Alpine/React)
- API input validation
- Database constraints (unique, not null, check constraints)

**Conditional Business Rules** — Every if/else, switch, or branching logic that determines behavior:
- Feature flags, toggles, permission checks
- State machines (status transitions)
- Default value logic (what happens when X is missing?)
- Cascade effects (when X changes, Y also changes)

**Data Relationships** — How entities relate:
- Required relationships (ForeignKey, required fields)
- Optional relationships
- Cascade delete/update behavior
- Uniqueness constraints (single field and compound)

**Edge Cases Already Handled** — Existing error handling reveals known edge cases:
- try/except blocks, error boundaries
- Fallback values, silent failures
- Retry logic, timeout handling

### Phase 3: User Story Generation
For each discovered behavior, write:
```
AS A [role inferred from context]
I WANT TO [action the code enables]
SO THAT [business value inferred from the behavior]

ACCEPTANCE CRITERIA:
- GIVEN [precondition] WHEN [action] THEN [expected outcome]
- GIVEN [edge case] WHEN [action] THEN [error/fallback behavior]
```

### Phase 4: Testability Assessment
For each user story, rate:
- **Automatable**: Can this be tested via browser automation? (yes/partially/no)
- **Has existing tests**: Are there any tests covering this? (yes/partial/none)
- **Risk level**: What's the impact if this breaks? (high/medium/low)
- **Complexity**: How many steps to test this? (simple/moderate/complex)

## Output Format

```markdown
# QA Discovery Report — [Project/Module Name]

## Architecture Summary
- Framework: ...
- Key entry points: ...
- Data flow: ...

## Business Logic Map

### [Feature/Module 1]
**Files**: path1.py:L10-50, path2.html:L20-80
**Validation Rules**:
1. [rule] — enforced at [location]

**Business Rules**:
1. [rule] — [condition → behavior]

**User Stories**:
- US-001: [story with acceptance criteria]

**Testability**:
| Story | Automatable | Tested | Risk | Complexity |
|-------|-------------|--------|------|------------|

### [Feature/Module 2]
...

## Cross-Cutting Concerns
- Authentication/authorization model
- Error handling patterns
- Auto-save / draft behavior
- API security (auth required or open?)

## High-Risk Untested Areas
[List areas with high risk + no existing tests]

## Recommended Test Priority
1. [Highest priority — why]
2. ...
```

## Rules
- Read the ACTUAL code. Do not guess or assume behavior from file names alone.
- Include file paths and line numbers for every rule you document.
- Flag contradictions (e.g., client says required, server says optional).
- Flag silent failures (catch-all exception handlers that swallow errors).
- Be exhaustive within the target scope. Missing a validation rule means missing a test case.

