Skip to content
Skillpedia
Interfaces (UI/UX)48k · #4031

robius-widget-patterns

Helps your agent create and manage reusable widget patterns. It makes building complex and interactive user interfaces easier.

What it does

This skill helps create interface components (called 'widgets') that can be reused in different parts of a program. It follows specific patterns to ensure these components work well and are easy to use.

When to use it

  • ✓When creating a widget you want to use in multiple places.
  • ✓When designing how a widget will interact with other parts of the program.
  • ✓When you need a widget to show either text or an image, depending on the situation.

Example of what to ask your AI

“How do I create a button that can be expanded or collapsed?”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/robius-widget-patterns/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/robius-widget-patterns/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

It uses a set of examples and rules (patterns) to build widgets. These patterns show how to do things like pop-ups, dynamic lists, or draggable elements.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add sickn33/agentic-awesome-skills --skill robius-widget-patterns

Or download just the file:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/robius-widget-patterns/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Supporting material availability

This catalog copy contains the inline guidance below, but does not include the following supporting paths. They are external prerequisites, not bundled files:

  • <support-root>/references/widget-patterns.md
  • <support-root>/references/styling-patterns.md
  • <support-root>/references/moly-widget-patterns.md

Ask for the original supporting material or an existing installation before using a step that depends on these paths; this catalog does not identify a verified download source for them. Resolve each path relative to that installation, inspect its contents, and verify any applicable license and execution prerequisites. Do not run a command or claim a referenced procedure was followed until its required file exists. Do not fabricate the missing scripts or treat an unrelated file with the same name as equivalent. Independent steps fully documented here can proceed within the user’s authorized scope; report any dependent step as unavailable.

Robius Widget Patterns Skill

Best practices for designing reusable Makepad widgets based on Robrix and Moly codebase patterns.

Source codebases:

  • Robrix: Matrix chat client - Avatar, RoomsList, RoomScreen widgets
  • Moly: AI chat application - Slot, ChatLine, PromptInput, AdaptiveView widgets

When to Use

Use this skill when:

  • Creating reusable Makepad widgets
  • Designing widget component APIs
  • Implementing text/image toggle patterns
  • Dynamic styling in Makepad
  • Keywords: robrix widget, makepad component, reusable widget, widget design pattern

Production Patterns

For production-ready widget patterns, see the _base/ directory:

Pattern Description
01-widget-extension Add helper methods to widget references
02-modal-overlay Popups, dialogs using DrawList2d overlay
03-collapsible Expandable/collapsible sections
04-list-template Dynamic lists with LivePtr templates
05-lru-view-cache Memory-efficient view caching
14-callout-tooltip Tooltips with arrow positioning
20-redraw-optimization Efficient redraw patterns
15-dock-studio-layout IDE-style resizable panels
16-hover-effect Hover effects with instance variables
17-row-based-grid-layout Dynamic grid layouts
18-drag-drop-reorder Drag-and-drop widget reordering
19-pageflip-optimization PageFlip 切换优化,即刻销毁/缓存模式
21-collapsible-row-portal-list Auto-grouping consecutive items in portal lists with FoldHeader
22-dropdown-overlay Dropdown popups using DrawList2d overlay (no layout push)

Standard Widget Structure

use makepad_widgets::*;

live_design! {
    use link::theme::*;
    use link::widgets::*;

    pub MyWidget = {{MyWidget}} {
        width: Fill, height: Fit,
        flow: Down,

        // Child widgets defined in DSL
        inner_view = <View> {
            // ...
        }
    }
}

#[derive(Live, LiveHook, Widget)]
pub struct MyWidget {
    #[deref] view: View,              // Delegate to inner View

    #[live] some_property: f64,       // DSL-configurable property
    #[live(100.0)] default_val: f64,  // With default value

    #[rust] internal_state: State,    // Rust-only state (not in DSL)

    #[animator] animator: Animator,   // For animations
}

impl Widget for MyWidget {
    fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
        self.view.handle_event(cx, event, scope);
        // Custom event handling...
    }

    fn draw_walk(&mut self, cx: &mut Cx2d, scope: &mut Scope, walk: Walk) -> DrawStep {
        self.view.draw_walk(cx, scope, walk)
    }
}

Text/Image Toggle Pattern

A common pattern for widgets that show either text or an image (like avatars):

live_design! {
    pub Avatar = {{Avatar}} {
        width: 36.0, height: 36.0,
        align: { x: 0.5, y: 0.5 }
        flow: Overlay,  // Stack views on top of each other

        text_view = <View> {
            visible: true,  // Default visible
            show_bg: true,
            draw_bg: {
                uniform background_color: #888888
                fn pixel(self) -> vec4 {
                    let sdf = Sdf2d::viewport(self.pos * self.rect_size);
                    let c = self.rect_size * 0.5;
                    sdf.circle(c.x, c.x, c.x)
                    sdf.fill_keep(self.background_color);
                    return sdf.result
                }
            }
            text = <Label> {

…
FAQ

What are 'widgets'?

Widgets are like building blocks for program interfaces. Think of buttons, text boxes, or lists in an app; they are all types of widgets.

What does 'reusable' mean?

Something reusable can be used multiple times without needing to be rewritten from scratch. In programming, this saves time and effort.

What are 'code patterns'?

Code patterns are like tested recipes or templates for solving common programming problems. They help write more organized and efficient code.

Details

Original description by the author

CRITICAL: Use for Robius widget patterns. Triggers on: apply_over, TextOrImage, modal, 可复用, 模态, collapsible, drag drop, reusable widget, widget design, pageflip, 组件设计, 组件模式

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#4031
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills