dependency-reasoning · git:20260720.fa58fb9 · 2026-07-20 · sha256 14883229e473fea1
dependency-reasoning git:20260720.fa58fb9A
Immutable. This exact content is served forever at /api/v1/blob/14883229e473fea1.
--- name: dependency-reasoning description: >- Conservative dependency edges between work items — declare that A blocks B only when B clearly consumes A’s output or cannot start until A is done. Use when ordering decomposition parts, proposing blocked-by relations across a backlog, or explaining why two items should (or should not) serialize. Never invent keys or speculative “nice to have” waits. Step schemas and output formats stay in the mission playbook. metadata: source: original (devcake) author: devcake --- # Dependency reasoning Ordering work is a graph problem. Bad edges serialize independent work and waste capacity; missing edges cause races and rework. **Iron law:** propose an edge only when one item clearly consumes another’s output or cannot start until the other finishes. ## When this skill applies - Splitting a large effort into parts that may need an order - Scanning open work for missing “blocked by” relations - Explaining why two items should run in parallel (no edge) This skill owns **judgment about dependencies**. Concrete field names, JSON shapes, index rules, and legal outcomes live in the mission playbook — follow those formats exactly when you emit them. ## Consume-output test Declare B depends on A when **at least one** is true and evidenced: 1. B’s implementation or deliverable **requires an artifact** A produces (API, schema, design decision, document, migration landed, …). 2. Starting B before A is done would force **throwaway work** or a high risk of rework (not mere convenience). 3. A is an explicit **prerequisite policy** stated by a human in the feed (human instructions win). Do **not** add an edge when: - Items are merely “related” or “same area” - You want a preferred calendar order without a consumption link - Keys/titles are similar but scopes are independent - The dependency is “soft” review preference rather than start-blocking ## Conservatism - Prefer **fewer** edges. Parallel default; serialize only with cause. - **Never invent identifiers.** Only reference keys or part indexes the playbook and inputs actually give you. - Prefer **earlier → later** chains that cannot cycle. If the playbook forbids forward references, obey it. - When uncertain, **omit the edge** and state the uncertainty in the summary rather than guessing. ## How to inspect candidates 1. Read titles and descriptions for producer/consumer language (“after the API exists”, “needs the schema from”, “blocked on design”). 2. Prefer human feed comments over agent speculation when they conflict. 3. Look for shared interfaces: one part defines a contract another implements. 4. Implementation after documentation/design is a common true edge; two independent features usually are not. ## Explaining an edge When you emit or propose an edge, be able to finish this sentence with a concrete noun: > “B cannot start before A because B needs **<specific output of A>**.” If you cannot name the output, there is no edge. ## Anti-patterns - Full serial chain “to be safe” across independent parts - Edges from name similarity alone - Invented mission keys or out-of-range part indexes - Using dependencies to express priority (use priority fields instead) - Edges that create cycles or mutual waits ## Companion routing This skill is pure dependency craft. For causal bugs inside a codebase use `systematic-debugging`. For shipping ordered work as code use the other engineering skills as attached on the Dev Type.