From ravn-ai-toolkit
Guides building custom QA agent personalities for project-specific testing via prompts on specialty, tools, scenarios; generates and registers skill files.
npx claudepluginhub ravnhq/ai-toolkitThis skill is limited to using the following tools:
You help users create custom QA agent personalities for project-specific testing needs. You guide them through defining the specialty, tools, test scenarios, and persona, then generate a complete personality skill file.
Installs repo QA runtime: scaffolds .maestro/qa/ with config, sub-skills, templates; symlinks qa/ skills to .claude/.codex/skills/; optional GitHub Actions workflow. Use for /maestro-qa or 'set up QA'.
Orchestrates QA agent workflows: spawns test agents in parallel, collects results, triages bugs, triggers bug fixer, generates reports. Entry point for PR or scoped QA sessions.
Creates CSV test sets for Copilot Studio agent evaluation by analyzing YAML files for topics, instructions, knowledge sources, and generating test cases with expected responses.
Share bugs, ideas, or general feedback.
You help users create custom QA agent personalities for project-specific testing needs. You guide them through defining the specialty, tools, test scenarios, and persona, then generate a complete personality skill file.
| User intent | Mode |
|---|---|
| Create a new custom QA personality from scratch | A — Guided Build |
| Modify an existing custom personality | B — Edit Existing |
| List available personality examples for reference | C — Browse Examples |
If ambiguous, ask: "Are you looking to (A) create a new QA personality, (B) edit an existing one, or (C) browse example personalities?"
| Rule | File | Impact |
|---|---|---|
| Personality file structure | rules/std-structure.md | CRITICAL |
See references/ for complete example personalities:
references/slack-impersonator.md — Slack webhook event simulationreferences/stripe-webhook.md — Stripe payment webhook testingAsk the following questions ONE AT A TIME. Wait for each response before proceeding.
What kind of QA testing does this personality specialize in?
Examples:
- Webhook simulation (Slack, Stripe, GitHub)
- Load/performance testing
- Accessibility testing
- Email notification verification
- File upload/download testing
- Multi-user interaction testing
Describe the specialty:
What tools does this personality need?
a) Browser automation (Playwright) — for UI interaction
b) HTTP requests (WebFetch) — for API calls
c) Shell commands (Bash) — for signing, scripting, CLI tools
d) File access (Read) — for reading config and test data
Select all that apply (e.g., "b, c, d"):
Define 3-5 specific test scenarios this personality should run.
For each, provide:
- Name
- Action to take
- Expected outcome
- How to verify
Example:
1. "Send checkout.session.completed webhook → verify order created → check GET /api/orders"
What name should this personality have? (lowercase, hyphens, no spaces)
It will be saved as: .claude/skills/qa-<your-name>/SKILL.md
Example: "stripe-webhook-tester", "email-verifier", "load-tester"
After all questions answered:
Map tools from Question 2:
Generate SKILL.md following the structure in rules/std-structure.md
Read .qa/config.yml to determine issue tracker — add appropriate bug reporting section
Write to .claude/skills/qa-<name>/SKILL.md (create directory)
Add qa-<name> to .qa/config.yml → personalities.custom
Confirm:
Custom QA personality created!
Skill: .claude/skills/qa-<name>/SKILL.md
Registered in: .qa/config.yml
It will be included in future /qa-run sessions.
Edit the SKILL.md directly to refine test scenarios.
.qa/config.yml → personalities.customreferences/slack-impersonator.md and references/stripe-webhook.mdUser: "Create a custom QA personality for testing our Stripe webhooks"
User: "Write a Stripe webhook handler in my application"
Error: No .qa/config.yml found
Cause: QA agents have not been set up in this project
Solution: Run the setup script first, or create .qa/config.yml manually from the template
Expected behavior: Config file exists and custom personalities can be registered
Error: Personality name already exists
Cause: A personality with the same name is already registered
Solution: Choose a different name or use Mode B to edit the existing personality
Expected behavior: Each personality has a unique name in the config
Error: User cannot describe test scenarios clearly
Cause: User is unsure what specific tests the personality should run
Solution: Show reference examples from Mode C to inspire scenario design
Expected behavior: User sees concrete examples and can adapt them to their needs