Skip to content
Back to skills

Schedule Dependency Waves

ASecurity

Use when work units carrying declared dependencies must be ordered into execution waves before any dispatch, including detecting a dependency cycle. Not for partitioning one issue into disjoint write sets: use diamond-task. Not for concerns with no dependencies: use parallel-launch.

  • 54 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 20, 2026
ai-agentsaws

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add OutlineDriven/outline-driven-development --skill schedule-dependency-waves --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Schedule Dependency Waves?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Schedule Dependency Waves
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/outlinedriven-schedule-dependency-waves-outline-driven-development/badge)](https://www.skillsdirectory.com/skills/outlinedriven-schedule-dependency-waves-outline-driven-development)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: schedule-dependency-waves
description: 'Use when work units carrying declared dependencies must be ordered into execution waves before any dispatch, including detecting a dependency cycle. Not for partitioning one issue into disjoint write sets: use diamond-task. Not for concerns with no dependencies: use parallel-launch.'
---

# Schedule dependency waves

## Contract

| Field | Bound contract |
|---|---|
| Trigger | Work units with declared dependencies must be ordered before dispatch, or a dependency set must be checked for cycles. |
| Authority | Read-only on the work tree; writes only the named schedule artifact. Rollback is deleting that artifact. No remote mutation. Not a write-set partitioner and not a dispatcher. |
| Side effect | On an acyclic graph, one schedule artifact listing waves in topological order. On a cycle or a rejected edge, a named failure report and no schedule artifact. |
| Done | Every supplied unit appears in exactly one wave with all its dependencies in earlier waves, or a cycle is reported with the participating units named and no schedule emitted. |

## Inputs

- Work units (required): The set of units to schedule, each named as the caller names them. Supplied by the caller; the skill never invents units and never splits or merges them.
- Dependency edges (required): Declared edges, each from a unit to a unit it must follow. Only declared edges are used; nothing is inferred from file ownership, write sets, or presumed coupling.
- Schedule artifact path (required): The named local location for the schedule. No other write target is permitted.

## Procedure

1. **Collect the units and their declared dependency edges.** Build the dependency graph from the supplied units and edges only. Reject any edge whose endpoint is not a supplied unit: name the edge and its missing endpoint, emit no schedule, and leave the artifact path unwritten. A schedule built on a silently dropped edge marks work ready that is not. **Done when:** the graph contains exactly the supplied units and only edges whose both endpoints are supplied units, or every rejected edge is named and no schedule is emitted.

2. **Detect cycles before assigning any wave.** Run cycle detection over the graph. If a cycle exists, stop: name the participating units, emit no schedule, and leave the artifact path unwritten. A partial schedule that hides a cycle is worse than no schedule. **Done when:** the graph is shown acyclic, or the cycle members are named and no schedule is emitted.

3. **Assign each unit to the earliest wave after all its dependencies.** A unit's wave is one past the highest wave of its dependencies; units with no dependencies take wave one. Each unit lands in exactly one wave. **Done when:** every supplied unit is assigned to exactly one wave with all its dependencies in strictly earlier waves.

4. **Record the schedule artifact.** Write the named schedule artifact with the per-wave unit lists in topological order and, for each unit, the dependency edges that justify its placement. The artifact is the only write this skill makes. **Done when:** the artifact lists every wave in order, every unit in exactly one wave, and the justifying edges per unit.

5. **State which units are ready now.** Report wave one as the ready-now set: units with no dependencies in the supplied graph. **Done when:** the ready-now set is stated as wave one.

## Failure and recovery

- Cycle detected: Name the participating units, emit no schedule, and leave the artifact path unwritten. Suggest the caller repair the declared edges, then re-run on the corrected set. Never emit a partial schedule for a cyclic graph.
- Edge to an unknown unit: Reject the edge and name it with its missing endpoint. Do not silently drop it and do not guess a substitute unit. Re-run once the caller either supplies the missing unit or withdraws the edge.
- Empty unit set: Report that there is nothing to schedule rather than emitting an empty artifact. Leave the artifact path unwritten.
- Unreadable or duplicated unit names: Ask the caller to disambiguate before scheduling; duplicate names would place one unit in two waves and break the Done condition.

## Output

One schedule artifact at the named path: waves in topological order, each wave listing its units, each unit annotated with the dependency edges that justify its placement, plus the ready-now statement naming wave one. On a cycle, an unknown-endpoint edge, or an empty unit set: a named failure report with no schedule artifact written.

Files in this skill

  • SKILL.md4.4 KB
  • agents/openai.yaml227 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…