Fest Standalone Workflows
Use a standalone WORKFLOW.md when work needs a guided step loop in an ordinary
directory, without setting up a full festival (phases/sequences/tasks).
Thin-start loop:
WORKFLOW.md -> fest next -> do step -> fest workflow advance -> repeat
When to Use This vs. a Full Festival
- Standalone workflow: a short, repeatable checklist that can live in any directory: a code-review checklist, a release-cut runbook, a one-off investigation. Minimal ceremony, no phases/sequences.
- Full festival: multi-phase work that needs planning, sequencing, and
quality gates over an extended effort. Use
fest create festivalinstead (see thefest-planningskill).
Create
Run from the directory that should own the workflow:
mkdir -p my-workflow && cd my-workflow
fest create workflow my-workflow --steps '{
"title": "My Workflow",
"description": "A lightweight guided loop.",
"steps": [
{
"name": "PLAN",
"goal": "Decide what needs to happen.",
"actions": ["Write the goal.", "List the unknowns."],
"checkpoint": "none"
},
{
"name": "DO",
"goal": "Do the work.",
"actions": ["Make the change.", "Validate it."],
"checkpoint": "verification"
}
]
}'
fest next
This scaffolds WORKFLOW.md, initializes .workflow/ runtime state, and
starts a tracked run, so fest next works immediately.
fest workflow create <name> is an alias of fest create workflow <name>
and accepts the same flags. Use whichever noun you reach for first.
For human interactive creation, run the command without --steps from a TTY:
fest create workflow my-workflow
It prompts for title, intent, and step lines in Name|Goal form.
Flags
--steps '<json>'/--steps-file <file>: agent mode, inline JSON or a JSON file. See the step schema below.--agent: strict agent mode (implies--json).--type <type>: standalone workflow type (defaulttask).--no-init: advanced mode. WritesWORKFLOW.mdonly, without initializing.workflow/runtime state or starting a run.fest nextstill works in this mode, but reports the workflow as not-started; the first mutating command (fest workflow advance) bootstraps a tracked run lazily. Use this when you want to author the document before committing to a tracked run.--path <dir>/--festival <root>: target a festival phase instead of standalone mode. Inside a festival phase, or with either of these flags set, the command writes the phase'sWORKFLOW.mdwith no standalone runtime, so do not pass these when you want a standalone workflow.
Step JSON Contract
Workflow-level fields:
title(required)description(optional)steps(required, non-empty)
Each step needs:
namegoal
Useful optional step fields:
actionsoutputcheckpoint
Valid checkpoint values:
noneverificationdocumentationapproval_required
approval_required is accepted when the file is created, but standalone
execution cannot advance through blocking approval checkpoints. Use a festival
phase when the workflow needs user-approval gates.
Execution Loop
fest next
# do the visible step
fest workflow advance
fest next
Common Mistakes
- Passing
--pathor--festivalwhen creating a standalone workflow; those target a festival phase instead. - Using
titleinside each step object. Step objects requirenameandgoal, nottitle. - Assuming
--no-initis required beforefest nextwill work. It is not: the default (no flag) already initializes runtime state and starts a tracked run in one step. - Adding
approval_requiredto a standalone workflow. The file will validate at creation time, butfest workflow advancecannot cross that blocking checkpoint outside a festival phase.