Get the FREE Ultimate OpenClaw Setup Guide →

flow-next-deps

npx machina-cli add skill gmickel/gmickel-claude-marketplace/flow-next-deps --openclaw
Files (1)
SKILL.md
4.5 KB

Flow-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

  1. 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
  2. Step 2: Identify blocking chains — run the provided jq-based snippet to classify epics as READY or BLOCKED based on their dependencies.
  3. 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.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers