Formatos de salida de Cursor CLI e integración CI
El post anterior 10-headless-scripts usó -p --force para cambiar archivos desde scripts. Este trata el formato de salida: para la misma ejecución del Agent puedes elegir "solo texto final", "JSON estructurado completo" o "JSON en streaming mientras corre" — en CI parseas resultados, mides tiempo o muestras progreso con estos tres formatos.
Tres formatos de salida
| Formato | Flag | Mejor para |
|---|---|---|
| text | Por defecto, o --output-format text |
Lectura humana, solo respuesta final, escribir a archivo |
| json | --output-format json |
Parseo en scripts, pass/fail en CI, extraer campos |
| stream-json | --output-format stream-json |
Progreso en vivo, seguimiento de tool calls, monitoreo de runs largos |
text: Respuesta final limpia
cursor agent -p "What is the entry point of this repo?"Sin --output-format obtienes text: la salida es solo la respuesta final, sin tool calls ni pasos intermedios — útil para pegar en docs o como descripción corta.
En CI, para escribir la conclusión del Agent a un archivo:
cursor agent -p "Generate release notes for this version from CHANGELOG" > release_notes.txtjson: Para scripts y CI
cursor agent -p --output-format json "Analyze src/ dependencies and return JSON: { \"entry\": \"...\", \"deps\": [...] }"La salida es JSON estructurado, con result, duration_ms o campos que pidas en el prompt.
En CI puedes:
- Usar
jqpara obtener campos, comprobar vacíos o buscar palabras clave - Usar código de salida y contenido para decidir pass/fail del job
Ejemplo conceptual:
cursor agent -p --output-format json "Do a short code review; return {\"ok\": true/false, \"summary\": \"...\"}" | jq -r '.result'
# Then use .ok or .summary for next steps or to fail the buildLos campos exactos dependen de la doc de Cursor; la idea es "json para parseo programático."
stream-json: Progreso en vivo y seguimiento de herramientas
cursor agent -p --output-format stream-json --stream-partial-output "Analyze project and write analysis.txt"- Cada línea es un evento JSON (p. ej.
system,assistant,tool_call,result) --stream-partial-outputenvía el texto del assistant como deltas incrementales, para mostrar "contador de caracteres en vivo" o "progreso %"- Parsea tool_call started/completed para ver qué archivo lee/escribe el Agent y cuánto tarda
Útil para: runs largos, mostrar "procesando archivo N" en logs de CI o en una UI, o contar tool calls y duración.
Consejos de integración CI
| Necesidad | Sugerencia |
|---|---|
| Solo importa "¿terminó y cuál es la conclusión?" | text + redirigir a archivo o variable; comprobar código de salida |
| Pass/fail según contenido | json + parseo con jq |
| Log en vivo o progreso | stream-json + parsear línea a línea por tipo/subtipo |
| El Agent debe editar archivos | Añade --force (ver 10-headless-scripts) |
| Ejecutar en CI | Configura CURSOR_API_KEY; usa --model para fijar modelo si hace falta |
Manejo de fallos
- Cuando falla la ejecución del Agent, la CLI suele devolver código de salida distinto de cero
- En scripts usa
if [ $? -ne 0 ]; then exit 1; fioset -epara que CI falle correctamente - Con json también puedes comprobar un campo
erroro tuok: falsepersonalizado como refuerzo
Resumen
- text: Por defecto, legible, salida mínima; bueno para escribir a archivo o como descripción
- json: Estructurado para
jqo scripts; bueno para decisiones CI y extracción - stream-json + --stream-partial-output: Flujo de eventos en vivo; bueno para progreso y seguimiento de herramientas
- En CI: configura
CURSOR_API_KEY, respeta el código de salida y parsea JSON para pass/fail cuando haga falta
Siguiente: 12-sessions-cloud — Reanudar sesión con --resume y ejecución en la nube con -c.