npx claudepluginhub jpoutrin/product-forge --plugin product-designWant just this skill?
Then install: npx claudepluginhub u/[userId]/[slug]
Create a new QA test procedure for a feature
This skill uses the workspace's default tool permissions.
create-qa-test
Category: Quality Assurance
Usage
create-qa-test <feature-name> [--url <url>] [--priority <priority>] [--explore]
Arguments
<feature-name>: Required - Name of the feature to test (kebab-case)--url: Optional - Test environment URL for the feature--priority: Optional - Test priority (critical, high, medium, low). Default: medium--explore: Optional - Launch qa-tester agent to explore the feature via Playwright
Execution Instructions for Claude Code
When this command is run, Claude Code should:
-
Generate Test ID
- Format:
QA-YYYYMMDD-###-feature-name.md - Use today's date
- Find next sequential number for today
- Format:
-
Create Directory Structure (if not exists)
qa-tests/ ├── draft/ ├── active/ ├── executed/ ├── archived/ └── screenshots/ -
Prompt for Details (if not provided)
- Feature description
- Test URL (if --url not specified)
- Acceptance criteria
- Prerequisites
- Test data requirements
-
Create QA Test File
- Place in
qa-tests/draft/with status DRAFT - Include all required metadata
- Generate test case placeholders based on feature
- Place in
-
Optional: Invoke qa-tester Agent
- If
--exploreflag is set, launch the qa-tester agent - Agent will navigate to URL and document test steps
- Agent will take screenshots of key states
- If
File Template
# QA Test Procedure: [Feature Name]
## Metadata
- **Test ID**: QA-YYYYMMDD-###
- **Feature**: [Feature name]
- **Application**: [App name]
- **URL**: [Test environment URL]
- **Created**: [YYYY-MM-DD]
- **Author**: [Name]
- **Status**: DRAFT
- **Priority**: [Critical|High|Medium|Low]
- **Estimated Time**: [X minutes]
- **PRD Reference**: [Link if applicable]
## Prerequisites
- [ ] [Required setup step 1]
- [ ] [Test account with appropriate permissions]
- [ ] [Test data prepared]
## Test Environment
- **URL**: [Test environment URL]
- **Browser**: Chrome (latest)
- **Credentials**: See password manager
---
## Test Cases
### TC-001: [Happy Path - Main Success Scenario]
**Objective**: Verify the main success flow for [feature]
**Preconditions**:
- User is logged in
- [Feature-specific preconditions]
#### Steps
| Step | Action | Expected Result | Pass/Fail | Notes |
|------|--------|-----------------|-----------|-------|
| 1 | Navigate to [URL] | [Page loads correctly] | ☐ | |
| 2 | [Action] | [Expected outcome] | ☐ | |
| 3 | [Action] | [Expected outcome] | ☐ | |
**Postconditions**: [Expected state after test]
---
### TC-002: [Validation Test]
**Objective**: Verify input validation for [feature]
| Step | Action | Expected Result | Pass/Fail | Notes |
|------|--------|-----------------|-----------|-------|
| 1 | [Submit with empty required field] | [Error message appears] | ☐ | |
| 2 | [Enter invalid format] | [Validation error shown] | ☐ | |
---
## Edge Cases & Error Scenarios
### EC-001: [Edge Case Description]
| Step | Action | Expected Result | Pass/Fail | Notes |
|------|--------|-----------------|-----------|-------|
| 1 | [Edge case action] | [Expected behavior] | ☐ | |
---
## Summary Checklist
### Critical Path
- [ ] TC-001: [Title]
### Validation
- [ ] TC-002: [Title]
### Edge Cases
- [ ] EC-001: [Title]
---
## Test Execution Log
| Date | Tester | Environment | Build | Result | Issues |
|------|--------|-------------|-------|--------|--------|
| | | | | | |
## Notes
- [Additional observations]
- [Known limitations]
Example
# Create a basic QA test for login
create-qa-test user-login --url https://staging.example.com/login --priority critical
# Create a test and explore with Playwright
create-qa-test checkout-flow --url https://staging.example.com/checkout --explore
# Create a simple test, will prompt for URL
create-qa-test password-reset
Output
Created: qa-tests/draft/QA-20250105-001-user-login.md
📋 QA Test Procedure: user-login
Status: DRAFT
Priority: Critical
Location: qa-tests/draft/
Next steps:
1. Review and complete test cases
2. Add specific test data
3. Move to qa-tests/active/ when ready
Integration with qa-tester Agent
When --explore flag is used:
- Command creates the initial QA test file
- Launches qa-tester agent with:
- Feature name
- URL to test
- Path to QA test file
- Agent navigates and documents steps
- Agent takes screenshots to
qa-tests/screenshots/{test-id}/ - Agent extracts element screenshots to
qa-tests/screenshots/{test-id}/elements/ - Agent updates the QA test file with discovered steps
- Agent validates and embeds all screenshots (see Final Review below)
Final Review: Screenshot Integration (REQUIRED)
Before marking the QA test as complete, the agent MUST verify all screenshots are properly referenced in the final markdown file.
Verification Checklist
-
Check screenshot directory exists
qa-tests/screenshots/{test-id}/ ├── 01-initial-state.png ├── 02-form-filled.png ├── 03-success-state.png └── elements/ ├── login-button.png ├── email-field.png └── password-field.png -
Verify all screenshots are referenced in the markdown
- Each test case should have a "Screenshots" subsection
- Element references should use relative paths
- No orphaned screenshots (captured but not referenced)
-
Add missing references If screenshots exist but aren't in the document, add them:
Required Sections in Final Document
Screenshots Reference (per test case)
### TC-001: User Login
#### Steps
| Step | Action | Expected Result | Pass/Fail | Notes |
|------|--------|-----------------|-----------|-------|
| 1 | Navigate to login page | Login form displays | ☐ | |
| 2 | Enter email in **Email field** | Email accepted | ☐ | |
| 3 | Click **Login button** | Dashboard loads | ☐ | |
#### Screenshots
| Step | Screenshot | Description |
|------|------------|-------------|
| 1 |  | Login page before input |
| 3 |  | Dashboard after login |
Element Visual Reference (document level)
## Element Visual Reference
| Element | Screenshot | Selector | Test Case |
|---------|------------|----------|-----------|
| Email field |  | `input#email` | TC-001 |
| Login button |  | `button[type=submit]` | TC-001 |
Validation Steps
The agent should run these checks before completing:
1. LIST all files in qa-tests/screenshots/{test-id}/
2. SCAN the QA test markdown for image references
3. COMPARE: Are all screenshots referenced?
4. IF missing references:
- Add Screenshots section to each test case
- Add Element Visual Reference section
- Use relative paths: ./screenshots/{test-id}/filename.png
5. VERIFY: All image paths are valid (files exist)
6. REPORT: "✅ All X screenshots properly referenced" or "⚠️ Added Y missing references"
Auto-Fix Missing References
If the agent finds screenshots that aren't referenced:
## Auto-Generated Screenshot References
The following screenshots were captured but not initially referenced.
They have been added to the document:
| Screenshot | Added To | Path |
|------------|----------|------|
| 02-form-filled.png | TC-001 Screenshots | ./screenshots/QA-20250105-001/02-form-filled.png |
| submit-button.png | Element Reference | ./screenshots/QA-20250105-001/elements/submit-button.png |
Related Commands
list-qa-tests- List and filter existing QA testsenrich-qa-test- Add element screenshots to existing test/prd-progress- Check linked PRD implementation status
Related Skills
qa-screenshot-management- Screenshot naming and organizationqa-element-extraction- Extract element screenshots from test stepsqa-screenshot-validation- Validate screenshots for layout issues
Similar Skills
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.