Help us improve
Share bugs, ideas, or general feedback.
From claudekit
Reviews plans for UX and DX by scoring 5 dimensions 0-10: information hierarchy, state coverage, accessibility, DX ergonomics, AI-slop avoidance. Cites plan task numbers for fixes.
npx claudepluginhub duthaho/claudekit --plugin claudekitHow this skill is triggered — by the user, by Claude, or both
Slash command
/claudekit:plan-review-experienceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The experience-dimension reviewer for `plan-review`. Scores five sub-dimensions:
Interactive design critique for VibeFlow plans: rates each design dimension 0-10, explains what would make it a 10, and fixes the plan accordingly. Works in plan mode.
Orchestrates parallel architecture and experience reviews of implementation plans, scores findings across dimensions like data flow and UX, consolidates ranked fixes for user approval and auto-application. Use after planning, before non-trivial coding.
Conducts structured UX evaluations using heuristics, cognitive walkthroughs, anti-pattern detection, and task analysis. Scores, prioritizes issues, and routes to Intent specialist skills.
Share bugs, ideas, or general feedback.
The experience-dimension reviewer for plan-review. Scores five sub-dimensions:
information hierarchy, state coverage, accessibility, DX ergonomics, and AI-slop
avoidance. UX and DX in one pass reflects that "user" and "developer" are both
human consumers of an interface — what differs is the surface (a screen vs an
API/CLI), not the rigor required. The skill produces scored findings paired
with concrete fixes the plan author can apply. Used by plan-review's orchestrator
in parallel with plan-review-architecture.
plan-review as one of its two parallel reviewersGoal: Identify the surfaces the plan touches.
Inputs: The plan file. Optionally: the spec, existing UI mockups, or API specs.
Actions:
Output: A surfaces inventory: <surface> — <consumer> — <context>.
Goal: 5 scores with cited findings.
Inputs: The plan and the surfaces inventory.
Actions: For each sub-dimension below, score 0-10 and write at least one finding citing a plan task or section.
Information hierarchy (0-10)
State coverage (0-10)
Accessibility (0-10)
DX ergonomics (0-10)
AI-slop avoidance (0-10)
Same procedure as plan-review-architecture's Step 3. Tag each fix as
[Blocker], [Important], or [Nice-to-have]. Cite plan tasks.
A blocker in this dimension is typically: a state type entirely missing for a user surface (e.g., no error state defined for a submit flow), or an accessibility gap that would fail a basic audit.
Goal: Hand plan-review a clean, paste-ready report.
Actions: Produce a Markdown block:
## Experience review
- Information hierarchy: X/10 — <one-line justification>
- State coverage: X/10 — <one-line justification>
- Accessibility: X/10 — <one-line justification>
- DX ergonomics: X/10 — <one-line justification>
- AI-slop avoidance: X/10 — <one-line justification>
### Findings
- [Blocker] <finding>; fix: <fix>; cite: <task #>
- [Important] <finding>; fix: <fix>; cite: <task #>
- [Nice-to-have] <finding>; fix: <fix>; cite: <task #>
Output: The Markdown block.
| Excuse | Why it sounds reasonable | Why it's wrong | What to do instead |
|---|---|---|---|
| "Loading and empty states aren't worth flagging — they're obvious." | Most components have default loading spinners and empty-message components, so the assumption is "the framework will handle it." | "The framework will handle it" is what produces a UI where the empty state shows "No items found" with no explanation, no call to action, and no path forward. Defaults are not defaults of quality; they're defaults of existence. The plan needs to name what the empty state says, not just that one will appear. | Score state coverage on whether the plan says what each state shows. If the plan is silent, score it 5 or below and write the finding. |
| "Accessibility is something we'll add later." | Some accessibility work genuinely is post-MVP polish. | "Later" almost never happens because by the time the feature ships, the structure that should have been keyboard-navigable, screen-reader-labeled, and color-independent has hardened. Retrofitting accessibility costs 5-10x more than building it right. | Score accessibility on whether the plan names it per surface. "Form is keyboard-navigable; submit on Enter; errors announced via aria-live" takes one line in the plan. If the plan is silent, the implementation will be silent too. |
| "AI-slop is just style — it doesn't affect correctness." | Word choice doesn't change whether code works. | Slop in user-facing copy ("our magical, AI-powered…") signals to the user that the team didn't care enough to write the words a careful engineer would. It also signals to the next maintainer that the bar here is low. The bar set by copy carries through to the bar set by everything else. | Flag every slop instance in the plan. The fix is one-word substitutions ("magical" → drop or replace with a concrete verb). The discipline is uniform across the codebase. |
| "DX error messages: 'Internal error' is fine for now." | Internal errors do happen, and exposing internals is a security concern. | "Internal error" in a developer-facing surface is the line that produces support tickets and Stack Overflow questions. The dev needs to know whether to retry, fix their input, contact support, or give up. "Internal error" answers none of those. | Score DX ergonomics on whether each error tells the dev what to do next. Generic copy is a finding. Fix: write the action ("Retry in 30s" / "Check the input format at " / "Contact support@…"). |
| "Information hierarchy is a designer concern, not the plan's." | The plan describes the work; the designer chooses the layout. | This was true when designers and engineers worked sequentially with specs in between. It's no longer true at the speed plans are written and shipped. The plan that doesn't name what's primary on a surface delegates the call to whoever implements first — and they will pick what's easiest, not what's best. | Score hierarchy on whether the plan says what the user sees first per surface. If the plan names "modal with three tabs" without saying which tab is the default, that's a finding. |
| Checkpoint | Required artifact | What "no evidence" looks like |
|---|---|---|
| End of Step 1 | A surfaces inventory: <surface> — <consumer> — <context> | "It's a UI plan." |
| End of Step 2 | Five scores 0-10 each paired with at least one cited finding | "UX is good; DX has some gaps." |
| End of Step 3 | Ranked fix list with [Blocker/Important/Nice] tags | "Some things to improve." |
| End of Step 4 | The Markdown block in the exact format above | A free-form summary. |
n/a rather than scoring 10.