Qamap pr qa
Local zero-LLM PR QA designer: turns commits and diffs into behavior lifecycles, QA scenarios, and deterministic automation drafts.
npx -y skills add IvoryCanvas/QAMap --skill qamap-pr-qaAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 16 stars16 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Local zero-LLM PR QA workflow. Use when an agent is preparing, updating, finalizing, or reviewing a pull request, asks what the PR should test, or needs commit-backed change intent, affected behavior, QA scenarios, evidence, validation commands, optional automation drafts, and manifest repair guidance.
SKILL.md
7.6 KB, as published. Nobody here has run it
QAMap PR QA
Use QAMap as a final local QA pass before presenting a pull request for human review.
Workflow
-
Detect the comparison base.
- Prefer the target PR base branch when known.
- Otherwise use
origin/main, thenorigin/master, then the repository default branch.
-
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:
npm exec --yes --registry=https://registry.npmjs.org --package=@ivorycanvas/qamap@latest -- qamap qa . --base <base> --head HEAD --format agentThis one-off form runs outside the target repository's package-manager contract, so it does not invoke Corepack or add a
packageManagerfield. For a project that already installs QAMap, prefer its local binary, for example:pnpm exec qamap qa . --base <base> --head HEAD --format agentDrop
--format agentwhen a human will read the output directly; the default markdown report is written for people. The agent JSON is a versioned contract (schema: qamap.qav1, additive-only): see docs/agent-format.md in the QAMap repository. -
Read
analysisScopebefore interpreting package-relative evidence or commands.automatic-packagemeans the root command already reran analysis with the selected package's routes, scripts, fixtures, and runner settings. Run package-relativecommandsfromselectedPath; use the workspace-awareautomation.draftCommandas printed.repository-rootmeans QAMap could not safely select one package. Reviewcandidatesandreason; do not silently choose a package for a cross-package or root-spanning change.- Use an explicit scoped pass only when a human wants to override that decision:
npm exec --yes --registry=https://registry.npmjs.org --package=@ivorycanvas/qamap@latest -- qamap qa <package-path> --workspace-root . --base <base> --head HEAD -
Read and verify intent before generating code. In agent format:
route— the canonical applicable decision. Usestatus,nextAction, and the optional exactcommandbefore looking at legacy readiness scores. Averification-*status means use repository validation; adraft-*status describes optional automation preparation.intents[]— commit/diff evidence, confidence,reviewRequired, ordered lifecycle, and primary/failure/boundary/state-transition scenarios. Read each scenario's structuredsourcesbefore accepting it; a diff source carriesfile, head-side line numbers, symbol, and hunk.testContracts— behavior declared by tests added in this diff, with framework andfile:line. Preserve these expectations, but do not report them as passed whileexecutionisnot-run.- If
reviewRequiredis true or the lifecycle conflicts with the PR, ask a human to confirm the intended behavior before promoting a draft. flows[]— affected flows withdraftpath,runnablestatus, entry route, evidence-matchedfocus, capped steps, and selectors. Preferfocus.actionandfocus.assertionwhen stating what changed and what should be observed;steps[0]may only be setup.requiredEvidence[]— evidence that must exist before the PR can be trusted;recommendedEvidenceCountfor the rest.requiredBootstrap[]— non-runner repository context that still needs clarification.automation— an optional adapter handoff. It is not required to use the QA judgment.prChecklist[]andcommands[]— checklist lines and validation commands for the handoff.
-
Follow the
route.nextActioncontract:run-repository-command— run the exact existingroute.commandfrom the selected analysis scope when permissions allow.define-repository-command— do not invent a passing command. Report the missing repository validation contract.review-and-run-draft— preview the printedautomation.draftCommandfirst. Write or execute the draft only after the scenario and adapter are accepted.complete-draft-evidence— report the first required evidence gap. Do not install a runner or fabricate a selector, fixture, action, or assertion.
-
Only after a human or team accepts the scenario and automation adapter, create or preview executable coverage:
npm exec --yes --registry=https://registry.npmjs.org --package=@ivorycanvas/qamap@latest -- qamap e2e draft . --base <base> --head HEAD --dry-runIf the selected adapter is absent, inspect and explicitly accept the
automation.setupCommandproposal. Never install a runner merely because QAMap detected a web or mobile surface. -
Include the useful parts in the PR body, review note, or handoff summary.
Agent Action Contract
- Choose exactly one immediate next action from
route.nextAction. Do not dump every possible command on the user. - Verify the strongest scenario source before acting. If it has no exact diff location or is marked
reviewRequired, ask one precise question instead of generating code. - Treat QAMap's
execution.status: "not-run"as authoritative. Only a command that this agent actually ran can produce a pass, fail, blocked, or not-verifiable receipt. - Report QAMap analysis and later command execution as separate facts. A generated or structurally runnable draft is not a passing test.
- Never modify a shared manifest automatically. Present the proposed correction target and require human approval.
Output Rules
- Treat QAMap output as QA planning evidence, not proof that browser, device, API, or manual QA passed.
- Prefer
routeover compatibilityreadiness.level. In particular, do not call repository validation blocked merely because the optional-automation score is blocked. - Preserve change intent, confidence, lifecycle, QA scenarios, their strongest file/line sources, affected flow, missing evidence, and validation command in the handoff.
- Preserve
flows[].focuswhen present. It is the compact changed action and observable proof, not a replacement for the surrounding ordered steps. - Keep automation optional until the scenario and its evidence have been reviewed.
- Treat Playwright, Maestro, and manual output as adapters after QA design. Do not let runner selection replace review of the inferred intent and scenarios.
- If the output is
review onlyornear runnable, explain what blocks it from becoming trusted regression evidence. - If
qamap qasays no manifest was found, do not stop. The first run is allowed to be manifest-free.
Manifest Repair
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.
If the team accepts QAMap for ongoing use, suggest this follow-up:
npm exec --yes --registry=https://registry.npmjs.org --package=@ivorycanvas/qamap@latest -- qamap manifest init .
Then humans should review .qamap/manifest.yaml and keep only durable team QA language.
Handoff Template
QAMap QA
- Change intent and confidence:
- Behavior lifecycle:
- Required QA scenarios:
- Changed repository test contracts:
- Scenario source files/lines:
- Affected flow:
- Suggested E2E/checklist:
- Missing evidence:
- Selected next action:
- Action taken:
- Execution receipt: not run | passed | failed | blocked | not verifiable
- Manifest repair needed: