本文へ移動
cccskills
無料GitHub で公開

mobile-design

Pensamento e tomada de decisão em design mobile-first para apps iOS e Android. Interação por toque, padrões de performance, convenções de plataforma. Ensina princípios, não valores fixos. Use ao construir apps React Native, Flutter ou nativos.

インストール方法を見る

含まれるファイル(14)

  • SKILL.md16.5 KB
  • decision-trees.md15.9 KB
  • mobile-backend.md14.3 KB
  • mobile-color-system.md10.0 KB
  • mobile-debugging.md4.2 KB
  • mobile-design-thinking.md16.8 KB
  • mobile-navigation.md11.6 KB
  • mobile-performance.md18.9 KB
  • mobile-testing.md10.8 KB
  • mobile-typography.md10.5 KB
  • platform-android.md19.1 KB
  • platform-ios.md16.7 KB
  • scripts/mobile_audit.py35.1 KB
  • touch-psychology.md16.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Sistema de Design Mobile

Filosofia: Toque em primeiro lugar. Consciente de bateria. Respeitoso com a plataforma. Capaz offline. Princípio Central: Mobile NÃO é um desktop pequeno. PENSE em restrições mobile, PERGUNTE sobre a escolha de plataforma.


🔧 Scripts de Execução

Execute estes para validação (não leia, apenas execute):

ScriptPropósitoUso
scripts/mobile_audit.pyAuditoria de UX Mobile e Toquepython scripts/mobile_audit.py <project_path>

🔴 OBRIGATÓRIO: Leia os Arquivos de Referência Antes de Trabalhar!

⛔ NÃO comece o desenvolvimento até ler os arquivos relevantes:

Universal (Sempre Leia)

ArquivoConteúdoStatus
mobile-design-thinking.md⚠️ ANTI-MEMORIZAÇÃO: Força o pensamento, previne defaults de IA⬜ CRÍTICO PRIMEIRO
touch-psychology.mdLei de Fitts, gestos, haptics, zona de polegar⬜ CRÍTICO
mobile-performance.mdPerformance RN/Flutter, 60fps, memória⬜ CRÍTICO
mobile-backend.mdNotificações push, sincronização offline, API mobile⬜ CRÍTICO
mobile-testing.mdPirâmide de testes, E2E, específico por plataforma⬜ CRÍTICO
mobile-debugging.mdDebugging nativo vs JS, Flipper, Logcat⬜ CRÍTICO
mobile-navigation.mdTab/Stack/Drawer, deep linking⬜ Leia
mobile-typography.mdFontes do sistema, Dynamic Type, a11y⬜ Leia
mobile-color-system.mdOLED, modo escuro, ciente de bateria⬜ Leia
decision-trees.mdSeleção de framework/state/storage⬜ Leia

🧠 mobile-design-thinking.md é PRIORIDADE! Este arquivo garante que a IA pense em vez de usar padrões memorizados.

Específico por Plataforma (Leia Baseado no Alvo)

PlataformaArquivoConteúdoQuando Ler
iOSplatform-ios.mdHuman Interface Guidelines, SF Pro, padrões SwiftUIConstruindo para iPhone/iPad
Androidplatform-android.mdMaterial Design 3, Roboto, padrões ComposeConstruindo para Android
Cross-PlatformAmbos acimaPontos de divergência de plataformaReact Native / Flutter

🔴 Se construir para iOS → Leia platform-ios.md PRIMEIRO! 🔴 Se construir para Android → Leia platform-android.md PRIMEIRO! 🔴 Se cross-platform → Leia AMBOS e aplique lógica condicional por plataforma!


⚠️ CRÍTICO: PERGUNTE ANTES DE ASSUMIR (OBRIGATÓRIO)

PARE! Se a solicitação do usuário for aberta, NÃO padronize para seus favoritos.

Você DEVE Perguntar Se Não Especificado:

AspectoPerguntePor Quê
Plataforma"iOS, Android, ou ambos?"Afeta TODA decisão de design
Framework"React Native, Flutter, ou nativo?"Determina padrões e ferramentas
Navegação"Tab bar, drawer, ou baseado em stack?"Decisão central de UX
State"Qual state management? (Zustand/Redux/Riverpod/BLoC?)"Fundação da arquitetura
Offline"Isso precisa funcionar offline?"Afeta estratégia de dados
Dispositivos alvo"Apenas telefone, ou suporte a tablet?"Complexidade do layout

⛔ ANTI-PADRÕES MOBILE DE IA (LISTA DE PROIBIÇÕES)

