Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
existential-birds avatar

Shadcn Code Review

  • 183 installs
  • 74 repo stars
  • Updated July 21, 2026
  • existential-birds/beagle

Review React UI diffs that use shadcn/ui for component patterns, accessibility, styling consistency, and composition mistakes.

About

The shadcn-code-review skill from existential-birds/beagle specializes PR review for React frontends built with shadcn/ui. It inspects component selection, Radix accessibility patterns, Tailwind class usage, variant props, and composition anti-patterns so SaaS, extension, and content UIs stay consistent before merge.

  • Checks shadcn/ui component usage and variants
  • Flags accessibility and Radix pattern issues
  • Enforces Tailwind and design-token consistency
  • Reviews composition and prop misuse
  • Targets React SaaS and content frontend PRs

Shadcn Code Review by the numbers

  • 183 all-time installs (skills.sh)
  • Ranked #888 of 2,245 Frontend Development skills by installs in the Skillselion catalog
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/existential-birds/beagle --skill shadcn-code-review

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs183
repo stars74
Last updatedJuly 21, 2026
Repositoryexistential-birds/beagle

What it does

Review React UI diffs that use shadcn/ui for component patterns, accessibility, styling consistency, and composition mistakes.

Files

SKILL.mdMarkdownGitHub ↗

shadcn/ui Code Review

Quick Reference

Issue TypeReference
className in CVA, missing VariantProps, compound variantsreferences/cva-patterns.md
asChild without Slot, missing Context, component compositionreferences/composition.md
Missing focus-visible, aria-invalid, disabled statesreferences/accessibility.md
Missing data-slot, incorrect CSS targetingreferences/data-slot.md

Review Checklist

  • [ ] cn() receives className, not CVA variants
  • [ ] VariantProps<typeof variants> exported for consumers
  • [ ] Compound variants used for complex state combinations
  • [ ] asChild pattern uses @radix-ui/react-slot
  • [ ] Context used for component composition (Card, Accordion, etc.)
  • [ ] focus-visible: states, not just :focus
  • [ ] aria-invalid, aria-disabled for form states
  • [ ] disabled: variants for all interactive elements
  • [ ] sr-only for screen reader text
  • [ ] data-slot attributes for targetable composition parts
  • [ ] CSS uses has() selectors for state-based styling
  • [ ] No direct className overrides of variant styles

Hard gates (before writing findings)

Run these in order. Do not draft user-facing findings until every gate passes for the batch you are about to report.

1. Location evidencePass: Each issue lists a repo path and either a line range or a short verbatim quote from the file you read (not from memory or diff-only guesswork).

2. Exemption checkPass: For each issue, you can state in one line why it is not covered by Valid Patterns (Do NOT Flag).

3. Context-sensitive claimsPass: For accessibility or Radix-related flags, you checked the file for imports/wrappers showing what actually runs (or you cite the concrete gap).

4. ProtocolPass: You completed the Pre-Report Verification Checklist in review-verification-protocol for this review.

Valid Patterns (Do NOT Flag)

These are correct patterns that should NOT be flagged as issues:

  • max-h-(--var) - correct Tailwind v4 CSS variable syntax (NOT v3 bracket notation)
  • text-[color:var(--x)] - valid arbitrary value syntax
  • Copying shadcn component code into project - intended usage pattern
  • Not documenting copied shadcn components - library internals, not custom code
  • Using cn() with many arguments - composition is the pattern
  • Conditional classes in cn() arrays - valid Tailwind pattern
  • Extending primitive components without additional docs - well-known base

Context-Sensitive Rules

Apply these rules with appropriate context awareness:

  • Flag accessibility issues ONLY IF not handled by Radix primitives underneath
  • Flag missing aria labels ONLY IF component isn't using accessible radix primitive
  • Flag variant proliferation ONLY IF variants could be composed from existing
  • Flag component documentation ONLY IF it's custom code, not copied shadcn

Library Convention Note

shadcn/ui components are designed to be copied and modified. Code review should focus on:

  • Custom modifications made to copied components
  • Integration with application state/data
  • Accessibility in custom usage contexts

Do NOT flag:

  • Standard shadcn component internals
  • Radix primitive usage patterns
  • Default variant implementations

When to Load References

  • Reviewing variant definitions → cva-patterns.md
  • Reviewing component composition with asChild → composition.md
  • Reviewing form components or interactive elements → accessibility.md
  • Reviewing multi-part components (Card, Select, etc.) → data-slot.md

Review Questions

1. Are CVA variants properly separated from className props? 2. Does asChild composition work correctly with Slot? 3. Are all accessibility states (focus, invalid, disabled) handled? 4. Are data-slot attributes used for component part targeting? 5. Can consumers extend variants without breaking composition?

Before Submitting Findings

Complete Hard gates (especially gate 4), then report only issues that still pass the review-verification-protocol pre-report checks.

Related skills

Frontend Developmentfrontendtesting

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.