testes/.agent/skills/architecture-rules/SKILL.md

2.0 KiB

SKILL: Architecture Rules (.agent/skills/architecture-rules)

📌 Objetivo

Garantir que a evolução do PlatformSistemas mantenha o isolamento total entre os módulos e siga o padrão "Zero-Boilerplate" para conexões com o backend.

🏗️ Regras de Escopo de Componentes

1. Libs/Shared (src/components/shared)

  • Definição: Apenas componentes Puros e Burros (Stateless ou State-local).
  • Proibido: Lógica de negócio, chamadas ao api.js ou dependência de contextos específicos de feature (ex: useVehicles).
  • Exemplos: Button.jsx, ModalBase.jsx, Input.jsx, LoadingOverlay.jsx.

2. Feature-Specific (src/features/[feature]/components)

  • Definição: Componentes que possuem lógica de negócio ou dependem de hooks da própria feature.
  • Obrigatório: Devem viver dentro da pasta da feature correspondente.
  • Exemplos: VehicleCard.jsx (Prafrot), AttendanceFormModal.jsx (Prafrot), TripDetailsModal.jsx (Prafrot).

🔌 Regra "Zero-Boilerplate" (API Contract)

  • JAMAIS crie arquivos *Service.js para novas funcionalidades.
  • Sempre Use o hook useApiContract.js em conjunto com o arquivo de configuração JSON correspondente (ex: prafrotRoutes.json).
  • TanStack Query: Use os poderes de cache e invalidação automática providos pelo re-query através do hook central.

🛡️ Muralha de Isolamento

  1. Tokens Modulares: Sempre injete o token correspondente ao módulo via getTokenForModule(environment).
  2. Anti-Colisão: Antes de alterar um componente em shared, verifique se a mudança afeta o layout de outros módulos (RH, GR, Financeiro). Use variantes em vez de condicionais de negócio.
  3. Tailwind v4: Siga o padrão de camadas (@layer components) no index.css para evitar conflitos de utilitários customizados.

⚠️ Enforcement (Falha Crítica se Violado)

Qualquer tentativa de injetar lógica de "Prafrot" em um componente usado pelo "RH" sem o uso de variantes isoladas será considerada regressão técnica.