Communitygithub.com

marnixGeerkens/rocketlauncher-claude-code

Diretrizes de desenvolvimento frontend para aplicações React/TypeScript. Padrões modernos incluindo Suspense, lazy loading, useSuspenseQuery, organização de arquivos com diretório de features, estilização MUI v7, TanStack Router, otimização de performance e melhores práticas TypeScript. Use ao criar componentes, páginas, funcionalidades, buscar dados, estilizar, rotear ou trabalhar com código frontend.

O que é rocketlauncher-claude-code?

Este skill fornece um guia abrangente e prático para desenvolvimento frontend moderno com React e TypeScript, focado em aplicações que utilizam TanStack Query, TanStack Router e MUI v7. Ele estabelece padrões claros para organização de arquivos, lazy loading, data fetching com Suspense, e otimização de performance. O guia é estruturado em tópicos como padrões de componentes, busca de dados, organização de arquivos, estilização, roteamento, tratamento de estados de carregamento e erro, e convenções TypeScript. Cada seção contém checklists de inicialização rápida, referências a guias detalhados em subpastas `resources/`, e princípios fundamentais, como 'Nunca use retornos antecipados para spinners de carregamento' e 'Prefira useSuspenseQuery para busca de dados'. O skill é ideal para desenvolvedores que desejam manter um código React consistente, performático e de fácil manutenção, especialmente em projetos que seguem a arquitetura baseada em features.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/marnixGeerkens/rocketlauncher-claude-code/tree/HEAD/components/skills/development/frontend-dev-guidelines

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Diretrizes de Desenvolvimento Frontend

Propósito

Guia abrangente para desenvolvimento React moderno, enfatizando busca de dados baseada em Suspense, lazy loading, organização adequada de arquivos e otimização de performance.

Quando Usar Este Skill

  • Criando novos componentes ou páginas
  • Construindo novas funcionalidades
  • Buscando dados com TanStack Query
  • Configurando roteamento com TanStack Router
  • Estilizando componentes com MUI v7
  • Otimização de performance
  • Organizando código frontend
  • Melhores práticas TypeScript

Início Rápido

Checklist para Novo Componente

Criando um componente? Siga este checklist:

  • Use o padrão React.FC<Props> com TypeScript
  • Lazy load se componente pesado: React.lazy(() => import())
  • Envolva em <SuspenseLoader> para estados de carregamento
  • Use useSuspenseQuery para busca de dados
  • Aliases de importação: @/, ~types, ~components, ~features
  • Estilos: Inline se <100 linhas, arquivo separado se >100 linhas
  • Use useCallback para manipuladores de eventos passados para filhos
  • Export default no final
  • Sem retornos antecipados com spinners de carregamento
  • Use useMuiSnackbar para notificações ao usuário

Checklist para Nova Funcionalidade

Criando uma funcionalidade? Configure esta estrutura:

  • Crie diretório features/{nome-da-funcionalidade}/
  • Crie subdiretórios: api/, components/, hooks/, helpers/, types/
  • Crie arquivo de serviço de API: api/{funcionalidade}Api.ts
  • Configure tipos TypeScript em types/
  • Crie rota em routes/{nome-da-funcionalidade}/index.tsx
  • Lazy load componentes da funcionalidade
  • Use boundaries Suspense
  • Exporte API pública do arquivo index.ts da funcionalidade

Referência Rápida de Aliases de Importação

AliasResolve ParaExemplo
@/src/import { apiClient } from '@/lib/apiClient'
~typessrc/typesimport type { User } from '~types/user'
~componentssrc/componentsimport { SuspenseLoader } from '~components/SuspenseLoader'
~featuressrc/featuresimport { authApi } from '~features/auth'

Definido em: vite.config.ts linhas 180-185


Folha de Dicas de Importações Comuns

// React & Lazy Loading
import React, { useState, useCallback, useMemo } from 'react';
const Heavy = React.lazy(() => import('./Heavy'));

// Componentes MUI
import { Box, Paper, Typography, Button, Grid } from '@mui/material';
import type { SxProps, Theme } from '@mui/material';

