32 lines
2.0 KiB
Markdown
32 lines
2.0 KiB
Markdown
# 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.
|