> ## 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.

# Ingeniería de prompts

> Prácticas recomendadas para crear prompts eficaces para obtener código de alta calidad de Windsurf, incluyendo objetivos claros, contexto y restricciones.

Si estás leyendo esto, probablemente ya entiendes algunos de los casos de uso y las limitaciones de los LLM. Cuanto mejores sean el prompt y el contexto que proporciones al modelo de IA, mejor será el resultado.

De forma similar en Windsurf, existen prácticas recomendadas para crear prompts más efectivos, sacar el máximo provecho de la herramienta y obtener el código de mayor calidad posible para acelerar tus flujos de trabajo.

<Tip>Para tareas más complejas que puedan requerir [@-mencionar](/es/chat/overview/#mentions) bloques de código específicos, usa [Chat](/es/chat/overview) en lugar de [Command](/es/command/plugins-overview). </Tip>

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

* ***Objetivo o resultado claro***
  * ¿Qué le estás pidiendo al modelo de IA que produzca?
  * ¿Le estás pidiendo al modelo de IA un plan? ¿Código nuevo? ¿Un refactor?
* ***Todo el contexto relevante para realizar la(s) tarea(s)***
  * ¿Has usado correctamente las @-menciones para asegurarte de que se incluya el contexto adecuado?
  * ¿Hay algún contexto específico de un cliente que pueda no ser claro para Windsurf?
* ***Restricciones necesarias***
  * ¿Hay frameworks, bibliotecas o lenguajes específicos que deban utilizarse?
  * ¿Hay restricciones de complejidad en espacio o en tiempo?
  * ¿Hay consideraciones de seguridad?

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

***Ejemplo n.º 1:***

* **Incorrecto**: Escribir pruebas unitarias para todos los casos de prueba de un objeto Order Book.

* **Correcto**: Usando `@class:unit-testing-module` escribe pruebas unitarias para `@func:src-order-book-add` comprobando las excepciones lanzadas cuando el valor está por encima o por debajo del stop loss

***Ejemplo n.º 2***:

* **Incorrecto**: Refactorizar rawDataTransform.

* **Correcto**: Refactorizar `@func:rawDataTransform` convirtiendo el bucle while en un bucle for y usando la misma estructura de datos de salida que `@func:otherDataTransformer`

***Ejemplo n.º 3***:

* **Incorrecto**: Crear un nuevo Button para el formulario de contacto.

* **Correcto**: Crear un nuevo componente Button para `@class:ContactForm` usando la guía de estilos en `@repo:frontend-components` que diga «Continuar»