// TanStack Query (Suspense)
import { useSuspenseQuery, useQueryClient } from '@tanstack/react-query';

// TanStack Router
import { createFileRoute } from '@tanstack/react-router';

// Componentes do Projeto
import { SuspenseLoader } from '~components/SuspenseLoader';

// Hooks
import { useAuth } from '@/hooks/useAuth';
import { useMuiSnackbar } from '@/hooks/useMuiSnackbar';

// Tipos
import type { Post } from '~types/post';

Guias por Tópico

🎨 Padrões de Componentes

Componentes React modernos usam:

  • React.FC<Props> para segurança de tipos
  • React.lazy() para code splitting
  • SuspenseLoader para estados de carregamento
  • Padrão de const nomeada + export default

Conceitos-chave:

  • Lazy load componentes pesados (DataGrid, gráficos, editores)
  • Sempre envolva componentes lazy em Suspense
  • Use o componente SuspenseLoader (com animação de fade)
  • Estrutura do componente: Props → Hooks → Handlers → Render → Export

📖 Guia Completo: resources/component-patterns.md


📊 Busca de Dados

PADRÃO PRIMÁRIO: useSuspenseQuery

  • Use com boundaries Suspense
  • Estratégia cache-first (verifique cache do grid antes da API)
  • Substitui verificações isLoading
  • Type-safe com genéricos

Camada de Serviço de API:

  • Crie features/{funcionalidade}/api/{funcionalidade}Api.ts
  • Use instância apiClient do axios
  • Métodos centralizados por funcionalidade
  • Formato de rota: /form/route (NÃO /api/form/route)

📖 Guia Completo: resources/data-fetching.md


📁 Organização de Arquivos

features/ vs components/:

  • features/: Específico de domínio (posts, comments, auth)
  • components/: Verdadeiramente reutilizável (SuspenseLoader, CustomAppBar)

Subdiretórios de Funcionalidade:

features/
  minha-funcionalidade/
    api/          # Camada de serviço de API
    components/   # Componentes da funcionalidade
    hooks/        # Hooks customizados
    helpers/      # Funções utilitárias
    types/        # Tipos TypeScript

📖 Guia Completo: resources/file-organization.md


🎨 Estilização

Inline vs Separado:

  • <100 linhas: Inline const styles: Record<string, SxProps<Theme>>
  • 100 linhas: Arquivo .styles.ts separado

Método Principal:

  • Use prop sx para componentes MUI
  • Type-safe com SxProps<Theme>
  • Acesso ao tema: (theme) => theme.palette.primary.main

MUI v7 Grid:

<Grid size={{ xs: 12, md: 6 }}>  // ✅ Sintaxe v7
<Grid xs={12} md={6}>             // ❌ Sintaxe antiga

📖 Guia Completo: resources/styling-guide.md


🛣️ Roteamento

TanStack Router - Baseado em Pastas:

  • Diretório: routes/minha-rota/index.tsx
  • Lazy load componentes
  • Use createFileRoute
  • Dados de breadcrumb no loader

Exemplo:

import { createFileRoute } from '@tanstack/react-router';
import { lazy } from 'react';

const MyPage = lazy(() => import('@/features/minha-funcionalidade/components/MyPage'));

export const Route = createFileRoute('/minha-rota/')({
    component: MyPage,
    loader: () => ({ crumb: 'Minha Rota' }),
});

📖 Guia Completo: resources/routing-guide.md


⏳ Estados de Carregamento e Erro

REGRA CRÍTICA: Sem Retornos Antecipados

// ❌ NUNCA - Causa mudança de layout
if (isLoading) {
    return <LoadingSpinner />;
}

// ✅ SEMPRE - Layout consistente
<SuspenseLoader>
    <Content />
</SuspenseLoader>

Por quê: Previne Cumulative Layout Shift (CLS), melhor UX

Tratamento de Erros:

  • Use useMuiSnackbar para feedback ao usuário
  • NUNCA react-toastify
  • Callbacks onError do TanStack Query

📖 Guia Completo: resources/loading-and-error-states.md


