$npx -y skills add IvoryCanvas/QAMap --skill qamap-pr-qaLocal zero-LLM PR QA workflow. Use when an agent is preparing, updating, or reviewing a pull request and needs to derive commit-backed change intent, behavior lifecycle, runner-independent QA scenarios, affected flows, automation drafts, missing evidence, and optional manifest re
| 1 | # QAMap PR QA |
| 2 | |
| 3 | Use QAMap as a final local QA pass before presenting a pull request for human review. |
| 4 | |
| 5 | ## Workflow |
| 6 | |
| 7 | 1. Detect the comparison base. |
| 8 | - Prefer the target PR base branch when known. |
| 9 | - Otherwise use `origin/main`, then `origin/master`, then the repository default branch. |
| 10 | 2. Run QAMap from the repository root. Prefer the compact agent format — it carries the same decision content as the markdown report in a fraction of the tokens: |
| 11 | |
| 12 | ```sh |
| 13 | npm exec --yes --registry=https://registry.npmjs.org --package=@ivorycanvas/qamap@latest -- qamap qa . --base <base> --head HEAD --format agent |
| 14 | ``` |
| 15 | |
| 16 | This one-off form runs outside the target repository's package-manager contract, so it does not invoke Corepack or add a `packageManager` field. For a project that already installs QAMap, prefer its local binary, for example: |
| 17 | |
| 18 | ```sh |
| 19 | pnpm exec qamap qa . --base <base> --head HEAD --format agent |
| 20 | ``` |
| 21 | |
| 22 | Drop `--format agent` when a human will read the output directly; the default markdown report is written for people. |
| 23 | The agent JSON is a versioned contract (`schema: qamap.qa` v1, additive-only): see docs/agent-format.md in the QAMap repository. |
| 24 | |
| 25 | 3. If the repository is a monorepo and the changed files are clearly inside one package, run a scoped pass too: |
| 26 | |
| 27 | ```sh |
| 28 | npm exec --yes --registry=https://registry.npmjs.org --package=@ivorycanvas/qamap@latest -- qamap qa <package-path> --workspace-root . --base <base> --head HEAD |
| 29 | ``` |
| 30 | |
| 31 | 4. Read and verify intent before generating code. In agent format: |
| 32 | - `route` — the canonical applicable decision. Use `status`, `nextAction`, and the optional exact `command` before looking at legacy readiness scores. A `verification-*` status means use repository validation; a `draft-*` status describes optional automation preparation. |
| 33 | - `intents[]` — commit/diff evidence, confidence, `reviewRequired`, ordered lifecycle, and primary/failure/boundary/state-transition scenarios. Read each scenario's structured `sources` before accepting it; a diff source carries `file`, head-side line numbers, symbol, and hunk. |
| 34 | - If `reviewRequired` is true or the lifecycle conflicts with the PR, ask a human to confirm the intended behavior before promoting a draft. |
| 35 | - `flows[]` — affected flows with `draft` path, `runnable` status, entry route, capped steps, and selectors. |
| 36 | - `requiredEvidence[]` — evidence that must exist before the PR can be trusted; `recommendedEvidenceCount` for the rest. |
| 37 | - `requiredBootstrap[]` — non-runner repository context that still needs clarification. |
| 38 | - `automation` — an optional adapter handoff. It is not required to use the QA judgment. |
| 39 | - `prChecklist[]` and `commands[]` — checklist lines and validation commands for the handoff. |
| 40 | |
| 41 | 5. Only after a human or team accepts the scenario and automation adapter, create or preview executable coverage: |
| 42 | |
| 43 | ```sh |
| 44 | npm exec --yes --registry=https://registry.npmjs.org --package=@ivorycanvas/qamap@latest -- qamap e2e draft . --base <base> --head HEAD |
| 45 | ``` |
| 46 | |
| 47 | If the selected adapter is absent, inspect and explicitly accept the `automation.setupCommand` proposal. Never install a runner merely because QAMap detected a web or mobile surface. |
| 48 | 6. Include the useful parts in the PR body, review note, or handoff summary. |
| 49 | |
| 50 | ## Output Rules |
| 51 | |
| 52 | - Treat QAMap output as QA planning evidence, not proof that browser, device, API, or manual QA passed. |
| 53 | - Prefer `route` over compatibility `readiness.level`. In particular, do not call repository validation blocked merely because the optional-automation score is blocked. |
| 54 | - Preserve change intent, confidence, lifecycle, QA scenarios, their strongest file/line sources, affected flow, missing evidence, and validation command in the handoff. |
| 55 | - Keep automation optional until the scenario and its evidence have been reviewed. |
| 56 | - Treat Playwright, Maestro, and manual output as adapters after QA design. Do not let runner selection replace review of the inferred intent and scenarios. |
| 57 | - If the output is `review only` or `near runnable`, explain what blocks it from becoming trusted regression evidence. |
| 58 | - If `qamap qa` says no manifest was found, do not stop. The first run is allowed to be manifest-free. |
| 59 | |
| 60 | ## Manifest Repair |
| 61 | |
| 62 | When the recommendation is wrong or too broad, do not repeatedly re-prompt for the same QA context. Ask the maintainer which domain, flow, anchor, or check should be corrected. |
| 63 | |
| 64 | If the team accepts QAMap for ongoing use, suggest this follow-up: |
| 65 | |
| 66 | ```sh |
| 67 | npm exec --yes --registry=https://registry.npmjs.org --package=@ivorycanvas/qamap@latest -- qamap manifest init . |
| 68 | ``` |
| 69 | |
| 70 | Then humans should |