home / skills / zhanghandong / makepad-skills / makepad-router
This skill routes Makepad questions to the appropriate sub-skills, enabling fast, accurate answers across widgets, layout, events, and shaders.
npx playbooks add skill zhanghandong/makepad-skills --skill makepad-routerReview the files below or copy the command above to add this skill to your agents.
---
name: makepad-router
description: "CRITICAL: Use for ALL Makepad/Robius questions including widgets, layout, events, and shaders.
Triggers on: makepad, robius, live_design, app_main, Widget, View, Button, Label, Image, TextInput,
ScrollView, RoundedView, SolidView, PortalList, Markdown, Html, TextFlow,
layout, Flow, Walk, padding, margin, width, height, Fit, Fill, align, spacing,
event, action, Hit, FingerDown, FingerUp, KeyDown, handle_event, click, tap,
animator, animation, state, transition, hover, pressed, ease,
shader, draw_bg, draw_text, Sdf2d, pixel, gradient, glow, shadow,
font, text_style, font_size, glyph, typography,
tokio, async, spawn, submit_async, SignalToUI, post_action,
apply_over, TextOrImage, modal, collapsible, drag drop,
AppState, persistence, theme, Scope,
deploy, package, APK, IPA, WASM, cargo makepad,
makepad widget, makepad 组件, makepad 按钮, makepad 布局, makepad 事件, makepad 动画, makepad 着色器,
创建组件, 自定义组件, 开发应用, 居中, 对齐, 点击事件, 悬停效果, 渐变, 阴影, 字体大小"
globs: ["**/live_design!*", "**/*.rs"]
---
# Makepad Question Router
> **Version:** 2.0.0 | **Last Updated:** 2026-01-21
## INSTRUCTIONS FOR CLAUDE
When this skill is triggered, you MUST load the appropriate sub-skill(s) based on the question:
### Routing Table
| Keywords | Load Skill |
|----------|------------|
| `live_design!`, `app_main!`, getting started, app structure | **makepad-basics** |
| DSL, inheritance, `<Widget>`, `Foo = { }` | **makepad-dsl** |
| layout, Flow, Walk, padding, width, height, center, align | **makepad-layout** |
| View, Button, Label, Image, TextInput, widget, Markdown, Html | **makepad-widgets** |
| event, action, Hit, FingerDown, handle_event, click | **makepad-event-action** |
| animator, state, transition, hover, pressed | **makepad-animation** |
| shader, draw_bg, Sdf2d, gradient, glow, shadow | **makepad-shaders** |
| font, text_style, font_size, glyph | **makepad-font** |
| platform, macOS, Android, iOS, WASM | **makepad-platform** |
| tokio, async, spawn, submit_async | **robius-app-architecture** |
| apply_over, modal, collapsible, pageflip | **robius-widget-patterns** |
| custom action, MatchEvent, post_action | **robius-event-action** |
| AppState, persistence, theme switch | **robius-state-management** |
| deploy, package, APK, IPA | **makepad-deployment** |
| troubleshoot, error, debug | **makepad-reference** |
### Context Bundle Loading
For complex tasks, load multiple skills:
| Context | Load These Skills |
|---------|-------------------|
| **Create widget/component** | makepad-widgets, makepad-dsl, makepad-layout, makepad-animation, makepad-shaders, makepad-event-action |
| **Build full app** | makepad-basics, makepad-dsl, makepad-layout, makepad-widgets, makepad-event-action, robius-app-architecture |
| **UI design** | makepad-dsl, makepad-layout, makepad-widgets, makepad-animation, makepad-shaders |
| **Production patterns** | robius-app-architecture, robius-widget-patterns, robius-state-management |
### Skill Dependencies
When loading a skill, also load its dependencies:
| Skill | Also Load |
|-------|-----------|
| makepad-widgets | makepad-layout, makepad-dsl |
| makepad-animation | makepad-shaders |
| makepad-shaders | makepad-widgets |
| robius-widget-patterns | makepad-widgets, makepad-layout |
### Example Workflow
```
User: "How do I create a custom button with hover animation?"
Analysis:
1. Keywords: custom, button, hover, animation
2. Context: Widget creation
3. Load: makepad-widgets, makepad-animation, makepad-shaders, makepad-event-action
Answer using patterns from all loaded skills.
```
## Default Project Settings
When creating Makepad projects:
```toml
[package]
edition = "2024"
[dependencies]
makepad-widgets = { git = "https://github.com/makepad/makepad", branch = "dev" }
[features]
default = []
nightly = ["makepad-widgets/nightly"]
```
## Key Patterns Quick Reference
### Widget Definition
```rust
#[derive(Live, LiveHook, Widget)]
pub struct MyWidget {
#[deref] view: View,
#[live] property: f64,
#[rust] state: State,
#[animator] animator: Animator,
}
```
### Async Pattern (Robius)
```rust
// UI -> Async
submit_async_request(MyRequest { ... });
// Async -> UI
Cx::post_action(MyAction { ... });
SignalToUI::set_ui_signal();
```
This skill routes Makepad and Robius questions to the exact sub-skill(s) needed to produce focused, accurate answers. It inspects keywords and context in the user query and loads combinations of domain skills (layout, widgets, shaders, async patterns, deployment, etc.) so responses are precise and actionable. Use this skill as the single entry point for any Makepad/Robius topic.
The router scans the query for trigger tokens (widget names, layout terms, events, animation, shader, async, deploy, etc.) and matches them to a routing table that maps keywords to specific sub-skills. For complex requests it loads multiple skills together and enforces declared dependencies so conceptual coverage is complete (for example widget + layout + animation + shaders). It also supplies default project settings and common code patterns when creating new projects or components.
What tokens trigger this router?
Common tokens include widget and layout names (Button, View, Flow), event and animation terms (FingerDown, handle_event, animator), shader and text terms (Sdf2d, draw_bg, font_size), async and platform terms (tokio, submit_async, APK, WASM).
How are multiple skills combined?
The router consults a context bundle table and loads all relevant skills and their declared dependencies to produce a unified answer covering UI, behavior, async flows, and deployment as needed.