⚡ Performance

Padrões de Otimização:

  • useMemo: Computações caras (filter, sort, map)
  • useCallback: Manipuladores de eventos passados para filhos
  • React.memo: Componentes caros
  • Busca com debounce (300-500ms)
  • Prevenção de vazamento de memória (cleanup no useEffect)

📖 Guia Completo: resources/performance.md


📘 TypeScript

Padrões:

  • Modo estrito, sem tipo any
  • Tipos de retorno explícitos em funções
  • Importações de tipo: import type { User } from '~types/user'
  • Interfaces de props de componentes com JSDoc

📖 Guia Completo: resources/typescript-standards.md


🔧 Padrões Comuns

Tópicos Abordados:

  • React Hook Form com validação Zod
  • Contratos de wrapper DataGrid
  • Padrões de componente Dialog
  • Hook useAuth para usuário atual
  • Padrões de mutação com invalidação de cache

📖 Guia Completo: resources/common-patterns.md


📚 Exemplos Completos

Exemplos funcionais completos:

  • Componente moderno com todos os padrões
  • Estrutura completa de funcionalidade
  • Camada de serviço de API
  • Rota com lazy loading
  • Suspense + useSuspenseQuery
  • Formulário com validação

📖 Guia Completo: resources/complete-examples.md


Guia de Navegação

Precisa de...Leia este recurso
Criar um componentecomponent-patterns.md
Buscar dadosdata-fetching.md
Organizar arquivos/pastasfile-organization.md
Estilizar componentesstyling-guide.md
Configurar roteamentorouting-guide.md
Tratar carregamento/errosloading-and-error-states.md
Otimizar performanceperformance.md
Tipos TypeScripttypescript-standards.md
Formulários/Auth/DataGridcommon-patterns.md
Ver exemplos completoscomplete-examples.md

Princípios Fundamentais

  1. Lazy Load Tudo que é Pesado: Rotas, DataGrid, gráficos, editores
  2. Suspense para Carregamento: Use SuspenseLoader, não retornos antecipados
  3. useSuspenseQuery: Padrão primário de busca de dados para código novo
  4. Funcionalidades são Organizadas: Subdiretórios api/, components/, hooks/, helpers/
  5. Estilos Baseados no Tamanho: <100 inline, >100 separado
  6. Aliases de Importação: Use @/, ~types, ~components, ~features
  7. Sem Retornos Antecipados: Previne mudança de layout
  8. useMuiSnackbar: Para todas as notificações ao usuário

Referência Rápida: Estrutura de Arquivos

src/
  features/
    minha-funcionalidade/
      api/
        minhaFuncionalidadeApi.ts       # Serviço de API
      components/
        MinhaFuncionalidade.tsx         # Componente principal
        SubComponente.tsx               # Componentes relacionados
      hooks/
        useMinhaFuncionalidade.ts       # Hooks customizados
        useSuspenseMinhaFuncionalidade.ts  # Hooks Suspense
      helpers/
        minhaFuncionalidadeHelpers.ts   # Utilitários
      types/
        index.ts                        # Tipos TypeScript
      index.ts                          # Exportações públicas

  components/
    SuspenseLoader/
      SuspenseLoader.tsx                # Loader reutilizável
    CustomAppBar/
      CustomAppBar.tsx                  # Barra de aplicação reutilizável

  routes/
    minha-rota/
      index.tsx                         # Componente de rota
      criar/
        index.tsx                       # Rota aninhada

Template de Componente Moderno (Cópia Rápida)

import React, { useState, useCallback } from 'react';
import { Box, Paper } from '@mui/material';
import { useSuspenseQuery } from '@tanstack/react-query';
import { featureApi } from '../api/featureApi';
import type { FeatureData } from '~types/feature';

interface MyComponentProps {
    id: number;
    onAction?: () => void;
}

