Interactive Skill Cloud

A draggable physics pill cloud powered by matter.js — pills rain down, pile at the bottom, and collide; grab one and fling it.

my skills for building modern products

Next.jsReactTypeScriptTailwindshadcn/uiPrismatRPCbetter-authAI SDKCursor

Installation

Interactive Skill Cloud is published as a shadcn registry item. The CLI drops the file into your project, installs its dependencies, and adds any primitives it relies on.

$npx shadcn@latest add https://akoder.xyz/r/interactive-skill-cloud.json

Install often? Register the namespace once in components.json and use the shorter form npx shadcn@latest add @akoder/interactive-skill-cloud.

Usage

import { InteractiveSkillCloud } from "@/components/ui/interactive-skill-cloud";
import { Code2, Zap } from "lucide-react";
 
const items = [
  { id: "react", name: "React", icon: <Code2 className="size-4" /> },
  { id: "zap", name: "tRPC", icon: <Zap className="size-4" /> },
];
 
export function TechStack() {
  return (
    <InteractiveSkillCloud
      items={items}
      height={360}
    />
  );
}

Props

PropTypeDefaultNotes
itemsSkillCloudItem[]requiredArray of { id, name, icon? }. The icon is any React node, so lucide, react-icons, or local SVGs all work.
heightnumber360Height of the physics arena in px.
gravitynumber11 drops the pills into a pile at the bottom of the arena. Set it to 0 for a float-and-throw playground where pills keep their momentum.
classNamestringExtra classes forwarded to the container.
childrenReactNodeOptional overlay or background content rendered inside the arena.

Notes & Features

Manual installation

Copy components/ui/interactive-skill-cloud.tsx into your project. Ensure matter-js is installed:

npm install matter-js

The component uses @types/matter-js for TypeScript projects. It requires a client component ("use client"); there is no server-side physics.