<!-- markdownlint-disable MD041 -->
name: frontend-design
Best use case
<!-- markdownlint-disable MD041 --> is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
name: frontend-design
Teams using <!-- markdownlint-disable MD041 --> 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/frontend-design/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How <!-- markdownlint-disable MD041 --> Compares
| Feature / Agent | <!-- markdownlint-disable MD041 --> | 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?
name: frontend-design
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
## <!-- markdownlint-disable MD041 -->
name: frontend-design
description: Create distinctive, production-grade Quickshell (QML) widgets and interfaces for the user's desktop environment. Specialized for the @quickshell configuration, using existing components, theme tokens, and services. Generates creative, polished code and UI design that avoids generic AI aesthetics.
license: Complete terms in LICENSE.txt
---
# Frontend Design Skill
This skill guides the creation of high-quality QML interfaces for Quickshell, specifically tailored to the `@quickshell/.config/quickshell/` configuration. It combines technical Quickshell expertise with high-end aesthetic design thinking.
## Design Thinking
Before coding, commit to a BOLD aesthetic direction that fits the "Obelisk" shell but pushes it further:
- **Tone**: Pick a flavor: brutally minimal, retro-futuristic, refined luxury, industrial/utilitarian, or organic.
- **Differentiation**: What is the one thing that makes this widget UNFORGETTABLE?
- **Intentionality**: Bold maximalism and refined minimalism both work; the key is executing with precision.
## Quickshell Design Principles
- **Native Integration**: Widgets must look and feel like part of the existing "Obelisk" shell.
- **Theming**: Rigorously use the `Theme` singleton (`qs.Config`) for all colors, sizes, radii, and fonts.
- **Reusability**: Use existing components from `qs.Components` (`OText`, `OButton`, `IconButton`, `OPanel`) whenever possible.
- **Reactive**: Bind properties to Services (`qs.Services`) for live data.
## Technical Foundation
Always include necessary imports:
```qml
import QtQuick
import QtQuick.Layouts
import Quickshell
import Quickshell.Wayland
import qs.Config // Theme, Settings
import qs.Components // OText, OButton, OPanel, etc.
import qs.Services // Core, SystemInfo, WM
```
### Theming Guidelines (`Theme.qml`)
- **Backgrounds**: `Theme.bgColor`, `Theme.bgElevated`, `Theme.bgElevatedAlt`
- **Accents**: `Theme.activeColor`, `Theme.onHoverColor`, `Theme.critical` (red), `Theme.warning` (orange)
- **Text**: `Theme.textActiveColor`, `Theme.textInactiveColor`
- **Spacing**: `Theme.spacingXs` to `Theme.spacingXl`
- **Radii**: `Theme.itemRadius`, `Theme.radiusMd`, `Theme.radiusLg`
## Aesthetics & Polish
- **Typography**: Stick to `Theme.fontFamily` (CaskaydiaCove) and `Theme.iconFontFamily`. Use `OText` variants for hierarchy.
- **Motion**: Use `Behavior on <property>` with `Theme.animationDuration` and `Easing.InOutQuad` for all transitions. Focus on staggered reveals and smooth width/opacity changes.
- **Visual Details**: Create depth. Use `RectangularShadow` or `MultiEffect` for subtle shadows. Use `Canvas` for custom gradient borders (see `CardStyling.qml`).
- **Avoid "AI Slop"**: No predictable layouts or generic "purple on white" color schemes. Stay true to the project's Catppuccin/Dracula/Obelisk color palettes.
## Component Usage
- **OText**: `OText { text: "Label"; bold: true; muted: true }`
- **IconButton**: For circular icon-only buttons.
- **OPanel**: For dropdowns/menus. Always provide a unique `panelNamespace`.
- **ExpandingPill**: Use for collapsible groups of buttons (like PowerMenu or Workspaces).
## New Modules
When creating a new widget:
1. Place it in `Modules/<Category>/<Name>.qml`.
2. Use `pragma ComponentBehavior: Bound`.
3. **Example Pattern**:
```qml
pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import qs.Config
import qs.Components
Rectangle {
color: Theme.bgElevated
radius: Theme.itemRadius
border.color: Theme.borderLight
border.width: 1
ColumnLayout {
anchors.fill: parent
anchors.margins: Theme.spacingMd
spacing: Theme.spacingSm
OText {
text: "Widget Title"
bold: true
size: "lg"
}
// ... content
}
}
```Related Skills
zoom-out
Tell the agent to zoom out and give broader context or a higher-level perspective. Use when you're unfamiliar with a section of code or need to understand how it fits into the bigger picture.
to-prd
Turn the current conversation context into a PRD and publish it to the project issue tracker. Use when user wants to create a PRD from the current context.
tdd
Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions "red-green-refactor", wants integration tests, or asks for test-first development.
improve-codebase-architecture
Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.
grill-with-docs
Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.
diagnose
Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says "diagnose this" / "debug this", reports a bug, says something is broken/throwing/failing, or describes a performance regression.
rulebook-skill-disable
Disable a skill in the project configuration. Removes its rules from the next AGENTS.md generation. Use to remove unwanted capabilities.
auto-permissions-review-disable
Disable the auto permissions review hook for this session. Tool calls return to normal permission prompts. Other terminal sessions are not affected.
swe-cli-skills
Senior engineer CLI expertise for AI agents — workflows, safety guardrails, gotchas, and anti-patterns across cloud, IaC, containers, databases, dev tools, and platforms
PicoClaw Fleet
Orchestrate a fleet of remote PicoClaw workers over SSH for fast, ephemeral one-shot tasks.
VibeCollab — Setup Instructions for AI Assistants
You are helping a user set up VibeCollab in their project.
raycast-extension-docs
Guidance for building, debugging, and publishing Raycast extensions using the Raycast documentation set. Use when Codex needs to create or modify Raycast extensions (React/TypeScript/Node), consult Raycast API reference or UI components, build AI extensions, handle manifest/lifecycle/preferences, troubleshoot issues, or prepare/publish extensions to the Raycast Store or Teams.