Provides a central index for all testing-related agent skills.

Install

mkdir -p .claude/skills/qa-skill && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12587" && unzip -o skill.zip -d .claude/skills/qa-skill && rm skill.zip

Installs to .claude/skills/qa-skill

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Skill and agent index for crest (API), celium (UI), pixify (VD), and appium (Mobile) — load qa_common as the universal entry point or use individual skills (api, ui, vd, app) directly for single-layer tasks.
207 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Route QA tasks to specific tools based on input type.
  • Automate API testing using Crest.
  • Generate UI test scripts using Celium.
  • Run mobile test suites using Appium.
  • Perform visual diffing using Pixify.
  • Auto-detect testing layers from various inputs.

How it works

The skill acts as an index, auto-detecting the input type and routing the QA task to the appropriate testing layer (API, UI, Mobile, Visual Diff) using specific tools.

Inputs & outputs

You give it
cURL, HTML, Appium XML, Pod + VD request, PR/PRD/EDD, or description
You get back
routed QA task to the correct testing layer

When to use qa_skill

  • Automate API tests
  • Generate UI test scripts
  • Run mobile test suites
  • Perform visual diffing

About this skill

Headout Unified QA Framework — Skill Index

This file is the canonical skill index for AI agents.

  • Start every QA task from: qa/common/skill/SKILL.md (auto-routes to the right layer)
  • Full reference (agents + skills + prompts + patterns): qa/qa.md

WHEN INVOKED — Display This Greeting

When this skill is loaded (e.g. via /qa), output the following greeting exactly, then wait for user input:


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  QA SKILL · Ready to generate tests
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  1  cURL                → crest   (API)
  2  HTML / Live URL     → celium  (UI) + pixify (VD if applicable)
  3  Appium XML          → appium  (Mobile)
  4  Pod + VD request    → pixify  (Visual Diff)
  5  PR / PRD / EDD      → auto-detects all layers
  6  Description         → I'll confirm repo, then generate

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Paste input · mode is auto-detected
  Type "help" for examples & templates
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Repository Map

RepoTesting LayerPrimary ToolConfig / DataUQF Version
unified-qa-frameworkCore shared libraryAll layers1.6.13
crestAPI / BackendRestAssured + Cucumbersrc/test/resources/ResponseSchema/ + configuration.properties1.2
celiumWeb UI (desktop + mobile web)Selenium 4 / Playwright + Cucumbersrc/test/resources/configuration.properties1.1-alpha
pixify (VD layer)Visual Diff (pixel regression)pixify engine (com.headout.common.visual.* in UQF)src/test/resources/vd/{podName}/ — 3 JSON files per pod (see below)1.1-alpha
appiumNative mobile (Android + iOS)Appium 9 + Cucumbersrc/test/resources/configuration.properties + appium-config.json1.6-beta-3

Visual Diff (VD) — Pod Config Files

All VD config lives in src/test/resources/vd/{podName}/ (one folder per pod):

JSON FilePurposeKey Format
visual-diff-action.jsonMaps snapshot names → pre-capture actions{snapshotName}.ACTION.{ACTION_KEY}
visual-diff-version-1.jsonMaps snapshot path → S3 baseline URL{BROWSER}.{SERVICE_TYPE}.{SNAPSHOT_NAME}.{MODE_TYPE}.{LANGUAGE}
upload-snapshot-{browser}-on-s3.jsonDefines pages/elements to capture and push to S3snapshotName, url, captureElement, action[]

S3 baseline URL pattern:

https://headout-testing.s3.{region}.amazonaws.com/ui-automation/{version}/{serviceType_lower}/{modeType_lower}/{browser_lower}/{env}/{snapshotName}_{lang_lower}.png

VD engine classes (all in unified-qa-framework):

