Execute multi-step workflows defined in YAML files using the FlowForge state machine engine.
FlowForge CLI must be installed. Check with:
bash
flowforge --version
If the command fails or is not found, run the setup flow in setup.md before proceeding. Setup will install the CLI, create the workflows directory, and configure your workspace.
Use FlowForge when:
Don't use for simple one-off tasks or quick questions.
IntentWorkflow_(add your mappings here as you use FlowForge)_
Self-updating rule: When you match an intent to a workflow via flowforge list and it works well, add that mapping to the table above. Then update the description field in the YAML frontmatter at the top of this file to include the new trigger phrase — this is how OpenClaw knows when to activate this skill.
First check the My Workflows table above. If the user's intent matches an entry, use it directly.
If no match, fall back to discovery:
bash
flowforge list
If no workflow matches user's intent, help them create one (see yaml-format.md).
bash
# Check for active instances
flowforge active
# If active instance exists → resume
flowforge status
# If no active instance → start new
flowforge start <workflow-name>
After flowforge status, you'll see:
Execute the task as described. The task field tells you exactly what to do.
For complex implementation tasks: delegate to appropriate tools or sub-agents. For simple tasks: execute directly.
After completing the task:
bash
# Linear flow (no branches)
flowforge next
# Branching flow (multiple paths)
flowforge next --branch 1 # first condition
flowforge next --branch 2 # second condition
Continue the cycle:
flowforge status — see current taskflowforge next — advancebash
flowforge log
Shows all nodes visited with timestamps.
If user needs a workflow that doesn't exist:
workflows/ directory or workspaceflowforge define workflow.yamlSee references/examples/ for templates.
yaml
name: workflow-name
description: What this workflow does
start: first-node
nodes:
first-node:
task: Description of what to do
next: second-node
second-node:
task: Another task
branches:
- condition: success
next: final-node
- condition: failure
next: first-node
final-node:
task: Wrap up and report
terminal: true
task: Natural language instruction (required)next: Single next node for linear flowbranches: Array of {condition, next} for branchingterminal: Set to true for end nodesflowforge status.If user has multiple active workflows:
bash
flowforge active # list all
flowforge status # shows current default
bash
flowforge reset
Creates new instance from start node. Old history is preserved.
FlowForge auto-loads YAML files from:
./workflows/ in current directory~/.flowforge/workflows/ in home directoryUsers can drop workflow files into these directories and they're automatically available — no need to run flowforge define.
User: "Help me contribute to this project"
flowforge listflowforge start code-contributionUser: "I want to study React hooks step by step"
flowforge listflowforge start studyUser returns after session ended mid-workflow:
flowforge active → shows interrupted workflowflowforge status → shows current node"No active instance": Run flowforge start <workflow>
"Workflow not found": Run flowforge list to see available workflows
Wrong node/stuck: Use flowforge reset to restart workflow
Need to modify workflow: Edit YAML file, run flowforge define workflow.yaml to update