Dashboard Creator
mhattingpete/claude-skills-marketplace
Create HTML dashboards with KPI metric cards, bar/pie/line charts, progress indicators, and data visualizations.
Creates comprehensive dashboard and analytics interfaces that combine data visualization, KPI cards, real-time updates, and interactive layouts.
$ npx skills add ancoleman/ai-design-components --skill creating-dashboards -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ancoleman/ai-design-components creating-dashboards --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/creating-dashboards .claude/skills/creating-dashboards && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "creating-dashboards" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/creating-dashboards into .claude/skills/creating-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-dashboards", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ancoleman/ai-design-components/tree/main/skills/creating-dashboardsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ancoleman/ai-design-components --skill creating-dashboards -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ancoleman/ai-design-components creating-dashboards --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/creating-dashboards .agents/skills/creating-dashboards && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "creating-dashboards" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/creating-dashboards into .agents/skills/creating-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-dashboards", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ancoleman/ai-design-components --skill creating-dashboards -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ancoleman/ai-design-components creating-dashboards --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/creating-dashboards .cursor/skills/creating-dashboards && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "creating-dashboards" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/creating-dashboards into .cursor/skills/creating-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-dashboards", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ancoleman/ai-design-components.git --path skills/creating-dashboards--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ancoleman/ai-design-components --skill creating-dashboards -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ancoleman/ai-design-components creating-dashboards --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/creating-dashboards .gemini/skills/creating-dashboards && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "creating-dashboards" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/creating-dashboards into .gemini/skills/creating-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-dashboards", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ancoleman/ai-design-components creating-dashboardsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ancoleman/ai-design-components --skill creating-dashboards -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/creating-dashboards .github/skills/creating-dashboards && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "creating-dashboards" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/creating-dashboards into .github/skills/creating-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-dashboards", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ancoleman/ai-design-components --skill creating-dashboards -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ancoleman/ai-design-components creating-dashboards --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ancoleman/ai-design-components.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/creating-dashboards .opencode/skills/creating-dashboards && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "creating-dashboards" agent skill from https://github.com/ancoleman/ai-design-components/tree/main/skills/creating-dashboards into .opencode/skills/creating-dashboards/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-dashboards", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
creating-dashboardsCreates comprehensive dashboard and analytics interfaces that combine data visualization, KPI cards, real-time updates, and interactive layouts.
Creating Dashboards is an agent skill from ancoleman/ai-design-components. Creates comprehensive dashboard and analytics interfaces that combine data visualization, KPI cards, real-time updates, and interactive layouts. Use this skill when building business intelligence dashboards, monitoring systems, executive reports, or any interface that requires multiple coordinated data displays with filters, metrics, and visualizations working together.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 27 other files, including scripts, reference files and assets (for example `assets/dashboard-templates.json`, `assets/grid-layouts.json` and `assets/kpi-formats.json`).
It sits in Data & Analytics, covering OKRs and executive reporting, Data visualization and Realtime and WebSockets. The repository describes itself as: Comprehensive UI/UX and Backend component design skills for AI-assisted development with Claude. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 76551b7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
npmpythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Creating Dashboards loads about 3.5k tokens when it runs, and up to ~30k if it reads all its reference files. Until then it costs about 98 tokens; SKILL.md has 733 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from ancoleman/ai-design-components at commit 76551b7, republished under its MIT licence (© ancoleman). 733 words, ~3,459 tokens.
.claude/skills/creating-dashboards/SKILL.md (or your agent's skills folder). This skill also uses 24 other files; get the full folder from GitHub.This skill enables the creation of sophisticated dashboard interfaces that aggregate and present data through coordinated widgets including KPI cards, charts, tables, and filters. Dashboards serve as centralized command centers for data-driven decision making, combining multiple component types from other skills (data-viz, tables, design-tokens) into unified analytics experiences with real-time updates, responsive layouts, and interactive filtering.
Activate this skill when:
┌────────────────────────────┐
│ Revenue (This Month) │ ← Label with time period
│ │
│ $1,245,832 │ ← Big number (primary metric)
│ ↑ 15.3% vs last month │ ← Trend indicator with comparison
│ ▂▃▅▆▇█ (sparkline) │ ← Mini visualization
└────────────────────────────┘Fixed Layout: Designer-defined placement, consistent across users Customizable Grid: User drag-and-drop, resizable widgets, saved layouts Template-Based: Pre-built patterns, industry-specific starting points
For Quick Analytics Dashboard → Use Tremor Pre-built KPI cards, charts, and tables with minimal code:
npm install @tremor/reactFor Customizable Dashboard → Use react-grid-layout Drag-and-drop, resizable widgets, user-defined layouts:
npm install react-grid-layoutImplement filter context for cross-widget coordination:
// Dashboard context for shared filters
const DashboardContext = createContext({
filters: { dateRange: null, categories: [] },
setFilters: () => {},
refreshInterval: 30000
});
// Wrap dashboard with provider
<DashboardContext.Provider value={dashboardState}>
<FilterPanel />
<WidgetGrid />
</DashboardContext.Provider>Parallel Loading: Fetch all widget data simultaneously Lazy Loading: Load visible widgets first, others on scroll Cached Updates: Serve from cache while fetching fresh data
Server-Sent Events (Recommended for Dashboards):
const eventSource = new EventSource('/api/dashboard/stream');
eventSource.onmessage = (event) => {
const update = JSON.parse(event.data);
updateWidget(update.widgetId, update.data);
};Define breakpoints for different screen sizes:
import { Card, Grid, Metric, Text, BadgeDelta, AreaChart } from '@tremor/react';
function QuickDashboard({ data }) {
return (
<Grid numItems={1} numItemsSm={2} numItemsLg={4} className="gap-4">
{/* KPI Cards */}
<Card>
<Text>Total Revenue</Text>
<Metric>$45,231.89</Metric>
<BadgeDelta deltaType="increase">+12.5%</BadgeDelta>
</Card>
<Card>
<Text>Active Users</Text>
<Metric>1,234</Metric>
<BadgeDelta deltaType="decrease">-2.3%</BadgeDelta>
</Card>
{/* Chart Widget */}
<Card className="lg:col-span-2">
<Text>Revenue Trend</Text>
<AreaChart
data={data.revenue}
index="date"
categories={["revenue"]}
valueFormatter={(value) => `$${value.toLocaleString()}`}
/>
</Card>
</Grid>
);
}For complete implementation, see examples/tremor-dashboard.tsx.
import { Responsive, WidthProvider } from 'react-grid-layout';
import 'react-grid-layout/css/styles.css';
const ResponsiveGridLayout = WidthProvider(Responsive);
function CustomizableDashboard() {
const [layouts, setLayouts] = useState(getStoredLayouts());
return (
<ResponsiveGridLayout
layouts={layouts}
breakpoints={{ lg: 1200, md: 996, sm: 768 }}
cols={{ lg: 12, md: 10, sm: 6 }}
rowHeight={60}
onLayoutChange={(layout, layouts) => {
setLayouts(layouts);
localStorage.setItem('dashboardLayout', JSON.stringify(layouts));
}}
draggableHandle=".widget-header"
>
<div key="kpi1">
<KPIWidget data={kpiData} />
</div>
<div key="chart1">
<ChartWidget data={chartData} />
</div>
<div key="table1">
<TableWidget data={tableData} />
</div>
</ResponsiveGridLayout>
);
}For full example with widget catalog, see examples/customizable-dashboard.tsx.
Best for unidirectional updates from server to dashboard:
function useSSEUpdates(endpoint) {
useEffect(() => {
const eventSource = new EventSource(endpoint);
eventSource.onmessage = (event) => {
const update = JSON.parse(event.data);
// Update specific widget or all widgets
dispatch({ type: 'UPDATE_WIDGET', payload: update });
};
return () => eventSource.close();
}, [endpoint]);
}Use when dashboard needs to send commands back to server:
const ws = new WebSocket('ws://localhost:3000/dashboard');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
updateDashboard(data);
};
// Send filter changes to server
ws.send(JSON.stringify({ type: 'FILTER_CHANGE', filters }));For environments without WebSocket/SSE support:
function useSmartPolling(fetchData, interval = 30000) {
const [isPaused, setIsPaused] = useState(false);
useEffect(() => {
if (isPaused || document.hidden) return;
const timer = setInterval(fetchData, interval);
return () => clearInterval(timer);
}, [isPaused, interval]);
// Pause when tab inactive
useEffect(() => {
const handleVisibilityChange = () => {
setIsPaused(document.hidden);
};
document.addEventListener('visibilitychange', handleVisibilityChange);
return () => document.removeEventListener('visibilitychange', handleVisibilityChange);
}, []);
}For detailed patterns including error handling and reconnection, see references/real-time-updates.md.
function DashboardGrid({ widgets }) {
const [visibleWidgets, setVisibleWidgets] = useState(new Set());
return widgets.map(widget => (
<LazyLoad
key={widget.id}
height={widget.height}
offset={100}
once
placeholder={<WidgetSkeleton />}
>
<Widget {...widget} />
</LazyLoad>
));
}// Fetch all widget data simultaneously
const loadDashboard = async () => {
const [kpis, charts, tables] = await Promise.all([
fetchKPIs(),
fetchChartData(),
fetchTableData()
]);
return { kpis, charts, tables };
};function CachedWidget({ id, fetcher, ttl = 60000 }) {
const cache = useRef({ data: null, timestamp: 0 });
const getData = async () => {
const now = Date.now();
if (cache.current.data && now - cache.current.timestamp < ttl) {
return cache.current.data;
}
const fresh = await fetcher();
cache.current = { data: fresh, timestamp: now };
return fresh;
};
// Use cached data while fetching fresh
return <Widget data={cache.current.data} onRefresh={getData} />;
}To analyze and optimize dashboard performance, run:
python scripts/optimize-dashboard-performance.py --analyze dashboard-config.jsonReference the data-viz skill for chart widgets:
// Use charts from data-viz skill
import { createChart } from '../data-viz/chart-factory';
const revenueChart = createChart('area', {
data: revenueData,
xAxis: 'date',
yAxis: 'revenue',
theme: dashboardTheme
});Reference the tables skill for data grids:
// Use advanced tables from tables skill
import { DataGrid } from '../tables/data-grid';
<DataGrid
data={transactions}
columns={columnDefs}
pagination={true}
sorting={true}
filtering={true}
/>Use the design-tokens skill for consistent theming:
// Dashboard-specific tokens from design-tokens skill
const dashboardTokens = {
'--dashboard-bg': 'var(--color-bg-secondary)',
'--widget-bg': 'var(--color-white)',
'--widget-shadow': 'var(--shadow-lg)',
'--kpi-value-size': 'var(--font-size-4xl)',
'--kpi-trend-positive': 'var(--color-success)',
'--kpi-trend-negative': 'var(--color-error)'
};Optionally use the forms skill for filter controls:
// Advanced filter inputs from forms skill
import { DateRangePicker, MultiSelect } from '../forms/inputs';
<FilterPanel>
<DateRangePicker onChange={handleDateChange} />
<MultiSelect options={categories} onChange={handleCategoryFilter} />
</FilterPanel>scripts/generate-dashboard-layout.py - Generate responsive grid configurationsscripts/calculate-kpi-metrics.py - Calculate trends, comparisons, sparklinesscripts/validate-widget-config.py - Validate widget and filter configurationsscripts/optimize-dashboard-performance.py - Analyze and optimize performancescripts/export-dashboard.py - Export dashboards to various formatsRun scripts directly without loading into context:
python scripts/calculate-kpi-metrics.py --data metrics.json --period monthlyreferences/kpi-card-patterns.md - KPI card design patterns and variationsreferences/layout-strategies.md - Grid systems and responsive approachesreferences/real-time-updates.md - WebSocket, SSE, and polling implementationsreferences/filter-coordination.md - Cross-widget filter synchronizationreferences/performance-optimization.md - Advanced optimization techniquesreferences/library-guide.md - Detailed Tremor and react-grid-layout guidesexamples/sales-dashboard.tsx - Full sales analytics dashboardexamples/monitoring-dashboard.tsx - Real-time monitoring with alertsexamples/executive-dashboard.tsx - Polished executive reportingexamples/customizable-dashboard.tsx - Drag-and-drop with persistenceexamples/tremor-dashboard.tsx - Quick Tremor implementationexamples/filter-context.tsx - Global filter coordinationassets/dashboard-templates.json - Pre-built dashboard layoutsassets/widget-library.json - Widget catalog and configurationsassets/grid-layouts.json - Responsive grid configurationsassets/kpi-formats.json - Number formatting rulesassets/theme-tokens.json - Dashboard-specific design tokensFor specific patterns and detailed implementations, explore the bundled resources referenced above.
© ancoleman, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 24 other files (scripts, references, assets) in skills/creating-dashboards of ancoleman/ai-design-components.
Open the folder on GitHubat commit 76551b7
Creating Dashboards next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Creating Dashboards this skillancoleman/ai-design-components | 526 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Dashboard Creatormhattingpete/claude-skills-marketplace | 680 | — | ~489 | Automated safety check: Pass | Apache-2.0 | |
| Malloy Chartsmalloydata/publisher | 116 | — | ~4.6k | Automated safety check: Pass | MIT | |
| Mvizmatsonj/mviz | 226 | — | ~11k | Automated safety check: Pass | None | |
| SVG DashboardSCStelz/security-investigator | 249 | — | ~5.7k | Automated safety check: Pass | MIT | |
| Tuftearef-vc/tufte-claude-skill | 306 | — | ~1.3k | Automated safety check: Pass | MIT |
mhattingpete/claude-skills-marketplace
Create HTML dashboards with KPI metric cards, bar/pie/line charts, progress indicators, and data visualizations.
malloydata/publisher
Read before choosing a chart or adding a chart annotation. An agent skill from malloydata/publisher.
matsonj/mviz
A chart & report builder for AI. An agent skill from matsonj/mviz.
SCStelz/security-investigator
A skill your agent uses when asked to generate SVG data visualization dashboards from investigation data or skill reports.
aref-vc/tufte-claude-skill
Apply Edward Tufte's principles to any data visualization, chart, dashboard, or infographic.
QwenLM/qwen-code-examples
Build full-stack dashboard applications using React/Next.js + shadcn/ui + Tailwind CSS + Recharts + Express with customizable data sources.
ancoleman/ai-design-components
Builds AI chat interfaces and conversational UI with streaming responses, context management, and multi-modal support.
ancoleman/ai-design-components
Builds form components and data collection interfaces including contact forms, registration flows, checkout processes, surveys, and settings pages.
ancoleman/ai-design-components
Builds tables and data grids for displaying tabular information, from simple HTML tables to complex enterprise data grids.
ancoleman/ai-design-components
Designs layout systems and responsive interfaces including grid systems, flexbox patterns, sidebar layouts, and responsive breakpoints.
ancoleman/ai-design-components
Displays chronological events and activity through timelines, activity feeds, Gantt charts, and calendar interfaces.
ancoleman/ai-design-components
Implements onboarding and help systems including product tours, interactive tutorials, tooltips, checklists, help panels, and progressive disclosure patterns.
Creates comprehensive dashboard and analytics interfaces that combine data visualization, KPI cards, real-time updates, and interactive layouts. Creating Dashboards is an agent skill from ancoleman/ai-design-components. Creates comprehensive dashboard and analytics interfaces that combine data visualization, KPI cards, real-time updates, and interactive layouts.
Creating Dashboards fits situations like: building business intelligence dashboards; monitoring systems; executive reports; any interface that requires multiple coordinated data displays with filters.
Run `npx skills add ancoleman/ai-design-components --skill creating-dashboards -a claude-code`. Or copy the skill folder (skills/creating-dashboards in ancoleman/ai-design-components) into .claude/skills/creating-dashboards in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ancoleman/ai-design-components --skill creating-dashboards -a codex`. Or copy the skill folder (skills/creating-dashboards in ancoleman/ai-design-components) into .agents/skills/creating-dashboards in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ancoleman/ai-design-components --skill creating-dashboards -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/creating-dashboards, .gemini/skills/creating-dashboards, .github/skills/creating-dashboards and .opencode/skills/creating-dashboards in your project.
Going by SKILL.md and its folder, Creating Dashboards needs the command-line tools its instructions call (npm and python). Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Creating Dashboards is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 27k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Creating Dashboards: Dashboard Creator (mhattingpete/claude-skills-marketplace, 680 stars), Malloy Charts (malloydata/publisher, 116 stars), Mviz (matsonj/mviz, 226 stars) and SVG Dashboard (SCStelz/security-investigator, 249 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ancoleman (a GitHub user) maintains it in ancoleman/ai-design-components, which has 526 GitHub stars. The repository holds 75 skills in this directory. The repository was last updated on December 11, 2025.
Source: ancoleman/ai-design-components on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.