export const MyComponent: React.FC<MyComponentProps> = ({ id, onAction }) => {
    const [state, setState] = useState<string>('');

    const { data } = useSuspenseQuery({
        queryKey: ['feature', id],
        queryFn: () => featureApi.getFeature(id),
    });

    const handleAction = useCallback(() => {
        setState('updated');
        onAction?.();
    }, [onAction]);

    return (
        <Box sx={{ p: 2 }}>
            <Paper sx={{ p: 3 }}>
                {/* Conteúdo */}
            </Paper>
        </Box>
    );
};

export default MyComponent;

Para exemplos completos, veja resources/complete-examples.md


Skills Relacionados

  • error-tracking: Rastreamento de erros com Sentry (aplica-se também ao frontend)
  • backend-dev-guidelines: Padrões de API backend que o frontend consome

Status do Skill: Estrutura modular com carregamento progressivo para gerenciamento de contexto ideal

Individual skills in this repo

This repo contains 13 individual skills — each has its own dedicated page.

marnixGeerkens/rocketlauncher-claude-code

When the user wants to optimize, improve, or increase conversions on any marketing page — including homepage, landing pages, pricing pages, feature pages, or blog posts. Also use when the user says "CRO," "conversion rate optimization," "this page isn't converting," "improve conversions," or "why isn't this page working." For signup/registration flows, see signup-flow-cro. For post-signup activation, see onboarding-cro. For forms outside of signup, see form-cro. For popups/modals, see popup-cro.

marnixGeerkens/rocketlauncher-claude-code

Balance visual design with ATS compatibility for creative roles. Use when the user is in design, art, writing, marketing creative, or any visual/creative field and needs a resume that looks distinctive but still parses.

marnixGeerkens/rocketlauncher-claude-code

Transform resume bullets into detailed portfolio case studies with context, action, and outcome. Use when the user mentions portfolio, case study, project write-up, or expanding a resume bullet into a longer narrative.

marnixGeerkens/rocketlauncher-claude-code

Expert in building portfolios that actually land jobs and clients - not just showing work, but creating memorable experiences. Covers developer portfolios, designer portfolios, creative portfolios, and portfolios that convert visitors into opportunities. Use when: portfolio, personal website, showcase work, developer portfolio, designer portfolio.

marnixGeerkens/rocketlauncher-claude-code

Tailwind CSS v4 principles. CSS-first configuration, container queries, modern patterns, design token architecture.

marnixGeerkens/rocketlauncher-claude-code

Frontend development patterns for React, Next.js, state management, performance optimization, and UI best practices.

marnixGeerkens/rocketlauncher-claude-code

Next.js App Router principles. Server Components, data fetching, routing patterns.

marnixGeerkens/rocketlauncher-claude-code

Expert integration of Supabase Auth with Next.js App Router Use when: supabase auth next, authentication next.js, login supabase, auth middleware, protected route.

marnixGeerkens/rocketlauncher-claude-code

Comprehensive frontend development skill for building modern, performant web applications using ReactJS, NextJS, TypeScript, Tailwind CSS. Includes component scaffolding, performance optimization, bundle analysis, and UI best practices. Use when developing frontend features, optimizing performance, implementing UI/UX designs, managing state, or reviewing frontend code.

marnixGeerkens/rocketlauncher-claude-code

Create API handoff documentation for frontend developers. Use when backend work is complete and needs to be documented for frontend integration, or user says 'create handoff', 'document API', 'frontend handoff', or 'API documentation'.

marnixGeerkens/rocketlauncher-claude-code

Document frontend data needs for backend developers. Use when frontend needs to communicate API requirements to backend, or user says 'backend requirements', 'what data do I need', 'API requirements', or is describing data needs for a UI.

marnixGeerkens/rocketlauncher-claude-code

Comprehensive Python library for astronomy and astrophysics. This skill should be used when working with astronomical data including celestial coordinates, physical units, FITS files, cosmological calculations, time systems, tables, world coordinate systems (WCS), and astronomical data analysis. Use when tasks involve coordinate transformations, unit conversions, FITS file manipulation, cosmological distance calculations, time scale conversions, or astronomical data processing.

marnixGeerkens/rocketlauncher-claude-code

Comprehensive patterns for Next.js 14+ App Router architecture, Server Components, and modern full-stack React development.

Habilidades Relacionadas