MA

Provides expert guidance on Makepad DSL syntax, widget declarations, and inheritance for Rust developers.

Install

mkdir -p .claude/skills/makepad-dsl-fiscfed9 && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14611" && unzip -o skill.zip -d .claude/skills/makepad-dsl-fiscfed9 && rm skill.zip

Installs to .claude/skills/makepad-dsl-fiscfed9

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

CRITICAL: Use for Makepad DSL syntax and inheritance. Triggers on: makepad dsl, live_design, makepad inheritance, makepad prototype, "<Widget>", "Foo = { }", makepad object, makepad property, makepad DSL 语法, makepad 继承, makepad 原型, 如何定义 makepad 组件
247 chars✓ has a “when” trigger
Advanced

Key capabilities

  • Generate Makepad DSL code for UI widgets.
  • Explain DSL syntax, inheritance, and property overriding rules.
  • Define reusable styles as named prototypes.
  • Link Rust structs to DSL definitions using `{{RustType}}`.
  • Handle nested object overrides partially.

How it works

The skill generates DSL code and answers questions based on documented patterns and rules for Makepad DSL, including inheritance and property overriding.

Inputs & outputs

You give it
A request for Makepad DSL code, an explanation of DSL concepts, or a question about inheritance.
You get back
Generated Makepad DSL code, explanations of DSL syntax/inheritance, or answers to specific DSL questions.

When to use makepad-dsl

  • Defining new UI widgets using Makepad DSL
  • Implementing component inheritance patterns
  • Debugging Makepad live_design object definitions

About this skill

Makepad DSL Skill

Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19

Check for updates: https://crates.io/crates/makepad-widgets

You are an expert at the Rust makepad-widgets crate DSL. Help users by:

  • Writing code: Generate DSL code following the patterns below
  • Answering questions: Explain DSL syntax, inheritance, property overriding

When to Use

  • You need help with Makepad live_design! syntax, object definitions, or inheritance patterns.
  • The task involves widget declarations, property overrides, prototypes, or DSL composition rules.
  • You want Makepad DSL-specific examples rather than generic Rust syntax advice.

Documentation

Refer to the local files for detailed documentation:

  • ./references/dsl-syntax.md - Complete DSL syntax reference
  • ./references/inheritance.md - Inheritance patterns and examples

IMPORTANT: Documentation Completeness Check

Before answering questions, Claude MUST:

  1. Read the relevant reference file(s) listed above
  2. 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
  3. If reference file exists, incorporate its content into the answer

Key Patterns

1. Anonymous Object

{
    width: 100.0
    height: 50.0
    color: #FF0000
}

2. Named Object (Prototype)

MyButton = {
    width: Fit
    height: 40.0
    padding: 10.0
    draw_bg: { color: #333333 }
}

3. Inheritance with Override

PrimaryButton = <MyButton> {
    draw_bg: { color: #0066CC }  // Override parent color
    draw_text: { color: #FFFFFF }  // Add new property
}

4. Widget Instantiation

<View> {
    // Inherits from View prototype
    width: Fill
    height: Fill

    <Button> { text: "Click Me" }  // Child widget
    <Label> { text: "Hello" }      // Another child
}

5. Linking Rust Struct to DSL

// In live_design!
MyWidget = {{MyWidget}} {
    // DSL properties
    width: 100.0
}

// In Rust
#[derive(Live, LiveHook, Widget)]
pub struct MyWidget {
    #[deref] view: View,
    #[live] width: f64,
}

DSL Syntax Reference

SyntaxDescriptionExample
{ ... }Anonymous object{ width: 100.0 }
Name = { ... }Named prototypeMyStyle = { color: #FFF }
<Name> { ... }Inherit from prototype<MyStyle> { size: 10.0 }
{{RustType}}Link to Rust structApp = {{App}} { ... }
name = <Widget>Named child widgetbtn = <Button> { }
dep("...")Resource dependencydep("crate://self/img.png")

Property Types

TypeExampleDescription
Numberwidth: 100.0Float value
Colorcolor: #FF0000FFRGBA hex color
Stringtext: "Hello"Text string
Enumflow: DownEnum variant
Sizewidth: FitFit, Fill, or numeric
Objectpadding: { top: 10.0 }Nested object
Arraylabels: ["A", "B"]List of values

Inheritance Rules

  1. Eager Copy: All parent properties are copied immediately
  2. Override: Child can override any parent property
  3. Extend: Child can add new properties
  4. Nested Override: Override nested objects partially
Parent = {
    a: 1
    nested: { x: 10, y: 20 }
}

Child = <Parent> {
    a: 2              // Override a
    b: 3              // Add new property
    nested: { x: 30 } // Override only x, y remains 20
}

When Writing Code

  1. Use <Widget> syntax to inherit from built-in widgets
  2. Define reusable styles as named prototypes
  3. Use {{RustType}} to link DSL to Rust structs
  4. Override only properties that need to change
  5. Use meaningful names for child widget references

When Answering Questions

  1. Explain inheritance as "eager copy" - properties are copied at definition time
  2. Emphasize that DSL is embedded in Rust via live_design! macro
  3. Highlight that changes to DSL are live-reloaded without recompilation
  4. Distinguish between named objects (prototypes) and widget instances

When not to use it

  • When generic Rust syntax advice is needed.
  • When working with Makepad versions other than `makepad-widgets` (dev branch).
  • When the task does not involve `live_design!` syntax or widget definitions.

Limitations

  • The skill is specific to the Rust `makepad-widgets` crate DSL.
  • The skill's knowledge is based on the `dev branch` of `makepad-widgets`.
  • The skill requires local documentation files (`dsl-syntax.md`, `inheritance.md`) for complete answers.

How it compares

This workflow provides specialized knowledge and code generation for the Makepad DSL, ensuring adherence to its specific syntax and inheritance model, unlike general Rust code generation.

Compared to similar skills

makepad-dsl side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
makepad-dsl (this skill)02moReviewAdvanced
rust-errors51moNo flagsAdvanced
tauri761moReviewAdvanced
implementing-cards72moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry