native-qa
Generic QA skill for Claude Code covering any platform (macOS, iOS, Android, Windows, web).
Skill by mtkinverse
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/mtkinverse-native-qa
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, security, productivity, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/native-qa
What's inside
- Skill name
native-qa- Description
- Generic QA skill for Claude Code covering any platform (macOS, iOS, Android, Windows, web). Two-phase workflow: Phase 1 = pure exploration — agent selects platform, initializes workspace, launches the app, traces every happy flow step-by-step with screenshots at every single action, maps flows, saves all knowledge to qa/knowledgebase/. Phase 1 ends with a credentials gate — no test cases are generated yet. Phase 2 = full coverage — after user provides credentials in .env.qa, agent traces auth-gated flows, generates every possible scenario per flow (happy + negative + edge + security + a11y), and writes all TC files. ALWAYS asks platform first. ALWAYS screenshots every step in Phase 1. NEVER generates TCs before credentials are confirmed.
- License
- MIT
- Instructions
- 622 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- name: "native-qa" does not match folder "claude-qa"
- body: 622 lines (spec recommends under 500)
Files (22)
- native-qa.md · .claude/commands/
- settings.local.json · .claude/
- .env.example
- .gitignore
- ARCHITECTURE.md
- CLAUDE.md
- CONTRIBUTING.md
- LICENSE
- QA-AGENT-FULL-ARCHITECTURE.md
- README.md
- SKILL.md
- package-lock.json
- package.json
- pyproject.toml
- generate-report.js · scripts/allure/
- qa-screenshot.js · scripts/
- registry.json · skills/_registry/
- engagement-protocol.md · skills/_shared/
- fallback-discipline.md · skills/_shared/
- fingerprint-questions.md · skills/_shared/
- principles.md · skills/_shared/
- tsconfig.json
SKILL.md (first lines)
# Native App QA Skill
An autonomous QA engineer for **any native or web application**. It asks you to select a platform, initializes a typed workspace, launches your app, takes screenshots for visual analysis, discovers every UI flow, and generates comprehensive test cases — organized by flow, feature, or risk priority.
**Supported platforms**: macOS ✅ | Web (Playwright) ✅ | Windows 🔜 | iOS 🔜 | Android 🔜
---
## DO THIS NOW — Platform Selection
> ⛔ **HARD GATE — Do NOT run any bash commands. Do NOT read any workspace files. Do NOT check `qa/`. Do NOT show a welcome message. Do NOT proceed past this section until the user has answered the platform question below. The only allowed action before this question is answered: read `skills/_registry/registry.json`.**
Read `skills/_registry/registry.json`. Build a numbered menu from all registered skills. Then output exactly this (substituting real status from the registry):
> "Which platform would you like to test on?
>
> 1. macOS — production ✅
> 2. Web (Playwright) — beta ✅
> 3. Windows — stub 🔜
> 4. iOS — stub 🔜
> 5. Android — stub 🔜"
**STOP. Output nothing else. Do not continue to Step 0 until the user replies with their platform choice.**
The selected platform determines: state file name, workspace mode detection, welcome message wording, and which platform SKILL.md to load for Steps 4+. Nothing downstream works correctly without it.
---
## Step 0: Mode Detection and Session Resume
### 0.1b Session Resume Check
Immediately after platform selection, check if a saved session exists for that platform:
```bash
STATE_FILE="qa/state.md"
[ -f "$STATE_FILE" ] && echo "EXISTS" || echo "NONE"
```
#### If state file EXISTS — read it and ask the user
Read `qa/state.md`. Extract:
- App name (from the App table)
- Phase (e.g. `EXPLORATION_COMPLETE`, `PHASE_2_IN_PROGRESS`)
- Next action (from Resume Instructions → "Next action" line)
- Counts: flows done, TCs written
Present to the user:
> "Found a saved **[platform]** session:
>
> | Field | Value |
> |-------|-------|
> | App | [AppName] |
> | Phase | [phase] |
> | Next action | [next action] |
> | Flows traced | [N done] / [N total] |
> | TCs written | [N] |
>
> **1) Resume** — continue from: *[next action]*
> **2) New session** — start fresh (saved state will be overwritten at next checkpoint)"
Wait for the user's choice:
- **"1"** or **"resume"** → Read the full state file for context. Jump directly to the saved next action. Do NOT re-run workspace init, app selection, or discovery. Announce: *"Resuming [AppName] on [platform] — [next action]"* and continue.
- **"2"** or **"new"** → **Clean up the old workspace first**, then proceed to Step 0.2 as INIT:
```bash
# Cross-platform recursive remove with retries for OS-level file locks
node -e "require('fs').rmSync('qa',{recursive:true,force:true,maxRetries:10,retryDelay:250})"
# Verify — if anything remains, a process still has a file open
if [ -d "qa" ]; then
echo "WARN: qa/ still exists after cleanup."
ls -la qa/ 2>&1 | head
fi
echo "Old workspace removed (or flagged for engagement). Starting fresh."
```
This ensures Step 0.2 correctly detects INIT mode. **Engagement protocol** (`skills/_shared/engagement-protocol.md`): if `qa/` still exists after the rm, do NOT `exit 1`. Surface to the user via AskUserQuestion with three options: (a) identify the locking process and retry, (b) rename `qa/` to `qa-old-<timestamp>/` and continue, (c) halt with resume instructions. Never terminate silently.
#### If state file does NOT exist — proceed silently
No prompt. Go directly to Step 0.2.
### 0.2 Workspace Mode
```bash
if [ ! -d "qa" ] || [ ! -f "qa/.qa-config.json" ]; then
echo "INIT"
elif [ ! -d "qa/flows" ] && [ ! -d "qa/features" ] && [ ! -d "qa/test-cases/P1-critical" ]; then
echo "CONFIGURED_NO_FLOWS"
else
# Count TC files — if zero, exploration is done but Phase 2 hasn't run
TC_COUNT=$(find qa -name "TC-*.md" 2>/dev/null | wc -l | tr -d ' ')
if [ "$TC_COUNT" -eq 0 ]; then
echo "EXPLORATION_COMPLETE"
else
echo "HAS_WORKSPACE"
fi
fi
```
| Result | Action |
|--------|--------|
| `INIT` | → **Step 1: INIT MODE** |
| `CONFIGURED_NO_FLOWS` | → **Step 2: App Selection** (workspace ready, need discovery) |
| `EXPLORATION_COMPLETE` | → Load the platform SKILL.md and jump directly to its **Phase 2** entry point (Web → Step W-7, macOS → Step 8). Announce: *"Phase 1 already complete — continuing to Phase 2."* |
| `HAS_WORKSPACE` | → Load the platform SKILL.md and jump to its **Update Mode** section (Web → Step W-13, macOS → Step 12). Announce: *"Existing workspace found — entering update mode."* |
---
## Context Window Management
**After every completed flow, reset the context window. This is not optional.**
Reading screenshots, flow.md files, and accumulated tool output fills the context fast. By flow 3-4 the context is full and the session crashes mid-run. The fix: treat each flow as an isolated unit — complete it, save everything to `qa/state.md`, start fresh.
### STOP / PAUSE / SAVE STATE — Immediate HandlerFrom mtkinverse/claude-qa, MIT.
More from mtkinverse/claude-qa
- 0.405score
native-qa-ios
mtkinverse
Autonomous QA skill for iOS applications using XCUITest and xcrun simctl.
SkillDFreshness: DClaude Code +9 - 0.405score
native-qa-windows
mtkinverse
Autonomous QA skill for Windows native applications using WinAppDriver and UIA3.
SkillDFreshness: DClaude Code +9 - 0.405score
native-qa-android
mtkinverse
Autonomous QA skill for Android applications using UIAutomator2 and ADB.
SkillDFreshness: DClaude Code +9 - 0.402score
native-qa-macos
mtkinverse
Complete macOS QA runbook.
SkillDFreshness: DClaude Code +9 - 0.395score
native-qa-web
mtkinverse
Autonomous QA skill for web applications using Playwright.
SkillDFreshness: DClaude Code +9 - 0.395score
native-qa-extension
mtkinverse
Autonomous QA skill for browser extensions using Playwright and Chrome Extension API.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit
- Apr 20, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/mtkinverse/claude-qa
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from mtkinverse
- 0.405score
native-qa-ios
mtkinverse
Autonomous QA skill for iOS applications using XCUITest and xcrun simctl.
SkillDFreshness: DClaude Code +9 - 0.405score
native-qa-windows
mtkinverse
Autonomous QA skill for Windows native applications using WinAppDriver and UIA3.
SkillDFreshness: DClaude Code +9 - 0.405score
native-qa-android
mtkinverse
Autonomous QA skill for Android applications using UIAutomator2 and ADB.
SkillDFreshness: DClaude Code +9 - 0.402score
native-qa-macos
mtkinverse
Complete macOS QA runbook.
SkillDFreshness: DClaude Code +9 - 0.395score
native-qa-web
mtkinverse
Autonomous QA skill for web applications using Playwright.
SkillDFreshness: DClaude Code +9 - 0.395score
native-qa-extension
mtkinverse
Autonomous QA skill for browser extensions using Playwright and Chrome Extension API.
SkillDFreshness: DClaude Code +9
Cite this page
native-qa skill. Agent Mart. https://agentmart.dev/skills/mtkinverse-native-qa (last updated 2026-10-24)