mcpbeat

Scaffold Dashboard

ahpxex/scaffold-dashboard

Stand up the dashboard foundation (the platform layer — UI primitives, form system, charts, Repository + adapters, auth seam, theme, routing shell) into a new project as a zero-config runnable app. Run this FIRST when building a dashboard, then compose screens from the add-component catalogue's shapes (add-detail-page, add-kanban, …) and the add-backend operation skill.

355k tokens
context cost
the whole folder, loaded on every use
156
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
117
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/ahpxex/open-dashboard --skill scaffold-dashboard

What comes with it

1 148 936 bytes besides the instruction
base/.env.example
base/.gitignore
base/CLAUDE.md
base/LICENSE
base/README.md
base/biome.json
base/bun.lock
base/components.json
base/docker-compose.yml
base/drizzle.config.ts
base/package.json
base/public/bg.jpg
base/public/mocking/simple.json
base/scripts/create-resource.ts
base/scripts/seed.ts
base/src/components/CommandMenu.tsx
base/src/components/CommandMenuProvider.tsx
base/src/components/DashboardShell.tsx
base/src/components/Header.tsx
base/src/components/Sidebar.tsx
base/src/components/UserAvatar.tsx
base/src/components/charts/AreaChart.tsx
base/src/components/charts/BarChart.tsx
base/src/components/charts/ChartCard.tsx
base/src/components/charts/LineChart.tsx
base/src/components/charts/PieChart.tsx
base/src/components/charts/StatCard.test.tsx
base/src/components/charts/StatCard.tsx
base/src/components/charts/chart-colors.test.ts
base/src/components/charts/chart-colors.ts
base/src/components/charts/charts.test.tsx
base/src/components/charts/index.ts
base/src/components/form/fields.test.tsx
base/src/components/form/fields.tsx
base/src/components/form/form-error.tsx
base/src/components/form/index.ts
base/src/components/form/submit-button.tsx
base/src/components/providers.tsx
base/src/components/ui/alert.tsx
base/src/components/ui/avatar.tsx

The instruction itself

6 sections, as written by the author

Scaffold the dashboard foundation

The whole foundation is bundled at base/ — a clean, runnable app shell with

no demo content. Materialize it into a new project, then add screens from the

add-component catalogue's shapes (and the add-backend operation skill). You

don't read the foundation code — you scaffold it.

Scaffold

bash .claude/skills/scaffold-dashboard/scaffold.sh <target-dir>

Copies base/ → target and runs bun install. Then:

cd <target-dir>
bun run dev          # zero-config: in-memory auth + data, no Postgres/Docker

Open it, click Dev quick login ([email protected] / password) → an empty,

branded dashboard.

What you get

TanStack Start + Router + Query + Table; shadcn-on-@base-ui/react primitives;

Tailwind v4 theme; the form system (TanStack Form + zod); chart components; the

Repository data layer (in-memory by default, Drizzle/Postgres when DATABASE_URL

is set); better-auth behind the AuthProvider seam; toast + useConfirm; and the

auth-guarded routing shell. Rebrand via src/config/app.ts (or the rebrand skill).

Compose a coherent product (not a demo dump)

You are building a real back-office for a specific domain — not showcasing the

catalogue. The fastest way to ship something that reads as a patchwork demo is to

copy a pile of gallery shapes into the nav. Don't. Instead:

  • The home is an overview, never the placeholder. Replace

src/routes/_app/index.tsx (the "clean shell" welcome) with a real overview via

add-chart-page — KPIs + charts derived from your actual resources. Shipping the

scaffold welcome as the product home is the #1 tell of a demo.

  • Nav = real product sections only: Overview, your resources, Settings. The

scaffold base ships clean (no demo resources, no Skills Gallery) — you add

product sections to src/lib/sidebar-items.ts, you don't prune sample ones.

  • Pick the archetype that fits each resource's shape, don't add one of each:

flat list → CRUD table (add-backend); rich record → + add-detail-page;

an inbox you triage → add-master-detail; a staged pipeline → add-kanban;

people/visual items → add-card-list; date-bound items → add-calendar;

metrics → add-chart-page.

  • Every nav item gets a distinct, meaningful Phosphor icon — never repeat one

icon (e.g. SquaresFourIcon) down the list.

  • Use product language. Labels and page copy name the domain, not the

mechanism: "Feed", not "Feed (REST)"; "Manage your invoices", not "Generated

resource — customise the schema".

  • Seed believable data — real names, dates, statuses, amounts. Three rows of

Alpha/Beta/Gamma read as a demo; a dozen realistic records read as a product.

Add screens (compose from the add-component catalogue)

The shapes below are references inside the single add-component catalogue (not

separate invocable skills); each copies a bundled template into the new project.

Data + CRUD comes from the add-backend operation skill.

  • Resources (data + CRUD): bun run create-resource <name> (or add-backend),

then the catalogue's add-detail-page, add-master-detail, add-card-list,

add-form, add-chart-page.

  • Shapes (all in add-component): add-list-view, add-kanban,

add-tree-view, add-calendar, add-timeline, add-virtual-table,

add-inline-edit, add-filter-panel, add-wizard-form, add-field-combobox,

add-record-tabs, add-settings-page, add-empty-state, add-page-layout,

add-data-display, add-feedback-states.

After copying a template, add a sidebar entry in src/lib/sidebar-items.ts (above

the // create-resource:anchor) so it shows in the nav.

Verify

cd <target-dir>
bun run typecheck && bun run check && bun run test && bun run build

All green on the empty shell (and after each screen you add). bun run dev boots

zero-config.

How to use it

Copy the folder

Take ahpxex/scaffold-dashboard from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.