From design-ops
Generates static, responsive HTML dashboards from DESIGN-OPS data via Notion, Linear, Figma, GitHub, Vercel. Uses Tailwind CSS, Chart.js from CDNs for zero-dependency browser output.
npx claudepluginhub opensesh/design-ops --plugin design-opsThis skill uses the workspace's default tool permissions.
Generate static HTML dashboards from DESIGN-OPS data.
Generates self-contained interactive HTML dashboards with KPI cards, charts, filters, and tables from queries, CSVs, or samples for reports and monitoring.
Produces interactive HTML dashboards, SVG charts, and Mermaid diagrams from design system audit findings, session history, or health data. Use to visualize trends and statuses post-audit.
Builds and tests Vizro dashboards from design specs by copying example app, fetching model schemas, and running Playwright tests. For Python-based dashboard implementation.
Share bugs, ideas, or general feedback.
Generate static HTML dashboards from DESIGN-OPS data.
This skill provides instructions for generating polished, responsive HTML dashboards that work in any browser without build tools. It uses Tailwind CSS (CDN), Chart.js for visualizations, and Lucide Icons — all loaded from CDNs for zero-dependency output.
Use this skill when:
/design-ops:dashboard-html1. Parse Arguments → Determine pillar and timeframe
2. Load Config → Read ~/.claude/design-ops-config.yaml
3. Fetch Data → Call MCP tools for each connected service
4. Select Components → Use mapping.yaml rules
5. Assemble Template → Populate base.html with content
6. Output & Present → Write file and open in browser
/design-ops:dashboard-html → all pillars, daily
/design-ops:dashboard-html ops → operations, daily
/design-ops:dashboard-html weekly → all pillars, weekly
/design-ops:dashboard-html ops weekly → operations, weekly
Detection rules:
~/.claude/design-ops-config.yaml~/.claude/design-ops/brand.cssFor each enabled pillar and connected tool:
Operations:
notion → Query tasks, pagesgoogle_workspace → Calendar events, emailslinear → Issues, projectsDesign:
github → Commits, PRs, reposfigma → File activity, versionsAnalytics:
dubco → Link clicks, top linksgoogle_analytics → Sessions, pageviewsvercel → DeploymentsHandle errors gracefully — store error state for empty-state component.
Use templates/dashboard-html/mapping.yaml rules:
| Data Type | Component |
|---|---|
| Single number | stat-card |
| Array with timestamps | list-activity |
| Array of {label, value} ≤8 items | bar-chart |
| Array of {label, value} >8 items | table-simple |
| Error/missing data | empty-state |
templates/dashboard-html/base.html~/.claude/design-ops/brand.css exists → use itbrands/open-session/brand.csslayouts/single-pillar.htmllayouts/all-pillars.htmlTemplate Variables:
{{TITLE}} → "Daily Dashboard" / "Weekly Summary"
{{SUBTITLE}} → "Monday, April 21, 2026"
{{TIMESTAMP}} → "2026-04-21 10:30 AM"
{{BRAND_CSS}} → Contents of brand.css file
{{CONTENT}} → Assembled layout with components
{{DASHBOARD_DATA}} → JSON object with chart configurations
~/.claude/design-ops/ directory exists~/.claude/design-ops/dashboard-history/dashboard-YYYY-MM-DD.html
~/.claude/design-ops/dashboard.htmlopen ~/.claude/design-ops/dashboard.htmlxdg-open ~/.claude/design-ops/dashboard.htmlstart ~/.claude/design-ops/dashboard.html{
"type": "single_metric",
"id": "tasks-due",
"title": "Tasks Due",
"value": "12",
"trend": "+3",
"trend_direction": "up",
"icon": "check-square"
}
{
"type": "categorical",
"id": "top-links",
"title": "Top Links",
"labels": ["Link A", "Link B", "Link C"],
"values": [150, 89, 45]
}
Chart config for dashboardData.charts:
{
"id": "chart-top-links",
"type": "bar",
"labels": ["Link A", "Link B", "Link C"],
"data": [150, 89, 45]
}
{
"type": "activity_list",
"id": "recent-commits",
"title": "Recent Commits",
"items": [
{
"title": "feat: add dashboard",
"subtitle": "Alex · main",
"time": "2h ago",
"icon": "git-commit"
}
]
}
{
"type": "error",
"id": "google-oauth",
"error_type": "oauth_required",
"icon": "key",
"icon_color": "warning",
"title": "Google Workspace",
"message": "OAuth Required",
"guidance": "Run any Google command to complete authorization."
}
Always show actionable guidance for errors:
| Error Type | Icon | Message Template |
|---|---|---|
oauth_required | key | "Run any {{TOOL}} command to complete authorization." |
api_key_missing | key | "Set {{ENV_VAR}} in your environment." |
not_configured | settings | "Run /design-ops:configure to set up {{TOOL}}." |
connection_error | wifi-off | "Check your network and try again." |
no_data | inbox | "No {{DATA_TYPE}} found for this timeframe." |
After generating, report:
Dashboard generated successfully.
**File:** ~/.claude/design-ops/dashboard.html
**Timeframe:** Daily
**Pillars:** Operations, Design, Analytics
**Components:** 8 cards, 2 charts, 3 activity lists
Opening in browser...
/design-ops:dashboard - Terminal markdown output/design-ops:configure brand - Customize brandingtemplates/dashboard-html/mapping.yaml - Component selection rulesVersion: 1.0