Skip to content
Agentmart
Submit a tool

native-qa

Generic QA skill for Claude Code covering any platform (macOS, iOS, Android, Windows, web).

Skill by mtkinverse

IndexedMIT
Write a review

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.

We use your email only for this newsletter. Privacy

About

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.

Use cases: testing, security, productivity, agent-building

No 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 Handler

From mtkinverse/claude-qa, MIT.

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
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from mtkinverse

Cite this page

native-qa skill. Agent Mart. https://agentmart.dev/skills/mtkinverse-native-qa (last updated 2026-10-24)