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

robius-state-management

Faz seu agente gerenciar o estado e os dados de um aplicativo Robius. Ele sabe como salvar, carregar e organizar informações importantes.

O que ela faz

Esta habilidade ajuda a organizar e salvar as informações importantes de um aplicativo, como configurações de tela e preferências do usuário, para que elas possam ser usadas novamente mais tarde. Ela garante que o estado do aplicativo seja mantido mesmo após o fechamento e reabertura.

Quando usar

  • ✓Ao projetar como o aplicativo vai guardar suas informações.
  • ✓Quando você precisa que as configurações do usuário sejam salvas.
  • ✓Ao gerenciar o que está visível na tela entre diferentes sessões.

Exemplo do que pedir para a IA

“Como posso salvar as configurações da minha tela para que elas reapareçam quando eu abrir o aplicativo novamente?”

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-state-management/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-state-management/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela usa um sistema chamado 'serde' para transformar os dados do aplicativo em um formato que pode ser salvo em disco. Quando o aplicativo precisa desses dados, ele os carrega de volta para a memória.

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-state-management

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/robius-state-management/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/persistence-patterns.md
  • <support-root>/references/state-structures.md
  • <support-root>/references/moly-state-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 e pré-requisitos de execução aplicáveis. 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 Gerenciamento de Estado Robius

Melhores práticas para gerenciamento de estado e persistência em aplicações Makepad baseadas em bases de código Robrix e Moly.

Bases de código fonte:

  • Robrix: Cliente de chat Matrix - AppState, SelectedRoom, persistência via serde
  • Moly: Aplicação de chat com IA - Padrão Central Store, inicialização assíncrona, Preferências

Quando Usar

Use esta skill quando:

  • Projetando a estrutura de estado da aplicação
  • Implementando a persistência de estado
  • Passando estado pela árvore de widgets
  • Gerenciando o estado da UI entre sessões
  • Palavras-chave: estado do app, estado makepad, persistência, Scope::with_data, salvar estado, carregar estado

Padrões de Produção

Para padrões de gerenciamento de estado prontos para produção, consulte o diretório _base/:

Padrão Descrição
06-global-registry Registro global de widgets com Cx::set_global
07-radio-navigation Navegação estilo aba com botões de rádio
10-state-machine Widgets de máquina de estados baseados em enum
11-theme-switching Suporte a múltiplos temas com apply_over
12-local-persistence Salvar/carregar preferências do usuário

Estrutura do AppState

Definição do Estado Principal

use serde::{Serialize, Deserialize};
use std::collections::HashMap;
use matrix_sdk::ruma::OwnedRoomId;

/// App-wide state that is stored persistently across multiple app runs
/// and shared/updated across various parts of the app.
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct AppState {
    /// The currently-selected room
    pub selected_room: Option<SelectedRoom>,

    /// Saved UI layout state for main view
    pub saved_layout_state: SavedLayoutState,

    /// Per-item saved states (e.g., per-space dock layouts)
    pub saved_state_per_item: HashMap<OwnedRoomId, SavedLayoutState>,

    /// Whether a user is currently logged in
    #[serde(skip)]  // Don't persist login state
    pub logged_in: bool,
}

/// Represents a currently selected item
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum SelectedRoom {
    JoinedRoom { room_name_id: RoomNameId },
    InvitedRoom { room_name_id: RoomNameId },
    Space { space_name_id: RoomNameId },
}

impl SelectedRoom {
    pub fn room_id(&self) -> &OwnedRoomId {
        match self {
            Self::JoinedRoom { room_name_id } => room_name_id.room_id(),
            Self::InvitedRoom { room_name_id } => room_name_id.room_id(),
            Self::Space { space_name_id } => space_name_id.room_id(),
        }
    }

    /// Upgrade from invited to joined state
    pub fn upgrade_invite_to_joined(&mut self, room_id: &RoomId) -> bool {
        match self {
            Self::InvitedRoom { room_name_id } if room_name_id.room_id() == room_id => {
                let name = room_name_id.clone();
                *self = Self::JoinedRoom { room_name_id: name };
                true
            }
            _ => false,
        }
    }
}

// Equality based on room_id only
impl PartialEq for SelectedRoom {
    fn eq(&self, other: &Self) -> bool {
        self.room_id() == other.room_id()
    }
}
impl Eq for SelectedRoom {}

Persistência de Estado de Layout/Dock

/// Um snapshot do estado do layout da UI para restauração
#[derive(Clone, Default, Debug, Serialize, Deserialize)]
pub struct SavedLayoutState {
    /// Todos os itens contidos no layout, chaveados por ID
    pub layout_items: HashMap<LiveIdSerde, LayoutItemSerde>,

    /// Itens atualmente abertos, chaveados por ID
    pub open_items: HashMap<LiveIdSerde, SelectedRoom>,

    /// Ordem em que os itens foram abertos (cronológica)

…
Perguntas frequentes

O que é 'estado' em um aplicativo?

Estado é toda a informação que o aplicativo precisa para funcionar em um determinado momento, como quais abas estão abertas, qual texto foi digitado ou qual tema está selecionado.

Por que é importante salvar o estado?

Salvar o estado permite que o aplicativo lembre onde o usuário parou, evitando que ele tenha que configurar tudo novamente a cada vez que abre o aplicativo. Isso melhora a experiência do usuário.

O que é 'persistencia'?

Persistência significa que os dados do aplicativo são salvos de forma que eles não se percam quando o aplicativo é fechado, como salvar um documento em um arquivo.

Detalhes

Descrição original do autor

CRITICAL: Use for Robius state management patterns. Triggers on: AppState, persistence, theme switch, 状态管理, Scope::with_data, save state, load state, serde, 状态持久化, 主题切换

repo: sickn33/agentic-awesome-skills

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas