From delivery-graph
Designs structured demands from raw requests with gap registers, requirements, and acceptance criteria for Delivery Graph Engineering. For starting new DGE work items.
How this skill is triggered — by the user, by Claude, or both
Slash command
/delivery-graph:dge-design [raw demand, issue link, meeting note, or feature idea][raw demand, issue link, meeting note, or feature idea]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill when starting a new piece of work. It is the brainstorm and gap-exposure step for Delivery Graph Engineering.
Use this skill when starting a new piece of work. It is the brainstorm and gap-exposure step for Delivery Graph Engineering.
Turn a raw demand into testable requirements without designing the implementation. The output feeds /dge-plan-graph.
DEM-###, REQ-###, GAP-###.#$ARGUMENTS
If no demand is provided, ask the user what demand, problem, or request they want to shape.
Before writing anything, run the shared preflight (one callable place for every
dge-* skill and the /dge-deliver conductor). Design runs before dge init, so
skip the graph check:
dge preflight --no-graph || npx --no-install dge preflight --no-graph
If it exits non-zero, stop and tell the user to install the DGE CLI first — do not proceed:
DGE CLI not found. The
dgeCLI is a separate npm package from the/dge-*slash commands. If you installed the skills via the plugin marketplace, you still need the CLI — the marketplace ships prompts, not the binary. Install it in this project:npm install --save-dev github:rafaelolsr/delivery-graphThen re-run
/dge-design.
The dge CLI is the only writer of delivery-graph/graph.json. Never hand-write or
hand-edit graph.json. If the CLI is missing, the correct action is to install it, not to emulate it.
Record:
dge add-demand --summary "..." (or backfill later with dge edit-demand).summary field is where the one-liner lives, so the outcome does
not have to carry it.)Before writing any requirement, read the relevant parts of the existing codebase. Do not design against a blank slate.
grep/find/read; check delivery-graph/demands/ and requirements/ for overlap).GAP of type: scope.Default position: the simplest change that reuses existing code beats a new abstraction. If nothing exists to reuse, say so explicitly — that statement is the evidence you looked.
Past demands leave behind learnings — bugs, gotchas, conventions, and failed
approaches — under delivery-graph/learnings/. Query them before scoping so
this demand does not re-solve or re-break something already learned:
dge learnings --about "<a few keywords from this demand>" --json # or: npx dge learnings ...
dge learnings # list all when unsure
For each relevant learning: read the file it names, and either fold its guidance
into a requirement/constraint or record why it does not apply. This is the read
side of the compound loop that /dge-compound feeds — skipping it means the
toolset stops getting smarter with each demand. If there are no learnings yet,
say so; that statement is the evidence you looked.
Run a structured grill-me: a relentless but constructive interrogation that
exposes every unresolved decision before any requirement is written. This is the
step that turns a fuzzy ask into concrete, testable requirements — do not shortcut it.
Pick the branches relevant to this demand from the list below, then state the map to the user up front: "Here is what I want to pin down. I'll go branch by branch." As you work, announce which branch you're on so the user can see progress and steer.
Start with the most foundational branch (usually Problem — everything depends on it). Within a branch:
Challenge, as you walk, every: unclear problem · vague success criteria · missing
owner · hidden dependency · untestable requirement · scope creep · speculative
feature (actually asked for, or only imagined?) · premature abstraction or
robustness beyond the stated outcome · requirement with no traceable need · everything
defaulting to must when it is really should/could · contradiction · validation
ambiguity · unhandled edge/empty/error state.
Anything the user cannot resolve becomes a GAP (Step 4), not a silently-assumed answer.
Represent each unresolved issue as:
- id: GAP-001
type: validation
severity: blocker
question: "What evidence proves this requirement is complete?"
blocks: [REQ-001]
resolution: null
Before writing any requirement, replay the Confirmed decisions recap: list each locked-in decision from Step 3 back to the user and give them a last chance to correct a misread. Only then convert decisions into requirements — a requirement must trace to a locked decision, not to an assumed answer.
Each requirement must be testable.
Assign priority honestly: must only for what the stated outcome fails without. Push nice-to-haves to should/could, and record anything deliberately excluded as a wont priority or a demand non-goal. Every requirement must trace to a stated outcome; if it cannot, drop it or demote it.
- id: REQ-001
demand_id: DEM-001
statement: "..."
priority: should
acceptance:
- "..."
validation:
method: automated-test
required_evidence:
- "..."
Author the canonical store only through the dge CLI (see CLI contract below). The CLI
writes delivery-graph/graph.json and the demands/ and requirements/ markdown for you:
dge add-demand ... writes delivery-graph/demands/DEM-###.md and the graph entrydge add-requirement ... writes delivery-graph/requirements/REQ-###.md and the graph entrydge add-gap ... / dge resolve-gap ... record gaps in the graphDo not write graph.json yourself. The CLI owns its schema.
Return ready_for_graph: true only when:
summary exists and the outcome is at most 3 sentences (not a wall of text).must) and speculative scope is either justified or recorded as a non-goal / wont.If blocker gaps remain, stop and report them instead of invoking /dge-plan-graph.
Follow the shared output convention (see skills/README.md): lead the final reply
with a bold one-line synthesis — ready for /dge-plan-graph, or blocked on N
gaps — then the demand's progress indicator (see skills/README.md), then the
detail (requirements captured, gaps open), then a ## Next block:
/dge-plan-graph when ready, or the specific blocker gaps to resolve when not.
After a successful save, include the stable local viewer link
delivery-graph/view/index.html so the user can open the graph without running a
separate viewer command.
The DGE CLI is required (see Preflight) and is the only writer of the canonical store. Use
dge if it is on the PATH (the plugin ships it), otherwise npx dge:
dge add-demand --title "..." --source "..." --summary "one-line TL;DR" --outcome "..." # or: npx dge add-demand ...
dge edit-demand DEM-### --summary "..." # backfill the TL;DR on an existing demand
dge add-requirement ...
dge add-gap ...
dge resolve-gap ...
Never edit graph.json by hand. If the CLI is unavailable, stop and install it (Preflight).
npx claudepluginhub rafaelolsr/delivery-graph --plugin delivery-graphConverts DGE requirements into a structured delivery graph with tracks, dependency nodes, and validation contracts. Use after /dge-design to plan executable work.
Guides design validation before coding: explores context, challenges assumptions, proposes approaches, and sets up worktrees. Invoke before any implementation work.
Orchestrates design workflow from idea to docs: context gathering, clarification, brainstorming, design documentation, planning handoff. Use when starting any design process.