Skip to content

Visao Geral da Arquitetura

O arquivo docs/ARCHITECTURE.md e uma configuracao opcional que personaliza como os agentes geram e revisam codigo no seu projeto. Quando presente, todos os agentes seguem seus padroes. Quando ausente, os agentes usam boas praticas genericas para o seu framework.

Opcional

Use specialist-agent detect para analisar seu projeto e gerar um guia de arquitetura. Voce tambem pode criar docs/ARCHITECTURE.md manualmente.

Como Funciona

  1. Execute specialist-agent detect para analisar e gerar docs/ARCHITECTURE.md
  2. Os agentes verificam se o arquivo existe antes de cada acao
  3. Se encontrado, seguem seus padroes para geracao e revisao de codigo
  4. Se nao encontrado, usam boas praticas genericas
  5. Edite o arquivo a qualquer momento para mudar o comportamento dos agentes — sem reiniciar

Padrao Default

Quando docs/ARCHITECTURE.md e instalado, ele fornece uma arquitetura de quatro camadas como ponto de partida. Isso nao e obrigatorio — voce pode editar ou substituir por qualquer padrao que se encaixe no seu projeto (Clean Architecture, Hexagonal, DDD, Feature-Sliced Design, ou o seu proprio).

CamadaFazNAO Faz
ServiceChamadas HTTPtry/catch, transformacao, logica
AdapterParsear API ↔ App (snake_case → camelCase)HTTP, efeitos colaterais
LogicaOrquestrar service + adapter + estadoRenderizar UI
State StoreEstado do cliente (UI, filtros, preferencias)Estado do servidor, HTTP
ComponentUI + composicaoLogica de negocio pesada

Equivalentes por Framework

Cada framework tem sua propria terminologia e ferramentas idiomaticas. A tabela abaixo mostra escolhas comuns — nao prescricoes. Use o que fizer sentido para o seu projeto:

CamadaVueReactNext.jsSvelteKitAngularAstroNuxt
LogicaComposableHookHook / Server ActionLoad functionService + inject()EndpointComposable / useFetch
Estado clientePinia, etc.Zustand, Redux, etc.Zustand, etc.Svelte storesSignals, NgRxPinia / useState
Estado servidorVue Query, etc.React Query, SWR, etc.RSC, React Query, etc.SvelteKit loadHttpClient, etc.useFetch / useAsyncData
ComponenteSFC (.vue)JSX (.tsx)JSX (.tsx).svelteStandalone component.astro / IslandsSFC (.vue)

Estrutura Modular

Cada funcionalidade e um modulo autocontido:

text
src/modules/[feature]/
├── components/     ← UI
├── logic/          ← Orquestracao (hooks, composables, load functions)
├── services/       ← HTTP puro (sem try/catch)
├── adapters/       ← Parsers (API ↔ App)
├── stores/         ← Apenas estado do cliente
├── types/          ← .types.ts (API) + .contracts.ts (App)
├── views/          ← Paginas
├── __tests__/      ← Testes
└── index.ts        ← Barrel export (API publica)

Regras de Importacao

  • Modules → Shared: Permitido
  • Modules → Modules: Nunca (mova o codigo compartilhado para shared/)
  • App → Modules: Apenas router e registro

Convencoes de Nomenclatura

Arquivos

TipoPadraoExemplo
Diretorioskebab-caseuser-settings/
ComponentesPascalCaseUserSettingsForm
Views / PaginasPascalCaseMarketplaceView
Logica (hooks, etc.)use + PascalCase.tsuseProductsList.ts
Serviceskebab-case-service.tsproducts-service.ts
Adapterskebab-case-adapter.tsproducts-adapter.ts
Typeskebab-case.types.tsproducts.types.ts
Contractskebab-case.contracts.tsproducts.contracts.ts

Codigo

TipoPadraoExemplo
Variaveis / funcoescamelCasegetUserById, isLoading
Types / InterfacesPascalCaseUserProfile, Product
ConstantesUPPER_SNAKE_CASEAPI_BASE_URL, MAX_RETRIES
Booleanosis/has/can/shouldisLoading, hasPermission
Event handlershandle + acaohandleSubmit, handleDelete

Padroes Principais

  • Evite Prop Drilling: Use padroes de composicao nativos do seu framework
  • Utils vs Helpers: Utils = funcoes puras, Helpers = funcoes com efeitos colaterais
  • Tratamento de Erros: Centralizado na camada de logica
  • SOLID: Cada arquivo = 1 responsabilidade

Sem ARCHITECTURE.md

Quando nao ha docs/ARCHITECTURE.md no projeto:

  • Agentes funcionam normalmente — usam padroes genericos para o seu framework
  • @planner nota a ausencia e usa padroes genericos
  • @builder gera codigo usando convencoes padroes do framework
  • @reviewer revisa contra boas praticas gerais

Para adicionar depois:

bash
# Copie do pack do seu framework instalado
cp node_modules/specialist-agent/packs/{framework}/ARCHITECTURE.md docs/ARCHITECTURE.md

Mergulho Profundo

  • Camadas — Exemplos detalhados de cada camada
  • Componentes — Padroes e composicao de componentes
  • Referencia completa: docs/ARCHITECTURE.md no seu projeto (se instalado)