# Workflow Create > Crea un workflow: una plantilla de workflow MCP persistente, o un script nativo .claude/workflows/*.js de orquestación con fan-out de agentes. Fuente: https://skillsagentes.com/skills/ruvnet/ruflo/workflow-create Markdown: https://skillsagentes.com/skills/ruvnet/ruflo/workflow-create.md Repositorio: https://github.com/ruvnet/ruflo Autor: ruvnet Licencia: MIT Actualizado: el mes pasado Coste de contexto: 42 tok instalada, 941 tok al activarse, 941 tok con todos los archivos del bundle Bundle: 1 archivo, 4 KB Permisos que pide: mcp__plugin_ruflo-core_ruflo__workflow_create mcp__plugin_ruflo-core_ruflo__workflow_template mcp__plugin_ruflo-core_ruflo__workflow_list mcp__plugin_ruflo-core_ruflo__workflow_status mcp__plugin_ruflo-core_ruflo__workflow_delete write read edit bash ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add ruvnet/ruflo --skill workflow-create --agent claude-code # Cursor npx -y skills add ruvnet/ruflo --skill workflow-create --agent cursor # Codex npx -y skills add ruvnet/ruflo --skill workflow-create --agent codex # Gemini CLI npx -y skills add ruvnet/ruflo --skill workflow-create --agent gemini # Windsurf npx -y skills add ruvnet/ruflo --skill workflow-create --agent windsurf # Cline npx -y skills add ruvnet/ruflo --skill workflow-create --agent cline ``` ## Qué hace - Permite elegir entre una plantilla de workflow MCP persistente con pausa/reanudación, o un script nativo .js que orquesta subagentes - En la plantilla MCP: crea, lista, monitorea y elimina workflows con pasos secuenciales/paralelos y condicionales - En el script nativo: expone hooks agent(), parallel(), pipeline() y phase()/log() para el fan-out de subagentes - Valida la sintaxis del script nativo antes de ejecutarlo ## Cuándo usarla - Necesitas un pipeline de larga duración, con aprobación humana y reanudable (plantilla MCP) - Necesitas un fan-out completo de subagentes para revisión, auditoría, migración o investigación (script nativo) ## Qué la activa - "Crea un workflow nativo que reparta esta tarea entre varios agentes en paralelo" - "Define una plantilla de workflow MCP con pasos condicionales" ## Antes de instalar - El bloque `export const meta` del script nativo debe ser un literal puro, sin variables ni interpolación. - Necesita en el PATH: node ## Archivos - SKILL.md — 4 KB ## SKILL.md Reproducido tal cual desde ruvnet/ruflo bajo MIT. Esta sección es el documento original y está en inglés. # Workflow Create Author a workflow on whichever surface fits the job. ## Pick a surface - **MCP workflow template** — a persisted definition with a pause/resume lifecycle. Use for long-lived, human-gated, resumable pipelines. - **Native `.claude/workflows/*.js`** — an imperative orchestration script that fans subagents out. Use for comprehensive fan-out (review, audit, migration, research) where you aggregate structured results in code. ## A — MCP workflow template 1. **List templates** — call `mcp__plugin_ruflo-core_ruflo__workflow_template` to see available templates 2. **Create workflow** — call `mcp__plugin_ruflo-core_ruflo__workflow_create` with steps, conditions, and execution order 3. **List workflows** — call `mcp__plugin_ruflo-core_ruflo__workflow_list` to see all defined workflows 4. **Check status** — call `mcp__plugin_ruflo-core_ruflo__workflow_status` to monitor a workflow 5. **Clean up** — call `mcp__plugin_ruflo-core_ruflo__workflow_delete` to remove unused workflows Features: sequential/parallel steps, conditional branching, template inheritance, pause/resume approval gates. ## B — Native `.claude/workflows/*.js` Write a `.js` file under `.claude/workflows/`. It MUST begin with a **pure-literal** `export const meta` block; the body runs inside an async wrapper (top-level `await`/`return` are legal) with these hooks injected: | Hook | Purpose | |------|---------| | `agent(prompt, opts)` | Spawn one subagent; pass `opts.schema` (JSON Schema) to get validated structured output back | | `parallel(thunks)` | Run thunks concurrently with a **barrier** — `.filter(Boolean)` the results | | `pipeline(items, ...stages)` | Stream each item through stages independently — **prefer this** over a barrier | | `phase(title)` / `log(msg)` | Progress grouping / narration | ```js export const meta = { name: 'my-workflow', // becomes the invocable name — must be a pure literal description: 'one line', phases: [{ title: 'Find' }, { title: 'Verify' }], } const SCHEMA = { type: 'object', required: ['ok'], properties: { ok: { type: 'boolean' } }, additionalProperties: false } phase('Find') const found = await agent('find the things', { schema: SCHEMA, agentType: 'tester' }) phase('Verify') const checked = await parallel((found.items || []).map((it) => () => agent(`verify ${it}`, { schema: SCHEMA }))) return { found, checked: checked.filter(Boolean) } ``` Rules: `meta` is a pure literal (no variables/calls/interpolation); default to `pipeline` over `parallel`; never use `Date.now()`/`Math.random()` (they throw — vary by index instead). Validate syntax (the body is ESM-in-async-wrapper, not a bare module): ```bash node -e 'const fs=require("fs");let s=fs.readFileSync(".claude/workflows/my-workflow.js","utf8").replace(/^export\s+const\s+meta/m,"const meta");fs.writeFileSync("/tmp/wf.mjs","let agent,parallel,pipeline,phase,log,args,budget,workflow;async function __wf(){\n"+s+"\n}")' \ && node --check /tmp/wf.mjs && echo OK ``` Run it with the `workflow-run` skill or `Workflow({ name: 'my-workflow' })`. Reference: `.claude/workflows/plugin-contract-audit.js`. See [ADR-0002](../../docs/adrs/0002-native-workflow-orchestration.md). ## Dónde encaja - Categoría: [Herramientas para desarrolladores](https://skillsagentes.com/categorias/herramientas-desarrollo.md) — Skills que cambian cómo tu agente escribe, revisa y despliega código. - Creador: [ruvnet](https://skillsagentes.com/creators/ruvnet.md) — 275 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Harness Gepa](https://skillsagentes.com/skills/ruvnet/ruflo/harness-gepa.md): Inspecciona y audita genomas GEPA: carga y valida un genoma, renderiza el system prompt que compila, o clasifica los modos de fallo de una transcripción de ejecución. - [Deepseek Reason](https://skillsagentes.com/skills/ruvnet/ruflo/deepseek-reason.md): Completion en modo razonamiento contra deepseek-reasoner (R1) de DeepSeek. Devuelve el chain-of-thought por separado de la respuesta final. Lee DEEPSEEK_API_KEY y degrada si falta o la API no responde. - [Deepseek Chat](https://skillsagentes.com/skills/ruvnet/ruflo/deepseek-chat.md): Completion de un solo turno contra el modelo deepseek-chat de DeepSeek vía /v1/chat/completions. Lee DEEPSEEK_API_KEY y degrada con status:degraded si falta o la API no responde. Para tareas sin razonamiento. - [Adr Index](https://skillsagentes.com/skills/ruvnet/ruflo/adr-index.md): Construye o reconstruye el índice de ADRs y su grafo de dependencias ejecutando scripts/import.mjs, en vez de cientos de llamadas MCP. - [Agntcy Status](https://skillsagentes.com/skills/ruvnet/ruflo/agntcy-status.md): Muestra el estado de la integración AGNTCY/SLIM/CASA: si los paquetes están instalados, qué transporte está activo y si el enforcement de CASA está habilitado. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)