Help us improve
Share bugs, ideas, or general feedback.
From agentops
Scaffolds a Workflow script (.claude/workflows/<name>.js) for deterministic multi-agent orchestration with agent(), parallel(), pipeline(), and phase() primitives. For composite DAG-shaped capabilities only — not for single skills or free-form NTM runs.
npx claudepluginhub boshu2/agentops --plugin agentopsHow this skill is triggered — by the user, by Claude, or both
Slash command
/agentops:workflow-builderThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Counterpart to `skill-builder`. `skill-builder` authors a `SKILL.md` (a leaf
Guides using Claude Code dynamic workflows to orchestrate many subagents for large-scale tasks like codebase sweeps or migrations.
Creates multi-agent orchestration workflows from natural language using Socratic questioning, pattern detection for sequential/parallel/conditional flows, temp script creation, and syntax generation with visualization.
Provides templates for orchestrator system prompts, phase-specific agent commands like scout and builder, and result aggregation in multi-agent workflows.
Share bugs, ideas, or general feedback.
Counterpart to
skill-builder.skill-builderauthors aSKILL.md(a leaf capability); this authors a Workflow (a composite capability — deterministic orchestration of subagents). Reach this skill viaautomation-shape-routingonce the shape is confirmed Workflow (deterministic DAG + structured-JSON returns + headless). If the shape is NTM or plain skill, you're in the wrong builder — go back toautomation-shape-routing.
Do NOT scaffold a workflow for: an attach-and-steer run (→ NTM: ntm /
vibing-with-ntm), or a hard-sequential edit-loop with no parallelism (→ plain
skill: skill-builder). If unconfirmed, run automation-shape-routing.
Start from .claude/workflows/operating-loop.js — the canonical worked example.
Copy its skeleton, don't reinvent it. A Workflow script is plain JS:
export const meta = { // REQUIRED — pure literal, no variables
name: 'my-workflow',
description: 'one line shown in the permission dialog',
phases: [ { title: 'Find' }, { title: 'Verify' } ], // one per phase() call
}
phase('Find')
const found = await parallel(FINDERS.map(f => () =>
agent(f.prompt, { schema: FINDINGS_SCHEMA, phase: 'Find' }))) // barrier
phase('Verify')
const verified = await pipeline(found.flat().filter(Boolean),
f => agent(`verify: ${f.title}`, { schema: VERDICT, phase: 'Verify' }))
return { verified }
| Primitive | Use when |
|---|---|
agent(prompt, {schema}) | one subagent; schema forces structured JSON back |
parallel([thunks]) | barrier — need ALL results together (dedup/merge/early-exit) |
pipeline(items, ...stages) | default multi-stage — no barrier, each item flows independently |
phase(title) | progress grouping; match meta.phases titles |
loop-until-budget / loop-until-dry | unknown-size discovery; guard on budget.total |
automation-shape-routing).agent() returns; structured
output is what makes a workflow deterministic and composable.pipeline(); reach for parallel() only when a stage genuinely
needs all prior results at once.budget.total && budget.remaining() > N.meta block parses and each phase returns its schema. This is the workflow
analog of skill-auditor.A workflow is a composite capability; the portable contract for it (a
shape: skill|workflow discriminator, a StepGraph, a control_flow enum, a
budget, an OrchestrationPort interface) is net-new agentops-core-sdk work.
Author the script here; the SDK is where the contract for workflow-capabilities
lives. See operating-loop-workflow for installing/running a finished workflow.