kramme-cc-workflow/skills/kramme:pr:ux-review/SKILL.md
Audit UI, UX, and product experience of PR and local changes using specialized agents for usability heuristics, product thinking, visual consistency, and accessibility. Supports inline report output with --inline. Use --team for multi-agent cross-validation.
npx skillsauth add abildtoft/kramme-cc-workflow kramme:pr:ux-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 the UI, UX, and product experience of a PR's changes, including local staged/unstaged/untracked work, using specialized agents.
Arguments: "$ARGUMENTS"
If $ARGUMENTS contains --team, remove that flag, read references/team-mode.md, and follow that workflow instead of the standard workflow below. Pass the remaining arguments through as the team-mode arguments.
http or equals auto → store as app_url (enables visual mode for agents)--categories flag → parse comma-separated list. Valid values: a11y, ux, product, visual, all--threshold N → store as custom_threshold (0-100). Overrides each agent's default confidence threshold. Only findings with confidence >= N will be reported. Default thresholds if not specified: a11y = 90, ux/product/visual = 70.--base <branch> → store as BASE_BRANCH_OVERRIDE--parallel (or deprecated bare parallel for backward compatibility) → launch agents in parallel instead of sequentially--team → use Team Mode and remove it from the remaining arguments--inline → set INLINE_MODE=true and do not write UX_REVIEW_OVERVIEW.mdBefore selecting files or launching agents:
AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, markdown instruction files in repo-root .claude/, or equivalents).Use the shared plugin script to resolve the base branch and build the unified change scope (committed PR diff + staged + unstaged + untracked). It uses the same 3-tier strategy: explicit --base, PR target branch, then origin/HEAD/origin/main/origin/master. It runs in strict mode, so fetch failures stop the workflow with the script's stderr message.
COLLECT_ARGS=(--strict)
[ -n "${BASE_BRANCH_OVERRIDE:-}" ] && COLLECT_ARGS+=(--base "$BASE_BRANCH_OVERRIDE")
RESOLVED=$(${CLAUDE_PLUGIN_ROOT}/scripts/collect-review-diff.sh "${COLLECT_ARGS[@]}") || {
echo "Base/diff collection failed; see the message above and stop." >&2
exit 1
}
eval "$RESOLVED"
The script exports BASE_REF, BASE_BRANCH, MERGE_BASE, and newline-delimited CHANGED_FILES. Use CHANGED_FILES for the file filtering below.
Filter for UI-relevant files:
*.tsx, *.jsx, *.vue, *.svelte, *.component.ts, *.component.html*.html, *.hbs, *.ejs, *.pug*.css, *.scss, *.sass, *.less, *.styled.ts, *.module.csspages/, views/, screens/, routes/, app/ directoriesAfter identifying the changed UI files, discover any additional nested instruction files that apply to those files (for example AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, markdown instruction files in a nearby .claude/ directory, or tool-specific equivalents) and merge those constraints into the conventions from Step 2 before launching reviewer agents.
If no UI-relevant files found:
No UI-relevant files detected in this PR or local working tree.
Changed files: {list file types}
No UI/UX changes detected to audit.
Action: Stop.
If UX_REVIEW_OVERVIEW.md exists in the project root:
PROD-NNN, VIS-NNN, and A11Y-NNN) from older UX audit reports as previously addressed identifiers; new UX audit reports use artifact-scoped UX-NNN IDs. Remove this legacy-ID acceptance once existing UX_REVIEW_OVERVIEW.md artifacts contain only UX-NNN IDs (i.e., once reports generated before the UX-NNN switch are no longer in circulation).Always launch (if UI files changed):
Conditionally launch:
kramme:a11y-auditor — accessibility (WCAG 2.1 AA)
Only launch if accessibility is a project requirement:
accessibility, a11y, WCAG, aria, screen readerpackage.json for a11y tooling: eslint-plugin-jsx-a11y, axe-core, pa11y, @axe-core/*.accessibilityrc, a11y rules in ESLint/Biome config--categories a11y or --categories allNote: A11y audit skipped — no accessibility requirements detected in this project.
Use `--categories a11y` to run it explicitly.
Respect --categories filter:
--categories ux → only launch kramme:ux-reviewer--categories a11y → launch kramme:a11y-auditor regardless of detection--categories product,visual → launch kramme:product-reviewer and kramme:visual-reviewer--categories all → launch all 4 agents (a11y included regardless of detection)--categories flag → launch the 3 core agents + a11y only if detectedIf app_url was provided:
If app_url is auto, resolve it with the shared dev-server detector before checking browser automation:
if ${CLAUDE_PLUGIN_ROOT}/scripts/dev-server/detect-url.sh auto; then
:
else
printf '%s\n' "__DETECTOR_UNAVAILABLE__"
fi
http://... or https://... — replace app_url with the resolved URL.__MULTIPLE_URLS__ — list candidates and ask the user to choose one; if non-interactive, clear app_url, warn, and continue in code-only mode.__NO_RUNNING_SERVER__ — clear app_url, warn, and continue in code-only mode.__DETECTOR_UNAVAILABLE__ — ask the user for the dev-server URL; if non-interactive, clear app_url, warn that the shared detector is unavailable, and continue in code-only mode.Check for available browser MCP tools (in priority order):
mcp__claude-in-chrome__* toolsmcp__chrome-devtools__* toolsmcp__playwright__* toolsIf found → pass app_url and browser MCP type to agents so they can take screenshots
If none found:
Warning: No browser automation MCP detected. Using code-only analysis.
For visual review, install one of:
- Claude in Chrome extension (recommended)
- Chrome DevTools MCP
- Playwright MCP
Continue in code-only mode.
For each applicable agent, launch the reviewer using the platform's agent-invocation primitive with:
BASE_BRANCH, BASE_REF, and MERGE_BASE from Step 3, so agents use the correct diff scopegit diff "$MERGE_BASE"...HEAD (using the base resolved in Step 3)git diff --cachedgit diffgit ls-files --others --exclude-standard (agents should treat these as new files and review full file content)app_url and browser MCP type (if visual mode)custom_threshold was provided: instruct the agent to use this threshold instead of its default (e.g., "Only report findings with confidence >= {custom_threshold}")Sequential (default): Launch agents one at a time. Easier to read and act on.
Parallel (if user passes --parallel): Launch all agents simultaneously. Faster but results come back together.
Mode field: If app_url was provided, set Mode to Visual + Code in the output template; otherwise Code-only.
Agent failure handling. If a selected reviewer agent is unavailable, times out, or returns output that cannot be parsed as findings, record the failed agent name and what was attempted. Continue only if at least one selected reviewer succeeded, and include a degraded-coverage banner in the final report: Coverage degraded: <agent names> failed; findings below exclude <categories>. If all selected reviewers fail, or if the relevance validator fails, stop without writing UX_REVIEW_OVERVIEW.md. Do not fabricate findings or present a partial audit as complete.
After collecting findings from all agents:
BASE_BRANCHIf UX_REVIEW_OVERVIEW.md was found in Step 4:
After validation and filtering, organize findings:
If INLINE_MODE=true:
assets/ux-review-report-format.mdUX_REVIEW_OVERVIEW.mdOtherwise, write to UX_REVIEW_OVERVIEW.md in the project root using the report format from assets/ux-review-report-format.md. Include all sections even if empty (with count of 0).
When file output is used, UX_REVIEW_OVERVIEW.md is a working artifact — it should NOT be committed. It is intended to be cleaned up by /kramme:workflow-artifacts:cleanup when that skill is installed.
If Critical or Important issues found, suggest running /kramme:pr:resolve-review to address them.
Full UX audit (code-only):
/kramme:pr:ux-review
UX audit with visual review:
/kramme:pr:ux-review http://localhost:3000
Specific categories:
/kramme:pr:ux-review --categories ux,product
# Only usability and product review
/kramme:pr:ux-review --categories a11y
# Accessibility only (runs regardless of project detection)
/kramme:pr:ux-review --categories visual
# Visual consistency and responsive only
Custom threshold (only report high-confidence findings):
/kramme:pr:ux-review --threshold 90
# Only findings with confidence >= 90 are reported
/kramme:pr:ux-review --threshold 50
# Lower bar — more findings, including lower-confidence suggestions
Parallel execution:
/kramme:pr:ux-review --parallel
# All applicable agents run simultaneously
Combined:
/kramme:pr:ux-review http://localhost:4200 --categories ux,visual --threshold 85 --parallel
Inline report (no markdown file):
/kramme:pr:ux-review --inline
/kramme:pr:ux-review http://localhost:3000 --categories ux,visual --inline
kramme:a11y-auditor:
kramme:ux-reviewer:
kramme:product-reviewer:
kramme:visual-reviewer:
development
Runs kramme:pr:code-review as a closeout review loop for local or PR branch changes before commit, ship, or final response. Use when the user asks for autoreview, second-model review, or a final code-review pass after non-trivial edits. Not for UX, visual, accessibility, or product review.
development
Guides topic-level understanding verification for a PR, branch, feature, document, spec, design decision, bug fix, or other concrete subject. Use when the user asks to confirm, quiz, drill, teach-and-check, or verify that they understand a topic. Maintains a topic-specific checklist artifact and requires demonstrated understanding before marking the topic complete. Not for ordinary explanations without verification, end-of-session summaries, or code/test correctness checks.
testing
Design a CI/CD pipeline with quality gates, a <10-minute budget, feature-flag lifecycle, and an exit checklist. Use when adding a new CI pipeline, changing gate configuration, or planning a rollout for a new service. Complementary to kramme:pr:fix-ci (which fixes failures in an existing pipeline). Covers gate ordering, secrets storage, branch protection, rollback mechanism, and staged-rollout guardrails — not a rollout-execution runbook.
tools
--- name: kramme:visual:demo-reel description: Capture local demo evidence for observable product behavior: screenshots, before/after image sets, browser reels, terminal recordings, and short GIF/video proof. Use when shipping UI changes, CLI features, or any change where PR reviewers would benefit from visual or behavioral evidence. argument-hint: "[what to capture] [--url <url>|auto] [--tier static|before-after|browser-reel|terminal-recording]" disable-model-invocation: true user-invocable: tr