flowlisted
Install: claude install-skill tonmoy007/forge-plugins
# forge-flow — user-defined workflow DAGs
`/forge:flow` runs a workflow the user authored in `.forge/workflows/<name>.yaml`: a
declarative DAG where each node carries its own prompt (or a `{{upstream_id}}`-interpolating
template), `depends_on` edges, and optional `schema`/`model`. The loader
(`scripts/workflow_loader.py`) parses the file into a `WorkflowSpec`; the engine
(`scripts/_workflow.py` → `run_workflow`) schedules nodes in dependency *waves* and fans each
wave out in bounded parallel. It is the user-facing front end to the same deterministic,
never-raises engine `/forge:review` is built on.
A Python script cannot drive Claude's in-session Agent tool (ADR-006), so node dispatch goes
through the single `_background_agent.dispatch` wrapper — which is cost-gated through
`_cost_cap` on every node.
## When to Use
- `/forge:flow` (lists available workflows) or `/forge:flow <name>` (runs one).
- The user wants to run a `.forge/workflows/*.yaml` they wrote.
- The user asks to see a flow's plan before running it (`/forge:flow <name> --plan`).
## When NOT to Use
- A single ad-hoc prompt → just ask Claude directly; a flow is for a *repeatable multi-step DAG*.
- The 12-stage pipeline → that's `/forge:build`, `/forge:autopilot`, etc., not a user flow.
## Pre-flight: the toggle gate (no-op when off)
User-defined flows are **opt-in** and **off by default** (REQ-NF-025). Read the toggle first:
```bash
python3 - <<'PY'
import sys; from pathlib import Path
sys.path.insert(0, "$