本文へ移動
cccskills
無料GitHub で公開

components

Use when building a frontend and the user wants a distinctive / animated / "wow" UI element in React + Tailwind - e.g. a laptop-opening-on-scroll, 3D tilt card, spotlight hero, animated beams/background, marquee, bento grid, interactive globe, meteor/particle background, shimmer button, or scroll/reveal motion. Fetches the showpiece component LIVE at build time from code libraries (Aceternity, Magic UI, Cult UI, ReactBits, 21st.dev) via their shadcn registry command (or WebFetch fallback), then adapts it to brand tokens. Also covers plain components (button, form, modal, table, etc.) as a fallback. Triggers on "make it pop", "something flashy", "animated [X]", "like [cool site]", "build a [showpiece] section". NOT for non-React stacks. Inspiration galleries (Dribbble/godly) are visual reference only - never code.

インストール方法を見る

含まれるファイル(94)

  • SKILL.md8.1 KB
  • .editorconfig219 B
  • .gitattributes19 B
  • .github/CODEOWNERS507 B
  • .github/dependabot.yml316 B
  • .github/ISSUE_TEMPLATE/bug_report.yml1.4 KB
  • .github/ISSUE_TEMPLATE/config.yml440 B
  • .github/ISSUE_TEMPLATE/new_component.yml1.5 KB
  • .github/labeler.yml652 B
  • .github/PULL_REQUEST_TEMPLATE.md1.2 KB
  • .github/workflows/build-agent-dirs.yml3.1 KB
  • .github/workflows/cli-ci.yml2.0 KB
  • .github/workflows/component-smoke-test.yml6.5 KB
  • .github/workflows/deploy-gallery.yml2.3 KB
  • .github/workflows/health-check.yml2.0 KB
  • .github/workflows/label.yml320 B
  • .github/workflows/media-size.yml1.9 KB
  • .github/workflows/validate.yml639 B
  • .gitignore712 B
  • ATTRIBUTION.md6.0 KB
  • CHANGELOG.md11.6 KB
  • cli/bin/components-skill.js4.3 KB
  • cli/package-lock.json355 B
  • cli/package.json1.1 KB
  • cli/PUBLISHING.md2.3 KB
  • cli/README.md5.6 KB
  • cli/scripts/check-version-sync.js1.8 KB
  • cli/src/commands/add.js2.1 KB
  • cli/src/commands/search.js2.8 KB
  • cli/src/commands/tokens.js11.3 KB
  • cli/src/commands/update.js2.9 KB
  • cli/src/lib/dist.js1.2 KB
  • cli/src/lib/layout.js2.3 KB
  • cli/src/lib/manifest.js3.1 KB
  • cli/test/add.test.js4.7 KB
  • cli/test/search.test.js2.7 KB
  • cli/test/tokens.test.js6.4 KB
  • CODE_OF_CONDUCT.md2.3 KB
  • components.json47.0 KB
  • CONTRIBUTING.md7.7 KB
  • docs/media/demo.gif2.0 MB
  • docs/media/demo.mp42.1 MB
  • docs/previews-audit.md9.3 KB
  • gallery/.gitignore352 B
  • gallery/components.json426 B
  • gallery/index.html477 B
  • gallery/package-lock.json86.2 KB
  • gallery/package.json761 B
  • gallery/scripts/fetch-showpieces.mjs11.2 KB
  • gallery/src/App.tsx9.3 KB
  • gallery/src/demos/Demo3dCard.tsx1.2 KB
  • gallery/src/demos/DemoAnimatedShinyText.tsx275 B
  • gallery/src/demos/DemoAurora.tsx752 B
  • gallery/src/demos/DemoBackgroundBeams.tsx371 B
  • gallery/src/demos/DemoBlurText.tsx305 B
  • gallery/src/demos/DemoCanvasFractalGrid.tsx811 B
  • gallery/src/demos/DemoCobeGlobeInteractive.tsx426 B
  • gallery/src/demos/DemoCountUp.tsx387 B
  • gallery/src/demos/DemoDecryptedText.tsx349 B
  • gallery/src/demos/DemoDock.tsx479 B
  • gallery/src/demos/DemoGlobe.tsx726 B
  • gallery/src/demos/DemoHyperspeed.tsx541 B
  • gallery/src/demos/DemoLetterGlitch.tsx795 B
  • gallery/src/demos/DemoMarquee.tsx1.1 KB
  • gallery/src/demos/DemoMatrixText.tsx165 B
  • gallery/src/demos/DemoMeteors.tsx350 B
  • gallery/src/demos/DemoParticlesWebgl.tsx543 B
  • gallery/src/demos/DemoShaderLensBlur.tsx758 B
  • gallery/src/demos/DemoShimmerButton.tsx192 B
  • gallery/src/demos/DemoSplashCursor.tsx838 B
  • gallery/src/demos/DemoSpotlight.tsx435 B
  • gallery/src/demos/DemoTextureCard.tsx948 B
  • gallery/src/demos/index.ts2.3 KB
  • gallery/src/index.css1.8 KB
  • gallery/src/lib/utils.ts169 B
  • gallery/src/main.tsx232 B
  • gallery/tsconfig.app.json529 B
  • gallery/tsconfig.json165 B
  • gallery/tsconfig.node.json336 B
  • gallery/vite.config.ts493 B
  • LICENSE9.9 KB
  • README.md15.7 KB
  • references/adaptation.md4.4 KB
  • references/conventions.md2.1 KB
  • references/dependencies.md2.5 KB
  • references/handoff.md2.2 KB
  • references/live-fetch.md8.2 KB
  • scripts/_registry.py691 B
  • scripts/build-agent-dirs.sh5.2 KB
  • scripts/health-check.py14.4 KB
  • scripts/smoke-test.mjs37.6 KB
  • scripts/validate.py12.5 KB
  • SECURITY.md1.4 KB
  • TASTE.md4.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

