askill
shadcn-ui-blocks

shadcn-ui-blocksSafety 90Repository

This skill should be used when the user asks to "build a frontend", "create a landing page", "add shadcn components", "install shadcn blocks", "set up shadcn", "add a hero section", "add pricing section", "build a UI with Tailwind", "use shadcnblocks", "add UI blocks", "add a contact form", "build a dashboard", "create an ecommerce page", "add a navbar", "add a footer", or is building any frontend that could leverage shadcn/ui components and Tailwind CSS. It provides knowledge of 1,338 premium blocks and 1,189 free components from ShadcnBlocks, enabling intelligent selection and installation of the right UI elements for any frontend task.

6 stars
1.2k downloads
Updated 1/30/2026

Package Files

Loading files...
SKILL.md

Shadcn UI & ShadcnBlocks Integration

This skill enables building polished frontends using shadcn/ui components and premium ShadcnBlocks templates. Its primary capability is intelligently recommending the best block or component for any UI need — not just the right category, but the right variant within that category — then handling setup and installation.

When to Use

Activate this skill when:

  • Creating a new frontend, landing page, marketing site, or app UI
  • The project uses or should use React/Next.js with Tailwind CSS
  • Pre-built UI sections (hero, pricing, features, testimonials, etc.) would accelerate development
  • The user needs a specific UI element (form, chart, dialog, navigation, etc.)
  • The user mentions shadcn, shadcn/ui, shadcnblocks, or Tailwind-based UI components

Blocks vs Components

BlocksComponents
WhatFull page sectionsReusable UI elements
SizeHero, pricing, footer, etc.Buttons, inputs, dialogs, etc.
Count1,338 across 71 categories1,189 across 60+ groups
AccessPremium (API key required)Free
Install@shadcnblocks/<name><number>@shadcnblocks/<type>-<style>-<number>

Use blocks to compose full page layouts from pre-built sections. Use components for individual UI elements inside custom code.


Intelligent Block Selection

The 0-2 Question Rule

When recommending blocks, follow this progressive disclosure flow:

  • 0 questions: The user's request is specific enough to match directly (e.g., "add a hero with email capture form" → match on cta_pattern: form_capture)
  • 1 question: The section is clear but the style/layout is ambiguous (e.g., "add a feature section" → ask about layout preference)
  • 2 questions max: Both section and style are unclear (e.g., "add a section to show our product" → ask section type, then style)

Never ask more than 2 questions. If still ambiguous, pick the best 2-3 and explain the tradeoffs.

Decision Flow: Infer → Ask → Shortlist

Step 1 — Infer from the request (always do this first)

Extract as many constraints as possible before asking anything:

  • Section type: hero, feature, pricing, testimonial, cta, faq, navbar, footer, contact, stats
  • Goal keywords: "signup" → convert/capture_leads, "trust" → trust, "compare plans" → compare
  • Layout hints: "grid" → grid_cards, "side by side" → split, "accordion" → accordion interaction
  • Tone hints: "clean" → minimal, "bold" → bold, "professional" → enterprise
  • Media hints: "with screenshots" → screenshot media, "video" → video media
  • Density hints: "simple" → minimal density, "detailed" → rich density

Step 2 — Ask targeted questions (only if needed)

Use AskUserQuestion for structured multiple-choice refinement. Consult references/block-index.mdselection_prompts for the pre-defined questions and options per section.

Sections with pre-defined prompts: hero, feature, pricing, testimonial, cta, faq, navbar, footer, contact, stats.

Example for a feature section request:

AskUserQuestion:
  question: "How do you want to showcase your features?"
  options:
    - "Card grid (3-4 columns with icons)" — Classic feature grid with icon + description per card
    - "Alternating image + text rows" — Deep-dive with large visuals, great for product tours
    - "Bento / asymmetric grid" — Modern editorial layout with mixed-size cards
    - "Simple icon list or checklist" — Compact, scannable benefit list

If AskUserQuestion is unavailable, ask the same question inline with numbered options.

Step 3 — Match tags and return 2-3 best picks

Map the user's answer to tag filters, then match against references/block-index.md entries. Return exactly 2-3 recommendations in this format:

Here are the best matches for your [section type]:

1. **[block-id]** — [1-line "why this one"]
   Layout: [layout] · Tone: [tone] · [key differentiator]

2. **[block-id]** — [1-line "why this one"]
   Layout: [layout] · Tone: [tone] · [key differentiator]

3. **[block-id]** — [1-line "why this one"]
   Layout: [layout] · Tone: [tone] · [key differentiator]

