Workflows 2.0
Luego pídele al agente de IA que cree workflows para ti.

A finales de 2025, Skills y Workflows se convirtieron en los temas más populares en el desarrollo de IA. Skills - un mecanismo simple pero extremadamente poderoso que ya está soportado por la mayoría de los agentes de IA. Con la extensión Supercode, ahora puedes crear y usar Workflows de cualquier complejidad y flexibilidad en Cursor.
Seis meses después del lanzamiento de Smart Actions, vimos cientos de ejemplos de cadenas de acciones increíblemente largas y ramificadas creadas por nuestros usuarios: desde integraciones con rastreadores de tareas y mensajeros hasta ciclos de desarrollo completamente automatizados con refactorización paso a paso, abstracción y extracción de módulos, deduplicación de código y cobertura completa de pruebas.
Estamos orgullosos de este resultado, y durante este tiempo recibimos una gran cantidad de retroalimentación y solicitudes de mejoras. Hoy nos complace presentar el mecanismo actualizado: Workflows.
Esta actualización contiene 3 características clave:
- Workflows UI: ahora todos los pasos del Workflow se crean en una sola UI (o archivo), en un par de clics, decenas de veces más rápido y fácil.

- Workflow State: ves el proceso de ejecución e información para cada paso en tiempo real
- Smart Conditions: ahora puedes crear condiciones para pasos a través de JavaScript, solicitudes HTTP, comandos shell, e incluso consultas de IA, para que decida según los datos de entrada si la verificación pasa.

