Skip to content

Dependencies & Loop

Agentic Kanban manages dependencies between tasks to ensure structured, sequential delivery. This is especially useful when orchestrating automated coding agents.


Dependencies are declared directly inside the task’s frontmatter using dependsOn:

title: Implement OAuth2 login
dependsOn:
- setup-database-schema
labels:
- blocked-by:setup-database-schema

A task is considered ready only when all task slugs/IDs listed in its dependsOn list are in the done lane.

  • If any dependency is in backlog, planning, in-progress, or review, the dependent task is blocked and cannot be loop-processed.

The @kanban /loop command is a profile-aware lane-flow prompt driver. It emits the stage-driver prompt for the selected lane into chat. A “Send prompt to chat” button in the response injects the prompt directly into the chat input with one click — no copy-paste needed.

It automatically:

  1. Filters out blocked tasks and tasks with unsatisfied dependencies.
  2. Applies any --label or --priority filter you provide.
  3. Loads the stage-driver prompt for the lane (workspace .agentkanban/prompts/ first, bundled fallback).
  4. Interpolates the prompt with board config vars and shows the ready-task list.
  5. Renders a “Send prompt to chat” button. Click it, then press Enter to run.
  6. Also copies the prompt to clipboard as a fallback.

Note: /loop does not move tasks itself. The agent driven by the emitted prompt performs the actual work and board moves. Gates (checklist, spec, evidence, Definition of Done) are enforced when the agent moves a task via the board UI. The default lane is backlog when no lane arg is given.

To get the driver prompt for tasks in planning:

@kanban /loop planning

You can narrow the ready-task list using filtering flags:

  • By Label: @kanban /loop planning --label=security
  • By Priority: @kanban /loop backlog --priority=high

During a loop, Agentic Kanban groups tasks into dependency levels:

flowchart TD
    taskA["Task A (Ready)"] --> taskB["Task B (Blocked-by: A)"]
    taskC["Task C (Ready)"] --> taskB
    taskD["Task D (Ready)"]
  • Parallel Processing: Independent ready tasks (like Task A, Task C, and Task D) can be executed concurrently.
  • Ordered Execution: Dependent tasks (like Task B) are held back and will only be executed in a subsequent loop iteration after its blockers (Task A and Task C) successfully reach done.