Olá! Bem-vindo de volta ao nosso curso.
Na lição anterior, você aprendeu a importância de incorporar um ponto de verificação de humano no circuito (human-in-the-loop) para revisar e aprovar o plano do agente antes de qualquer código ser escrito. Agora, com um plano detalhado e validado em mãos (provavelmente em formato JSON), estamos prontos para a próxima fase crucial: a geração de código.
Esta lição aborda diretamente o seguinte resultado de aprendizagem: Construir prompts que forneçam contexto suficiente (código existente, regras de arquitetura) para a geração de código de alta qualidade.
Vamos mergulhar em como transformar nosso plano aprovado em código funcional e consistente, movendo-nos de simples instruções para uma abordagem de engenharia de software mais robusta, conhecida como Context Engineering.
1. Além do "Vibe Coding": A Necessidade de Contexto
Se você simplesmente alimentasse um LLM com o seu plano JSON e dissesse "implemente isso", os resultados seriam imprevisíveis. O modelo poderia:
- Alucinar funções ou APIs que não existem.
- Ignorar as convenções de nomenclatura e estilo do seu projeto.
- Produzir código que não se integra com a arquitetura existente.
Essa abordagem, às vezes chamada de "vibe coding", é adequada para prototipagem rápida, mas inadequada para ambientes de produção. Para construir um agente confiável, precisamos de uma abordagem mais sistemática.
Context Engineering is the New Vibe Coding (Learn this Now)
Para entender a mudança de paradigma, assista a esta introdução sobre 'Context Engineering' do canal de Cole Medin. O vídeo contrasta a abordagem de 'vibe coding' com a engenharia de contexto e explica por que fornecer um contexto abrangente é fundamental.
Assista ao trecho inicial, de 00:00 a 03:28. Preste atenção na definição de 'context engineering' de Andrej Karpathy: "a arte de fornecer todo o contexto para que a tarefa seja plausivelmente solucionável pelo LLM". O vídeo destaca que, quando os assistentes de IA falham, geralmente é por falta de informação, não por falta de capacidade.
A engenharia de contexto é o processo de projetar e fornecer esse ecossistema de informações ao LLM. Não se trata apenas de ajustar as palavras em um prompt, mas de tratar o próprio contexto como um recurso de engenharia.

2. A Anatomia de um Prompt de Alta Qualidade
Então, que informações compõem um "contexto rico" para a geração de código? Com base na sua experiência como desenvolvedor sênior, muitos desses elementos serão familiares, pois são os mesmos que você forneceria a um novo colega de equipe.
O artigo a seguir, de Addy Osmani, fornece um framework excelente para estruturar essas informações.
How to write a good spec for AI agents
O artigo 'How to write a good spec for AI agents' de Addy Osmani destila as melhores práticas para criar especificações que guiam os agentes de IA de forma eficaz. Vamos focar nos componentes essenciais de uma boa especificação.
Leia a seção '2. Structure the spec like a professional PRD (or SRS)'. Concentre-se na lista 'The six core areas'. Esta lista é um excelente checklist para garantir que seu prompt contenha todo o contexto necessário.
Vamos adaptar as "seis áreas principais" de Osmani para o nosso agente de codificação:
-
O Objetivo (O que construir):
- Descrição da Tarefa: O texto do ticket do Jira.
- Plano de Execução: Nosso plano JSON validado, que detalha os arquivos a serem modificados e as ações a serem tomadas.
-
Estrutura do Projeto:
- Um mapa claro do repositório: "O código-fonte do backend em C# está em
src/MyApi, os testes estão emtests/MyApi.Tests." - Isso guia o agente sobre onde criar novos arquivos e encontrar os existentes para modificação.
- Um mapa claro do repositório: "O código-fonte do backend em C# está em
-
Estilo de Código e Regras de Arquitetura:
- Exemplos de Código: A maneira mais eficaz de ensinar o estilo é mostrando. Inclua um trecho de um controller, serviço ou componente React existente que siga as melhores práticas do seu projeto.
- Convenções: "Nomes de branch devem seguir o padrão
feature/JIRA-123-description." "Useasync/awaitpara todas as operações de I/O." - Pilha de Tecnologia: Seja explícito sobre as versões e bibliotecas principais (ex: ".NET 8, Entity Framework Core, React 18 com Hooks, Dapper").
-
Testes:
- Como executar os testes (
dotnet test). - Onde os arquivos de teste devem ser criados.
- Exemplos de testes unitários existentes.
- Como executar os testes (
-
Fluxo de Trabalho do Git:
- Padrões de mensagem de commit.
- Requisitos para Pull Requests (ex: "O corpo do PR deve conter um link para o ticket do Jira").
-
Limites (Boundaries):
- O artigo de Osmani sugere um sistema de três níveis (Sempre faça, Pergunte primeiro, Nunca faça), que é extremamente útil para definir guardrails.
- 🚫 Nunca faça: "Nunca faça commit de segredos ou chaves de API." "Não modifique o arquivo
Startup.cssem aprovação." - ⚠️ Pergunte primeiro: "Pergunte antes de adicionar uma nova dependência NuGet ou pacote NPM."
- ✅ Sempre faça: "Sempre execute os testes unitários antes de criar um PR."
Reunir todo esse contexto manualmente para cada tarefa seria impraticável. Felizmente, existem frameworks e ferramentas para automatizar essa montagem.
3. Framework Prático: Product Requirement Prompts (PRPs)
O conceito de Product Requirement Prompt (PRP) formaliza a montagem de todo esse contexto em um único artefato abrangente que é então entregue ao agente para execução.
Context Engineering 101 - The Simple Strategy to 100x AI Coding
Para entender como os PRPs funcionam na prática, assista a este vídeo, que apresenta o framework e entrevista seu criador. Ele detalha a filosofia por trás dele.
Assista aos seguintes trechos (aproximadamente 8 minutos): 10:25 - 13:23: Ouça o criador do framework, Raasmus, explicar o que é um PRP: um PRD (Product Requirement Document) + Inteligência da Base de Código Curada + Roteiro de Execução do Agente. O objetivo é criar o pacote mínimo viável para que uma IA possa entregar código de produção. 13:23 - 17:08: Veja como o processo funciona. Um plano inicial (initial.md) é usado para gerar um PRP mais detalhado que reúne todo o contexto necessário (documentação, exemplos de código, etc.). 17:41 - 18:54: Preste atenção na importância da validação manual do PRP gerado. Isso se conecta diretamente à nossa lição anterior sobre HITL. Você deve revisar o PRP para garantir que ele esteja alinhado com a lógica de negócios antes da execução. 19:27 - 21:14: Entenda a distinção crucial entre regras globais (que raramente mudam, como estilo de codificação) e o contexto específico da tarefa (que vai no PRP).
O fluxo de trabalho com PRP geralmente envolve duas etapas principais:
- Geração do PRP: O agente, ou um processo separado, pega uma descrição de alto nível da tarefa e, usando o acesso à base de código e outras fontes de conhecimento, gera um prompt massivo e detalhado (o PRP). Este PRP inclui seções para o objetivo, arquivos a serem modificados, exemplos de código relevante, regras de arquitetura, etc.
- Execução do PRP: Após a revisão e aprovação humana, este PRP abrangente é alimentado ao agente de codificação para gerar as modificações de código.
Essa abordagem estruturada é exatamente o que transforma a geração de código de uma aposta em um processo de engenharia.
4. Implementando a Construção do Contexto no seu Workflow Atlassian
Agora, vamos conectar esses conceitos ao seu objetivo de construir um agente no ecossistema Atlassian.
O Papel do AGENTS.md
Uma maneira direta de fornecer as "regras de arquitetura" e "estilo de código" é através de um arquivo AGENTS.md na raiz do seu repositório. O Rovo Dev (e outras ferramentas de agente do GitHub) é projetado para ler este arquivo automaticamente.
Atlassian Rovo Dev — the King of Kontext
Este artigo sobre o Rovo Dev explica como ele utiliza o contexto para entender seu fluxo de trabalho. A seção sobre 'AGENTS.md' é particularmente relevante para nós.
Leia as seções intituladas 'The AGENTS.md multiplier' e 'Getting Started (The Actual Steps)'. A primeira seção explica que o arquivo AGENTS.md no seu repositório documenta a pilha de tecnologia, decisões de arquitetura e padrões de codificação, fornecendo um contexto específico do repositório para o agente. A segunda seção menciona um arquivo AGENTS.md global em ~/.rovodev/ para contexto de toda a equipe (estrutura da equipe, chaves de projeto do Jira, etc.).
Para o seu projeto, você pode criar um AGENTS.md em cada um dos seus repositórios (backend, frontend, mobile) contendo:
- Um trecho de código exemplar (ex: um endpoint C# com injeção de dependência, um componente React com hooks).
- Instruções de build e teste.
- Padrões de nomenclatura.
- Regras sobre o que não modificar.
Montando o Prompt Final (o "PRP")
Seu agente Rovo, acionado pelo evento do Jira, será responsável por montar o prompt final (nosso PRP) antes de chamar o LLM para gerar o código. O processo se parecerá com isto:
- Gatilho: O agente é ativado com o ID do ticket do Jira e nosso plano JSON aprovado.
- Coleta de Contexto: O agente executa várias etapas para coletar informações:
- Lê o
AGENTS.md: Carrega as regras arquitetônicas do repositório de destino. - Recupera Código Existente (RAG): Com base no plano JSON, ele identifica os arquivos que precisam ser modificados e recupera seu conteúdo atual da base de código.
- Recupera Regras de Negócio (RAG): Consulta as fontes de conhecimento (ex: Google Drive) para obter quaisquer regras de negócio relevantes para a tarefa.
- Lê o Ticket do Jira: Extrai a descrição original e os critérios de aceitação.
- Lê o
- Montagem do Prompt: O agente combina todas essas informações em um único prompt estruturado e abrangente, seguindo os princípios que discutimos. Ele instrui o LLM a usar o plano JSON como guia, aplicar as regras do
AGENTS.mde seguir o estilo do código existente fornecido. - Geração de Código: Este prompt completo é enviado ao modelo de IA da Atlassian para gerar as alterações de código.
Conclusão
Nesta lição, você aprendeu a arte e a ciência de construir prompts eficazes para a geração de código. Deixamos para trás a abordagem de "vibe coding" e adotamos um processo de engenharia estruturado.
Principais Pontos:
- A geração de código de alta qualidade depende de um contexto rico e bem estruturado, um conceito conhecido como Engenharia de Contexto.
- Um prompt eficaz deve incluir um objetivo claro, regras de arquitetura, estilo de código, exemplos de código existente, estrutura do projeto e limites claros.
- O framework Product Requirement Prompt (PRP) oferece um método sistemático para montar e executar esses prompts de alto contexto, incluindo uma etapa de revisão humana.
- No seu ecossistema, o arquivo
AGENTS.mdé a ferramenta ideal para armazenar regras de arquitetura específicas do repositório, que o seu agente Rovo pode consumir automaticamente.
Na Próxima Lição
Agora que entendemos como pedir por código de maneira eficaz, as próximas lições focarão nos detalhes da geração para cada parte da sua pilha de tecnologia. A seguir, vamos nos concentrar no backend, abordando o resultado: Guiar o agente para gerar modificações de código para uma aplicação backend C#/.NET.