¿Por qué Workflows?
¿Por qué los Workflows son más poderosos que los Skills? ¿En qué se diferencia un workflow de simplemente proporcionar al agente una lista de pasos? ¿Por qué los comandos shell en workflows son más convenientes que los hooks? ¿Por qué necesitamos pasos condicionales que solo se ejecutan en ciertos casos? Averigüémoslo.
Los dos pilares principales de los workflows son el determinismo (ejecución garantizada) y la encapsulación (aislamiento) de los pasos futuros. Detrás de estas palabras largas e intimidantes hay ideas simples: desglosémoslas con ejemplos.
Ejecución Garantizada
Digamos que enviamos el siguiente prompt, modelo - Auto (es decir, Composer-1), a un proyecto frontend Next.js:
src/controls2. Entiende cómo funciona la gestión de estado en stores
3. Crea un componente de tabla básico: con ordenamiento, filtrado, carga de datos desde el backend y hermosa animación
4. Crea una página
/users con una tabla de usuarios5. Crea una página
/products con una tabla de productosNo detengas la ejecución de la tarea hasta que todos los elementos anteriores se completen con éxito.
Naturalmente, el agente inmediatamente agregó todos los pasos a la lista de tareas y comenzó a trabajar. El primer y segundo paso cargaron bastante el contexto - leer ~30 archivos consumió casi 100k tokens. Digamos que hubo dificultades con el tercer paso: el agente tuvo que hacer varias iteraciones de correcciones y verificaciones a través del navegador incorporado antes de que la tabla funcionara como debería. En el proceso, creó páginas de prueba para verificar la funcionalidad de la tabla. En este punto, el contexto ya está lleno al 80%.
¿Qué crees que es la probabilidad de que después de completar el trabajo en la tabla, el agente pase a crear la página /users? ¿Y a crear /products?
Tarea con dos asteriscos: ¿cuál es la probabilidad de que después de que escribas "sí, por el amor de Dios, por supuesto, literalmente te escribí sobre dos páginas, ¿por qué preguntas?", la siguiente respuesta del agente comience con las palabras "¡Tienes toda la razón!"?
Afortunadamente, no tenemos que adivinar: literalmente realizamos este experimento con un proyecto de prueba Next.js en 7 modelos: Sonnet 4.5, Opus 4.5, Haiku 4.5, GPT-5.2, Composer-1, Gemini 3 Pro, Gemini 3 Flash, con 5 ejecuciones para cada modelo. El criterio es simple - ¿se completaron todos los pasos con éxito después de una sola solicitud del usuario?
El resultado promedio para Opus 4.5 y GPT-5.2 es 80% (8 pruebas exitosas de 10), Sonnet y Gemini 3 Pro - 60%, promedio en el grupo "Haiku, Composer-1 y Gemini 3 Flash" - 46% (7 de 15).
Es fácil notarlo - incluso los modelos insignia, en 1 de cada 5 casos, no completaron la tarea desde una sola solicitud. El último grupo de modelos económicos populares no terminó el trabajo en la mitad de los casos. Al mismo tiempo, la tarea misma y el escenario de problema descrito son bastante típicos. ¿Qué pasa si el workflow del usuario tiene 20 pasos, algunos de los cuales solo deberían ejecutarse bajo ciertas condiciones?
La ejecución garantizada (determinismo) es una propiedad básica de los Workflows: si hay un paso en el workflow (enviar una tarea al agente, ejecutar un script, etc.), se ejecutará garantizadamente.
Aislamiento de Pasos Futuros
Cuando le das al modelo un conjunto de acciones que necesita realizar, conoce todas las acciones de antemano, y no puede evitar prestar atención a las últimas mientras ejecuta las primeras.
Este concepto es comprensible para las personas: si sabemos de antemano qué resultado se espera de nosotros, podemos intentar adaptar nuestro trabajo para llegar allí más rápido. A veces esto es genial y puede ahorrar tiempo. Pero hay procesos donde es necesario seguir meticulosamente las instrucciones; sin ellos, no obtendrás un buen resultado.
Para facilitar, aquí hay un ejemplo. Digamos que le damos al modelo una tarea (aplicación de escritorio Electron ):
src/watchers (30 archivos)2. Claramente tenemos una fuga de memoria - 17gb ocupados después de una hora. Corrige las fugas detectadas.
Digamos que estos archivos tienen dos tipos de fugas:
- en lugar de eliminar el temporizador, se apaga:
setInterval(() => { if (!active) return; ... }) - limpieza incorrecta del caché global (nivel superior
const map = new Map())
Y en los primeros 5 archivos en src/watchers, solo se encuentran errores del primer tipo.
A menudo, un agente que sabe de antemano que se espera que corrija fugas intentará "tomar atajos": después de encontrar el mismo problema 5 veces seguidas, escribirá "Revisemos inmediatamente todos los archivos con una búsqueda regexp", buscará setInterval, y solo encontrará archivos que tenían problemas del primer tipo, mientras que se pierde completamente el segundo tipo.
El problema del "sesgo del resultado esperado" no se resuelve aumentando la inteligencia o el precio del modelo; incluso las personas son susceptibles a él. En situaciones donde la provisión de información paso a paso mejora la calidad del resultado (análisis profundo de archivos antes de refactorizar, revisión completa de documentación antes de la implementación), los workflows garantizan que la información sobre acciones futuras no entre en el contexto del agente hasta el momento en que necesitan ejecutarse.
Comparación con Skills
| Característica | Workflows | Skills |
|---|---|---|
| Proceso/skill empaquetado en una carpeta separada, con todos los scripts y datos relacionados | Sí | Sí |
| Fácil de importar y compartir | Sí | Sí |
| Se puede usar en otros workflows/skills (crear procesos jerárquicos) | Sí | Sí |
| Permite incrustar llamadas de script (bash/js/python) en el proceso de trabajo del agente | SíAntes y después de cualquier paso, con cualquier condición y ejecución garantizada. | ParcialmentePuedes pedirle al agente que ejecute scripts después de ciertos pasos. No hay garantía de que lo haga. Puedes usar hooks, pero son globales, sin vinculación a pasos, condiciones o un Skill específico. |
| Ejecución de acciones garantizada | SíUn paso solo se puede omitir si tiene una condición de ejecución explícita que no se cumple. En todos los demás casos, el paso definitivamente se ejecutará. | NoLa lista de pasos en un Skill es simplemente una solicitud para que el agente realice un conjunto de acciones. Si realmente se ejecutarán o no depende de la decisión del agente. |
| Aislamiento de contexto | SíPuedes reiniciar el contexto incluso después de cada paso. El agente no conoce los pasos futuros de antemano y no puede hacer trampa adaptando el trabajo al resultado esperado. | NoLa descripción de todos los pasos en un Skill se carga cuando se carga el Skill. Hipotéticamente, puedes pedirle a un agente orquestador que ejecute cada paso en un subagente (Cursor 2.4+), pero en la práctica esto degrada significativamente el resultado. |
| Pasos condicionales (ramificación) | SíPuedes establecer una condición de ejecución de paso, ya sea como un prompt para un verificador de IA separado ("Ejecuta el paso de actualización de prueba solo si hubo cambios en los componentes"), o como código JS, solicitud HTTP o comando shell (! npm run test). | NoPuedes describir condiciones al agente bajo las cuales debería ejecutar u omitir un paso, pero seguir estas reglas sigue siendo a discreción del agente. |
Creando un Workflow
Los Workflows se almacenan en archivos yml/json dentro de .supercode/workflows/ (local - en el raíz del proyecto, global - en el directorio del usuario).
En un archivo puedes describir uno o varios workflows. Se pueden almacenar en cualquier carpeta anidada, por ejemplo, nos resulta conveniente separar los workflows en un directorio separado y almacenar la descripción del workflow justo al lado de los scripts utilizados (similar a Skills).

