Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19 > > Check for updates: https://crates.io/crates/makepad-widgets
.claude/skills/makepad-widgets/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-16 | ✗→✓ | ▲ Improved | — | — |
| case-07 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
| case-01 | ✗→✓ | ▲ Improved | — | — |
| case-20 | ✗→✓ | ▲ Improved | — | — |
> Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19 > > Check for updates: https://crates.io/crates/makepad-widgets
You are an expert at Makepad widgets. Help users by:
View, Button, labels, rich text, or other makepad-widgets building blocks.Refer to the local files for detailed documentation:
./references/widgets-core.md - Core widgets (View, Button, Label, etc.)./references/widgets-advanced.md - Helper and advanced widgets./references/widgets-richtext.md - Rich text widgets (Markdown, Html, TextFlow)Before answering questions, Claude MUST:
/sync-crate-skills makepad --force 更新文档"rust<View> { width: Fill height: Fill flow: Down padding: 16.0 show_bg: true draw_bg: { color: #1A1A1A } <Label> { text: "Content" } }
rust<Button> { text: "Click Me" draw_bg: { color: #0066CC color_hover: #0088FF border_radius: 4.0 } draw_text: { color: #FFFFFF text_style: { font_size: 14.0 } } }
rust<Label> { width: Fit height: Fit text: "Hello World" draw_text: { color: #FFFFFF text_style: { font_size: 16.0 line_spacing: 1.4 } } }
rust<Image> { width: 200.0 height: 150.0 source: dep("crate://self/resources/photo.png") fit: Contain }
rust<TextInput> { width: Fill height: Fit text: "Default value" draw_text: { text_style: { font_size: 14.0 } } }
rustpub trait WidgetNode: LiveApply { fn find_widgets(&self, path: &[LiveId], cached: WidgetCache, results: &mut WidgetSet); fn walk(&mut self, cx: &mut Cx) -> Walk; fn area(&self) -> Area; fn redraw(&mut self, cx: &mut Cx); } pub trait Widget: WidgetNode { fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {} fn draw_walk(&mut self, cx: &mut Cx2d, scope: &mut Scope, walk: Walk) -> DrawStep; fn draw(&mut self, cx: &mut Cx2d, scope: &mut Scope) -> DrawStep; fn widget(&self, path: &[LiveId]) -> WidgetRef; }
| Category | Widgets | |----------|---------| | Basic | View, Label, Button, Icon, Image | | Input | TextInput, CheckBox, RadioButton, Slider, DropDown, ColorPicker | | Container | ScrollBars, PortalList, FlatList, StackNavigation, Dock, Splitter | | Navigation | TabBar, Tab, FoldHeader, FoldButton, ExpandablePanel | | Overlay | Modal, Tooltip, PopupMenu, PopupNotification | | Media | Video, RotatedImage, ImageBlend, MultiImage | | Layout | AdaptiveView, SlidePanel, PageFlip, SlidesView | | Special | Markdown, Html, TextFlow, WebView, KeyboardView | | Utility | LoadingSpinner, DesktopButton, LinkLabel, ScrollShadow |
| Widget | Purpose | Key Properties | |--------|---------|----------------| | View | Container | flow, align, show_bg, draw_bg, optimize | | Button | Clickable | text, draw_bg, draw_text, draw_icon | | Label | Text display | text, draw_text | | Image | Image display | source, fit | | TextInput | Text entry | text, draw_text, draw_cursor, draw_selection | | CheckBox | Toggle | text, selected | | RadioButton | Selection | text, selected | | Slider | Value slider | min, max, step | | DropDown | Select menu | labels, selected | | PortalList | Virtual list | Efficient scrolling for large lists | | Modal | Dialog | Overlay dialog boxes | | Tooltip | Hint | Hover tooltips |
| Variant | Description | |---------|-------------| | SolidView | Solid background color | | RoundedView | Rounded corners | | RoundedAllView | Individual corner control | | RectView | Rectangle with border/gradient | | CircleView | Circle/ellipse shape | | GradientXView | Horizontal gradient | | GradientYView | Vertical gradient | | RoundedShadowView | Rounded with shadow | | ScrollXView | Horizontal scroll | | ScrollYView | Vertical scroll | | ScrollXYView | Both directions scroll | | CachedView | Texture-cached |
| Variant | Description | |---------|-------------| | ButtonFlat | Flat style | | ButtonFlatIcon | Flat with icon | | ButtonFlatter | No background | | ButtonGradientX | Horizontal gradient | | ButtonGradientY | Vertical gradient | | ButtonIcon | Standard with icon |
| Value | Description | |-------|-------------| | Stretch | Stretch to fill | | Contain | Fit within, preserve ratio | | Cover | Cover area, may crop | | Fill | Fill without ratio |
width and height on widgetsshow_bg: true to enable background renderingdraw_bg, draw_text, draw_icon for shader uniformsdep("crate://self/...") for resource pathsdraw_bg, draw_text) control appearanceanimator property| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
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. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.