Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Author a workflow — either an MCP workflow template (persisted, lifecycle) or a native .claude/workflows/*.js orchestration script (agent/parallel/pipeline fan-out)
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 51% | 0% |
Author a workflow on whichever surface fits the job.
.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.mcp__plugin_ruflo-core_ruflo__workflow_template to see available templatesmcp__plugin_ruflo-core_ruflo__workflow_create with steps, conditions, and execution ordermcp__plugin_ruflo-core_ruflo__workflow_list to see all defined workflowsmcp__plugin_ruflo-core_ruflo__workflow_status to monitor a workflowmcp__plugin_ruflo-core_ruflo__workflow_delete to remove unused workflowsFeatures: sequential/parallel steps, conditional branching, template inheritance, pause/resume approval gates.
.claude/workflows/*.jsWrite 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 |
jsexport 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):
bashnode -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.
Other measured skills in the registry, with their headline benchmark lift.