ClassPackageRole
ScreenshotComparisoncom.headout.common.visual.coreTakes screenshots (ThreadLocal singleton)
CaptureElementcom.headout.common.visual.coreEnum: FULL_PAGE / VIEWPORT / ELEMENT
NewImageComparisoncom.headout.common.visualPixel diff engine (2 % tolerance default)
UploadSnapshotToS3com.headout.common.visual.actionUploads new baselines to S3
VisualDiffReadercom.headout.utility.visualdiffReads visual-diff-action.json
VisualDiffReaderVersioncom.headout.utility.visualdiffReads visual-diff-version-1.json

Supported action types (usable in both visual-diff-action.json and inline action[]):

Type keyEffect
STOP_ALL_PLAYPause all auto-playing media
SCROLL_DOWN_PAGEScroll to bottom of page
DOM_DELETERemove XPath-targeted elements from DOM
CLICKClick XPath-targeted element
WAITHard wait (seconds)
WAIT_UNIT_ELEMENT_DISPLAYWait for element visibility
SEND_KEYSType text into element
CUSTOM_SCRIPTExecute inline JS strings

Entry Point — Common Skill

Always load this first. It auto-detects the input type, assigns layer(s), and routes to the correct individual skill(s) automatically.

File: qa/common/skill/SKILL.md

How the Common Skill Routes

Your input
    │
    ├─ curl -X / HTTP verb + URL + -d         → API (crest)
    │    loads: qa/api/skill/SKILL.md
    │            + document_driven_test_generation.skill.md
    │
    ├─ <html / data-qa-marker= / aria-label=  → UI (celium) — HTML snippet
    │    loads: qa/ui/skill/SKILL.md
    │            + qa/ui/agent/locator_generate_agent.md
    │
    ├─ https?:// + "write UI test"            → UI (celium) — live URL
    │    loads: qa/ui/skill/SKILL.md
    │            + qa/ui/agent/playwright_discovery_agent.md
    │
    ├─ <hierarchy / resource-id= / XCUI       → Mobile (appium)
    │    loads: qa/app/skill/SKILL.md
    │            + qa/app/agent/locator_generate_agent.md
    │
    ├─ microbrand: / slug: / pod: / VD (HTML) → Visual Diff (pixify) — HTML snippet
    │    loads: qa/vd/skill/SKILL.md
    │            + qa/vd/agent/vd_test_agent.md
    │            + qa/vd/agent/locator_generate_agent.md
    │
    ├─ https?:// + pod: / "VD coverage"       → Visual Diff (pixify) — live URL
    │    loads: qa/vd/skill/SKILL.md
    │            + qa/vd/agent/playwright_discovery_agent.md
    │
    ├─ As a ... I want ... (no API contract)  → UI + Mobile
    │    loads: qa/ui/skill/SKILL.md
    │            + qa/app/skill/SKILL.md
    │
    ├─ User story WITH API contract           → API + UI + Mobile
    │    loads: api + ui + app skills
    │
    ├─ PRD with API contract                  → API + UI + Mobile
    │    loads: api + ui + app skills
    │            + document_driven_test_generation.skill.md
    │
    ├─ PRD with API contract + design section → API + UI + VD
    │    loads: api + ui + vd skills
    │
    ├─ dev-pr (backend diff only)             → API
    ├─ dev-pr (frontend diff only)            → UI + Mobile
    └─ dev-pr (full-stack diff)               → API + UI + Mobile

Always loaded regardless of layer:
    test_case_creation.skill.md  (full 17-category matrix — always)
    step_reuse.skill.md          (grep existing stepdefs + POs before writing)

The One Prompt to Use

You are a senior QA automation engineer for Headout.

Load this common skill: qa/common/skill/SKILL.md
Follow without exception: qa/common/agent/_PRAETORIAN_CONSTITUTION.md

INPUT

[paste: cURL / PR / user story / PRD / HTML / Appium XML / VD request]

TARGET (leave blank for auto-detect)
  [x] Auto-detect layers

Individual Skills — Load Directly for Single-Layer Tasks