🚫 Estas são tendências padrão de IA que DEVEM ser evitadas!

Pecados de Performance

❌ NUNCA FAÇAPor Que Está Errado✅ SEMPRE FAÇA
ScrollView para listas longasRenderiza TODOS os itens, memória explodeUse FlatList / FlashList / ListView.builder
Função renderItem inlineNova função a cada render, todos itens re-renderizamuseCallback + React.memo
Sem keyExtractorChaves baseadas em índice causam bugs ao reordenarID único e estável dos dados
Pule getItemLayoutLayout assíncrono = scroll tremidoForneça quando itens têm altura fixa
setState() em toda parteRe-renderizações desnecessárias de widgetsState direcionado, construtores const
Native driver: falseAnimações bloqueadas pela thread JSuseNativeDriver: true sempre
console.log em produçãoBloqueia thread JS severamenteRemova antes de release build
Pule React.memo/constCada item re-renderiza em qualquer mudançaMemoize itens de lista SEMPRE

Pecados de Toque/UX

❌ NUNCA FAÇAPor Que Está Errado✅ SEMPRE FAÇA
Alvo de toque < 44pxImpossível tocar com precisão, frustranteMínimo 44pt (iOS) / 48dp (Android)
Espaçamento < 8px entre alvosToques acidentais em vizinhosMínimo 8-12px de lacuna
Interações apenas por gestoUsuários com deficiência motora excluídosSempre forneça alternativa com botão
Sem estado de carregamentoUsuário acha que app travouSEMPRE mostre feedback de carregamento
Sem estado de erroUsuário travado, sem caminho de recuperaçãoMostre erro com opção de retry
Sem tratamento offlineCrash/bloqueio quando rede se perdeDegradação graciosa, dados em cache
Ignore convenções de plataformaUsuários confusos, memória muscular quebradaiOS parece iOS, Android parece Android

Pecados de Segurança

❌ NUNCA FAÇAPor Que Está Errado✅ SEMPRE FAÇA
Token em AsyncStorageFacilmente acessível, roubado em device rooteadoSecureStore / Keychain / EncryptedSharedPreferences
Hardcode de chaves APIReverse engineered de APK/IPAVariáveis de ambiente, armazenamento seguro
Pule SSL pinningAtaques MITM possíveisPin certificados em produção
Log de dados sensíveisLogs podem ser extraídosNunca faça log de tokens, senhas, PII

Pecados de Arquitetura

❌ NUNCA FAÇAPor Que Está Errado✅ SEMPRE FAÇA
Lógica de negócio em UINão testável, não mantívelSeparação de camada de serviço
State global para tudoRe-renderizações desnecessárias, complexidadeState local padrão, eleve quando necessário
Deep linking como afterthoughtNotificações, compartilhamentos quebradosPlaneje deep links desde o dia um
Pule dispose/cleanupVazamentos de memória, listeners zumbisLimpe subscrições, timers

📱 Matriz de Decisão de Plataforma

Quando Unificar vs Divergir

                    UNIFICAR (mesmo em ambas)     DIVERGIR (específico de plataforma)
                    ─────────────────────         ──────────────────────────────────
Lógica de Negócio   ✅ Sempre                     -
Camada de Dados     ✅ Sempre                     -
Funcionalidades     ✅ Sempre                     -
Principais
                    
Navegação           -                             ✅ iOS: swipe de borda, Android: botão voltar
Gestos              -                             ✅ Sensação nativa de plataforma
Ícones              -                             ✅ SF Symbols vs Material Icons
Date Pickers        -                             ✅ Pickers nativos se encaixam bem
Modals/Sheets       -                             ✅ iOS: bottom sheet vs Android: dialog
Tipografia          -                             ✅ SF Pro vs Roboto (ou customizado)
Diálogos de Erro    -                             ✅ Convenções de plataforma para alertas

Referência Rápida: Padrões Padrão de Plataforma

ElementoiOSAndroid
Fonte PrimáriaSF Pro / SF CompactRoboto
Alvo Mín. de Toque44pt × 44pt48dp × 48dp
Navegação VoltarSwipe de borda esquerdaBotão/gesto de voltar do sistema
Ícones da Tab InferiorSF SymbolsMaterial Symbols
Action SheetUIActionSheet de baixoBottom Sheet / Dialog
ProgressoSpinnerProgresso linear (Material)
Pull to RefreshUIRefreshControl nativoSwipeRefreshLayout

🧠 Psicologia de UX Mobile (Referência Rápida)

Lei de Fitts para Toque

Desktop: Cursor é preciso (1px)
Mobile:  Dedo é impreciso (~7mm de área de contato)

