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
Mensagem pronta para colar
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-managementOu 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.mdConteú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, 状态持久化, 主题切换
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #4030
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC