with one click
qa-review
// Review a user story implementation against its Example Mapping (EM) specification.
// Review a user story implementation against its Example Mapping (EM) specification.
Check whether newer stable versions of Node.js (24.x line), Nx, or Vite are available and, if so, generate a detailed upgrade plan markdown file at the repo root. Use this skill whenever the user asks to "check for runtime upgrades", "upgrade Node/NX/Vite", "is our Node version current", "plan a Node 24 upgrade", "refresh our runtime stack", "monthly stack check", or anything along those lines — even if they don't name a specific tool. Also use it when the user wants a recurring/cadence check of build-toolchain currency. Output is a plan only — does NOT mutate package.json, Dockerfiles, lockfiles, or any other repo file. CI/CD wrappers can invoke this skill to keep the runtime stack fresh.
Reference for Packmind CLI listing commands. This skill should be used when an agent needs to discover available standards, commands, or skills in the Packmind organization.
Guide for creating reusable commands via the Packmind CLI. This skill should be used when users want to create a new command that captures multi-step workflows, recipes, or task automation for distribution to GitLab Duo.
Guide for creating Packmind packages via the CLI. This skill should be used when users want to create a new package to organize standards, commands, and skills for distribution.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends GitLab Duo's capabilities with specialized knowledge, workflows, or tool integrations.
Guide for creating coding standards via the Packmind CLI. This skill should be used when users want to create a new coding standard (or add rules to an existing standard) that captures team conventions, best practices, or coding guidelines for distribution to GitLab Duo.
| name | qa-review |
| description | Review a user story implementation against its Example Mapping (EM) specification. |
Audit a user story implementation against its Example Mapping specification. Reads the EM markdown, finds all implementing code in the codebase, then runs two parallel agents — one for functional coverage, one for code review. Produces a single compact report.
This skill only detects issues — it does not fix them.
A ready-to-fill EM template is available at em_template.md (in this skill's directory). Share it with the user when they need to write a new spec from scratch.
Read the markdown file at the provided path. Extract a structured summary with these sections:
# Rule N: <title> block. For each rule, extract:
## Example N with its setup/action/outcome narrative (preserve the full text)# Technical rules heading (implementation-focused constraints)# User Events heading: event names, properties, schemasConflictDetector, space_created, decision)If a spec item is ambiguous or explicitly deferred (e.g., "TBD", "on verra plus tard", "later"), flag it in the Parsed Spec Summary but exclude it from coverage assessment. Note it in the report as "Deferred — not assessed."
Compile everything into a Parsed Spec Summary formatted as below. The "Full Examples" section preserves the complete raw text of every example — sub-agents need this full context to accurately assess coverage.
## Parsed Spec Summary
### User Story
{title}
### Rules and Examples
Rule 1: {title}
Example 1: {one-line summary of scenario}
Example 2: {one-line summary of scenario}
Rule 2: {title}
Example 1: {one-line summary of scenario}
[...]
### Full Examples (raw text)
{Copy the complete text of every example verbatim from the spec, preserving setup/action/outcome narratives. Do not summarize here — this section is passed to sub-agents so they can assess nuanced behaviors.}
### Technical Rules
- {rule text}
[...]
### Deferred Items
- {item text} — Deferred, not assessed
[...]
### User Events
- {event_name}: {properties}
[...]
### Check Also
- {constraint text}
[...]
### Code References (from backticks)
{list of all backtick-quoted terms}
### Domain Keywords
{list of distinctive nouns/verbs extracted from rules}
Ask the user which domains this user story touches. Use AskUserQuestion with multiSelect: true:
| Option | Directories |
|---|---|
| CLI (apps/cli) | apps/cli/src/** |
| API (apps/api) | apps/api/src/** |
| Packages (packages/*) | packages/*/src/**, packages/types/src/** |
| Frontend (apps/frontend) | apps/frontend/app/**, apps/frontend/src/** |
| MCP (apps/mcp-server) | apps/mcp-server/src/** |
Packages is always included, even if the user does not select it — it contains domain logic, contracts, events, and infra that all other layers depend on.
Store the user's selection as {target_domains} — a list of domain labels and their directory patterns. All subsequent steps use this to scope their searches.
Grep 2–3 of the most distinctive backtick-quoted terms from the spec, scoped to the {target_domains} directories only. If fewer than 3 implementing files are found, stop and ask the user to confirm that the US has been fully implemented. Do not proceed with a full review on a partially-implemented or not-yet-started US — the report would be misleading.
Launch a Code Map Agent (subagent_type: general-purpose) using the prompt from agents/code-map-agent.md. Replace:
{parsed_spec_summary} with the Parsed Spec Summary from step 1{target_domains} with the selected domains and their directory patterns from step 2The agent will search only within the target domain directories, then return a structured Code Map organized by architectural layer. Only layers matching the selected domains will appear in the output.
Wait for the agent to complete before proceeding to step 5.
Before launching the review agents, collect the applicable Packmind coding standards:
**/.claude/rules/packmind/*.md across the repositorypaths glob patternspaths patternsCompile the applicable standards into {applicable_standards} — the full text of each matching standard, prefixed with its name. If no standards match, set {applicable_standards} to "None".
Launch two sub-agents in parallel (same turn), each receiving the Parsed Spec Summary (including the Full Examples section with raw text), Code Map, and target domains as context:
subagent_type: general-purpose) — prompt built from agents/functional-coverage-agent.md. Replace {parsed_spec_summary}, {code_map}, and {target_domains}.subagent_type: general-purpose) — prompt built from agents/code-review-agent.md. Replace {parsed_spec_summary}, {code_map}, {target_domains}, and {applicable_standards}.Launch both agents simultaneously. The full raw example text is critical — sub-agents need the complete setup/action/outcome narratives to assess nuanced behaviors, not just one-line summaries.
If the Agent tool is unavailable, perform both reviews sequentially yourself, following the instructions from each agent prompt file.
Once both agents complete, merge their outputs into a single report.
Derive from the input path: if input is path/to/my-spec.md, output is path/to/my-spec-report.md.
# QA Review Report
**Spec**: {filename} | **Date**: {date} | **Branch**: {branch} | **Commit**: {short-sha}
**Rules**: {N} | **Examples**: {N} | **Tech Rules**: {N} | **Events**: {N}
## Summary
| Metric | Count |
|--------|-------|
| Covered | N |
| Partially Covered | N |
| Not Covered | N |
| Code Findings | N (Critical: X, High: Y, Medium: Z) |
| Standards Violations | N |
## Functional Coverage
### Coverage Matrix
{coverage matrix table from functional coverage agent}
### Gaps
{reproduction steps from functional coverage agent — omit this subsection if all items are Covered}
## Code Review
### Findings
{findings from code review agent — omit this section if no issues found}
## Deferred Items
{list of items marked as deferred/TBD in the spec — not assessed in this review}
---
*Static analysis only. No code was executed during this review.*
Omit any section that has zero content. Only include sections with actual results.
After writing the report, print a brief summary to the console: