Pular para o conteúdo
~/.primo-academy.sh
☰ Aulas · Engenharia assistida por IA: Claude Code, Cursor, Copilot, audit, testes e refactor · 0/8
Recomendado: essencial

Projeto final: feature completa com IA no loop, diffs auditáveis, PR limpo

5 min de leitura

fonte

Hora de unir tudo. Você vai construir uma feature completa com IA no loop: decomposição, geração, audit, test, commit, review, PR. O ciclo real de "AI-assisted development" em produção: patterns corretos, diffs auditáveis, prompts reproduzíveis, tests que pegam bugs, PR com checklist AI-aware aceito por reviewer em 30 min.

Esse projeto não segue o esqueleto de "explicar conceito + dar exemplo" dos outros nós. É um brief de projeto, no estilo de projects/<slug>.mdx do aprenda-community. Lê até o fim antes de comecar.

O que você vai construir

Uma feature completa de UI com IA no loop, entregue como:

  • Spec (1-2 páginas) antes de pedir código.
  • Decomposição em 3-5 sub-tarefas (cada uma com teste).
  • IA gera cada sub-tarefa (com prompt explícito).
  • Você audita com checklist (segurança, performance, edge cases).
  • Tests que pegam bugs (Stryker mutation score 80%+).
  • 5-10 commits atômicos com prompt no commit message.
  • PR descritivo com AI_NOTES.md e prompts reproduzíveis.
  • Reviewer aprova em 30 min (não 2h).

Stack obrigatória:

  • AI tool: Claude Code, Cursor, ou Copilot.
  • Linguagem: TypeScript (rede de segurança).
  • Tests: Vitest + Stryker (mutation testing).
  • Lint: ESLint + Prettier.
  • CI: GitHub Actions (lint, test, type check).

Objetivo

  • Praticar ciclo completo de AI- assisted development: spec, decom- posição, geração, audit, test, commit.
  • Construir feature com diffs auditáveis (cada PR explica o que IA gerou, o que você escreveu, o que você revisou).
  • Aplicar patterns corretos: decomposição, prompts reproduzíveis, mutation testing, AI_NOTES.md.
  • Medir tempo economizado por IA e bugs pegos pelo review.

Requisitos (mínimo)

Spec e decomposição:

  • Spec de 1-2 páginas antes de pedir código (objetivo, casos de uso, constraints, edge cases).
  • Decomposição em 3-5 sub-tarefas com dependência clara.
  • Cada sub-tarefa tem acceptance criteria testável.
  • Cada sub-tarefa tem teste escrito primeiro (TDD).

Prompts e geração:

  • Cada sub-tarefa tem prompt explícito salvo em arquivo (prompts/<sub-tarefa>.md) ou no commit message.
  • Tool de IA (Claude Code, Cursor, ou Copilot) usado pra cada sub-tarefa.
  • Output da IA commitado com prompt visível (🤖 Generated with [tool] no commit).
  • Nenhum código de auth/payment/ crypto gerado por IA (só boilerplate).

Audit e revisão:

  • Checklist AI-aware aplicado a cada sub-tarefa (16 itens do node anterior).
  • Stryker mutation score >= 70%.
  • TypeScript strict mode sem any (ou com justificativa).
  • ESLint + Prettier passam sem warnings.
  • Test coverage >= 80%.
  • Performance verificada (Big O aceitável, sem memory leak).
  • Edge cases cobertos (null, vazio, Unicode, boundary).

Tests e CI:

  • Tests unitários + integration
    • (opcional) e2e.
  • Mutation testing (Stryker) roda em CI.
  • Visual diff se UI (Playwright screenshot).
  • CI falha se mutation score < threshold.

PR e review:

  • PR description com:
    • O que foi feito.
    • Por que foi feito.
    • AI_NOTES.md com:
      • Código gerado por IA (lista).
      • Código escrito manualmente (lista).
      • Checklist de review aplicada.
    • Prompts usados (reproduzíveis).
  • Commits atômicos (1 sub-tarefa = 1-2 commits).
  • Conventional Commits format.
  • Reviewer aprova em 30 min (não 2h).

Validação:

  • Tempo economizado por IA: medir (sem IA vs com IA, feature equivalente).
  • Bugs pegos pelo review (1+ bug por feature, "achamos isso graas ao checklist").
  • Mutation score >= 70% em cada sub-tarefa.
  • Zero bugs em prod na primeira semana.

Estrutura do relatório (ai-loop-report.md)

# AI Loop Report - [nome-da-feature]

## TL;DR

- Feature: [nome]
- AI tool: Claude Code / Cursor / Copilot
- Tempo economizado: X horas (vs sem IA)
- Sub-tarefas: 5
- Prompts: 5 (em prompts/)
- AI_NOTES.md: incluído no PR
- Mutation score: 85%
- Bugs pegos em review: 3

## Spec (resumo)

- **Objetivo:** [1 linha]
- **Casos de uso:** 3 principais
- **Constraints:** [lista]
- **Edge cases:** 5 cobertos

## Decomposição

1. Sub-tarefa 1 (3h)
   - Acceptance: [criteria]
   - Tests: [quantidade]
   - Prompt: prompts/sub-1.md
2. Sub-tarefa 2 (2h)
   - ...
3. ...

## Prompts

(prompts/sub-1.md, prompts/sub-2.md, ...)

## AI_NOTES.md

```markdown
# AI Notes

## What was generated
- src/feature/Component.tsx (full)
- src/feature/types.ts (full)
- tests/feature/Component.test.tsx (partial)

## What I wrote manually
- src/feature/config.ts (env vars)
- src/feature/secret-handling.ts (security)

## What I reviewed
- [x] Read all generated code
- [x] Audited with checklist
- [x] Tests run locally
- [x] Type check passes
- [x] ESLint passes
- [x] Stryker mutation score 80%+
- [x] Security review (auth/payment)
- [x] Performance check

Resultados

  • Tempo economizado: 4h (de 8h pra 4h)
  • Bugs pegos em review: 3
  • Mutation score: 85%
  • Coverage: 92%
  • Zero bugs em prod (1 semana)

Aprendizados

...


## Desafios extras (stretch goals)

- [ ] **2-pass review com 2 LLMs** (Claude
  gera, GPT revisa, ou vice-versa).
- [ ] **AI_NOTES.md** auto-gerado por
  ferramenta (Cursor/Claude Code).
- [ ] **Property-based testing** com
  fast-check.
- [ ] **Visual regression** com Playwright.
- [ ] **Storybook** com stories geradas
  por IA.
- [ ] **Documentation** auto-gerada
  (typedoc, JSDoc) por IA.
- [ ] **Performance profiling** (Sentry
  profiling) - IA ajuda a identificar
  hot paths.
- [ ] **MCP integration** (DB query, file
  system access).
- [ ] **Self-hosted LLM** pra feature
  privacity-sensitive.
- [ ] **Test plan generation** - IA
  gera test plan antes de código.

## Dicas

**Por onde comecar:**

1. **Escolher feature pequena.** Algo
   que daria 4-8h sem IA. **Evite
   feature grande** (refactor de
   auth, novo sistema de pagamento)
   pra primeiro projeto.
2. **Escrever spec.** 1-2 páginas
   com objetivo, casos de uso,
   constraints, edge cases. **Sem
   spec, IA gera genérico**.
3. **Decompor em 3-5 sub-tarefas.**
   Cada uma com acceptance criteria
   testável.
4. **Escrever testes primeiro** (TDD).
   Pra cada sub-tarefa, escreva
   teste vermelho, depois peca IA
   pra implementar.
5. **Salvar prompt em arquivo.**
   `prompts/sub-1.md` etc. **Auditável**.
6. **Auditar cada sub-tarefa** com
   checklist.
7. **Commits atômicos.** 1 sub-tarefa
   = 1-2 commits. Prompt no commit
   message.
8. **PR com AI_NOTES.md** e
   checklist completo.

**Armadilhas comuns:**

- **Spec vaga** = IA gera genérico.
  **Solução**: spec detalhada com
  exemplos.
- **Decomposição em 1 feature
  monolítica** = IA falha em algum
  lugar. **Solução**: 3-5 sub-tarefas.
- **Teste escrito por IA sem
  validação** = "teatro". **Solução**:
  mutation testing.
- **Prompt não salvo** = impossível
  reproduzir/audit. **Solução**:
  sempre `prompts/<sub-tarefa>.md` ou
  no commit.
- **AI_NOTES.md ausente** = reviewer
  não sabe o que revisar. **Solução**:
  sempre incluir.
- **Commit "feat: add feature"** =
  impossível auditar o que IA
  fez. **Solução**: prompt no
  commit message.
- **Review "LGTM"** = perde bugs.
  **Solução**: checklist AI-aware,
  30-60 min.
- **Vibe coding** (aceitar tudo) =
  AI slop. **Solução**: TDD +
  decomposição + audit.

**Como validar que terminou:**

- [ ] Spec existe é detalhada.
- [ ] 3-5 sub-tarefas cada uma com
  teste, prompt, AI_NOTES.
- [ ] Mutation score >= 70%.
- [ ] Coverage >= 80%.
- [ ] Type check + ESLint passam.
- [ ] PR com AI_NOTES.md e prompts.
- [ ] Reviewer aprovou em <= 30 min.
- [ ] Zero bugs em prod (1 semana).
- [ ] Tempo economizado: feature
  equivalente em 50% do tempo sem
  IA (medição informal).

**Leituras que ajudam durante o projeto:**

- [Claude Code - Workflows](https://docs.claude.com/en/docs/claude-code/common-workflows) - patterns comuns, sub-tasks, multi-file.
- [Cursor - Best practices](https://docs.cursor.com/guides/best-practices) - composer, agent, codebase context.
- [Conventional Commits](https://www.conventionalcommits.org/) - format de commit message.

> O projeto final é onde a trilha
> vira "sua". A escolha de **qual
> feature** é o caminho feliz. Os
> principios - spec, decomposição,
> prompts reproduzíveis, audit,
> tests, AI_NOTES - aplicam a
> qualquer feature AI-assisted. O
> esqueleto dado é o caminho feliz,
> desvie quando precisar e anote as
> decisões no `editorial-decisions.md`
> da trilha.

<Checkpoint
  challenge="Implemente a função `avaliarFluxoIA(checklist)` que avalia se um workflow de AI-assisted development segue os patterns corretos. Recebe: checklist = { temSpec: boolean, decomposicaoEmSubTarefas: boolean, testesPorSubTarefa: boolean, promptsSalvos: boolean, aiNotes: boolean, mutationScore: number (0-100, ou 0 se não mediu), commitsAtomicos: boolean, reviewComChecklist: boolean }. Calcule score baseado em: cada boolean true = 10 pontos, mutationScore (0-100) = 1 ponto por % (cap 25). max(0, min(100, score)). Retorna: { score, qualidade: 'excelente' | 'boa' | 'media' | 'fraca' }. qualidade: score >= 90 'excelente', >= 70 'boa', >= 50 'media', senão 'fraca'. Apenas inclua chaves para critérios presentes no input."
  starterCode={`// ImplementeavaliarFluxoIA(checklist) que avalia se um workflow
// de AI-assisted development segue os patterns corretos.
//
// Schema de entrada:
//   checklist = {
//     temSpec?: boolean,
//     decomposicaoEmSubTarefas?: boolean,
//     testesPorSubTarefa?: boolean,
//     promptsSalvos?: boolean,
//     aiNotes?: boolean,
//     mutationScore?: number,
//     commitsAtomicos?: boolean,
//     reviewComChecklist?: boolean
//   }
//
// Schema de saída:
//   { score: number, qualidade: 'excelente' | 'boa' | 'media' | 'fraca' }
//
// Calculo:
// - Cada boolean true: +10 pontos
// - mutationScore (0-100): 1 ponto por % (max 25)
// - max(0, min(100, score))
//
// Qualidade:
// - score >= 90: 'excelente'
// - score >= 70: 'boa'
// - score >= 50: 'media'
// - senão: 'fraca'
functionavaliarFluxoIA(checklist) {
  return { score: 0, qualidade: 'fraca' };
}

const _r1 =avaliarFluxoIA({
  temSpec: true, decomposicaoEmSubTarefas: true, testesPorSubTarefa: true,
  promptsSalvos: true, aiNotes: true, mutationScore: 85, commitsAtomicos: true,
  reviewComChecklist: true
});
console.log(JSON.stringify(_r1));

const _r2 =avaliarFluxoIA({
  temSpec: true, decomposicaoEmSubTarefas: true, testesPorSubTarefa: true,
  promptsSalvos: false, aiNotes: false, mutationScore: 60, commitsAtomicos: true,
  reviewComChecklist: true
});
console.log(JSON.stringify(_r2));

const _r3 =avaliarFluxoIA({
  temSpec: false, decomposicaoEmSubTarefas: false, testesPorSubTarefa: false,
  promptsSalvos: false, aiNotes: false, mutationScore: 0, commitsAtomicos: false,
  reviewComChecklist: false
});
console.log(JSON.stringify(_r3));

const _r4 =avaliarFluxoIA({
  temSpec: true, decomposicaoEmSubTarefas: true, testesPorSubTarefa: false,
  promptsSalvos: true, aiNotes: true, mutationScore: 50, commitsAtomicos: true,
  reviewComChecklist: false
});
console.log(JSON.stringify(_r4));`}
  expected='{"score":100,"qualidade":"excelente"}
{"score":65,"qualidade":"media"}
{"score":0,"qualidade":"fraca"}
{"score":75,"qualidade":"boa"}'
  slug="engenharia-ia"
  nodeId="projeto-final"
/>

// recursos

// avaliação da trilha

—
ainda sem avaliações