→ Alvos de toque DEVEM ser mínimo 44-48px
→ Ações importantes na ZONA DE POLEGAR (inferior da tela)
→ Ações destrutivas LONGE do alcance fácil

Zona de Polegar (Uso com Uma Mão)

┌─────────────────────────────┐
│      DIFÍCIL DE ATINGIR      │ ← Navegação, menu, voltar
│        (alongar)            │
├─────────────────────────────┤
│      OK DE ATINGIR          │ ← Ações secundárias
│       (natural)             │
├─────────────────────────────┤
│      FÁCIL DE ATINGIR        │ ← CTAs primários, tab bar
│    (arco natural do polegar) │ ← Interação de conteúdo principal
└─────────────────────────────┘
        [  HOME  ]

Carga Cognitiva Específica de Mobile

DesktopDiferença Mobile
Múltiplas janelasUMA tarefa por vez
Atalhos de tecladoGestos de toque
Estados hoverSEM hover (toque ou nada)
Viewport grandeEspaço limitado, scroll vertical
Atenção estávelConstantemente interrompido

Para mergulho profundo: touch-psychology.md


⚡ Princípios de Performance (Referência Rápida)

Regras Críticas React Native

// ✅ CORRETO: renderItem memoizado + wrapper React.memo
const ListItem = React.memo(({ item }: { item: Item }) => (
  <View style={styles.item}>
    <Text>{item.title}</Text>
  </View>
));

const renderItem = useCallback(
  ({ item }: { item: Item }) => <ListItem item={item} />,
  []
);

// ✅ CORRETO: FlatList com todas otimizações
<FlatList
  data={items}
  renderItem={renderItem}
  keyExtractor={(item) => item.id}  // ID estável, NÃO índice
  getItemLayout={(data, index) => ({
    length: ITEM_HEIGHT,
    offset: ITEM_HEIGHT * index,
    index,
  })}
  removeClippedSubviews={true}
  maxToRenderPerBatch={10}
  windowSize={5}
/>

Regras Críticas Flutter

// ✅ CORRETO: construtores const evitam rebuilds
class MyWidget extends StatelessWidget {
  const MyWidget({super.key}); // CONST!

  @override
  Widget build(BuildContext context) {
    return const Column( // CONST!
      children: [
        Text('Conteúdo estático'),
        MyConstantWidget(),
      ],
    );
  }
}

// ✅ CORRETO: State direcionado com ValueListenableBuilder
ValueListenableBuilder<int>(
  valueListenable: counter,
  builder: (context, value, child) => Text('$value'),
  child: const ExpensiveWidget(), // Não vai rebuildar!
)

Performance de Animação

Acelerado por GPU (RÁPIDO):     Limitado por CPU (LENTO):
├── transform                   ├── width, height
├── opacity                     ├── top, left, right, bottom
└── (use APENAS estes)          ├── margin, padding
                                └── (EVITE animar estes)

Para guia completo: mobile-performance.md


📝 CHECKPOINT (OBRIGATÓRIO Antes de Qualquer Trabalho Mobile)

Antes de escrever QUALQUER código mobile, você DEVE completar este checkpoint:

🧠 CHECKPOINT:

Plataforma: [ iOS / Android / Ambas ]
Framework:  [ React Native / Flutter / SwiftUI / Kotlin ]
Arquivos Lidos: [ Liste os arquivos de skill que você leu ]

3 Princípios que Vou Aplicar:
1. _______________
2. _______________
3. _______________

Anti-Padrões que Vou Evitar:
1. _______________
2. _______________

Exemplo:

🧠 CHECKPOINT:

Plataforma: iOS + Android (Cross-platform)
Framework:  React Native + Expo
Arquivos Lidos: touch-psychology.md, mobile-performance.md, platform-ios.md, platform-android.md

3 Princípios que Vou Aplicar:
1. FlatList com React.memo + useCallback para todas listas
2. Alvos de toque 48px, zona de polegar para CTAs primários
3. Navegação específica por plataforma (swipe de borda iOS, botão voltar Android)

Anti-Padrões que Vou Evitar:
1. ScrollView para listas → FlatList
2. renderItem inline → Memoizado
3. AsyncStorage para tokens → SecureStore

🔴 Não consegue preencher o checkpoint? → VOLTE E LEIA OS ARQUIVOS DE SKILL.


🔧 Árvore de Decisão de Framework

