Constituição de Engenharia
Visão Geral
Uma carta portátil de práticas de engenharia, decomposta em skills focados. Este skill é o índice: ele declara os princípios invioláveis e roteia você para o skill específico da sua tarefa. O raciocínio completo está em references/engineering-constitution.md, incluído junto com este SKILL.md para que viaje com o skill onde quer que ele seja instalado.
Ideia central: Engenharia de software é programação integrada ao longo do tempo. Otimize para o sistema de longa duração — operá-lo, alterá-lo com segurança, recuperá-lo quando quebrar — não para o primeiro deploy.
Os Oito Princípios Invioláveis
- Entenda antes de construir. Nenhum código antes de um design aprovado.
- Registre cada decisão com sua justificativa — e o que você rejeitou.
- Testes são um controle, não uma formalidade — e mudança comportamental é test-first. Um teste falhando é informação, nunca editado. Mudança estrutural é limitada pela suíte existente passando sem edições.
- YAGNI, impiedosamente.
- Automatize o repetível.
- Engenharia de software é programação integrada ao longo do tempo.
- Uma regra não imposta é uma sugestão. Vincule regras a ferramentas ou rotule-as como julgamento do revisor.
- As instruções explícitas do usuário têm precedência sobre este documento. Precedência: Usuário → Constituição → padrões da ferramenta.
Qual Skill Eu Preciso?
Tier 1 — universal (aplica-se a todo projeto):
| Sua tarefa | Skill |
|---|---|
| Iniciar uma funcionalidade, transformar uma ideia em especificação/plano | designing-before-building |
| Uma decisão foi tomada; escrevê-la (ADR, índice, ideias adiadas) | recording-decisions |
| Commitar, escrever mensagens, releases automatizados | conventional-commits-and-releases |
| Escrever/alterar testes; regras de permissão/papéis; um teste quebrou em um refator | tests-as-a-control |
| Escrever ou refatorar código; estruturar uma mudança; decisões DRY | change-hygiene-and-code-craft |
| Construir UI, componentes, estilização, acessibilidade | interface-craft-and-accessibility |
| CI, hooks pre-push, runners de tarefas, portões de merge | merge-gates-and-automation |
| Logging, métricas, tracing, health checks, SLOs, alertas | observability-and-slos |
| Entrada não confiável, segredos, autenticação, dependências, modelagem de ameaças | defense-in-depth-security |
| Caminhos críticos, paginação, N+1, endpoints de lista, interfaces públicas | performance-and-scale |
| Planejar um deploy, rollback ou incidente/pós-morte | resilience-and-deploy-safety |
Tier 2 — específico de stack (carregue apenas quando a ferramenta/tópico estiver presente):
| Sua tarefa | Skill |
|---|---|
| PostgreSQL, PostGraphile, RLS, arquivos SQL, o caminho app→GraphQL→DB | postgres-postgraphile-rls-and-sql |
| Consultas GraphQL compartilhadas entre UI e testes; testes de contrato rota/schema | graphql-contract-testing |
| Mudança de schema com dados que devem sobreviver — migrações, backfills | zero-downtime-migrations |
| Deploy no Kubernetes/AKS, segredos na nuvem, rollout progressivo, ambientes por PR | cloud-delivery-aks |
Como Esses Skills se Aplicam a um Novo Projeto
- Tier 1 viaja sem alterações. Todo skill acima da linha se aplica a qualquer projeto — web app, pipeline, CLI, biblioteca.
- Tier 2 é substituível. Quando a stack difere, os skills Tier 2 não serão acionados (suas descrições são específicas de stack) e você substitui por equivalentes. Os princípios que eles implementam (um caminho de dados, aplicação final baixa, seams de contrato, deploys reversíveis) ainda se mantêm.
- Escala para o ciclo de vida. Um projeto pré-lançamento ou apenas local aplica migrações zero-downtime, canary e processo formal de incidente como escreva-a-regra-agora, ative-no-gatilho. Declare o modo do projeto em seu primeiro registro de decisão.
Bandeira Vermelha
Se você está prestes a escrever código, commitar, fazer deploy ou alterar um teste e não consultou o skill relevante acima — pare e carregue-o primeiro. A constituição substitui o hábito padrão (Princípio 7); o hábito é o que ela está corrigindo.