feat(shadcn-ui): add shadcn/ui plugin bundling official skills#255
Conversation
Add a new shadcn-ui Claude Code plugin bundling the official shadcn/ui skills.sh skills (shadcn + migrate-radix-to-base) from github.com/shadcn/ui, installed via bunx skills add into plugins/shadcn-ui/.agents/skills/. - plugins/shadcn-ui/: new plugin dir with .claude-plugin/plugin.json, generated Codex/Antigravity/Cursor manifests, vendored skills, and skills-lock.json - .claude-plugin/marketplace.json: add shadcn-ui entry with relevance signals (cli "shadcn", components.json) - .agents/plugins/marketplace.json + .cursor-plugin/marketplace.json: regenerated via bun scripts/cli.ts multi-format (Codex regen also reconciled two pre-existing entries already present in the Claude source-of-truth marketplace: claude-code-docs, run-verify) - release-please-config.json + .release-please-manifest.json: add plugins/shadcn-ui package + version 1.0.0 - README.md: add shadcn/ui entry under Built-in Plugins
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
Next review available in: 49 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughThis PR registers a new Changesshadcn-ui plugin addition
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Up to standards ✅🟢 Issues
|
There was a problem hiding this comment.
Code Review
이번 풀 리퀘스트는 shadcn-ui 플러그인을 추가하고 관련 마켓플레이스 설정, README, 릴리스 설정 및 에이전트 스킬 파일들을 새롭게 도입하는 변경사항을 담고 있습니다. 코드 리뷰 결과, release-please-config.json 파일에서 plugins/shadcn-ui 패키지의 extra-files 경로가 레포지토리 루트 기준이 아닌 패키지 루트 기준으로 잘못 지정되어 있어 릴리스 시 버전 업데이트가 누락될 수 있는 문제가 발견되었습니다. 해당 경로 앞에 plugins/shadcn-ui/ 접두사를 추가하여 올바른 레포지토리 상대 경로로 수정할 것을 권장합니다.
Greptile SummaryThis PR adds a new
Confidence Score: 5/5This PR is safe to merge — it adds a new plugin directory with vendored skill content and marketplace registrations, with no changes to shared runtime logic. All changes are additive: new files under plugins/shadcn-ui/, marketplace JSON entries, and release-please wiring. The plugin structure precisely follows the established vendored-skill pattern (string skills path in .claude-plugin/plugin.json, skills-lock.json with SHA256 hashes, four manifest files covered by extra-files in release-please). Marketplace entries across all three formats are complete with category, keywords, tags, and relevance signals. No shared code or existing plugin manifests are modified in a breaking way. No files require special attention — the new plugin directory and marketplace entries are self-contained and consistent with existing patterns. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[User installs shadcn-ui plugin] --> B{Which marketplace?}
B --> C[Claude Code\n.claude-plugin/marketplace.json]
B --> D[Codex / Antigravity\n.agents/plugins/marketplace.json]
B --> E[Cursor\n.cursor-plugin/marketplace.json]
C --> F[plugins/shadcn-ui/.claude-plugin/plugin.json\nskills: ./.agents/skills/]
D --> G[plugins/shadcn-ui/plugin.json\nAntigravity root manifest]
E --> H[plugins/shadcn-ui/.cursor-plugin/plugin.json]
F --> I[.agents/skills/shadcn/SKILL.md\nshadcn components & CLI]
F --> J[.agents/skills/migrate-radix-to-base/SKILL.md\nRadix → Base UI migration]
K[skills-lock.json] -->|pins hashes| I
K -->|pins hashes| J
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A[User installs shadcn-ui plugin] --> B{Which marketplace?}
B --> C[Claude Code\n.claude-plugin/marketplace.json]
B --> D[Codex / Antigravity\n.agents/plugins/marketplace.json]
B --> E[Cursor\n.cursor-plugin/marketplace.json]
C --> F[plugins/shadcn-ui/.claude-plugin/plugin.json\nskills: ./.agents/skills/]
D --> G[plugins/shadcn-ui/plugin.json\nAntigravity root manifest]
E --> H[plugins/shadcn-ui/.cursor-plugin/plugin.json]
F --> I[.agents/skills/shadcn/SKILL.md\nshadcn components & CLI]
F --> J[.agents/skills/migrate-radix-to-base/SKILL.md\nRadix → Base UI migration]
K[skills-lock.json] -->|pins hashes| I
K -->|pins hashes| J
Reviews (3): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile |
There was a problem hiding this comment.
4 issues found across 36 files
Confidence score: 3/5
plugins/shadcn-ui/.agents/skills/migrate-radix-to-base/consumer-props.mdhas Tooltip prop mappings that conflict withoverlays.md, which can drive incorrect Radix→Base migrations (e.g., delay/hover semantics) and lead to behavior regressions in migrated apps — align this guide with the canonical mappings before merging.plugins/shadcn-ui/.agents/skills/migrate-radix-to-base/consumer-props.mdalso documentsdelayMson the wrong Avatar part, so consumers could apply props toAvatar.Imageinstead ofAvatar.Fallbackand end up with broken fallback timing — correct the target component mapping before merge..claude-plugin/marketplace.jsonis missing amanifestDepsrelevance signal forshadcn, which can reduce plugin detection in projects that already declare the dependency and hurt adoption — add the signal to de-risk discoverability.plugins/shadcn-ui/.codex-plugin/plugin.jsonis categorized asProductivityinstead of a UI/library category, so marketplace placement may hide it from the right audience — update the category for accurate indexing (non-blocking).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="plugins/shadcn-ui/.agents/skills/migrate-radix-to-base/consumer-props.md">
<violation number="1" location="plugins/shadcn-ui/.agents/skills/migrate-radix-to-base/consumer-props.md:22">
P2: The Tooltip call-site guidance here contradicts the detailed `overlays.md` reference in the same skill bundle. `overlays.md` maps `skipDelayDuration` → `timeout` (preserving the skip-delay semantics) and `disableHoverableContent` → `disableHoverablePopup`, whereas this summary incorrectly marks both as dropped or missing. Because `consumer-props.md` is the consumer sweep checklist, this drift would cause users to remove working behavior and record false behavior deltas. Since this is vendored content, note it for upstream correction rather than editing locally.</violation>
<violation number="2" location="plugins/shadcn-ui/.agents/skills/migrate-radix-to-base/consumer-props.md:24">
P2: The `delayMs` prop is documented on the wrong Avatar part in this migration guide. The detailed mapping in `display-misc.md` correctly places `delayMs` on `Avatar.Fallback` (not `Avatar.Image`) mapping to Base UI `delay`. During a migration sweep, this misalignment would cause the tool to look for `delayMs` on `Avatar.Image` — which does not carry that prop in Radix — while missing real usages on `Avatar.Fallback`, leaving migrated call sites with stale props. Since this appears to be vendored skill content, consider opening a fix upstream and re-syncing rather than editing locally.</violation>
</file>
Architecture diagram
sequenceDiagram
participant User as Developer (User)
participant CLI as Claude Code CLI
participant Plugin as Plugins System
participant Marketplace as Marketplace Registry
participant SkillEngine as Skills Engine
participant ShadcnPlugin as shadcn-ui Plugin
participant ShadcnSkill as shadcn Skill
participant MigrateSkill as migrate-radix-to-base Skill
participant CDN as shadcn/ui CDN
Note over User,CDN: Plugin Discovery & Installation Flow
User->>CLI: /plugin install shadcn-ui@pleaseai
CLI->>Marketplace: Lookup shadcn-ui from marketplace
alt Claude (.claude-plugin/marketplace.json)
Marketplace-->>CLI: Found with relevance signals: cli=[shadcn], filesRead=[**/components.json]
else Codex (.agents/plugins/marketplace.json)
Marketplace-->>CLI: Found with source: local, path: ./plugins/shadcn-ui
else Cursor (.cursor-plugin/marketplace.json)
Marketplace-->>CLI: Found with source: ./plugins/shadcn-ui
end
CLI->>Plugin: Load plugin from plugins/shadcn-ui/
Plugin->>Plugin: Read plugin metadata (name, version, author)
Plugin->>SkillEngine: Register skills entrypoint
SkillEngine->>SkillEngine: Parse skills-lock.json for vendored skills
Note over SkillEngine,ShadcnPlugin: Skill Loading & Execution
SkillEngine->>ShadcnPlugin: Load .agents/skills/shadcn/
ShadcnPlugin->>CDN: Optional: npx shadcn@latest info --json
CDN-->>ShadcnPlugin: Project config (base, style, components, aliases)
ShadcnPlugin-->>SkillEngine: shadcn skill ready (user-invocable: false, allowed-tools: shadcn CLI)
SkillEngine->>ShadcnPlugin: Load .agents/skills/migrate-radix-to-base/
ShadcnPlugin-->>SkillEngine: migrate-radix-to-base skill ready
alt User asks about shadcn components
User->>CLI: "Add a button component"
CLI->>SkillEngine: Match to shadcn skill
SkillEngine->>ShadcnPlugin: Execute shadcn skill
ShadcnPlugin->>CDN: npx shadcn@latest add button --dry-run
CDN-->>ShadcnPlugin: Registry item JSON + file content
ShadcnPlugin-->>CLI: Component preview + install instructions
CLI-->>User: "Use npx shadcn@latest add button"
else User asks about Radix to Base UI migration
User->>CLI: "Migrate my accordion from Radix to Base UI"
CLI->>SkillEngine: Match to migrate-radix-to-base skill
SkillEngine->>ShadcnPlugin: Execute migration skill
ShadcnPlugin->>ShadcnPlugin: Check project type (shadcn vs hand-rolled)
ShadcnPlugin->>CDN: Fetch golden pair component from registry
CDN-->>ShadcnPlugin: Base variant component source
ShadcnPlugin->>ShadcnPlugin: Perform props migration (asChild -> render, etc.)
ShadcnPlugin->>ShadcnPlugin: Apply class-string rewrites (data-state -> presence attrs)
ShadcnPlugin->>ShadcnPlugin: Generate migration report
ShadcnPlugin-->>CLI: Migrated component + report
CLI-->>User: "Accordion migrated to Base UI. Report saved to .migration/"
end
Note over User,CDN: Relevance-based Auto-Detection
alt User has components.json in project
CLI->>Marketplace: Scan project files for relevance signals
Marketplace->>Marketplace: Match **/components.json against shadcn-ui filesRead
Marketplace-->>CLI: Suggest installing shadcn-ui plugin
CLI-->>User: "It looks like you're using shadcn/ui. Install shadcn-ui plugin?"
else User runs "shadcn init"
CLI->>Marketplace: Match CLI command against shadcn-ui cli signals
Marketplace-->>CLI: shadcn-ui is relevant (cli match: shadcn)
end
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
# Conflicts: # .agents/plugins/marketplace.json # .cursor-plugin/marketplace.json # .release-please-manifest.json # release-please-config.json
🔍 Tessl Skill Review
|
| Dimension | Score | Detail |
|---|---|---|
| conciseness | ██░ 2/3 | The skill is dense and information-rich with minimal fluff—it doesn't explain what Radix or Base UI are—but it's quite long and some sections could be tightened. The strategy section in particular has nested sub-cases that could be more concise while preserving clarity. |
| actionability | ███ 3/3 | Highly actionable with specific commands (npx shadcn@latest info --json, git merge-file, grep -n patterns), exact URLs for fetching registry variants, concrete file naming conventions (-base.tsx), and a precise report template. Every step tells Claude exactly what to do. |
| workflow clarity | ███ 3/3 | The workflow is clearly sequenced with explicit validation checkpoints: typecheck per file, build per batch, full build at end vs baseline. The progressive mode has a clear strangler-fig sequence with dependency ordering, and the mandatory leftover sweep (grep for radix remnants) serves as a feedback loop to catch silent merge failures. |
| progressive disclosure | ██░ 2/3 | The skill references multiple supporting files (universal-patterns.md, overlays.md, menus.md, form-controls.md, disclosure.md, display-misc.md, class-mapping.md, wrapper-shapes.md, consumer-props.md) which suggests good bundle structure, but no bundle files were provided to verify. The SKILL.md itself is a monolithic document that could benefit from splitting the strategy section and mode details into separate referenced files. |
Overall: This is a highly actionable and well-structured migration skill with excellent workflow clarity, explicit validation checkpoints, and concrete commands throughout. Its main weakness is length—the strategy section with its multiple sub-cases (golden pair, legacy styles, transformation engine) and two modes creates a dense document that could benefit from better progressive disclosure by splitting detailed sub-strategies into referenced files. The referenced bundle files (universal-patterns.md, class-mapping.md, etc.) suggest good architectural thinking but couldn't be verified.
Suggestions:
- Consider splitting the 'Strategy: golden pair first, transformation engine second' section into a separate STRATEGY.md file, keeping only a brief summary and reference in the main SKILL.md to reduce its density.
- Tighten the progressive/whole-project mode descriptions—some details (like the PROGRESSIVE mode fetch-by-URL caveat) are repeated across strategy and modes sections.
plugins/shadcn-ui/.agents/skills/shadcn/SKILL.md
Review Details
Review Details
| Dimension | Score | Detail |
|---|---|---|
| conciseness | ██░ 2/3 | The skill is generally efficient and avoids explaining basic concepts Claude already knows, but it's quite long (~300 lines) with some repetition between the Critical Rules section and the Key Patterns section. The Component Selection table and Key Fields section are dense but useful reference material. Some tightening is possible (e.g., the workflow steps could be more concise). |
| actionability | ███ 3/3 | Highly actionable throughout: concrete CLI commands with exact flags, executable TSX code examples showing correct vs incorrect patterns, a complete quick reference section with copy-paste-ready commands, and specific component composition patterns. The workflow section provides step-by-step instructions with exact commands. |
| workflow clarity | ███ 3/3 | The workflow section is clearly sequenced (steps 1-9) with explicit validation checkpoints: checking installed components before adding, using --dry-run and --diff before updating, confirming with users before --overwrite, and reviewing added components after installation. The Updating Components section has a clear feedback loop (diff → analyze → decide → apply). The preset switching workflow asks the user to choose a strategy before proceeding. |
| progressive disclosure | ███ 3/3 | Excellent progressive disclosure structure: the SKILL.md serves as a clear overview with concise rules, then links to 8 detailed reference files (forms.md, composition.md, chat.md, icons.md, styling.md, base-vs-radix.md, cli.md, registry.md, customization.md) — all one level deep and clearly signaled. Each Critical Rules subsection links to its corresponding rule file. The Detailed References section at the bottom provides a clean navigation index. |
Overall: This is a well-crafted, highly actionable skill that provides concrete CLI commands, executable code examples, and clear workflows with validation checkpoints. The progressive disclosure is excellent, with the main file serving as a comprehensive overview that links to detailed rule files for edge cases. The main weakness is moderate verbosity — while most content earns its place, some sections could be tightened, and there's minor redundancy between the Critical Rules and Key Patterns sections.
To improve your score, point your agent at the Tessl optimization guide. Need help? Jump on our Discord.
Feedback
Report issues with this review at tesslio/skill-review, or send private feedback from your terminal with tessl feedback.
|