O QUE VOCÊ ESTÁ CONSTRUINDO?
        │
        ├── Precisa de atualizações OTA + iteração rápida + team web
        │   └── ✅ React Native + Expo
        │
        ├── Precisa de UI pixel-perfect customizado + crítico de performance
        │   └── ✅ Flutter
        │
        ├── Funcionalidades nativas profundas + foco em plataforma única
        │   ├── Apenas iOS → SwiftUI
        │   └── Apenas Android → Kotlin + Jetpack Compose
        │
        ├── Codebase RN existente + novas funcionalidades
        │   └── ✅ React Native (bare workflow)
        │
        └── Enterprise + codebase Flutter existente
            └── ✅ Flutter

Para árvores de decisão completas: decision-trees.md


📋 Checklist Pré-Desenvolvimento

Antes de Começar QUALQUER Projeto Mobile

  • Plataforma confirmada? (iOS / Android / Ambas)
  • Framework escolhido? (RN / Flutter / Nativo)
  • Padrão de navegação decidido? (Tabs / Stack / Drawer)
  • State management selecionado? (Zustand / Redux / Riverpod / BLoC)
  • Requisitos offline conhecidos?
  • Deep linking planejado desde o dia um?
  • Dispositivos alvo definidos? (Telefone / Tablet / Ambos)

Antes de Cada Tela

  • Alvos de toque ≥ 44-48px?
  • CTA primária na zona de polegar?
  • Estado de carregamento existe?
  • Estado de erro com retry existe?
  • Tratamento offline considerado?
  • Convenções de plataforma seguidas?

Antes do Release

  • console.log removido?
  • SecureStore para dados sensíveis?
  • SSL pinning habilitado?
  • Listas otimizadas (memo, keyExtractor)?
  • Limpeza de memória no unmount?
  • Testado em devices de baixo desempenho?
  • Labels de acessibilidade em todos elementos interativos?

📚 Arquivos de Referência

Para orientação mais profunda em áreas específicas:

ArquivoQuando Usar
mobile-design-thinking.mdPRIMEIRO! Anti-memorização, força pensamento baseado em contexto
touch-psychology.mdEntender interação por toque, Lei de Fitts, design de gestos
mobile-performance.mdOtimizar RN/Flutter, 60fps, memória/bateria
platform-ios.mdDesign específico iOS, conformidade HIG
platform-android.mdDesign específico Android, Material Design 3
mobile-navigation.mdPadrões de navegação, deep linking
mobile-typography.mdEscala de tipo, fontes do sistema, acessibilidade
mobile-color-system.mdOtimização OLED, modo escuro, consciente de bateria
decision-trees.mdDecisões de framework, state, storage

Lembre-se: Usuários mobile são impacientes, constantemente interrompidos, e usam dedos imprecisos em telas pequenas. Design para as PIORES condições: rede ruim, uma mão, sol brilhante, bateria baixa. Se funciona lá, funciona em qualquer lugar.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Especialista em construir experiências 3D para a web - Three.js, React Three Fiber, Spline, WebGL e cenas 3D interativas. Cobre configuradores de produtos, portfólios 3D, websites imersivos e adição de profundidade às experiências web. Use quando: website 3D, three.js, WebGL, react three fiber, experiência 3D.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Quando o usuário quer planejar, projetar ou implementar um teste A/B ou experimento. Também use quando o usuário menciona "teste A/B", "split test", "experimento", "testar essa mudança", "copy variante", "teste multivariado" ou "hipótese". Para implementação de rastreamento, veja analytics-tracking.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Auditar e melhorar a acessibilidade web seguindo as diretrizes WCAG 2.1. Use quando solicitado para "melhorar acessibilidade", "auditoria a11y", "conformidade WCAG", "suporte a leitor de tela", "navegação por teclado" ou "tornar acessível".

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Testes e benchmarking de agentes LLM incluindo testes comportamentais, avaliação de capacidades, métricas de confiabilidade e monitoramento em produção—onde até os melhores agentes alcançam menos de 50% em benchmarks do mundo real. Use quando: testes de agentes, avaliação de agentes, benchmark de agentes, confiabilidade de agentes, teste de agentes.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Criar, gerenciar e orquestrar agentes de IA usando o CLI AI Maestro. Use quando o usuário pedir para "criar agente", "listar agentes", "deletar agente", "hibernar agente", "despertar agente", "instalar plugin", "mostrar agente", "reiniciar agente" ou qualquer tarefa de gerenciamento do ciclo de vida do agente.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Gerencie múltiplos agentes CLI locais via sessões tmux (iniciar/parar/monitorar/atribuir) com agendamento compatível com cron.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

artubss のスキルをすべて見る

このスキルの問題を報告する