components

Fetch flashy, proven, animated React+Tailwind components LIVE from code libraries instead of hand-writing complex motion. User describes an effect → match it → pull the real component at build time → adapt to brand.

What this is

  • PRIMARY: showpiece live-fetch. Distinctive/animated components (laptop scroll, 3D card, beams, globe, marquee...) fetched live from code libraries via registry CLI / WebFetch.
  • FALLBACK: plain components. Standard button/form/modal/table when no "wow" is asked.
  • SOURCE layer only. After placing the component, hand off final polish/distinctiveness to impeccable / frontend-design if installed - both are optional sibling skills, not dependencies of this repo. See references/handoff.md for what to do when neither is available.
  • Galleries ≠ code. Dribbble, godly.website, Awwwards = visual reference ONLY. Never fetch components from them.
  • Layout curation. layouts[] are pre-composed arrangements (web sections or video beat patterns). TASTE.md is the required-reading standard for picking or building one - read it before selecting a layout.

Decision flow

user wants a UI component (React + Tailwind)?
├─ is it a distinctive / animated / "wow" effect?
│   ├─ YES (primary path):
│   │   1. match the described effect → showpiece[] entry (name or aliases)
│   │   2. no direct match → search code_libraries[] live for the effect
│   │      (WebFetch the library's components page, find the closest)
│   │   3. FETCH LIVE (see references/live-fetch.md):
│   │      - preferred: run the entry's `ref` registry command
│   │        e.g. `npx shadcn@latest add "https://ui.aceternity.com/registry/macbook-scroll.json"`
│   │      - fallback: WebFetch / Playwright the page, extract the code
│   │   4. install listed `deps` (usually `motion` = framer-motion)
│   │   5. ADAPT: brand tokens + prefers-reduced-motion + responsive
│   │      (references/adaptation.md)
│   │   6. hand off polish → impeccable / frontend-design (optional, if installed)
│   └─ NO → fallback_basic[]: standard component, adapt to tokens.

How to fetch live

  1. Read components.json. Find the showpiece entry by name/alias, else pick a code_libraries source and search it live.
  2. Target project is Vue or Svelte, not React? Check whether the matched entry has a frameworks.vue / frameworks.svelte object. If it does, use its ref/fetch/library/license/deps instead of the entry's top-level (React) ones - the rest of this flow is unchanged. If it doesn't, say so; don't improvise a port. Coverage today: all 9 ReactBits entries have both Vue (Vue Bits) and Svelte (Svelte Bits) variants; the Aceternity and Magic UI entries with a verified Inspira UI equivalent have Vue variants. Everything else is React-only.
  3. Show the user the registry command before running it (it pulls code into their project).
  4. Run ref. If the registry shorthand fails (library changed it), open the site page, confirm the current command, retry. Last resort: WebFetch the page and write the code manually. (ref is the display form of the entry's fetch object; if you are writing tooling, read fetch.url / fetch.cli and never parse the command string.)
  5. Install deps. Most need motion (framer-motion). 3D globe needs cobe; wavy bg needs simplex-noise. deps is not optional detail: it records peer dependencies the registry item itself does not declare, and the component will not compile without them (every Inspira UI variant needs @inspira-ui/plugins for cn(), which its registry JSON omits).
  6. Adapt (mandatory - never raw): map demo colors to brand tokens, wrap motion in prefers-reduced-motion, check mobile.
  7. Verify it compiles + renders, then hand off to a quality skill if one is installed (references/handoff.md). Otherwise the adapted component is already the final output.

Rules

  • Live-fetch from code libraries only. showpiece + code_libraries are curated pointers; the actual code is fetched at build time so it stays current.
  • Galleries are visual-ref only - no code lives there.
  • Never paste raw. Adapt tokens + motion + responsive every time.
  • Respect motion accessibility. Every animated component honors prefers-reduced-motion.
  • Check license per source. Magic UI / Cult UI / ReactBits = MIT. Aceternity = free personal+commercial (verify). 21st.dev = per-component, verify before shipping; its registry endpoint also needs a 21st.dev account/API key, so use each entry's open-mirror ref or the page-fetch path.
  • Safety: registry commands run code installs - show the command, prefer official namespaces, don't blindly run unknown-registry URLs.

Troubleshooting (fetch failed?)

Registries change. Recover in this order - never leave the user stuck:

  1. Command 404 / "unknown registry" → open the entry's site page, confirm the current command, retry. Make sure shadcn@latest is used (not an old pinned version).
  2. Still failing → WebFetch the component's docs page, extract the code block, write the file(s) manually, install the listed deps.
  3. Code is behind JS/tabs → use the playwright skill to read the rendered code panel.
  4. Network/registry down → fall back to the closest fallback_basic entry or a hand-composed version, and tell the user the showpiece source is unreachable. Do not block the build on a dead registry.

No vendoring, by design: components ships pointers only and never bundles upstream code, so when an upstream is unreachable the showpiece is temporarily unavailable. Degrade gracefully per step 4 (closest fallback_basic, or hand-compose) rather than erroring out. Staying pointer-only keeps the skill permanently clear of any redistribution licensing.

Limitations

  • Primarily React + Tailwind, and the target project must already be shadcn-initialised (has components.json + a registry-aware npx shadcn setup). Vue and Svelte support is narrow and per-entry, not general: see step 2 of "How to fetch live" for which showpieces carry a verified frameworks.vue / frameworks.svelte variant. Everything else, and plain HTML, is React-only.
  • No vendoring. Showpieces are pointers fetched live; if an upstream registry endpoint changes or goes down, that showpiece is temporarily unavailable (see Troubleshooting) rather than silently served from a stale local copy.
  • 21st.dev entries route around the official registry (which needs an account/API key) via open mirrors or page-fetch - slightly more fragile than a direct npx shadcn call.
  • License compliance is per-source, not blanket. components.json records each entry's license, but verifying it's still accurate before commercial redistribution is on the user (see Sources & licenses / ATTRIBUTION.md).
  • Not a design-quality skill. It sources and adapts a component; it doesn't judge whether the result fits the page's visual system - that's impeccable / frontend-design's job.

Maintenance

showpiece/code_libraries are pointers, so they rot slowly. Quarterly: confirm registry namespaces + library sites still resolve. Update ref patterns if a library changes its CLI. See CONTRIBUTING.md.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

このスキルの問題を報告する