flow-next-deps
npx machina-cli add skill gmickel/gmickel-claude-marketplace/flow-next-deps --openclawFlow-Next Dependency Graph
Visualize epic dependencies, blocking chains, and execution phases.
Setup
FLOWCTL="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl"
$FLOWCTL detect --json | jq -e '.exists' >/dev/null && echo "OK: .flow/ exists" || echo "ERROR: run $FLOWCTL init"
command -v jq >/dev/null 2>&1 && echo "OK: jq installed" || echo "ERROR: brew install jq"
Step 1: Gather Epic Data
Build a consolidated view of all epics with their dependencies:
FLOWCTL="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl"
# Get all epic IDs
epic_ids=$($FLOWCTL epics --json | jq -r '.epics[].id')
# For each epic, get full details including dependencies
for id in $epic_ids; do
$FLOWCTL show "$id" --json | jq -c '{
id: .id,
title: .title,
status: .status,
plan_review: .plan_review_status,
deps: (.depends_on_epics // [])
}'
done
Step 2: Identify Blocking Chains
Determine which epics are ready vs blocked (pure jq, works on any shell):
FLOWCTL="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl"
# Collect all epic data with deps
epics_json=$($FLOWCTL epics --json | jq -r '.epics[].id' | while read id; do
$FLOWCTL show "$id" --json | jq -c '{id: .id, title: .title, status: .status, deps: (.depends_on_epics // [])}'
done | jq -s '.')
# Compute blocking status
echo "$epics_json" | jq -r '
# Build status lookup
(map({(.id): .status}) | add // {}) as $status |
# Check each non-done epic
.[] | select(.status != "done") |
.id as $id | .title as $title |
# Find deps that are not done
([.deps[] | select($status[.] != "done")] | join(", ")) as $blocked_by |
if ($blocked_by | length) == 0 then
"READY: \($id) - \($title)"
else
"BLOCKED: \($id) - \($title) (by: \($blocked_by))"
end
'
Step 3: Compute Execution Phases
Group epics into parallel execution phases:
FLOWCTL="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl"
# Collect all epic data
epics_json=$($FLOWCTL epics --json | jq -r '.epics[].id' | while read id; do
$FLOWCTL show "$id" --json | jq -c '{id: .id, title: .title, status: .status, deps: (.depends_on_epics // [])}'
done | jq -s '.')
# Phase assignment algorithm (run in jq for reliability)
echo "$epics_json" | jq '
# Build status lookup
(map({(.id): .status}) | add // {}) as $status |
# Filter to non-done epics
[.[] | select(.status != "done")] as $open |
# Assign phases iteratively
reduce range(10) as $phase (
{assigned: [], result: [], open: $open};
.assigned as $assigned |
.open as $remaining |
# Find epics not yet assigned whose deps are all done or in earlier phases
([.open[] | select(
([.id] | inside($assigned) | not) and
((.deps // []) | all(. as $d | $status[$d] == "done" or ($assigned | index($d))))
)] | map(.id)) as $ready |
if ($ready | length) > 0 then
.result += [{phase: ($phase + 1), epics: [.open[] | select(.id | IN($ready[]))]}] |
.assigned += $ready
else . end
) |
.result
'
Output Format
Present results as:
## Epic Dependency Graph
### Status Overview
| Epic | Title | Status | Dependencies | Blocked By |
|------|-------|--------|--------------|------------|
| **fn-1-add-auth** | Add Authentication | **READY** | - | - |
| fn-2-add-oauth | Add OAuth Login | blocked | fn-1-add-auth | fn-1-add-auth |
| fn-3-user-profile | User Profile Page | blocked | fn-1-add-auth, fn-2-add-oauth | fn-2-add-oauth |
### Execution Phases
| Phase | Epics | Can Start |
|-------|-------|-----------|
| **1** | fn-1-add-auth | **NOW** |
| 2 | fn-2-add-oauth | After Phase 1 |
| 3 | fn-3-user-profile | After Phase 2 |
### Critical Path
fn-1-add-auth → fn-2-add-oauth → fn-3-user-profile (3 phases)
Quick One-Liner
For a fast dependency check:
FLOWCTL="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl"
$FLOWCTL epics --json | jq -r '.epics[] | select(.status != "done") | "\(.id): \(.title) [\(.status)]"'
When to Use
- "What's the execution order for epics?"
- "What's blocking progress?"
- "Show me the dependency graph"
- "What's the critical path?"
- "Which epics can run in parallel?"
- "Why is Ralph working on X?"
- "What should I work on next?"
Source
git clone https://github.com/gmickel/gmickel-claude-marketplace/blob/main/plugins/flow-next/skills/flow-next-deps/SKILL.mdView on GitHub Overview
Flow-Next-Deps visualizes epic dependencies, blocking chains, and execution phases. It helps you understand what’s blocking what, the required run order, and the critical path to speed up delivery.
How This Skill Works
The tool uses FlowCTL to gather each epic’s id, title, status, and depends_on_epics. It then analyzes blocking chains to label epics as READY or BLOCKED and assigns epics into parallel execution phases so you can plan sequencing and overlap.
When to Use It
- what's blocking what
- execution order
- dependency graph
- what order should epics run
- critical path
Quick Start
- Step 1: Gather epic data — set FLOWCTL and run: epic_ids=$($FLOWCTL epics --json | jq -r '.epics[].id'); for id in $epic_ids; do $FLOWCTL show "$id" --json | jq -c '{id: .id, title: .title, status: .status, plan_review: .plan_review_status, deps: (.depends_on_epics // [])}'; done
- Step 2: Identify blocking chains — run the provided jq-based snippet to classify epics as READY or BLOCKED based on their dependencies.
- Step 3: Compute execution phases — execute the jq-based phase assignment to group epics into parallelizable execution phases for scheduling.
Best Practices
- Install FlowCTL and jq as shown in the setup steps before running the analyses.
- Always fetch complete epic details with --json to capture dependencies (deps).
- Run the blocking analysis first to triage blockers before scheduling work.
- Use the computed execution phases to identify parallelizable epics and accelerate delivery.
- Validate results with a dry-run or review the phase assignment against real-world progress.
Example Use Cases
- Detect which epics block a release and target blockers to unblock authentication and onboarding.
- Plan a rollout by ordering epics and grouping those without dependencies into the same phase.
- Identify the critical path to minimize total deployment time for a feature Set.
- Parallelize non-dependent epics to speed up sprint completion without conflicts.
- Audit the dependency graph to spot missing dependencies or potential cycles.