Configuración Global
Un workflow tiene dos grupos de configuración global - Disparadores y Configuración Avanzada.

En el grupo de disparadores, puedes configurar cómo quieres lanzar el workflow: haciendo clic en un botón en la UI, y/o basándote en un comando de voz. Nota - incluso si no has seleccionado ninguna de las opciones, tu workflow siempre está disponible haciendo clic desde el menú Supercode > Workflows, y siempre puede ser lanzado desde otro Workflow.
En el grupo de Configuración Avanzada, puedes configurar el modelo predeterminado y el modo del agente que se seleccionará cuando se lance el workflow. Nota: si algún paso del workflow anula explícitamente el modelo o modo - entonces esta anulación (para ese paso específico) tendrá prioridad sobre la configuración predeterminada.
Pasos del Workflow
Un Workflow consiste en una secuencia de acciones (pasos) que se ejecutarán en orden.
Un paso puede ser un comando (prompt) para el agente de IA en tu IDE. Un paso puede ser una llamada a un script. O puede formar dinámicamente un nuevo prompt o system prompt (usando un script o consulta de IA). Puede anular el modelo activo actual o el modo del agente. Un paso puede contener una condición que determine si se ejecutará o se omitirá. Y también puede contener un número ilimitado de pasos anidados o referencias a otros Workflows. Examinemos cada una de estas capacidades en detalle.

Tres Tipos de Pasos

En cada workflow, así como en todas las acciones anidadas, puedes crear tres tipos de pasos:
- Add Step: opción estándar, crea un paso regular que puedes configurar para tus tareas.
- Select Existing Action: crea un paso-enlace a un Workflow o Smart Action existente.
- Add "Run Shell" action: crea un paso que ejecuta un comando shell (por ejemplo, ejecuta un script Node.js o Python).
Paso Estándar
Este es el tipo principal de pasos que componen los Workflows. Cada paso tiene:
- Nombre
- Si este paso debe lanzar el agente de IA en tu IDE (icono Run con toggle)
- Estado activo (icono de ojo, con el que puedes marcar temporalmente pasos no utilizados como inactivos)
- Conjunto de configuraciones (prompt, system prompt, modelo, modo del agente, comando IDE, condición de ejecución)
- Conjunto de pasos anidados

Prompt y System Prompt
Hay 5 formas de actualizar un prompt o system prompt:
- Texto
- Generación de IA
- Comando shell
- Solicitud HTTP
- Código JavaScript

Texto

Esta es la opción más simple: simplemente puedes establecer texto estático para el nuevo prompt, que se pasará al agente de IA de Cursor. O puedes usar variables disponibles que se reemplazarán automáticamente con valores del contexto actual.
IA

Este es un mecanismo poderoso que te permite generar el texto de un nuevo prompt usando una consulta a un modelo de IA de Supercode separado. También puedes usar variables disponibles (por ejemplo, el prompt actual a través de $prompt), y pedirle a la IA que rehaga la tarea: desglósala en etapas, tradúcela a otro idioma, elimina partes innecesarias, estructúrala o agrega detalles faltantes, considera los matices de seguridad y mucho más. Imagina que puedes mejorar automáticamente tu prompt a través de ChatGPT antes de pasarlo al agente de Cursor. Esto es exactamente lo que este tipo de generación de prompt te permite hacer.
Comando Shell

Este tipo te permite ejecutar cualquier comando shell (o cadena de comandos) y usar la salida estándar (stdout) del comando como el nuevo prompt.
Incluyendo, los scripts pueden usarse como comandos: node ./my-script.js o python ./get-data.py. Usando este mecanismo, puedes exportar texto de tareas desde rastreadores de tareas , extraer errores actuales de Sentry, acceder a APIs, bases de datos, obtener información de logs, y mucho más. Como en todos los demás casos - tienes acceso a las variables actuales.
Solicitud URL

