Skip to content

Dependencies

Dependencies are explicit. A task becomes ready only when all required tasks are done. Most users see this through /flow-next:work; flowctl exposes the lower-level state.

Terminal window
/flow-next:work fn-1

CLI plumbing:

Terminal window
flowctl ready --spec fn-1
flowctl next --json

Spec-level dependencies are supported too when one spec must land before another:

Terminal window
flowctl spec add-dep fn-2 fn-1
flowctl spec rm-dep fn-2 fn-1

Use dependencies to model real ordering constraints. Do not encode preference or ownership as fake dependencies.

TypeUse forExample
Hard technical dependencyOne task cannot compile or test before anotherData model before API route
Contract dependencyOne task needs a stable interface from anotherBackend response shape before UI
Review dependencyA risky decision needs approval before work continuesSecurity model before auth implementation
Spec dependencyA whole spec needs another spec mergedConfig migration before new command behavior
  • “Alice owns this first” as a dependency. Use assignment, not dependency.
  • “This seems easier first.” Use priority, not dependency.
  • “The agent might get confused.” Split or clarify the spec.
  • “Everything depends on setup.” If every task depends on one setup task, check whether the setup task is too broad.

A healthy graph has a small number of ready tasks, not every task ready and not every task blocked. Ready tasks should be independent enough to assign to separate workers or worktrees.

flowchart TB
  A["setup contract"] --> B["API implementation"]
  A --> C["UI integration"]
  A --> D["docs and examples"]
  B --> E["completion review"]
  C --> E
  D --> E

This shape lets API, UI, and docs move in parallel once the contract is stable.