.github/skills/qa-review/SKILL.md
Review a user story implementation against its Example Mapping (EM) specification.
npx skillsauth add PackmindHub/packmind qa-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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:
tools
Record polished UI demo videos and screenshots of a running web app using Playwright MCP — for client deliverables, release notes, feature walkthroughs, or bug repros. Produces an HD WebM video with chapter markers, a mandatory animated cursor overlay, and a mandatory subtitle bar that narrates each step (positioned deliberately so it never masks the UI being demonstrated), plus full-page screenshots at each step. Use this whenever the user asks to "record a demo", "create a screencast", "make a UI walkthrough video", "document this feature with video", "show the client how X works", "capture screenshots of the app", or anything similar — even when the user only says "make a video" or "take screenshots" in the context of a running frontend. Also use it when the user wants to demonstrate a workflow, generate marketing-quality footage of an app, or produce repeatable visual documentation.
tools
The canonical recipe for starting, checking, and stopping the Packmind local dev stack with Docker Compose — the single source of truth other skills and the Michel agent defer to. Covers bringing the full stack (PostgreSQL, Redis, NestJS API, React/Vite frontend on :4200, MCP server, nginx) up in the background, the init services (dependency install + TypeORM migrations) you must wait on, the critical host-port trap that the API on container port 3000 is NOT exposed to the host and must be reached via the frontend Vite proxy at localhost:4200/api/v0, confirming the API and frontend are actually serving before you depend on them, the persistent-volume gotcha that leaves stale Postgres schema and node_modules behind between runs, building the CLI, and tearing everything down so no container is left blocking the run. Use this whenever you need Packmind running locally — to verify a change, record a UI or CLI demo, hit the API, seed data, or reproduce a bug — and whenever you are about to start or stop `docker compose`. If you are an autonomous agent (e.g. Michel) that started the stack, you MUST use the teardown half before finishing. Prefer this over running `nx serve` on the host for anything that needs the real, containerized stack.
tools
Best practices for creating GitHub pull requests that include inline images — CLI terminal screenshots (from cli-demo-recorder), UI screenshots/videos (from ui-demo-recorder), or any other visual artifact. Use this skill whenever opening or updating a PR that has visual artifacts to embed, or when images aren't rendering in a PR description. Also use it when asked "how do I add screenshots to a PR", "why isn't my image showing", or "embed a demo in the PR".
tools
--- name: michel-create-packmind-dataset description: Seed a local Packmind instance with a realistic dataset — one organization populated with standards, commands, and skills — so an autonomous agent can exercise its own changes against lifelike data instead of an empty app. Use this whenever you need populated Packmind data to verify a change end-to-end: reproducing a bug that only shows with existing artifacts, recording a UI/CLI demo that needs content on screen, smoke-testing a new endpoint