Este tipo te permite ejecutar una solicitud POST a cualquier URL y usar la respuesta (JSON) como el nuevo valor. Las variables actuales se envían en el cuerpo de la solicitud (application/json).
Código JavaScript

Este tipo te permite ejecutar cualquier código JavaScript y usar su resultado como el nuevo valor. Las variables actuales están disponibles como variables globales (no se necesita prefijo de signo de dólar para acceder a ellas, solo prompt, model, response, etc).
Variables Disponibles
Con cualquier tipo de anulación de prompt o system prompt, puedes usar variables que contienen el estado del contexto actual:
$prompt- Texto del prompt actual$systemPrompt- Texto del system prompt actual$response- Última respuesta del agente de IA de Cursor. Nota: este es literalmente el último mensaje de texto escrito por el agente. Si el agente realizó varias acciones (editó archivos, pensó, ejecutó comandos en la terminal, etc), entonces esta variable contendrá exactamente el último bloque de texto que fue escrito por el agente, no todos sus mensajes de texto desde tu última solicitud. Esta variable es útil cuando le pides al agente que complete su trabajo con alguna respuesta de texto: en ese caso, esa respuesta estará en esta variable.$packedResponses- Todos los mensajes de texto que fueron enviados por el agente desde tu última solicitud, empaquetados en formato tipo XML (...<message from="ai-assistant">...</message>...). Esta variable es adecuada cuando quieres analizar todas las acciones del agente desde tu última solicitud.$model- Modelo actualmente seleccionado$mode- Modo del agente actual (agent/plan/debug/etc/o nombre del Modo Personalizado)$initialPrompt- El prompt que estaba en el campo de entrada cuando se lanzó el workflow.$initialModel- El modelo que estaba seleccionado cuando se lanzó el workflow.$initialMode- El modo que estaba seleccionado cuando se lanzó el workflow.
Modo y Modelo

Cada paso del workflow puede cambiar el modelo actual y el modo del agente. Este mecanismo te permite adaptar flexiblemente el trabajo: usar modelos más inteligentes para planificar cambios, y más baratos para editar código. Puedes usar modos analíticos para explorar el código base y encontrar respuestas a tus preguntas, luego habilitar automáticamente el modo Debug para encontrar y corregir errores.
Pasos Condicionales (Ramificación)

Para cada paso, puedes establecer una condición que se verificará antes de que el paso comience a ejecutarse. El mecanismo de condición es muy similar al mecanismo de actualización de prompt: también tienes acceso a todas las variables, y casi todas las opciones de lanzamiento (excepto texto): JavaScript, comando Shell, solicitud HTTP, y consulta de IA.
La diferencia clave está en qué respuesta se espera de la ejecución de la condición:
- JavaScript: debe devolver un valor booleano (ya sea
true/falseexplícito o valor truthy-falsy). - Comando Shell: debe salir con código 0 en caso de éxito (el paso se ejecutará), y valor distinto de cero en caso de error (el paso se omitirá).
- Solicitud HTTP: debe devolver estado 2xx en caso de éxito (el paso se ejecutará), y cualquier otro estado en caso de error (el paso se omitirá).
- Consulta de IA: debe devolver texto "true", "yes", o "1", entonces el paso se ejecutará, de lo contrario - se omitirá.
La combinación de condiciones y pasos anidados te permite crear ramas y bucles de cualquier complejidad.
Comando IDE

Puedes establecer un comando IDE, que se ejecutará en el momento en que este paso se ejecute. Este mecanismo te permite gestionar el entorno dentro de tu workflow: abrir un nuevo chat, reiniciando así el contexto, lanzar la compilación del proyecto a través de tareas npm, crear nuevos archivos, y mucho más.
Pasos Anidados

Puedes crear pasos anidados que se ejecutarán al final de la ejecución del paso actual (después de que sus acciones principales para sobrescribir prompts, lanzar el agente de IA, etc. ya se hayan ejecutado). Este mecanismo funciona exactamente igual que los pasos principales en un workflow: puedes crear acciones adicionales , referencias a otros workflows, ejecutar scripts, etc. Gracias a la capacidad de crear tantos pasos anidados como quieras (y anidarlos uno dentro del otro), puedes describir cualquier escenario que imagines usando workflows.

