Manage .flow/ tasks and epics. Triggers: 'show me my tasks', 'list epics', 'what tasks are there', 'add a task', 'create task', 'what's ready', 'task status', 'show fn-1'...
Quick task operations in .flow/. For planning features use /flow-next:plan, for executing use /flow-next:work.
CRITICAL: flowctl is BUNDLED — NOT installed globally. which flowctl will fail (expected). Always use:
ROOT="$(git rev-parse --show-toplevel)"
OPENCODE_DIR="$ROOT/.opencode"
FLOWCTL="$OPENCODE_DIR/bin/flowctl"
Then run commands with $FLOWCTL <command>.
Discover all commands/options:
$FLOWCTL --help
$FLOWCTL <command> --help # e.g., $FLOWCTL task --help
# Check if .flow exists
$FLOWCTL detect --json
# Initialize (if needed)
$FLOWCTL init --json
# List everything (epics + tasks grouped)
$FLOWCTL list --json
# List all epics
$FLOWCTL epics --json
# List all tasks (or filter by epic/status)
$FLOWCTL tasks --json
$FLOWCTL tasks --epic fn-1 --json
$FLOWCTL tasks --status todo --json
# View epic with all tasks
$FLOWCTL show fn-1 --json
$FLOWCTL cat fn-1 # Spec markdown
# View single task
$FLOWCTL show fn-1.2 --json
$FLOWCTL cat fn-1.2 # Task spec
# What's ready to work on?
$FLOWCTL ready --epic fn-1 --json
# Create task under existing epic
$FLOWCTL task create --epic fn-1 --title "Fix bug X" --json
# Set task description (from file)
echo "Description here" > /tmp/desc.md
$FLOWCTL task set-description fn-1.2 --file /tmp/desc.md --json
# Set acceptance criteria (from file)
echo "- [ ] Criterion 1" > /tmp/accept.md
$FLOWCTL task set-acceptance fn-1.2 --file /tmp/accept.md --json
# Start working on task
$FLOWCTL start fn-1.2 --json
# Mark task done
echo "What was done" > /tmp/summary.md
echo '{"commits":["abc123"],"tests":["npm test"],"prs":[]}' > /tmp/evidence.json
$FLOWCTL done fn-1.2 --summary-file /tmp/summary.md --evidence-json /tmp/evidence.json --json
# Validate structure
$FLOWCTL validate --epic fn-1 --json
$FLOWCTL validate --all --json
Find relevant epic:
# List all epics
$FLOWCTL epics --json
# Or show a specific epic to check its scope
$FLOWCTL show fn-1 --json
Create task:
$FLOWCTL task create --epic fn-N --title "Short title" --json
Add description:
cat > /tmp/desc.md << 'EOF'
**Bug/Feature:** Brief description
**Details:**
- Point 1
- Point 2
EOF
$FLOWCTL task set-description fn-N.M --file /tmp/desc.md --json
Add acceptance:
cat > /tmp/accept.md << 'EOF'
- [ ] Criterion 1
- [ ] Criterion 2
EOF
$FLOWCTL task set-acceptance fn-N.M --file /tmp/accept.md --json
# All epics
$FLOWCTL epics --json
# All tasks
$FLOWCTL tasks --json
# Tasks for specific epic
$FLOWCTL tasks --epic fn-1 --json
# Ready tasks for an epic
$FLOWCTL ready --epic fn-1 --json
$FLOWCTL show fn-1.2 --json # Metadata
$FLOWCTL cat fn-1.2 # Full spec
$FLOWCTL epic create --title "Epic title" --json
# Returns: {"success": true, "id": "fn-N", ...}
fn-N (e.g., fn-1, fn-42)fn-N.M (e.g., fn-1.1, fn-42.7)$FLOWCTL --help to discover all commands and options--json flag gives machine-readable output/flow-next:plan and /flow-next:work