007
無料Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.
日本語の概要は準備中です。原文の説明を表示しています。
Build websites and web apps using 21st.dev — the largest marketplace of shadcn/ui-based React Tailwind components with 1400+ components. Use when user mentions "21st.dev", "21st", "ใช้ 21st", "จาก 21st", "build with 21st", "21st component", "21st magic MCP", or references the 21st.dev component registry in any language. Covers building complete sites (landing pages, dashboards, portfolios, e-commerce storefronts, auth pages), browsing and installing individual 21st.dev components into existing projects, and setting up the 21st.dev MCP server. Also trigger when user wants premium UI components specifically from the 21st.dev registry. Do NOT trigger for general web development, standard shadcn/ui, plain Tailwind CSS, React Native, API development, testing, deployment, or any task that doesn't explicitly reference 21st or 21st.dev.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Build production-ready websites using 21st.dev — the largest open-source registry of React UI components. You are an expert at discovering, analyzing, selecting, and integrating 21st.dev components to create polished, cohesive web applications.
This skill makes you exceptionally good at:
An open-source community registry (the "npm for design engineers") with 1400+ React components. Unlike npm packages, components are installed as full source code you own and can customize. Built on shadcn/ui philosophy.
npx shadcn@latest add "https://21st.dev/r/{author}/{component}"| Purpose | URL Pattern |
|---|---|
| Browse category | https://21st.dev/s/{slug} |
| Component detail | https://21st.dev/r/{author}/{component} |
| Author profile | https://21st.dev/{author} |
| Community search | https://21st.dev/community/components/search |
Check if the project is ready. Look for package.json, tailwind.config.*, and components.json.
New project:
npx create-next-app@latest my-app --typescript --tailwind --eslint --app --src-dir --import-alias "@/*"
cd my-app
npx shadcn@latest init -d
Existing project missing shadcn:
npx shadcn@latest init
Check MCP availability: If 21st_magic_component_builder tool is available, use it as the primary component generation method. Otherwise, use WebSearch + WebFetch + npx install (works perfectly well).
Break down the user's request into a component plan:
| Building... | Search these categories on 21st.dev |
|---|---|
| Landing page | hero, features, pricing, testimonials, cta, footers, navbars, backgrounds, announcements, clients |
| Dashboard | sidebar, cards, tables, tabs, buttons, menus, badges, numbers |
| Auth pages | sign-ins, sign-ups, forms, inputs, buttons |
| Blog / Content | cards, texts, images, paginations, scroll-areas |
| E-commerce | cards, carousels, badges, buttons, dialogs, inputs, tabs, selects |
| Form-heavy app | inputs, selects, checkboxes, radio-groups, date-pickers, forms, text-areas, toggles |
| AI / Chat app | ai-chats, inputs, buttons, cards, spinner-loaders |
| Settings page | forms, inputs, toggles, tabs, selects, checkboxes, accordions |
| Portfolio | hero, cards, images, texts, scroll-areas, backgrounds, navigation-menus |
| SaaS product | hero, pricing, features, testimonials, navbars, footers, cta, comparisons |
Every build session must include live discovery. 21st.dev adds new components constantly — never rely on memory alone.
For each component category you need, follow this search sequence:
Step 1: Browse the category page
WebFetch: https://21st.dev/s/{category-slug}
This shows all available components in that category with names, authors, and popularity.
Step 2: Deep-dive on promising components
WebFetch: https://21st.dev/r/{author}/{component}
View the component's demo, code, dependencies, and installation command.
Step 3: Search for specific styles (if category browsing isn't enough)
WebSearch: "site:21st.dev {specific style or feature}"
Example: site:21st.dev animated gradient hero or site:21st.dev glassmorphism card
Read references/component-catalog.md for the full catalog of categories with slugs, counts, and top authors. Here are the most-used ones:
Landing Sections: hero, features, pricing, testimonials, cta, footers, navbars, backgrounds, announcements, clients, comparisons, docks, shaders
UI Components: buttons, inputs, cards, selects, sliders, accordions, tabs, dialogs, calendars, ai-chats, tables, badges, dropdowns, alerts, forms, popovers, text-areas, radio-groups, spinner-loaders, paginations, checkboxes, menus, numbers, avatars, carousels, links, toggles, date-pickers, tooltips, toasts, sidebar, sign-ins, sign-ups, file-uploads, file-trees, icons, tags, notifications, empty-states
This is where expertise matters most. For each component slot, evaluate candidates on these dimensions:
For each component slot:
1. Find 2-3 candidates from category browsing
2. Score each on the criteria above (mentally)
3. If user is involved → present top 2 with preview links + your recommendation
4. If user says "you decide" → pick the best-scoring one
5. Document your choice with reasoning
When building a full page or site, try to use components from a small set of authors. This dramatically improves visual coherence. Notable authors with broad component ranges:
Not every section needs a 21st.dev component. For each section, decide:
INSTALL from 21st.dev when:
WRITE CUSTOM when:
A typical landing page might install 2-3 complex components (hero, navbar, footer) and write 2-3 simple sections (features grid, stats, CTA) custom. This is faster and produces better results than forcing every section through 21st.dev.
npx shadcn@latest add "https://21st.dev/r/{author}/{component-name}"
What this does:
components/ui/ or components/blocks/)After installing each component, immediately check for these common issues before moving on:
1. render prop vs asChild conflict:
Many newer 21st.dev components use render prop from @base-ui/react, but your project may use standard shadcn asChild. If you see TypeScript errors about render prop:
// BROKEN: Component uses render prop
<Button render={<a href="/signup" />}>Sign Up</Button>
// FIX: Convert to asChild pattern
<Button asChild><a href="/signup">Sign Up</a></Button>
Check Button, SheetTrigger, SelectTrigger in every installed component.
2. Container width mismatch: Components may assume different max-widths. After installing, verify each component uses a consistent container:
// If component uses its own container, it may conflict with your layout
// Wrap all sections in a consistent container OR
// Remove the component's internal container and use your own
<section className="py-20">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
{/* component content here */}
</div>
</section>
3. Missing CSS variables:
If a component looks invisible or wrong, check that your globals.css defines all required CSS variables. Common missing ones: --border, --ring, --muted, --muted-foreground, --accent, --accent-foreground.
4. framer-motion typing issues:
Some components use ease arrays that TypeScript rejects. Fix by casting:
// BROKEN
ease: [0.16, 1, 0.3, 1]
// FIX
ease: [0.16, 1, 0.3, 1] as const
5. Faint/invisible card backgrounds:
Many 21st.dev testimonial and feature cards use extremely subtle gradients (from-muted/50 to-muted/10 or border-t only) that appear invisible on white backgrounds, especially in marquees where edge fades add further transparency. Fix by giving cards visible styling:
// BROKEN: Nearly invisible
"rounded-lg border-t bg-gradient-to-b from-muted/50 to-muted/10"
// FIX: Clearly visible with depth
"rounded-xl border border-border/60 bg-card shadow-sm"
6. Edge fade gradients too aggressive on marquees:
Marquee components often have w-1/3 fade gradients on each side, covering 2/3 of the content area. Reduce to w-1/6 so cards remain visible:
// BROKEN: Covers too much
"absolute inset-y-0 left-0 w-1/3 bg-gradient-to-r from-background"
// FIX: Subtle fade
"absolute inset-y-0 left-0 w-1/6 bg-gradient-to-r from-background"
7. Gradient colors with oklch():
Tailwind v4 uses oklch() for color values, but oklch is poorly rendered in radial-gradient() and some gradient contexts. Use rgba() or hex values for custom gradients:
// BROKEN: oklch in gradients renders poorly
"bg-[radial-gradient(ellipse_at_center,_oklch(0.55_0.28_285_/_0.18)_0%,_transparent_65%)]"
// FIX: Use rgba for reliable gradient rendering
"bg-[radial-gradient(ellipse_at_center,_rgba(139,92,246,0.18)_0%,_transparent_65%)]"
8. Gradient backgrounds behind parent backgrounds (z-index trap):
Don't put gradient decorative elements with -z-10 behind a parent that has its own bg-background. The parent's opaque background covers the gradient. Instead, apply the gradient directly on the section:
// BROKEN: Gradient div behind parent bg-background
<section className="bg-background">
<div className="-z-10 bg-gradient-to-b ..."> {/* invisible! */}
// FIX: Apply gradient directly on the section
<section className="bg-gradient-to-b from-[#ede9fe] via-[#f5f3ff] to-white">
npm install {missing-dep} then retryBefore composing, normalize the layout of all installed components so they play well together. 21st.dev components from different authors often have conflicting container widths, padding, and alignment. Fix this upfront:
max-w-7xl mx-auto px-4 sm:px-6 lg:px-8min-h-screen which may be too tall. Adjust to min-h-[80vh] or less if needed.Landing Page:
<Navbar /> {/* sticky top-0 z-50 */}
<main>
<Hero /> {/* min-h-[80vh] — NOT min-h-screen */}
<Features /> {/* py-20 bg-muted/50 */}
<SocialProof /> {/* py-16 */}
<Pricing /> {/* py-20 bg-muted/50 */}
<Testimonials /> {/* py-16 */}
<CTA /> {/* py-20 bg-primary text-primary-foreground */}
</main>
<Footer />
Dashboard:
<SidebarProvider>
<Sidebar>{/* navigation items */}</Sidebar>
<main className="flex-1">
<header>{/* toolbar, breadcrumbs */}</header>
<div className="p-6">
<div className="grid gap-4 md:grid-cols-3">{/* stat cards */}</div>
<div className="mt-6">{/* data table or content */}</div>
</div>
</main>
</SidebarProvider>
Auth Flow:
<div className="min-h-screen flex items-center justify-center bg-muted/30">
<div className="w-full max-w-md">
<SignInCard /> {/* or SignUpCard */}
</div>
</div>
Multi-page App Layout:
// app/layout.tsx
<html>
<body>
<Navbar />
{children}
<Footer />
</body>
</html>
py-16 md:py-20 lg:py-24 (responsive vertical padding)max-w-7xl mx-auto px-4 sm:px-6 lg:px-8grid gap-4 sm:grid-cols-2 lg:grid-cols-3bg-background and bg-muted/5021st.dev components use CSS variables with dark: prefixes. Ensure:
// In layout.tsx or providers
import { ThemeProvider } from "next-themes"
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
{children}
</ThemeProvider>
Install next-themes: npm install next-themes
import { Geist, Geist_Mono } from "next/font/google";
const geist = Geist({ variable: "--font-sans", subsets: ["latin"] });
const geistMono = Geist_Mono({ variable: "--font-mono", subsets: ["latin"] });
<body className={`${geist.variable} ${geistMono.variable} font-sans antialiased`}>
After installing components, customize them to fit the project:
AI models have a strong bias toward purple/violet as the default brand color. This is because purple dominates tech/AI branding (Figma, Notion AI, Copilot) and shadcn/ui examples. Using purple every time is an obvious AI fingerprint — like using the Sparkles icon.
Rule: NEVER default to purple. Choose colors based on the product type and industry:
| Product / Industry | Recommended Primary | Avoid |
|---|---|---|
| Finance / Banking | Deep blue (oklch(0.45 0.15 250)), Navy, Teal | Purple, Neon |
| Health / Wellness | Green (oklch(0.55 0.18 155)), Teal, Soft blue | Red, Purple |
| E-commerce / Retail | Orange (oklch(0.65 0.2 50)), Coral, Amber | Muted grays |
| Developer tools | Emerald (oklch(0.55 0.17 160)), Cyan, Slate | Purple (overused) |
| Creative / Design | Rose (oklch(0.6 0.18 10)), Amber, Indigo | Plain blue |
| Education | Blue (oklch(0.5 0.16 250)), Teal, Green | Neon, Dark themes |
| Food / Restaurant | Warm red (oklch(0.55 0.22 25)), Orange, Olive | Cold blues |
| AI / Writing tools | Teal (oklch(0.55 0.12 195)), Blue-green, Slate | Purple (cliché!) |
| Enterprise / B2B | Slate blue (oklch(0.5 0.1 255)), Navy, Steel | Bright neons |
| Social / Community | Coral (oklch(0.6 0.17 25)), Sky blue, Warm pink | Dull grays |
If the user specifies a brand color, use it. If not, pick from the table above — but NEVER purple unless the user explicitly asks for it.
How to apply the chosen color:
/* globals.css — example with teal for an AI writing tool */
:root {
--brand: oklch(0.55 0.12 195); /* Teal, NOT purple */
}
Then use bg-brand, text-brand, border-brand/30 etc. throughout the site. Update hero gradients, CTA buttons, icon backgrounds, and accent colors to match.
Hero sections make or break the first impression. After installing a hero component, ensure:
text-foreground instead of gradient-text effects (bg-clip-text text-transparent) which can be too faintbg-gradient-to-b from-[color] via-[color] to-white) — don't layer decorative gradient divs behind opaque parentsrounded-xl, visible shadows (shadow-lg), and brand colors. Add hover effects (hover:-translate-y-0.5 transition-transform)rgba() colors (not oklch) for depth behind hero content/* globals.css */
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 0 0% 3.9%;
--primary: 0 0% 9%;
--primary-foreground: 0 0% 98%;
/* ... customize these to match brand */
}
.dark {
--background: 0 0% 3.9%;
--foreground: 0 0% 98%;
/* ... dark variants */
}
}
This phase catches the bugs that ruin the user's first impression. Do not skip any step.
npm run build
Fix any TypeScript or build errors before proceeding.
Run npm run dev and actually look at every section of the page:
Take a screenshot or use preview_screenshot — look at the full page from top to bottom
Check for these common problems:
text-center or adjust max-wmin-h-screen to min-h-[80vh]Scroll through the entire page — every section must be visible and properly styled
Test at 3 breakpoints using preview_resize or browser devtools:
No errors in browser console. Warnings about missing images or unused vars are acceptable.
If any visual issue is found in Steps 2-3, fix it immediately before presenting to the user. The most common fixes are: adjusting container width, fixing CSS variable colors, and reducing hero height.
Some 21st.dev components depend on other components. The npx installer handles this automatically, but be aware:
Dialog component may install Button as a dependencyButton, the dialog install might overwrite itWhen combining components from different authors:
If 21st.dev doesn't have exactly what you need:
At the start of every build session, refresh your knowledge of available components by browsing the relevant category pages on 21st.dev. The platform adds new components daily, so what was the best option last week might be surpassed by something better today.
This means: if you last browsed https://21st.dev/s/hero an hour ago, browse it again if you're starting a new build. Fresh data leads to better component choices.
| Problem | Solution |
|---|---|
| Component not found | Try alternative spellings, browse the parent category, or search with WebSearch |
| npx install fails | Check for missing peer deps, verify URL format, try npm install for deps first |
| Component looks wrong | Check if Tailwind config was updated, verify CSS variables are defined |
| Dark mode broken | Ensure ThemeProvider wraps the app, check CSS variable definitions |
| TypeScript errors | Check component's expected props, install missing @types packages |
| Styling conflicts | Check for conflicting Tailwind classes, CSS variable naming collisions |
| 21st.dev unreachable | Use WebSearch to find component names, construct install URLs from cached knowledge |
| Component too complex | Simplify by removing unused features from the source code |
render prop errors | Component uses @base-ui/react pattern — convert to asChild pattern |
| Giant blank space | Hero/section using min-h-screen — reduce to min-h-[80vh] or remove |
| Content off-screen right | Container width mismatch — add max-w-7xl mx-auto wrapper |
| Invisible text | CSS variables undefined — check globals.css has all required color tokens |
| Faint/invisible cards | Background gradient too subtle — use bg-card border border-border/60 shadow-sm |
| Marquee cards hidden | Edge fade w-1/3 too wide — reduce to w-1/6 |
| Gradient not showing | Using -z-10 behind parent bg-background — apply gradient directly on section |
| oklch gradient broken | oklch renders poorly in radial-gradient() — use rgba() hex values instead |
| Heading invisible on gradient | bg-clip-text text-transparent too faint — use solid text-foreground |
For AI-powered component generation, set up the Magic MCP:
npx @21st-dev/cli@latest install claude --api-key <YOUR_API_KEY>
Get API key: https://21st.dev/settings/api-keys
Manual config in .claude/settings.json:
{
"mcpServers": {
"@21st-dev/magic": {
"command": "npx",
"args": ["-y", "@21st-dev/magic@latest"],
"env": { "API_KEY": "your-api-key" }
}
}
}
MCP provides these tools:
21st_magic_component_builder — Generate components from descriptions21st_magic_component_inspiration — Browse component ideaslogo_search — Find company logos (via SVGL)まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.
日本語の概要は準備中です。原文の説明を表示しています。
Guides the creation of agile user stories and Gherkin feature files. Use when the user wants to create a user story, write acceptance criteria, define Gherkin scenarios, or author BDD feature files. This should trigger for requests such as Create a user story; Write a user story; I need to write a user story. Part of cursor-rules-java project
日本語の概要は準備中です。原文の説明を表示しています。
Facilitates conversational discovery to create Architectural Decision Records (ADRs) for non-functional requirements using the ISO/IEC 25010:2023 quality model. Use when the user wants to document quality attributes, NFR decisions, security/performance/scalability architecture, or design systems with measurable quality criteria. This should trigger for requests such as Create ADR for Non-functional requirements; Document Non-functional requirements; Capture Non-functional requirements; Generate Non-functional requirements in an ADR. Part of cursor-rules-java project
日本語の概要は準備中です。原文の説明を表示しています。
Run a health check on an existing project: dependency audit, security scan, test runner detection, CI/CD evaluation, and missing configuration analysis. Maps the three execution gates (pre/in/post) from /10x-bootstrapper to an assessment framework for existing codebases. Reads optional context/foundation/stack-assessment.md from /10x-stack-assess to focus checks on identified gaps. Writes context/foundation/health-check.md with findings, prioritized fixes, and an agent-readiness verdict. Use when the user has an existing project and wants to verify its health before working with an agent. Trigger phrases: "health check", "check my project", "audit my project", "is my project healthy", "sprawdź projekt", "audyt projektu", "health-check", "project health". Use AFTER /10x-stack-assess (brownfield chain), BEFORE agent onboarding (m1-l4).
日本語の概要は準備中です。原文の説明を表示しています。
You MUST use this when building projects end-to-end. Orchestrates all 12 team roles — automatically switches between CTO, architect, PM, engineers, SRE, security, DBA, QA, and EM based on the current phase of work. Starts with brainstorming before any implementation.
日本語の概要は準備中です。原文の説明を表示しています。
Use when you need to add or configure Maven plugins in your pom.xml — including quality tools (enforcer, surefire, failsafe, jacoco, pitest, spotbugs, pmd), security scanning (OWASP), code formatting (Spotless), version management, container image build (Jib), build information tracking, and benchmarking (JMH) — through a consultative, modular step-by-step approach that only adds what you actually need. This should trigger for requests such as Add Maven plugins in pom.xml; Improve Maven plugins in pom.xml. Part of cursor-rules-java project
日本語の概要は準備中です。原文の説明を表示しています。