Pular para o conteúdo

Boas Práticas

Padrões e anti-padrões aprendidos com desenvolvimento assistido por IA no mundo real.


Forneça o contexto do projeto à IA no início da sessão, não aos poucos.

Ruim:

Você: "Add a button"
IA: *Cria um botão genérico*
Você: "Actually, we use TypeScript"
IA: *Reescreve com tipos*
Você: "And we have specific naming conventions"
IA: *Reescreve novamente*

Bom:

Você: *Fornece AGENTS.md + role + task*
IA: *Cria o botão seguindo todas as convenções na primeira vez*

Trate o AGENTS.md como documentação viva. Atualize quando:

  • Você estabelecer novos padrões
  • Você tomar decisões arquiteturais
  • Você aprender com erros da IA
  • As convenções do projeto evoluírem

Mesmo em sessões longas, o contexto da IA pode se perder. Para tarefas importantes:

  • Referencie seções específicas do AGENTS.md
  • Reafirme restrições críticas
  • Verifique o entendimento antes da execução

## Scope
### Allowed
- src/components/Button/**
- src/components/index.ts (add export only)
### Forbidden
- src/core/**
- src/utils/**
- Any *.config.* files

Quando você tem expectativas específicas:

## Requirements
### Example Usage
\`\`\`tsx
// Basic
<Button variant="primary">Click me</Button>
// With icon
<Button leadingIcon={<PlusIcon />}>Add Item</Button>
// As link
<Button as="a" href="/home">Go Home</Button>
\`\`\`

Ruim:

## Requirements
Make it look nice and work well.

Bom:

## Requirements
- Follow design tokens in `src/tokens/`
- Support hover, active, focus, and disabled states
- Minimum touch target: 44x44px
- Color contrast: WCAG AA (4.5:1 for text)

Ruim:

## Goal
Build the entire checkout flow including cart, shipping, payment, and confirmation.

Bom:

## Goal
Create the CartSummary component displaying line items with quantities and totals.

Cada item da “Definition of Done” deve ser verificável:

## Definition of Done
- [ ] `pnpm lint` passes
- [ ] `pnpm typecheck` passes
- [ ] `pnpm test` passes
- [ ] Component has Storybook story
- [ ] All props are documented with JSDoc

Se seu projeto tem padrões de teste, aplique-os:

## Definition of Done
- [ ] Unit tests exist for: render, props, events
- [ ] Accessibility test with `expectNoA11yViolations`
- [ ] Coverage meets 80% threshold

A saída da IA deve sempre ser revisada. Automatize verificações, mas a revisão humana identifica:

  • Erros de lógica que passam nos testes
  • Violações de convenção que não são detectadas pelo linter
  • Desvios de arquitetura
  • Problemas de segurança

TarefaMelhor Role
”Build new component”developer
”Design new feature”architect
”Add test coverage”tester
”Review this PR”reviewer
”Write documentation”documenter

Roles têm restrições embutidas. O role tester não modifica código de implementação. O role reviewer sugere mas não reescreve.

Ruim:

## Goal
Write tests and fix any bugs you find.

Isso mistura os roles tester e developer. Divida em:

  1. Task: Escrever testes (role tester)
  2. Task: Corrigir bugs encontrados nos testes (role developer)

  1. Crie a implementação básica
  2. Adicione testes
  3. Refine com base no feedback
  4. Repita

Para tarefas grandes, defina checkpoints:

## Checkpoints
### Checkpoint 1: Structure
- [ ] All files created
- [ ] Basic component renders
### Checkpoint 2: Functionality
- [ ] All props work
- [ ] Events fire correctly
### Checkpoint 3: Quality
- [ ] Tests pass
- [ ] Lint passes
- [ ] A11y passes

Defina limites e pontos de parada claros. A IA vai continuar “melhorando” para sempre se você permitir.


A IA cometerá erros. Seu fluxo de trabalho deve:

  1. Capturar erros através de verificações automatizadas
  2. Fornecer feedback claro
  3. Permitir iteração

Quando a IA comete o mesmo erro consistentemente:

  1. Adicione o padrão correto ao AGENTS.md
  2. Adicione um “Don’t” ao role relevante
  3. Adicione validação à Definition of Done

Se a IA continua cometendo o mesmo erro, o contexto provavelmente não está claro. Melhore o AGENTS.md em vez de lutar contra a ferramenta.


Sempre proteja:

### Forbidden
- .env*
- **/credentials*
- **/secrets*
- .github/workflows/** (CI/CD)

Nunca permita que código gerado por IA que toca autenticação, pagamentos ou dados de usuários passe sem revisão.

Nunca coloque chaves de API, senhas ou tokens no AGENTS.md ou nas tasks.


O AGENTS.md deve ser commitado no controle de versão. É documentação que ajuda:

  • Novos membros da equipe a entender o projeto
  • Assistentes de IA a entender convenções
  • O seu eu futuro a lembrar das decisões

Use templates de task consistentes em toda a equipe:

  • Mesma estrutura
  • Mesmo formato de Definition of Done
  • Mesmas convenções de escopo

Se um desenvolvedor usa padrões diferentes do que o AGENTS.md descreve, a IA fica confusa. Mantenha as convenções consistentes.


Se sua ferramenta de IA suporta, faça cache do AGENTS.md e das definições de role. Reenviá-los a cada mensagem desperdiça tokens e tempo.

  • Para tarefas simples: A definição da task pode ser suficiente
  • Para tarefas complexas: AGENTS.md completo + role + task
# TASK
## Goal
Fix typo in README.md: "teh" → "the"
## Task Type
docs
## Scope
### Allowed
- README.md
### Forbidden
- Everything else
## Requirements
Find "teh" and replace with "the".
## Definition of Done
- [ ] Typo is fixed
- [ ] No other changes made

Isso é excessivo. Para tarefas triviais, um prompt simples é suficiente.


Comece com:

  1. AGENTS.md básico
  2. Um ou dois roles
  3. Template de task simples

Adicione complexidade conforme aprende o que seu projeto precisa.

Acompanhe:

  • Tempo desde a criação até a conclusão da task
  • Número de iterações necessárias
  • Tipos de erros que passam despercebidos
  • Problemas específicos da IA

Você não precisa de 15 roles e 50 páginas de AGENTS.md no primeiro dia. Construa o que precisa, quando precisa.


Antes de executar uma task:

  • O AGENTS.md está atualizado
  • O role apropriado está selecionado
  • A task tem um objetivo claro
  • O escopo está explicitamente definido
  • Os requisitos são específicos
  • A Definition of Done é verificável
  • A revisão humana está planejada