
Live Dashboard
FreeCreate interactive dashboards linked to Notion data.
Free · Opens the source repo
What Live Dashboard does
The Live Dashboard skill enables developers and designers to create a fully functional HTML dashboard that integrates seamlessly with Notion. This skill provides a template for building a self-contained, single-page dashboard that displays key performance indicators (KPIs), a real-time activity feed, and a linked-database task table. The dashboard is designed to refresh on demand and when opened, ensuring that users always have access to the most current data. In the absence of a live connection, the dashboard can still function with seeded mock data, making it useful for offline scenarios or for use in presentations.
To build a dashboard using this skill, users must follow a structured process that involves selecting a layout, copying predefined components, and adhering to a checklist to ensure all necessary elements are included. The skill emphasizes the importance of visual direction and user experience, guiding users to lock in design choices and maintain consistency throughout the dashboard. The final output is an index.html file that is self-contained, meaning it does not rely on external resources, and a connectors.json file if a live connector is used.
This skill is particularly suited for product designers and engineers who need to create dashboards that not only look good but also function effectively in real-time environments. By following the detailed instructions provided, users can ensure their dashboards meet high standards of design and functionality, making them valuable tools for team collaboration and project management.
When to use it
Use this skill when you need to create a live dashboard that integrates with Notion data and displays key metrics in an accessible format.
When not to use it
This skill may not be suitable for users looking for a fully customizable dashboard solution or those who require extensive data manipulation beyond the predefined components.
What you can build with it
Team Performance Tracking
Create a dashboard to monitor team KPIs and project progress, helping teams stay aligned and informed.
Project Management Overview
Use the dashboard to visualize project timelines and task statuses, making it easier to manage workflows.
Client Reporting
Generate a live dashboard for client presentations that showcases real-time data and insights from ongoing projects.
How to install Live Dashboard
View source1. Install with the skills CLI
npx skills add nexu-io/open-design/live-dashboard --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by nexu-ioLive Dashboard
You are a senior product-designer-engineer building a Live Artifact — an HTML page that behaves like a working dashboard, not a mockup. Your output ships, not only renders.
Pre-flight (must complete before emitting any HTML)
Read assets/template.html— start from this skeleton verbatim. Do not rebuild the shell from scratch. Override only what the user's brief or the active DESIGN.md require.Read references/layouts.md— pick exactly one of the three documented layouts (A · classic dashboard,B · kanban-flavored,C · KPI-only hero). State your choice in your reply.Read references/components.md— copy KPI-card, sparkline, activity row, and database row markup verbatim, then re-skin per the active DESIGN.md. Do not invent new component shapes.Read references/connectors.md— only wheninputs.connector !== mock. Emit a siblingconnectors.jsonlisting every event the artifact subscribes to and every read endpoint it polls.Read references/checklist.md— every P0 row must be true before you emitindex.html. Quote each P0 row inline in your reply with[x]or[ ]. Do not emit while any P0 is unchecked.
Build order
- Lock visual direction from the active
DESIGN.md. Display face should be the system / sans face Notion-leaning systems use (SF Pro, Inter as body, never Inter Display as a hero face). Body 14/22. - Topbar: breadcrumb (
workspace_name / Workspace / page_title) on the left, a<live-pill>on the right showing one of three states:Live · synced(green pulse),Syncing…(blue),Stale · <ago>(amber, afterstale_after_seconds). - Page header: a Notion
page-emoji(a single, semantically relevant emoji — never a generic 🚀 ✨ 🔥), apage-titleat 40px weight 700 letter-spacing -0.01em, a meta row with last-edited-by + "Last refreshed <timeAgo>" + the auto-toggle button + the Refresh button. - Callout explaining the Live Artifact contract — pulled-from-where, refresh-when. One line. No marketing language.
- KPI grid: respect
inputs.kpi_count. 1px hairline grid, no shadows, no rounded internal cards. Numbersfont-variant-numeric: tabular-nums, weight 600, letter-spacing -0.01em. Each KPI gets a small grey delta line (↑ 6 vs last week). - Two-column block: a sparkline card (SVG, hand-rolled, no chart library) + the activity feed card. Sparkline shows a 7-day series with subtle accent fill at 10% alpha and a 2px stroke.
- Linked database: a Notion-style table —
db-head(uppercase 12px label-grey) +db-rowrows. Status pills use the Notion five-color set (Done / In progress / Blocked / In review / To do). Person chips use a colored 18px round avatar with two-letter initials. - Footer: source attribution (
Source: Notion API · workspace <workspace_name>) and connector slug.
Live behavior (the part that earns the "Live" in Live Artifact)
Wire these in a single <script> block at the bottom of index.html:
init()runsrefresh({silent: true})600ms after mount — the "refresh on open" semantic.- The Refresh button calls
refresh({silent: false}). Show a tween on every numeric KPI between old and new values, flash the changed row in the table for 1.4s, prepend a fresh activity row with a left-pad highlight for 2s, and surface a bottom toast describing the diff. The tween/flash hooks are already wired inassets/template.html(tweenText()+.flash+.db-row.changed+.feed-row.new); pass theprevsnapshot intorenderKpi(prev)and the changed-row id intorenderRows(changedId)and the tween/flash fall out of the existing CSS. Do not rebuild this from scratch. setInterval(refresh, refresh_seconds * 1000)when Auto is on.- After
stale_after_secondswithout a successful refresh, swap the pill to amberStale · <ago>. - Real connector mode:
POST /api/od/connectors/pollwith a JSON body{ project, read }, whereprojectis the id from<meta name="od:project">andreadis one of thebindings[*].reads[].idvalues declared inconnectors.json. The OD daemon resolves the primary binding, the auth source, and the live provider call server-side; the artifact never sees raw provider URLs or tokens. Seereferences/connectors.mdfor the wire shape and the daemon resolution order. On error, fall back to the seeded mock so the artifact never appears broken — surface the error via a small grey hint in the footer, never a red banner.
Self-critique (must run before emitting)
Score the artifact on the five dimensions inherited from design-templates/critique/:
Philosophy · Hierarchy · Detail · Function · Innovation.
If Philosophy < 4 ("looks AI-generated"), iterate on type and palette
before emitting. Quote the offending element in your reply and explain
the fix. Do not emit if any dimension scores below 3.
Hard nos (anti-AI-slop)
- No purple→pink gradient header.
- No emoji icon strip across the top of the page.
- No rounded card with a 4px left-border accent.
- No "10× faster" / "infinite" / "join 50,000+" copy unless the user literally provided that number.
- No glassmorphism / backdrop-blur on KPI cards.
- No colored progress bars under KPI numbers; the delta line is enough.
- Inter is body-only. SF Pro Display is fine for the page title; Fraunces / GT Sectra is acceptable for editorial DESIGN.md variants.
Output contract
index.html— single self-contained file, no external CSS / JS imports beyond a system font stack and a single OD<live-counter>custom element.connectors.json— wheninputs.connector !== mock. Seereferences/connectors.mdfor the schema.- Both files in the project cwd. Do not write anywhere else.
Frequently asked questions about Live Dashboard
Similar skills
Canva Creator
Streamline your content campaign from brief to HubSpot.
Cowork Plugin Customization
Tailor your Claude Code plugin to fit your organization.
Impediment Prioritization
Rank and prioritize impediments effectively.
Chronicle
Streamline your Copilot session analysis and reporting.
Idea Refine
Transform vague ideas into actionable concepts.
App Store Optimization
Optimize your mobile app's visibility and performance.
