Pular para o conteúdo
Skillpedia
Código em geral48 mil · #4028

robius-event-action

Faz seu agente lidar com eventos e ações dentro do sistema Robius. Ele entende como as interações do usuário e do sistema funcionam.

O que ela faz

Esta ferramenta ajuda a organizar como diferentes partes de um programa de computador se comunicam. Ela define padrões para que as ações (como clicar em um botão) e eventos (como receber uma mensagem) sejam tratados de forma organizada.

Quando usar

  • ✓Ao criar novas ações personalizadas em um programa.
  • ✓Quando você precisa que diferentes partes do programa reajam a eventos.
  • ✓Para gerenciar a comunicação entre elementos visuais (widgets).

Exemplo do que pedir para a IA

“Como posso configurar o programa para que, ao clicar em um botão, ele envie uma mensagem específica?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

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

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/robius-event-action/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela funciona definindo 'ações' que podem ser disparadas por eventos. Essas ações são então processadas em um local centralizado no programa, garantindo que tudo seja tratado de maneira consistente.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill robius-event-action

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/robius-event-action/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Disponibilidade de Material de Apoio

Esta cópia do catálogo contém as orientações inline abaixo, mas não inclui os seguintes caminhos de suporte. Eles são pré-requisitos externos, não arquivos incluídos:

  • <support-root>/references/action-patterns.md
  • <support-root>/references/event-handling.md
  • <support-root>/references/moly-action-patterns.md

Solicite o material de apoio original ou uma instalação existente antes de usar uma etapa que dependa desses caminhos; este catálogo não identifica uma fonte de download verificada para eles. Resolva cada caminho em relação a essa instalação, inspecione seu conteúdo e verifique quaisquer licenças aplicáveis e pré-requisitos de execução. Não execute um comando nem afirme que um procedimento referenciado foi seguido até que seu arquivo necessário exista. Não fabrique os scripts ausentes nem trate um arquivo não relacionado com o mesmo nome como equivalente. Etapas independentes totalmente documentadas aqui podem prosseguir dentro do escopo autorizado do usuário; relate qualquer etapa dependente como indisponível.

Skill de Padrões de Eventos e Ações Robius

Melhores práticas para tratamento de eventos e padrões de ações em aplicativos Makepad baseados em bases de código Robrix e Moly.

Bases de código fonte:

  • Robrix: Cliente de chat Matrix - MessageAction, RoomsListAction, AppStateAction
  • Moly: Aplicativo de chat de IA - StoreAction, ChatAction, NavigationAction, padrões de Timer

Quando Usar

Use esta skill quando:

  • Implementar ações personalizadas em Makepad
  • Tratar eventos em widgets
  • Centralizar o tratamento de ações em App
  • Comunicação de widget para widget
  • Palavras-chave: makepad action, makepad event, widget action, handle_actions, cx.widget_action

Padrão de Ação Personalizada

Definindo Ações Específicas do Domínio

use makepad_widgets::*;

/// Actions emitted by the Message widget
#[derive(Clone, DefaultNone, Debug)]
pub enum MessageAction {
    /// User wants to react to a message
    React { details: MessageDetails, reaction: String },
    /// User wants to reply to a message
    Reply(MessageDetails),
    /// User wants to edit a message
    Edit(MessageDetails),
    /// User wants to delete a message
    Delete(MessageDetails),
    /// User requested to open context menu
    OpenContextMenu { details: MessageDetails, abs_pos: DVec2 },
    /// Required default variant
    None,
}

/// Data associated with a message action
#[derive(Clone, Debug)]
pub struct MessageDetails {
    pub room_id: OwnedRoomId,
    pub event_id: OwnedEventId,
    pub content: String,
    pub sender_id: OwnedUserId,
}

Emitindo Ações de Widgets

impl Widget for Message {
    fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
        self.view.handle_event(cx, event, scope);

        let area = self.view.area();
        match event.hits(cx, area) {
            Hit::FingerDown(_fe) => {
                cx.set_key_focus(area);
            }
            Hit::FingerUp(fe) => {
                if fe.is_over && fe.is_primary_hit() && fe.was_tap() {
                    // Emit widget action
                    cx.widget_action(
                        self.widget_uid(),
                        &scope.path,
                        MessageAction::Reply(self.get_details()),
                    );
                }
            }
            Hit::FingerLongPress(lpe) => {
                cx.widget_action(
                    self.widget_uid(),
                    &scope.path,
                    MessageAction::OpenContextMenu {
                        details: self.get_details(),
                        abs_pos: lpe.abs,
                    },
                );
            }
            _ => {}
        }
    }
}

Tratamento Centralizado de Ações em App

Usando o Trait MatchEvent

impl MatchEvent for App {
    fn handle_startup(&mut self, cx: &mut Cx) {
        // Chamado uma vez na inicialização do aplicativo
        self.initialize(cx);
    }

    fn handle_actions(&mut self, cx: &mut Cx, actions: &Actions) {
        for action in actions {
            // Padrão 1: Downcast direto para ações não de widget
            if let Some(action) = action.downcast_ref::<LoginAction>() {
                match action {
                    LoginAction::LoginSuccess => {
                        self.app_state.logged_in = true;
                        self.update_ui_visibility(cx);
                    }
                    LoginAction::LoginFailure(error) => {
                        self.show_error(cx, error);
                    }
                }

…
Perguntas frequentes

O que são 'ações' e 'eventos'?

Ações são coisas que o programa faz em resposta a uma instrução (ex: 'salvar arquivo'). Eventos são coisas que acontecem e que o programa pode detectar (ex: 'o mouse clicou').

O que é 'Makepad'?

Makepad é uma ferramenta usada para construir interfaces de usuário para aplicativos.

Por que é importante ter padrões para ações e eventos?

Ter padrões ajuda a manter o código organizado, mais fácil de entender e menos propenso a erros, especialmente em programas grandes e complexos.

Detalhes

Descrição original do autor

CRITICAL: Use for Robius event and action patterns. Triggers on: custom action, MatchEvent, post_action, cx.widget_action, handle_actions, DefaultNone, widget action, event handling, 事件处理, 自定义动作

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#4028
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas