# 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.
