Skip to content

ADRs — Architecture Decision Records

Decisões arquiteturais transversais e evergreen versionadas em docs/adr/. Complementa SDD/miniSpec sem duplicar — artefatos de feature apenas referenciam ADRs.

Single source of truth: ADR captura a decisão. PRD/Tech Spec/Scope referenciam. Nunca duplicam.


Quando criar uma ADR

Uma decisão é candidata se TODAS as 3 heurísticas são verdadeiras:

CritérioPerguntaOK se
transversalA decisão se aplica a outras features ou ao projeto inteiro?SIM
tag_alvoCai em uma das 14 tags canônicas?SIM
custo_reversaoReverter implicaria refactor significativo (≥ médio) em múltiplos lugares?SIM

Se algum for NÃO → não é ADR. A decisão deve viver no Tech Spec / Scope / código.


Exemplos típicos

DecisãoTagPor que ADR
Repository + Service patternarchitectureTransversal, aplica a todos os módulos
Sessão JWT em sessionStorageauthTransversal, reversão exige alterar múltiplos clientes
Zod como validador universalvalidationTransversal, todos os contratos usam
SQLC + MySQL para persistênciadataTransversal, todos os repositórios seguem
Wire para DIarchitectureTransversal, toda composição passa por aqui

Modelo Nygard enxuto

Cada ADR tem 5 seções:

SeçãoConteúdo
ContextSituação e forças que levaram à decisão
DecisionO que foi decidido
ConsequencesPositivas e negativas
Alternatives consideredConsideradas e rejeitadas, com justificativa
Applied inFeatures que implementam (atualizado conforme aplicação)

Detalhes em Template Nygard.


Status (ciclo de vida)

StatusSignificadoPode ser referenciada?
acceptedDecisão ativa (default ao criar)Sim
deprecatedNão recomendar mais; sem substitutaSim (com warning)
superseded-by:NNNNSubstituída pela ADR NNNNSim (com aviso para migrar)

Detalhes em Lifecycle.


Tags canônicas (lista fechada)

architecture, state-management, auth, security, data, http,
validation, testing, build, observability, performance, ui,
error-handling, cross-cutting

Lista fechada com 14 entradas. Tag fora da lista é proibida. Se nenhuma cobre o tema, é caso de discutir adicionar uma nova ao framework — não criar ADR com tag inventada.


Skills do framework ADR (9)

SkillOperaçãoTipo
agent-spec-adr-bootstrapCorpus inicial a partir de varredura do projetoGenerator
agent-spec-adr-createNova ADR (dona do template canônico)Generator
agent-spec-adr-showExibir ADR específicaMaintenance
agent-spec-adr-listListar ADRs (filtro tag/status)Maintenance
agent-spec-adr-supersedeSubstituir ADR por outraGenerator
agent-spec-adr-deprecateMarcar ADR como deprecatedMaintenance
agent-spec-adr-reviewAuditoria (read-only)Maintenance
agent-spec-adr-reindexRegenerar INDEX.md (dona do script canônico)Maintenance

Integração com SDD/miniSpec

agent-spec-sdd-generate-tech-spec e agent-spec-minispec-generate-scope detectam candidatos a ADR durante a geração e propõem criar via agent-spec-adr-create.

agent-spec-staff-architecture-review (Gate 2) valida conformidade com ADRs durante execução. Violação clara = severity: critical, category: adr_compliance.

Detalhes em Integração com Frameworks.


INDEX.md

docs/adr/INDEX.md é uma tabela resumida regenerada por agent-spec-adr-reindex:

markdown
| ID    | Título                          | Status     | Tags             | Problema (1-linha)         |
|-------|---------------------------------|------------|------------------|----------------------------|
| 0001  | repository-service-pattern      | accepted   | architecture     | Padrão de acesso a dados   |
| 0042  | rate-limit-strategy             | accepted   | http,performance | Picos comprometem latência |

Por que separar INDEX: skills leem INDEX.md (pequeno) para decidir quais ADRs consultar e só abrem as relevantes — evita carregar todas no contexto.


Configuração via framework-paths.md

Paths sob adr.* no framework-paths.md:

ChaveDefault
adr.dir/docs/adr
adr.index_file/docs/adr/INDEX.md
adr.file_pattern{id}-{slug}.md
adr.template/.claude/skills/agent-spec-adr-create/assets/adr-template.md
adr.reindex_script/.claude/skills/agent-spec-adr-reindex/scripts/reindex.cjs

Veja Path Templates.


Próximos passos

AgentSpec Framework · Spec-driven com IA sobre Claude Code