> ## Documentation Index
> Fetch the complete documentation index at: https://docs.windsurf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Engenharia de Prompts

> Boas práticas para elaborar prompts eficazes e obter código de alta qualidade no Windsurf, incluindo objetivos claros, contexto e restrições.

Se você está lendo isto, provavelmente já entende alguns casos de uso e limitações de LLMs. Quanto melhor o prompt e o contexto que você fornecer ao modelo de IA, melhor será o resultado.

Da mesma forma no Windsurf, há boas práticas para elaborar prompts mais eficazes, tirar o máximo proveito da ferramenta e obter o código da melhor qualidade possível para acelerar seus fluxos de trabalho.

<Tip>Para tarefas mais complexas que podem exigir que você [@-mencione](/pt-BR/chat/overview/#mentions) blocos de código específicos, use o [Chat](/pt-BR/chat/overview) em vez de [Command](/pt-BR/command/plugins-overview). </Tip>

<div id="components-of-a-high-quality-prompt">
  ## Componentes de um prompt de alta qualidade
</div>

* ***Objetivo ou resultado claro***
  * O que você está pedindo para o modelo de IA produzir?
  * Você está pedindo ao modelo de IA um plano? Código novo? É um refator?
* ***Todo o contexto relevante para executar a(s) tarefa(s)***
  * Você usou corretamente @-mentions para garantir que o contexto adequado seja incluído?
  * Há algum contexto específico do cliente que possa não estar claro para o Windsurf?
* ***Restrições necessárias***
  * Existem frameworks, bibliotecas ou linguagens específicas que devem ser utilizados?
  * Existem restrições de complexidade de espaço ou de tempo?
  * Existem considerações de segurança?

<div id="examples">
  ## Exemplos
</div>

***Exemplo nº 1:***

* **Ruim**: Escrever testes de unidade para todos os casos de teste de um objeto Order Book.

* **Bom**: Usando `@class:unit-testing-module`, escreva testes de unidade para `@func:src-order-book-add`, testando as exceções lançadas quando o valor fica acima ou abaixo do stop loss

***Exemplo nº 2***:

* **Ruim**: Refatorar rawDataTransform.

* **Bom**: Refatore `@func:rawDataTransform`, transformando o laço while em um laço for e usando a mesma estrutura de dados de saída que `@func:otherDataTransformer`

***Exemplo nº 3***:

* **Ruim**: Criar um novo Button para o Formulário de Contato.

* **Bom**: Crie um novo componente Button para o `@class:ContactForm`, usando o guia de estilo em `@repo:frontend-components` que diz “Continue”
