design
Use when styling Fusionaly UI components, pages, or charts - applies the Fusionaly design system with black/white palette and brand accents
Best use case
design is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Use when styling Fusionaly UI components, pages, or charts - applies the Fusionaly design system with black/white palette and brand accents
Teams using design should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/design/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How design Compares
| Feature / Agent | design | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Use when styling Fusionaly UI components, pages, or charts - applies the Fusionaly design system with black/white palette and brand accents
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Fusionaly Design System
## Philosophy
Clean, minimal, professional. Black and white foundation with purposeful color accents. No gray noise - use black with opacity for subtlety.
## Color Palette
### Primary
| Name | Value | Usage |
|------|-------|-------|
| **Black** | `#000000` | Text, borders, buttons, backgrounds |
| **White** | `#FFFFFF` | Backgrounds, text on dark |
### Brand Accents
| Name | Value | Tailwind | Usage |
|------|-------|----------|-------|
| **Green** | `#00D678` | `text-[#00D678]` | Success, growth, positive metrics, SQL syntax |
| **Cyan** | `#00D1FF` | `text-[#00D1FF]` | Links, charts, data visualization |
| **Orange** | `#FF7733` | `text-[#FF7733]` | Warnings, alerts, third chart color |
### Opacity Scale (NO gray-* classes)
| Instead of | Use |
|------------|-----|
| `bg-gray-50` | `bg-black/5` |
| `bg-gray-100` | `bg-black/5` or `bg-black/10` |
| `bg-gray-200` | `bg-black/10` |
| `text-gray-400` | `text-black/40` |
| `text-gray-500` | `text-black/50` or `text-black/60` |
| `text-gray-600` | `text-black/60` or `text-black/70` |
| `text-gray-700` | `text-black/70` or `text-black/80` |
| `border-gray-200` | `border-black/10` |
| `border-gray-300` | `border-black/20` |
| `hover:bg-gray-50` | `hover:bg-black/5` |
## Components
### Buttons
```tsx
// Primary (solid black)
<Button className="bg-black text-white hover:bg-black/80">
Action
</Button>
// Secondary (outline)
<Button variant="outline" className="border-black text-black hover:bg-black hover:text-white">
Secondary
</Button>
// Ghost
<Button variant="ghost" className="text-black/60 hover:text-black hover:bg-black/5">
Ghost
</Button>
// Disabled
<Button disabled className="bg-black/20 text-black/40 cursor-not-allowed">
Disabled
</Button>
```
### Cards
```tsx
// Standard card
<div className="bg-white border border-black rounded-lg overflow-hidden">
<div className="px-6 py-4 border-b border-black/10">
<h3 className="text-base font-medium text-black">Title</h3>
</div>
<div className="p-4">
Content
</div>
</div>
```
### Form Inputs
```tsx
<input
className="w-full border border-black/20 rounded-lg px-3 py-2 text-sm
focus:outline-none focus:border-black focus:ring-1 focus:ring-black
disabled:bg-black/5 disabled:cursor-not-allowed"
/>
```
### Code Blocks (SQL)
```tsx
// SQL display - green on black
<pre className="bg-black rounded p-3 overflow-x-auto font-mono text-xs leading-relaxed text-[#00D678] whitespace-pre-wrap">
{sql}
</pre>
```
### Tables
```tsx
<table className="w-full border-collapse">
<thead>
<tr className="border-b border-black/10 bg-black/5">
<th className="py-2 px-3 text-left text-xs font-medium text-black/60 uppercase tracking-wider">
Header
</th>
</tr>
</thead>
<tbody className="bg-white divide-y divide-black/10">
<tr className="hover:bg-black/5">
<td className="py-2 px-3 text-sm">Cell</td>
</tr>
</tbody>
</table>
```
### Collapsible Details
```tsx
<details className="group">
<summary className="cursor-pointer text-xs text-black/50 hover:text-black flex items-center font-medium outline-none">
<svg className="w-3 h-3 mr-1.5 group-open:rotate-90 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
</svg>
View Details
</summary>
<div className="mt-3 p-3 bg-black/5 rounded-lg">
Content
</div>
</details>
```
## Charts
### Color Sequence
```tsx
const CHART_COLORS = ["#00D1FF", "#00D678", "#FF7733"];
const getDynamicColor = (index: number): string => {
return CHART_COLORS[index % CHART_COLORS.length];
};
```
### Recharts Styling
```tsx
<BarChart data={data}>
<CartesianGrid strokeDasharray="3 3" opacity={0.4} />
<XAxis
tick={{ fill: "#374151", fontSize: 10 }}
/>
<YAxis
tick={{ fill: "#374151", fontSize: 10 }}
allowDecimals={false}
/>
<Tooltip
contentStyle={{
backgroundColor: "#FFFFFF",
border: "1px solid #E5E7EB",
borderRadius: "6px",
boxShadow: "0px 4px 12px rgba(0, 0, 0, 0.1)",
}}
/>
<Bar dataKey="value" fill="#00D678" />
</BarChart>
```
### Vega-Lite Defaults
```json
{
"config": {
"axis": {
"labelColor": "#374151",
"titleColor": "#111827"
},
"legend": {
"labelColor": "#374151"
}
}
}
```
## Model Selector Pattern
```tsx
// Three-option toggle for AI models
const AI_MODELS = [
{ id: "gpt-4.1", label: "Fast", icon: Zap },
{ id: "gpt-5.2", label: "Smart", icon: Sparkles },
{ id: "gpt-5.2-thinking", label: "Deep", icon: Brain },
];
<div className="flex items-center gap-1 p-0.5 bg-black/5 rounded-lg w-fit">
{AI_MODELS.map((m) => (
<button
key={m.id}
className={cn(
"flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded-md transition-all",
isSelected
? "bg-white text-black shadow-sm"
: "text-black/60 hover:text-black",
disabled && "opacity-50 cursor-not-allowed"
)}
>
<Icon className="h-3 w-3" />
<span>{label}</span>
</button>
))}
</div>
```
## Chip/Tag Buttons
```tsx
// Example question chips
<button className="text-xs px-3 py-1.5 bg-black text-white hover:bg-black/80 rounded transition-colors">
Example
</button>
// Follow-up suggestion chips
<button className="text-xs px-3 py-1.5 border border-black/20 text-black hover:border-black hover:bg-black/5 rounded transition-colors">
Suggestion
</button>
```
## Typography
| Element | Classes |
|---------|---------|
| Page title | `text-2xl font-bold text-black` |
| Section header | `text-sm font-medium text-black/70 uppercase tracking-wide` |
| Card title | `text-base font-medium text-black` |
| Body text | `text-sm text-black` |
| Muted text | `text-sm text-black/60` |
| Small muted | `text-xs text-black/50` |
## Icons
Use Lucide React icons. Size conventions:
| Context | Size |
|---------|------|
| Button inline | `h-3.5 w-3.5` |
| Action button | `h-4 w-4` |
| Section header | `h-5 w-5` or `h-6 w-6` |
## Spacing
- Card padding: `px-6 py-4` (header), `p-4` or `p-6` (content)
- Section gaps: `gap-4` or `gap-6`
- Inline element gaps: `gap-1`, `gap-1.5`, `gap-2`
## Don'ts
- No `gray-*` classes - use `black/*` opacity
- No colored backgrounds for cards - use white with black border
- No gradients
- No shadows except subtle on selected states (`shadow-sm`)
- No decorative colors - accents are functionalRelated Skills
tech
Use when writing or reviewing Go code in fusionaly-oss — adding routes, handlers, domain contexts, background jobs, the manager CLI, wiring the app, or writing tests. Covers the cartridge framework, matcha for the manager, Phoenix Contexts, lifecycle/shutdown, and the test conventions.
qa
Use after code changes, before releases, or when testing features - runs the right level of QA based on what changed
fusionaly
Use when user asks about website analytics, traffic, visitors, page views, referrers, or mentions "fusionaly". Queries Fusionaly analytics via SQL API.
fusionaly-deploy
Use ONLY when explicitly invoked. Installs Fusionaly on a server you can reach over SSH with a key. Optionally provisions a new Hetzner server or sets up Cloudflare DNS.
design-system
Use this skill to generate or audit design systems, check visual consistency, and review PRs that touch styling.
liquid-glass-design
iOS 26 液态玻璃设计系统 — 适用于 SwiftUI、UIKit 和 WidgetKit 的动态玻璃材质,具有模糊、反射和交互式变形效果。
api-design
REST API design patterns including resource naming, status codes, pagination, filtering, error responses, versioning, and rate limiting for production APIs.
mobile-design
(Mobile-First · Touch-First · Platform-Respectful)
kpi-dashboard-design
Comprehensive patterns for designing effective Key Performance Indicator (KPI) dashboards that drive business decisions.
game-design
Game design principles. GDD structure, balancing, player psychology, progression.
frontend-design
You are a frontend designer-engineer, not a layout generator.
event-store-design
Design and implement event stores for event-sourced systems. Use when building event sourcing infrastructure, choosing event store technologies, or implementing event persistence patterns.