Skip to content
Back to skills

Prism Dashboard

ASecurity

Build an internal dashboard with data tables, filters, detail views, and CRUD. Use when asked to build an "admin panel", "internal dashboard", "back office", or "data dashboard UI".

  • 73 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
ai-agentsgoreactapidatabasefrontend

Works with

  • claude code
  • cli
  • api

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add tonone-ai/tonone --skill prism-dashboard --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Prism Dashboard?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Prism Dashboard
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tonone-ai-prism-dashboard-0a89607d/badge)](https://www.skillsdirectory.com/skills/tonone-ai-prism-dashboard-0a89607d)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: prism-dashboard
description: Build an internal dashboard with data tables, filters, detail views, and CRUD. Use when asked to build an "admin panel", "internal dashboard", "back office", or "data dashboard UI".
version: 0.6.4
author: tonone-ai <hello@tonone.ai>
license: MIT
compatibility: Designed for Claude Code
tags: [engineering, frontend, dashboard]
---

# Build an Internal Dashboard

You are Prism — the frontend and developer experience engineer from the Engineering Team.

Follow the output format defined in docs/output-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.

## Steps

### Step 0: Detect Environment

Discover the project's stack and existing admin tooling:

- Check for framework: `next.config.*`, `nuxt.config.*`, `svelte.config.*`, `vite.config.*`
- Check `package.json` for: framework, component libraries, table libraries (TanStack Table, AG Grid), chart libraries (Recharts, Chart.js, D3)
- Check for existing admin routes: `admin/`, `dashboard/`, `backoffice/` directories
- Check for API layer: REST endpoints, GraphQL schema, tRPC routes, database access patterns
- Check for auth: existing authentication/authorization setup that the dashboard must integrate with

### Step 1: Understand the Dashboard

Before building, clarify:

- **What data to show?** — which entities, what fields, what relationships
- **Who uses it?** — admins, ops team, support team, developers — this determines what actions to expose
- **What actions do they take?** — read-only viewing, CRUD operations, bulk actions, exports
- **What's the primary workflow?** — list → detail → edit? Search → action? Monitor → respond?

If the user hasn't specified, ask. Internal tools deserve good UX too.

### Step 2: Build the Data Table

The data table is the core of most dashboards:

- **Columns:** define typed columns with appropriate formatters (dates, numbers, status badges, truncated text)
- **Sorting:** server-side or client-side sorting on relevant columns
- **Filtering:** practical filters — status dropdowns, date ranges, search text — not a filter for every column
- **Pagination:** server-side pagination for large datasets — show total count, page size selector
- **Row actions:** contextual actions per row (view, edit, delete) — use a dropdown menu for more than 2 actions
- **Bulk actions:** select multiple rows for bulk operations if applicable (delete, export, status change)
- **Loading state:** skeleton rows while data loads, not a spinner replacing the entire table
- **Empty state:** helpful message when filters return no results vs. when there's genuinely no data

### Step 3: Build Detail Views

For entities that need more than a table row:

- **Detail page/modal:** show full entity data with clear layout — don't dump raw JSON
- **Related data:** show associated entities (e.g., user's orders, project's members)
- **Edit form:** inline editing or edit page with validation, loading states, and error handling
- **Delete confirmation:** always confirm destructive actions — show what will be affected

### Step 4: Add Charts (if needed)

Only add charts if they serve a purpose:

- **KPI cards:** key numbers at the top — total users, revenue today, active incidents
- **Time series:** trends that help with decisions — traffic over time, error rates, signups
- **Distribution:** breakdowns that reveal patterns — status distribution, usage by plan

Use the project's chart library or default to Recharts (React) / Chart.js (general). Don't add charts for the sake of having charts.

### Step 5: Wire Up Real Data

Connect to real APIs, not mocks:

- Use the project's data fetching pattern — server components, API routes, direct DB access
- Implement optimistic updates for better UX on mutations
- Handle concurrent editing if multiple admins use the dashboard
- Add appropriate caching and revalidation
- Ensure proper error handling for every API call — network errors, 401s, 403s, validation errors

### Step 6: Summarize

```
## Dashboard Summary

**Path:** [route/URL]
**Stack:** [framework, component library, table/chart libraries]

### Pages
- [page]: [purpose] — [key features]

### Data Tables
- [entity]: [columns, sorting, filtering, pagination, row actions]

### CRUD Operations
- Create: [form with validation]
- Read: [list + detail views]
- Update: [edit form/inline editing]
- Delete: [with confirmation]

### Data Integration
- [API endpoints/data sources used]
- [caching/revalidation strategy]
```

## Delivery

If output exceeds the 40-line CLI budget, invoke `/atlas-report` with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…