Which one works best? I'll install it and set it up.

After the user picks, provide the install command and compose it into the page.

Tag Dimensions Used for Matching

These are the key dimensions from references/block-index.md used to differentiate blocks:

DimensionWhat it tells youExample values
layoutVisual arrangementcentered, split_right_media, grid_cards, bento, alternating
toneAesthetic feelminimal, modern, bold, enterprise, elegant, playful
goalBusiness purposeawareness, explain, trust, convert, capture_leads, compare
cta_patternAction typesingle_primary, primary_secondary, form_capture, multi_action
mediaVisual contentscreenshot, illustration, video, icons, avatars, logos
interactionDynamic behaviorstatic, accordion, tabs, carousel, toggle, hover
items_countNumber of items displayedfew, moderate, many
content_densityHow much contentminimal, standard, rich
complexityImplementation effortlow, medium, high

When to Use Which Reference

ScenarioUse
Recommending best-fit blocks (default)references/block-index.md — tagged picks with selection prompts
User wants a specific numbered variantreferences/block-catalog.md — full catalog with all variant numbers
Section not in block-index (e.g., blog, gallery)references/block-catalog.md — fall back to category defaults
User wants to browse all optionsDirect to https://shadcnblocks.com/explorer/blocks
Need an individual UI elementreferences/component-catalog.md — free components

Quick Category Reference

For sections not yet in block-index.md, use these defaults:

Content & Blog

NeedCategoryStart With
Blog listingblog (22 variants)blog1
Blog post pageblogpost (7 variants)blogpost1
Changelogchangelog (7 variants)changelog1
Code snippetscode-example (5 variants)code-example1

About & Team

NeedCategoryStart With
About sectionabout (17 variants)about1
Team pageteam (14 variants)team1
Company timelinetimeline (15 variants)timeline1
Job listingscareers (9 variants)careers1

Ecommerce

NeedCategoryStart With
Product cardsproduct-card (10 variants)product-card1
Product listingproduct-list (10 variants)product-list1
Product detailproduct-detail (10 variants)product-detail1
Shopping cartshopping-cart (11 variants)shopping-cart1
Checkoutcheckout (6 variants)checkout1
Order historyorder-history (5 variants)order-history1

App & Dashboard

NeedCategoryStart With
Dashboard chartschart-card (27 variants)chart-card10
Data tablesdata-table (32 variants)data-table1
App sidebarsidebar (21 variants)sidebar1
App shell layoutapplication-shell (14 variants)application-shell1
User profileuser-profile (12 variants)user-profile1

Portfolio

NeedCategoryStart With
Image gallerygallery (48 variants)gallery1
Project listingprojects (25 variants)projects1
Project detailproject (33 variants)project1
Case studiescase-studies (6 variants)case-studies1

Visual & Decorative

NeedCategoryStart With
Background patternsbackground-pattern (40 variants)background-pattern1
Animated shadersshader (10 variants)shader1
Bento grid layoutbento (8 variants)bento1

Navigation & Misc

NeedCategoryStart With
Announcement barbanner (7 variants)banner1
Sale/promo barpromo-banner (7 variants)promo-banner1
Partner logoslogos (13 variants)logos1
Comparisonscompare (10 variants)compare1

Selecting the Right Component

Consult references/component-catalog.md for the full catalog. Key groups:

NeedComponent GroupExample
Form layoutForm (86)form-signin-1
Labeled inputField (38)field-standard-1
Input with addonInput Group (39)input-group-standard-1
Searchable selectCombobox (42)combobox-standard-1
File uploadFile Upload (44)file-upload-standard-1
Date pickerDate Picker (8)date-picker-standard-1
Alert messageAlert (25)alert-error-1
Confirm dialogAlert Dialog (39)alert-dialog-standard-1
Loading skeletonSkeleton (30)skeleton-standard-1
Toast notificationSonner (24)sonner-standard-1
Empty stateEmpty (22)empty-standard-1
Modal dialogDialog (17)dialog-standard-1
Side panelSheet (29) / Drawer (22)sheet-standard-1
AccordionAccordion (21)accordion-standard-1
Data chartChart (70)chart-standard-1
Command paletteCommand (21)command-standard-1
Dropdown menuDropdown Menu (30)dropdown-menu-standard-1
Keyboard shortcutsKBD (39)kbd-standard-1

Core Workflow

1. Ensure Project Foundation

Verify the project has shadcn/ui initialized. If not:

npx shadcn@latest init

This creates components.json in the project root.

2. Configure ShadcnBlocks Registry

Check if components.json already has the @shadcnblocks registry. If not, run:

bash "${CLAUDE_PLUGIN_ROOT}/skills/shadcn-ui/scripts/setup-shadcnblocks.sh" .

This adds the @shadcnblocks registry to components.json and sets SHADCNBLOCKS_API_KEY in .env.

If the script can't run (e.g., jq missing), configure manually:

  1. Add to .env: SHADCNBLOCKS_API_KEY=<key>
  2. Add registry to components.json:
{
  "registries": {
    "@shadcnblocks": {
      "url": "https://shadcnblocks.com/r/{name}",
      "headers": {
        "Authorization": "Bearer ${SHADCNBLOCKS_API_KEY}"
      }
    }
  }
}

3. Select and Install Blocks

Use the intelligent selection flow (above) to recommend the best blocks, then install:

# Blocks (full page sections)
npx shadcn add @shadcnblocks/hero125
npx shadcn add @shadcnblocks/pricing3

# Components (UI elements)
npx shadcn add @shadcnblocks/accordion-standard-1
npx shadcn add @shadcnblocks/file-upload-standard-1

4. Compose the Page

Import and compose blocks in the page layout:

import { Navbar1 } from "@/components/navbar1";
import { Hero125 } from "@/components/hero125";
import { Feature3 } from "@/components/feature3";
import { Footer1 } from "@/components/footer1";

export default function LandingPage() {
  return (
    <>
      <Navbar1 />
      <Hero125 />
      <Feature3 />
      <Footer1 />
    </>
  );
}

Blocks are fully editable source code, not locked dependencies. Customize props and content after installation.

Landing Page Assembly Pattern

For a typical marketing landing page, use the intelligent selection flow for each section. A common assembly:

npx shadcn add @shadcnblocks/navbar1      # Simple nav with CTA
npx shadcn add @shadcnblocks/hero125      # Modern centered hero
npx shadcn add @shadcnblocks/logos1        # Trust logos strip
npx shadcn add @shadcnblocks/feature3     # 3-column feature cards
npx shadcn add @shadcnblocks/stats1       # Metrics bar
npx shadcn add @shadcnblocks/testimonial1 # Social proof grid
npx shadcn add @shadcnblocks/pricing3     # 3-tier pricing cards
npx shadcn add @shadcnblocks/faq1         # Accordion FAQ
npx shadcn add @shadcnblocks/cta1         # Final call to action
npx shadcn add @shadcnblocks/footer1      # Multi-column footer

Each of these was selected for a "modern SaaS" tone. For different tones (enterprise, minimal, bold, playful), the selection flow will recommend different variants.

API Key Management

The ShadcnBlocks API key can be provided in multiple ways (checked in order):

  1. Environment variable (simplest): Set SHADCNBLOCKS_API_KEY in your shell or .env file
  2. 1Password CLI: The helper script uses op read to retrieve the key. Set OP_SHADCNBLOCKS_REF to your 1Password reference path, or it defaults to op://Platform Infra/ShadcnBlocks API Key/credential

Retrieve the key using the helper script:

bash "${CLAUDE_PLUGIN_ROOT}/skills/shadcn-ui/scripts/get-api-key.sh"

Security: Never hardcode the API key in source files. Always use .env with SHADCNBLOCKS_API_KEY and ensure .env is in .gitignore.

Troubleshooting

IssueResolution
Auth error on installVerify SHADCNBLOCKS_API_KEY is set in .env with a valid key
Registry not foundCheck registries key exists in components.json
components.json missingRun npx shadcn@latest init
1Password accessRun op signin; verify vault with op vault list
Block not foundCheck block name at https://shadcnblocks.com

Reference Files

  • references/block-index.md — Tagged picks with selection prompts for intelligent block recommendation (primary source)
  • references/block-catalog.md — Full catalog of 1,338 blocks across 71 categories with variant numbers and install commands
  • references/component-catalog.md — Full catalog of 1,189 components across 60+ groups with install syntax
  • references/setup-guide.md — Detailed step-by-step setup with troubleshooting

Scripts

  • scripts/setup-shadcnblocks.sh — Automated project setup (retrieves key, configures registry)
  • scripts/get-api-key.sh — Retrieve API key (env var or 1Password)

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

96/100Analyzed 2/6/2026

An exceptionally well-structured skill for building frontends with Shadcn UI. It includes a sophisticated decision-making framework for the agent, clear installation steps, and comprehensive reference tables for UI components.

90
100
92
98
95

Metadata

Licenseunknown
Version-
Updated1/30/2026
Publishermasonjames

Tags

apigithub-actionsobservabilitysecurity