Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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 组件
.claude/skills/sickn33-makepad-dsl/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 82% | 0% |
> 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:
live_design! syntax, object definitions, or inheritance patterns.Refer to the local files for detailed documentation:
./references/dsl-syntax.md - Complete DSL syntax reference./references/inheritance.md - Inheritance patterns and examplesBefore answering questions, Claude MUST:
/sync-crate-skills makepad --force 更新文档"rust{ width: 100.0 height: 50.0 color: #FF0000 }
rustMyButton = { width: Fit height: 40.0 padding: 10.0 draw_bg: { color: #333333 } }
rustPrimaryButton = <MyButton> { draw_bg: { color: #0066CC } // Override parent color draw_text: { color: #FFFFFF } // Add new property }
rust<View> { // Inherits from View prototype width: Fill height: Fill <Button> { text: "Click Me" } // Child widget <Label> { text: "Hello" } // Another child }
rust// 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, }
| Syntax | Description | Example | |--------|-------------|---------| | { ... } | Anonymous object | { width: 100.0 } | | Name = { ... } | Named prototype | MyStyle = { color: #FFF } | | <Name> { ... } | Inherit from prototype | <MyStyle> { size: 10.0 } | | {{RustType}} | Link to Rust struct | App = {{App}} { ... } | | name = <Widget> | Named child widget | btn = <Button> { } | | dep("...") | Resource dependency | dep("crate://self/img.png") |
| Type | Example | Description | |------|---------|-------------| | Number | width: 100.0 | Float value | | Color | color: #FF0000FF | RGBA hex color | | String | text: "Hello" | Text string | | Enum | flow: Down | Enum variant | | Size | width: Fit | Fit, Fill, or numeric | | Object | padding: { top: 10.0 } | Nested object | | Array | labels: ["A", "B"] | List of values |
rustParent = { 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 }
<Widget> syntax to inherit from built-in widgets{{RustType}} to link DSL to Rust structslive_design! macro| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 16,684 | 14,267 | -14% | 1 | 1 | 0% | 3,054 | 3,802 | +24% | 0 | 0 | — |
case-02 | fail→fail | 16,729 | 12,436 | -26% | 1 | 1 | 0% | 3,073 | 3,790 | +23% | 0 | 0 | — |
case-03 | pass→pass | 17,744 | 12,368 | -30% | 1 | 1 | 0% | 3,047 | 3,797 | +25% | 0 | 0 | — |
case-04 | pass→pass | 14,469 | 11,382 | -21% | 1 | 1 | 0% | 2,771 | 3,476 | +25% | 0 | 0 | — |
case-05 | pass→pass | 14,692 | 15,345 | +4% | 1 | 1 | 0% | 2,707 | 3,372 | +25% | 0 | 0 | — |
case-06 | pass→pass | 10,264 | 4,569 | -55% | 1 | 1 | 0% | 1,872 | 2,075 | +11% | 0 | 0 | — |
case-07 | fail→fail | 12,256 | 4,954 | -60% | 1 | 1 | 0% | 2,091 | 2,176 | +4% | 0 | 0 | — |
case-08 | fail→pass | 8,800 | 3,361 | -62% | 1 | 1 | 0% | 1,434 | 1,858 | +30% | 0 | 0 | — |
case-09 | pass→pass | 4,989 | 5,060 | +1% | 1 | 1 | 0% | 900 | 2,227 | +147% | 0 | 0 | — |
case-10 | pass→pass | 11,577 | 6,251 | -46% | 1 | 1 | 0% | 1,915 | 2,378 | +24% | 0 | 0 | — |
case-11 | fail→pass | 9,802 | 3,338 | -66% | 1 | 1 | 0% | 1,846 | 1,874 | +2% | 0 | 0 | — |
case-12 | pass→pass | 5,449 | 4,053 | -26% | 1 | 1 | 0% | 946 | 1,959 | +107% | 0 | 0 | — |
case-13 | pass→pass | 8,684 | 4,742 | -45% | 1 | 1 | 0% | 1,410 | 2,147 | +52% | 0 | 0 | — |
case-14 | pass→pass | 7,673 | 6,966 | -9% | 1 | 1 | 0% | 1,417 | 2,564 | +81% | 0 | 0 | — |
case-15 | pass→pass | 12,692 | 4,042 | -68% | 1 | 1 | 0% | 2,222 | 2,005 | -10% | 0 | 0 | — |
case-16 | pass→pass | 8,525 | 6,832 | -20% | 1 | 1 | 0% | 1,369 | 2,275 | +66% | 0 | 0 | — |
case-17 | pass→pass | 4,600 | 5,335 | +16% | 1 | 1 | 0% | 753 | 2,135 | +184% | 0 | 0 | — |
case-18 | pass→pass | 12,161 | 7,145 | -41% | 1 | 1 | 0% | 2,203 | 2,465 | +12% | 0 | 0 | — |
case-19 | pass→pass | 7,167 | 4,859 | -32% | 1 | 1 | 0% | 1,257 | 2,120 | +69% | 0 | 0 | — |
case-20 | fail→pass | 10,742 | 9,105 | -15% | 1 | 1 | 0% | 1,885 | 2,719 | +44% | 0 | 0 | — |
case-21 | fail→pass | 9,717 | 9,443 | -3% | 1 | 1 | 0% | 1,603 | 2,923 | +82% | 0 | 0 | — |
case-22 | pass→pass | 6,372 | 4,387 | -31% | 1 | 1 | 0% | 1,092 | 2,055 | +88% | 0 | 0 | — |
case-23 | fail→pass | 10,554 | 6,748 | -36% | 1 | 1 | 0% | 1,785 | 2,501 | +40% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +26 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.