Curated skills directory for Claude Code and Cowork users.
- Framework: Next.js 15 (App Router), TypeScript, Tailwind CSS v4
- ORM: Drizzle ORM with postgres.js driver
- Database: PostgreSQL (Railway)
- Components: shadcn/ui (card, badge, button, input, tabs)
- Hosting: Railway
- Package manager: npm
@/*path alias mapped to project rootcn()utility atlib/utils.ts(clsx + tailwind-merge)- Tailwind v4 CSS-first config: design tokens in
@themeblock inglobals.css - Light theme by default
- DB singleton at
db/client.ts, schema atdb/schema.ts, server-only guard atdb/index.ts - Centralized queries at
db/queries.ts - Const arrays for enums in
lib/types.tswith derived union types - Content data in
content/plugins.ts,content/skills.ts, andcontent/collections.ts - Server Components by default; Client Components only for interactive widgets
output: 'standalone'in next.config.ts for Railway
npm run dev— start dev servernpm run build— production build (runs migration first)npx drizzle-kit push— push schema to dev DBnpx tsx scripts/seed.ts— seed database from content files
app/
plugins/[slug]/ — plugin detail page
skills/[slug]/ — skill detail page
collections/[slug]/ — collection detail page
api/ — API routes (upvote endpoints for plugins & skills)
components/
layout/ — Header, Footer
sections/ — page-level sections (InstallInstructions, SafetySummary, etc.)
ui/ — shadcn + custom components (PluginCard, SkillCard, TrustBadge, etc.)
content/ — curated plugin, skill, and collection data
db/ — schema (plugins, skills, collections, collectionItems), client, queries, migrations
lib/ — types, utils, helpers, serialize
scripts/ — seed script