16. Prompts y comunicación efectiva con OpenCode

Objetivo del tema

Aprender a expresarte de forma que el agente acierte a la primera: estructura de un buen pedido, uso del contexto en tiempo real (archivos, comandos, imágenes), división correcta entre lo persistente y lo puntual, y plantillas reutilizables.

16.1 Por qué importa cómo pides

El modelo solo ve lo que llega al contexto: tus palabras, los archivos referenciados y las salidas de comandos adjuntas. Un pedido vago produce resultados genéricos; un pedido preciso produce cambios quirúrgicos.

Claridad

Describe qué quieres lograr y dónde. Evita ambigüedades y supuestos que el agente no pueda verificar por sí mismo.

Contexto

Incluye estado actual, restricciones y ejemplos. La información que aportas decide cómo actúa el agente.

Validación

Indica cómo se comprueba el éxito: tests que deben pasar, comportamiento esperado, formato de la salida.

16.2 Anatomía de un pedido efectivo

Del pedido débil al pedido fuerte
Pedido débil Pedido fuerte ¿Qué cambió?
"Arregla el login" "Los usuarios con email verificado reciben 401 en POST /api/login desde ayer. El endpoint está en @src/routes/auth.ts. Encuentra la causa, corrígela y agrega un test de regresió" Síntoma + ubicación exacta + criterio de éxito
"Hazlo más rápido" "Esta consulta tarda 2s con 50k filas: @src/db/reportes.sql. Propón una estrategia de índices y mide el antes/después" Metrica observable + alcance acotado

Estructura mental para cualquier tarea no trivial:

  • Objetivo: qué problema resuelves.
  • Alcance: carpetas o componentes involucrados (con @ si puedes).
  • Condiciones: convenciones, dependencias, cosas que no debe tocar.
  • Entrega: cómo validar (tests, comando a correr, salida esperada).

16.3 Contexto en tiempo real durante la conversación

Más allá de las palabras, OpenCode te da canales directos para adjuntar contexto justo cuando lo necesitas:

  • @archivo: búsqueda difusa y contenido completo del archivo en el mensaje; con la extensión del IDE puedes referenciar líneas exactas (@Archivo#L37-42).
  • !comando: ejecuta shell y agrega su salida al hilo. "!npm test" antes de pedir un arreglo da al modelo el error literal.
  • Imágenes: arrastralas a la terminal (o pégalas): capturas de un diseño, screenshot de un bug, diagrama de arquitectura. El modelo las interpreta.
  • Selección del editor: con la extensión instalada, tu selección activa viaja automáticamente como contexto.

Regla práctica: cada pieza de contexto que agregues tú es una suposición menos que debe hacer el modelo. Un !git log --oneline -5 pegado en la conversación vale por tres preguntas de aclaración.

16.4 Persistente vs puntual: qué va en cada lugar

Distribución correcta del conocimiento
Tipo de información Dónde vive Ejemplo
Convenciones permanentes del proyecto AGENTS.md "Usamos TypeScript estricto; imports relativos prohibidos"
Comandos estándar AGENTS.md Cómo instalar, correr tests, levantar el entorno
Preferencias personales AGENTS.md global "Responde en español; commits en modo imperativo"
Detalles de esta tarea El prompt actual "Solo el módulo de facturación, sin tocar esquemas"
Estado transitorio !, imágenes, @ Salida del test roto, captura del diseño nuevo

Si te descubres repitiendo la misma instrucción en varios prompts, es señal de que debe migrar al AGENTS.md o convertirse en comando personalizado.

16.5 Planificar primero: comunicarse por etapas

Para tareas grandes, el mejor prompt es dos prompts: uno para acordar el plan (modo Plan) y otro para ejecutarlo (modo Build). Esta separación convierte la comunicación en un diálogo barato: corregir un plan cuesta segundos; deshacer una implementación equivocada cuesta minutos y confianza.

  • Pide explícitamente alternativas: "propón dos estrategias con pros y contras".
  • Anota decisiones con imágenes: arrastra el mockup y di "sigue este diseño".
  • Cierra el plan con la validación acordada: "listo, implemétalo y corre la suite completa".

16.6 Plantillas reutilizables: tus prompts como comandos

Cuando un tipo de pedido se repite (reporte de bug, nueva feature, revisión), conviértelo en un comando personalizado con argumentos (tema 14). Dos plantillas base:

.opencode/commands/bug.md — uso: /bug No carga el listado en producción

Investiga este bug: $ARGUMENTS
Pasos:
1. Reproduce el problema o identifica dónde fallaría según el código.
2. Identifica la causa raíz y explicala antes de cambiar nada.
3. Implementa la corrección mínima necesaria.
4. Agrega un test de regresión que falle sin el arreglo.
5. Corre la suite completa.

.opencode/commands/feature.md — uso: /feature exportar pedidos a CSV

Nueva funcionalidad: $ARGUMENTS
Antes de implementar, presenta un plan breve con archivos a crear o modificar,
decisiones abiertas si las hay, y cómo se probará. Espera mi confirmación.

16.7 Iterar sin miedo y errores comunes

La comunicación con un agente es iterativa por naturaleza: /undo revierte el último intercambio con sus cambios y permite reformular; los planes se corrigen conversando. Aun así, estos errores aparecen una y otra vez:

  • Pedir cinco cosas juntas: divide tareas grandes; cada mensaje, un objetivo verificable.
  • No decir dónde mirar: sin @ ni pistas, el agente busca a ciegas en repositorios grandes.
  • Aceptar sin validar: revisa siempre el diff y exige que corran los tests antes de terminar.
  • Repetir contexto manualmente: si lo escribiste tres veces, mígralo al AGENTS.md.
  • Prompts de una palabra: "optimiza", "mejora", "limpia"... sin criterio medible son lotería.

Conclusión: comunicarte bien con OpenCode combina tres hábitos: estructura clara en cada pedido (objetivo, alcance, validación), contexto fresco mediante @, ! e imágenes, y separación limpia entre lo persistente (AGENTS.md, comandos) y lo puntual (la conversación). En el próximo tema cubriremos la otra pata de la profesionalización: seguridad, privacidad y solución de problemas.