5.6 KiB
5.6 KiB
Instruções Base para IA – Projetos React
Instruções genéricas de desenvolvimento React, etapas de workflow e uso de agentes. Contexto específico do projeto (objetivo, URLs, ambientes) está em .agent/project/PROJECT_CONTEXT.md — consulte-o sempre que necessário.
Regra primordial – Ambiente obrigatório
- Todo ajuste deve ser feito em um ambiente explícito (ex.:
financeiro-cnab,rh,gr,prafrot). - Se o ambiente não for informado: Pergunte em qual ambiente a alteração será feita antes de realizar qualquer mudança. Isso evita erros e mantém o isolamento entre módulos.
Etapas de Desenvolvimento
Etapa 1 – Construção e validação lógica
- Estudo: Pesquise a fundo o que foi solicitado (materiais extras + código a ser alterado). Use os agentes (e o orquestrador) para aumentar a precisão (ex.:
BrowserValidationAgent,DataIntegrityAgentpara formulários/APIs). - Implementação: Desenvolva o solicitado seguindo os padrões desta base e do projeto.
- Testes pesados: Valide que o código funciona em termos lógicos:
- Build sobe sem erros (
npm run build). - Nenhum componente com erros (lint, tipos se houver).
- Use agentes para testes automatizados (ex.:
AgentOrchestrator.validateBuild,validateComponent).
- Build sobe sem erros (
Etapa 2 – Validação visual e usabilidade
- Condição: Pergunte ao usuário se as implementações já estão em ambiente de desenvolvimento.
- Se sim: Solicite URL e acesso (credenciais) para testes reais.
- Ações: Execute testes de usabilidade no que foi construído (fluxos, formulários, respostas da API). Use agentes (ex.:
BrowserValidationAgent,UIAdaptationAgent) conforme os respectivos*.mdem.agent/agents/.
Uso de agentes
- Sempre que relevante, leia os
.mdem.agent/agents/e, se alguma condicional de um agente se aplicar à tarefa, utilize esse agente (ou o orquestrador) no fluxo. - O Documentation Agent deve ser chamado toda vez que algo for feito no projeto, além de quando o usuário solicitar, para manter a documentação atualizada.
Contexto técnico essencial
Arquitetura
- Framework: React 18+ com Vite.
- Linguagem: JavaScript (ES6+).
- Estilização: Tailwind CSS (mobile-first, design system atômico).
- UI: Shadcn UI (Radix UI + Lucide).
- Arquitetura: Modular (encapsulamento por features).
- Estado: Zustand (global) + React Context (por módulo).
- Padrão: Domain-Driven Feature Folders em
src/features/.
Estrutura de pastas
src/
├── components/
│ ├── ui/ # Shadcn (NUNCA editar manualmente)
│ └── shared/ # Componentes transversais (StatCard, PageHeader, etc.)
├── features/ # Domínios de negócio (uma pasta por feature)
├── hooks/ # Hooks globais (useTheme, useAuth, etc.)
├── services/ # Integrações com API (Axios / React Query)
└── utils/ # Formatadores e validadores
Padrões de desenvolvimento
- Componentes funcionais (obrigatório): use apenas componentes funcionais.
- Hooks para lógica: extraia lógica de negócio em hooks (
useX). - JSDoc: use JSDoc para documentar tipos e contratos quando fizer sentido.
Ambientes e isolamento
- Ambiente: ecossistema isolado (ex.: Financeiro, RH, Frota) com Sidebar, Header e conjunto de telas.
- Isolamento: ao ajustar um ambiente, nunca altere componentes internos de outro.
- Componentes: os específicos de um ambiente ficam em
src/features/[ambiente]/components/. - Shared: use
src/components/sharedapenas para elementos realmente universais. Se uma mudança no shared puder quebrar outro ambiente, use cópia local ou variantes/props.
Padrão dual-version (componentes complexos)
src/features/[feature]/components/[NomeComponente]/
├── index.js # Entry point (exporta produção por padrão)
├── [Componente].jsx # Produção (limpo, funcional)
└── [Componente].debug.jsx # Debug (wrapper com controles e mocks)
Camada de dados (Axios)
- Use a instância em
src/services/api.js. - Cada feature tem seu
[feature]Service.jsencapsulando chamadas à API. - Faça o mapeamento dos dados da API nos Services; os componentes não devem conhecer a estrutura bruta.
- Use
try/catch, interceptores para 401 e erros globais, e feedback via Toasts/alertas.
Performance
- Code splitting com
React.lazy()eSuspensenas rotas principais. useMemoeuseCallbackem componentes pesados (tabelas, gráficos).- Minimize dependências pesadas; prefira Shadcn e soluções nativas.
- Ícones vetoriais (Lucide) e imagens otimizadas.
O que nunca fazer
- Importar componentes privados de um ambiente em outro.
- Criar lógica de negócio global específica de um único módulo.
- Ignorar o bundle size ao adicionar dependências.
- Criar componentes com mais de 200 linhas.
Sempre fazer
- Verificar componentes existentes no Shadcn antes de criar novos.
- Encapsular lógica em
features/. - Usar
index.jspor feature para expor apenas o necessário (Public API). - Isolar o ambiente em desenvolvimento.
- Comentar em português quando explicar isolamento ou regras importantes.
- Validar performance após mudanças grandes.
- Usar Tailwind para estilização.
IMPORTANTE: Esta base é a referência para padrões de código. O contexto do projeto (URLs, credenciais, documentação por ambiente) está em .agent/project/PROJECT_CONTEXT.md.