SkillWhen to load directlyWhat it covers
qa/api/skill/SKILL.mdYou know it's API-onlyRestAssured + Cucumber, ThreadLocal, schema files, URLBuilders, cURL-to-automation
qa/ui/skill/SKILL.mdYou know it's UI-onlyByBuilder locators, waitFor, genericMethod, Page Object patterns
qa/app/skill/SKILL.mdYou know it's Mobile-onlyDual-platform ByBuilder, wait.app(), AppPO, AppStepDef
qa/vd/skill/SKILL.mdYou know it's VD-onlypixify engine, 3 JSON config files, CaptureElement modes, S3 baselines
qa/common/skill/test_case_creation.skill.mdDesigning test cases before codeAll 8 scenario types, Gherkin rules, Scenario Outline
qa/common/skill/document_driven_test_generation.skill.mdInput is a cURL / PR / Notion / GDocExtracts endpoints, ACs, fields, constraints → test matrix
qa/common/skill/step_reuse.skill.mdBefore writing any new step or POgrep protocol: stepdefinitions / pageobjects / features
qa/common/skill/test_execution_and_fix.skill.mdRunning and fixing testsmvn compile test, parse errors, classify failures, auto-fix loop

Agents

Agent FileRoleLoad when
qa/common/agent/_PRAETORIAN_CONSTITUTION.mdUniversal inviolable rulesEvery prompt — always
qa/api/agent/agent.mdWrites crest API tests end-to-endAPI layer tasks
qa/ui/agent/ui_test_agent.mdWrites celium UI tests end-to-endUI layer tasks
qa/ui/agent/locator_generate_agent.mdGenerates ByBuilder from HTML/XMLHTML snippet or Appium XML input
qa/app/agent/app_test_agent.mdWrites appium mobile testsMobile layer tasks
qa/common/agent/locator_strategy.mdLocator priority (8-tier web, 5-tier mobile)Whenever deriving locators
qa/vd/agent/vd_test_agent.mdVisual Diff (pixify) testsVD layer tasks
qa/common/agent/architect_agent.mdTest design blueprint before codingNew feature, design-first
qa/common/agent/remediator_agent.mdFix broken/flaky testsCI failure, test error
qa/common/agent/qa_architect.mdCross-repo strategy + governanceOnboarding, architecture review

Common Skill → Individual Skill Mapping (Quick Reference)

If common skill detects...It loads these individual skills
APIapi + document_driven_test_generation
UI (HTML snippet)ui + locator_generate_agent
UI (live URL)ui + playwright_discovery_agent
Mobileapp + locator_generate_agent
VD (HTML snippet)vd + vd_test_agent + locator_generate_agent
VD (live URL + pod)vd + playwright_discovery_agent
API + UIabove API skills + above UI skills
API + UI + Mobileall three layer skills
API + UI + VDAPI + UI + VD skills
API + UI + Mobile + VDall four layer skills
Alwaystest_case_creation + step_reuse

Universal Rules (Enforced by _PRAETORIAN_CONSTITUTION.md)

  1. Never hardcode URLs, tokens, credentials — use PropertyUtils.get(ConfigMap.*) or GetSecretToken
  2. Tag every scenario — minimum @test or @live plus one functional tag
  3. **Extend the correct BaseAutomation

Content truncated.

When not to use it

  • When performing non-QA related tasks.
  • When direct interaction with a specific testing tool is preferred over routing.

Limitations

  • The skill is designed for Headout Unified QA Framework.
  • The skill requires specific input formats for auto-detection.

How it compares

This skill provides a unified entry point for various QA tasks, automatically directing them to specialized tools, unlike manually selecting and invoking individual testing frameworks.

Compared to similar skills

qa_skill side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
qa_skill (this skill)03moReviewIntermediate
http-generate17moReviewIntermediate
android-java04moNo flagsIntermediate
mockzilla-mock-maker01moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry