Certifique-se de ler Quando Usar o Devin e Como Instruir o Devin com Eficiência para mais dicas essenciais.
Adicionando um Novo Endpoint de API
Boa abordagemPor que isso funciona:
Abordagem ruimPor que isso falha:
“Create a new endpoint
/users/stats that returns a JSON object with user count and average signup age. Use our existing users table in PostgreSQL. You can reference the /orders/stats endpoint in statsController.js for how we structure responses. Ensure the new endpoint is covered by the StatsController.test.js suite.”- Especifica claramente a rota e o formato de resposta esperado
- Faz referência a código existente como modelo
- Define a fonte de dados (tabela de usuários)
- Inclui requisitos de cobertura de testes
Abordagem ruimPor que isso falha:
- Não é específico sobre quais estatísticas incluir
- Não menciona fontes de dados
- Não faz referência a padrões existentes
- Não define requisitos de testes
Funcionalidade de Frontend para Exibir Dados
Boa abordagemPor que isso funciona:
Abordagem ruimPor que isso falha:
“In
UserProfileComponent, add a dropdown that shows a list of user roles (admin, editor, viewer). Use the styling from DropdownBase. When a role is selected, call the existing API to set the user role. Validate by checking that the selection updates the user role in the DB. Refer to your Knowledge for how to test properly.”- Nomeia componentes específicos
- Lista exatamente quais papéis de usuário incluir
- Faz referência ao componente de estilização existente
- Define o fluxo de interação do usuário
- Inclui etapas de validação
Abordagem ruimPor que isso falha:
- “Amigável ao usuário” é subjetivo
- Não menciona componentes de UI específicos
- O fluxo de interação do usuário não está claro
- Critérios de validação vagos
Mais exemplos
Bom
Escrevendo testes unitários
“Adicione testes Jest para os métodos do AuthService: login e logout. Garanta que a cobertura de testes para essas duas funções seja de pelo menos 80%. Use
UserService.test.js como exemplo. Após a implementação, execute npm test -- --coverage e verifique se o relatório de cobertura mostra >80% para ambas as funções. Também confirme que os testes passem com credenciais válidas e inválidas e que o logout limpe corretamente os dados de sessão.”UserService.test.js) e um escopo bem definido com etapas específicas de verificação.Migrando ou refatorando código existente
“Migre
logger.js de JavaScript para TypeScript. Já temos um tsconfig.json e uma suíte de testes LoggerTest.test.js para validação. Certifique-se de que o código compile sem erros e não altere a configuração existente! Após a migração, verifique: 1) executando tsc para confirmar que não há erros de tipo, 2) executando a suíte de testes com npm test LoggerTest.test.js para garantir que todos os testes passem e 3) conferindo se todas as chamadas existentes para métodos do logger em toda a base de código ainda funcionam sem erros de tipo.”tsconfig.json) e uma suíte de testes para feedback imediato, além de etapas específicas de compilação e validação.Atualizando APIs ou consultas de banco de dados
“Estamos migrando de pg para sequelize (leia https://sequelize.org/api/v6/identifiers). Atualize as consultas de
UserModel para usar métodos do Sequelize. Consulte OrderModel para ver como fazemos isso nesta base de código. Após a implementação, verifique: 1) executando npm run test:integration UserModel.test.js para checar se todos os testes de integração passem, 2) confirmando que o desempenho das consultas não foi prejudicado, verificando o tempo de execução em um conjunto de dados de teste com 1000 usuários, e 3) validando que todas as operações de CRUD ainda mantêm a integridade dos dados ao executar npm run test:e2e user-flows.test.js.”OrderModel.js). Fornece um link para a documentação para que o Devin saiba consultá-la e inclui etapas específicas de verificação de desempenho e funcionalidade com comandos de teste exatos.Implementando uma funcionalidade a partir de um design
“Implemente a página de preços com base neste arquivo do Figma: https://figma.com/file/abc123/Pricing-Page. Concentre-se no frame ‘Pricing Section’. Use nossa configuração do Tailwind em
tailwind.config.ts para cores e espaçamentos. Reutilize os componentes Card e Button existentes em src/components/ui/. Após a implementação, inicie o servidor de desenvolvimento e faça capturas de tela nas larguras desktop (1440px) e mobile (375px). Não abra uma PR até que a implementação corresponda ao design.”Investigando um bug em produção
“Usuários estão relatando erros 500 na página de checkout. Use o Sentry MCP para obter as stack traces mais recentes do projeto payments-api. Verifique o banco de dados em busca de quaisquer problemas de dados relacionados. Encontre a causa raiz, corrija e adicione um teste de regressão. Inclua o link da issue do Sentry na descrição da PR.”
Ruim
Revisão de código sem escopo definido
Por que é ruim? A solicitação é vaga demais e sem foco. Não há critérios de sucesso nem uma forma de o Devin saber quando terminou.Em vez disso: Use o Devin Review para revisão de código automatizada em PRs específicas ou dê ao Devin uma tarefa direcionada, como: “Encontre e corrija todos os usos da API
oldLogger descontinuada em src/services/.”Solicitações visuais puramente subjetivas
Por que é ruim? “Melhor” é subjetivo e o Devin não tem critérios para orientar o trabalho. O Devin pode construir interfaces funcionais e implementar designs a partir de especificações, mas não pode fazer julgamentos estéticos sozinho.Em vez disso: Forneça um design no Figma, um site de referência ou mudanças específicas: “Aumente o tamanho da fonte da seção hero para 48px, adicione padding de 32px e use a cor
indigo-500 da nossa configuração do Tailwind.”Projetos muito complexos e vagamente definidos
Por que é ruim? Esta é uma tarefa muito grande e não estruturada. Ela exige muitas decisões de arquitetura, trade-offs e contexto que não estão no prompt.Em vez disso, divida em etapas:
- Use o Ask Devin para investigar sua codebase e mapear dependências
- Peça ao Devin para propor arquiteturas específicas com seus respectivos trade-offs
- Crie sessões separadas para implementar cada serviço — execute-as em paralelo com batch sessions
