Design outputs
- index.html — single self-contained file, no external CSS / JS
- connectors.json — when inputs.connector !== mock. See
- Both files in the project cwd. Do not write anywhere else.
nexu-io/open-design
Notion-style team dashboard rendered as a Live Artifact. A single-page, self-contained HTML dashboard with KPIs, a 7-day sparkline, a real-time activity feed and a linked-database task table — wired to Notion via the Composio connector catalog. Refreshes on demand and when the artifact is opened. Falls back to seeded mock data when no connector is bound, so it works offline / in screenshots / in the picker preview.
npx skills add https://github.com/nexu-io/open-design --skill "design-templates/live-dashboard"Source checked Jul 28, 2026·Refresh due Oct 26, 2026
Reorganized from the pinned upstream SKILL.md
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.
npx skills add https://github.com/nexu-io/open-design --skill "design-templates/live-dashboard"The pinned source contains enough sections and task detail for a source-grounded deep guide; automated content is still not an independent test.
857 source words · 6 usable sections
Design outputs
Design process
Sections are extracted automatically from the pinned SKILL.md and link back to the source.
1. 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. 2. Read references/layouts.md — pick exactly one of the three documented layouts (A · classic dashboard,…
1. 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. 2. Topbar: breadcrumb (workspacename / Workspace / pagetitle) on the left, a on t…
Wire these in a single block at the bottom of index.html:
Score the artifact on the five dimensions inherited from design-templates/critique/: Philosophy · Hierarchy · Detail · Function · Innovation.
No purple→pink gradient header.
SkillSignal prompt templates
These prompts were written by SkillSignal from the source structure; they are not upstream text.
Source-grounded prompt
Use for a design task while explicitly checking the source sections.
Use live-dashboard for this design task: [task]. Inputs and constraints: [details]. Work through these pinned SKILL.md sections: “Pre-flight (must complete before emitting any HTML)”, “Build order”, “Live behavior (the part that earns the "Live" in Live Artifact)”, “Self-critique (must run before emitting)”, “Hard nos (anti-AI-slop)”. Cite the concrete requirements that shape each step, do not invent capabilities absent from the source, and verify the result against: [acceptance criteria].
Design checklist
The source section “Pre-flight (must complete before emitting any HTML)” has been checked.
The source section “Build order” has been checked.
The source section “Live behavior (the part that earns the "Live" in Live Artifact)” has been checked.
The source section “Self-critique (must run before emitting)” has been checked.
Source output checked: index.html — single self-contained file, no external CSS / JS
Source output checked: connectors.json — when inputs.connector !== mock. See
FAQ
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.
The source record exposes this install command: npx skills add https://github.com/nexu-io/open-design --skill "design-templates/live-dashboard". Inspect the command and pinned source before running it.
Quality breakdown
Based on traceable docs and repository signals; stars are not treated as quality.
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.
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 when inputs.connector !== mock.
Emit a sibling connectors.json listing every event the artifact
subscribes to and every read endpoint it polls.Read references/checklist.md — every P0 row must be true before
you emit index.html. Quote each P0 row inline in your reply with
[x] or [ ]. Do not emit while any P0 is unchecked.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.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, after stale_after_seconds).page-emoji (a single, semantically
relevant emoji — never a generic 🚀 ✨ 🔥), a page-title at 40px
weight 700 letter-spacing -0.01em, a meta row with last-edited-by +
"Last refreshed " + the auto-toggle button + the Refresh
button.inputs.kpi_count. 1px hairline grid, no
shadows, no rounded internal cards. Numbers font-variant-numeric: tabular-nums, weight 600, letter-spacing -0.01em. Each KPI gets a
small grey delta line (↑ 6 vs last week).db-head (uppercase
12px label-grey) + db-row rows. 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.Source: Notion API · workspace <workspace_name>) and connector slug.Wire these in a single <script> block at the bottom of index.html:
init() runs refresh({silent: true}) 600ms after mount — the
"refresh on open" semantic.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 in assets/template.html
(tweenText() + .flash + .db-row.changed + .feed-row.new); pass
the prev snapshot into renderKpi(prev) and the changed-row id into
renderRows(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.stale_after_seconds without a successful refresh, swap the
pill to amber Stale · <ago>.POST /api/od/connectors/poll with a JSON body
{ project, read }, where project is the id from
<meta name="od:project"> and read is one of the bindings[*].reads[].id
values declared in connectors.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. See
references/connectors.md for 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.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.
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 — when inputs.connector !== mock. See
references/connectors.md for the schema.