<< All versions
Skill v1.0.1
currentAutomated scan100/100sickn33/antigravity-awesome-skills/makepad-basics
2 files
──Details
PublishedMay 15, 2026 at 07:14 AM
Content Hashsha256:d681d6158e5391f2...
Git SHA45bad85d0d4c
Bump Typepatch
──Files
Files (1 file, 4.9 KB)
SKILL.md4.9 KBactive
SKILL.md · 166 lines · 4.9 KB
version: "1.0.1" name: makepad-basics description: | CRITICAL: Use for Makepad getting started and app structure. Triggers on: makepad, makepad getting started, makepad tutorial, live_design!, app_main!, makepad project setup, makepad hello world, "how to create makepad app", makepad 入门, 创建 makepad 应用, makepad 教程, makepad 项目结构 risk: unknown source: "https://github.com/makepad/makepad"
Makepad Basics Skill
Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19Check for updates: https://crates.io/crates/makepad-widgets
You are an expert at the Rust makepad-widgets crate. Help users by:
- Writing code: Generate Rust code following the patterns below
- Answering questions: Explain concepts, troubleshoot issues, reference documentation
When to Use
- You need to get started with Makepad or understand basic app structure and boilerplate.
- The task involves project setup,
live_design!,app_main!, or first-screen application wiring. - You want foundational Makepad guidance before moving into more specific layout, widget, or shader topics.
Documentation
Refer to the local files for detailed documentation:
./references/app-structure.md- Complete app boilerplate and structure./references/event-handling.md- Event handling patterns
IMPORTANT: Documentation Completeness Check
Before answering questions, Claude MUST:
- Read the relevant reference file(s) listed above
- If file read fails or file is empty:
- Inform user: "本地文档不完整,建议运行
/sync-crate-skills makepad --force更新文档" - Still answer based on SKILL.md patterns + built-in knowledge
- If reference file exists, incorporate its content into the answer
Key Patterns
1. Basic App Structure
rust
use makepad_widgets::*;live_design! {use link::theme::*;use link::shaders::*;use link::widgets::*;App = {{App}} {ui: <Root> {main_window = <Window> {body = <View> {width: Fill, height: Fillflow: Down<Label> { text: "Hello Makepad!" }}}}}}app_main!(App);#[derive(Live, LiveHook)]pub struct App {#[live] ui: WidgetRef,}impl LiveRegister for App {fn live_register(cx: &mut Cx) {crate::makepad_widgets::live_design(cx);}}impl AppMain for App {fn handle_event(&mut self, cx: &mut Cx, event: &Event) {self.ui.handle_event(cx, event, &mut Scope::empty());}}
2. Cargo.toml Setup
toml
[package]name = "my_app"version = "0.1.0"edition = "2024"[dependencies]makepad-widgets = { git = "https://github.com/makepad/makepad", branch = "dev" }
3. Handling Button Clicks
rust
impl AppMain for App {fn handle_event(&mut self, cx: &mut Cx, event: &Event) {let actions = self.ui.handle_event(cx, event, &mut Scope::empty());if self.ui.button(id!(my_button)).clicked(&actions) {log!("Button clicked!");}}}
4. Accessing and Modifying Widgets
rust
// Get widget referenceslet label = self.ui.label(id!(my_label));label.set_text("Updated text");let input = self.ui.text_input(id!(my_input));let text = input.text();
API Reference Table
| Macro/Type | Description | Example | |
|---|---|---|---|
live_design! | Defines UI in DSL | live_design! { App = {{App}} { ... } } | |
app_main! | Entry point macro | app_main!(App); | |
#[derive(Live)] | Derive live data | #[derive(Live, LiveHook)] | |
WidgetRef | Reference to UI tree | #[live] ui: WidgetRef | |
Cx | Context for rendering | fn handle_event(&mut self, cx: &mut Cx, ...) | |
id!() | Widget ID macro | self.ui.button(id!(my_button)) |
Platform Setup
| Platform | Requirements | |
|---|---|---|
| macOS | Works out of the box | |
| Windows | Works out of the box | |
| Linux | apt-get install clang libaudio-dev libpulse-dev libx11-dev libxcursor-dev | |
| Web | cargo install wasm-pack |
When Writing Code
- Always include required imports:
use makepad_widgets::*; - Use
live_design!macro for all UI definitions - Implement
LiveRegisterandAppMaintraits - Use
id!()macro for widget references - Handle events through
handle_eventmethod
When Answering Questions
- Emphasize live design - changes in DSL reflect instantly without recompilation
- Makepad is GPU-first - all rendering is shader-based
- Cross-platform: same code runs on Android, iOS, Linux, macOS, Windows, Web
- Recommend UI Zoo example for widget exploration
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.