From qa
Engine that writes mobile test code (Appium Java + TestNG + POM), used by the cook command when the platform is android/ios. Covers 3-layer element lookup, Screen declaration (via the declare-screen skill), writing atomic/flow Tests, TestNG XML (GoToHomeTest first), Utils.passCap/failCap with the [APP-BUG] triage label, build verification, sitemap updates, and recording elements missing an id. Keeps the cook command a thin router.
How this skill is triggered — by the user, by Claude, or both
Slash command
/qa:cook-appThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Reusable capability: from `plans/<feature>/plan.md` → standards-compliant POM Appium Java code that compiles green. The `/qa:cook` command routes to this skill when the platform is **android/ios** (web → `cook-web` skill). Source standards (read BEFORE writing): [design-pattern.md](../../rules/app/design-pattern.md), [coding-rules.md](../../rules/app/coding-rules.md), [design-system.md](../../r...
Reusable capability: from plans/<feature>/plan.md → standards-compliant POM Appium Java code that compiles green. The /qa:cook command routes to this skill when the platform is android/ios (web → cook-web skill). Source standards (read BEFORE writing): design-pattern.md, coding-rules.md, design-system.md.
[APP-BUG]). Parts currently broken → do NOT write tests; leave the bug report for the dev.screens/<group>/elements.json (catalog?) → if missing, MCP discovery: open the screen via the navigate-app skill, spawn the source-inspector agent, pick the locator via the find-elements-android skill (android) or find-elements-ios skill (ios). Do NOT probe blindly when a catalog already exists.declare-screen skill: BaseScreen, @MobileFindBy fields following the platform's locator priority, isDisplayed() (try-catch on 1 element), action = verb, NO assert. Elements missing an id → flag for step 7.extends BaseTest, package tests/<group>, 1 method = 1 scenario + assertion.extends BaseRegression; recover back to Home between steps.driver.findElement() in the Test, NO arbitrary Thread.sleep.testng/<group>.xml): GoToHomeTest is the first <test> block, then the feature tests in dependency order.Utils.passCap(driver, test, msg) / Utils.failCap(driver, test, msg) (screenshot + ExtentReport). FAIL suspected to be an app fault → attach the [APP-BUG] label (failure-triage.md): reproduce on the real app → if the app is genuinely broken, keep the test honest (truly red / mark known-defect with a ticket); do NOT loosen the assertion to hide the bug.build-verify skill (mvn clean compile test-compile green) → update-sitemap skill (sitemap + elements.json + test-hints.json) → non-id elements recorded via the missing-ids skill (RECORD + EXPORT).This skill ONLY writes mobile code; compile/runtime errors that arise → fix via the
fix-by-layerskill. Planning is theplan-methodskill. Commit when the user requests →commit-pushskill.
npx claudepluginhub hominhtuong/qa-claude-plugins --plugin qaGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.