Summary
Adds a new
shadcn-uiClaude Code plugin that bundles the official shadcn/ui skills.sh skills (shadcn+migrate-radix-to-base) fromgithub.com/shadcn/ui. The skills were installed viabunx skills addintoplugins/shadcn-ui/.agents/skills/, following the same vendored-skill pattern used by other plugins in this marketplace.Changes
plugins/shadcn-ui/— new plugin directory:.claude-plugin/plugin.json, generated Codex/Antigravity/Cursor manifests (.codex-plugin/plugin.json,plugin.json,.cursor-plugin/plugin.json), vendored.agents/skills/shadcn/and.agents/skills/migrate-radix-to-base/skill content, andskills-lock.json.claude-plugin/marketplace.json— added theshadcn-uientry, includingrelevancesignals (cli: ["shadcn"],manifestDepsoncomponents.json).agents/plugins/marketplace.json+.cursor-plugin/marketplace.json— regenerated viabun scripts/cli.ts multi-formatrelease-please-config.json+.release-please-manifest.json— added theplugins/shadcn-uipackage entry and initial version1.0.0README.md— added the shadcn/ui entry under Built-in PluginsNote: Regenerating the Codex marketplace via
multi-formatalso synced two pre-existing entries —claude-code-docsandrun-verify— into.agents/plugins/marketplace.json. These were already present in the Claude source-of-truth marketplace but had been missing from the Codex one. This is expected reconciliation from runningmulti-format, not new functionality introduced by this PR.Related issue
N/A — no linked issue for this change.
Checklist
bun run test)bun run lint)BREAKING CHANGE:note is includedSummary by cubic
Adds the new
shadcn-uiplugin bundling the officialshadcnandmigrate-radix-to-baseskills fromgithub.com/shadcn/ui. This lets users manage shadcn/ui components and migrate from Radix UI to@base-ui/reactacross all marketplaces.plugins/shadcn-uiwith generated manifests (.claude-plugin/plugin.json,.codex-plugin/plugin.json,.cursor-plugin/plugin.json,plugin.json), vendored skills under.agents/skills/, andskills-lock.json.uicategory, keywords/tags, and relevance signals (CLIshadcn,**/components.json, andmanifestDepsforpackage.json); regen reconciledclaude-code-docsandrun-verify, and an upstream merge resolved marketplace/release config conflicts.1.0.0with cross-manifest version bumps, and updated README with install instructions and source link.Written for commit 091db03. Summary will update on new commits.
Summary by CodeRabbit