dag-ulw

Installation
SKILL.md

Dag Ulw

This is a Hermes-native dag-ulw workflow skill.

Why This Exists

dag-ulw exists so a big job runs end to end without the person driving it: the parent plans a graph OMH can validate and draw, runs the ready nodes in parallel on Hermes' own children, verifies the goal with a separate node, and repairs before it reports.

First Steps

  • Start at once; there is no plan approval. Write the goal in one line, and pass each separately checkable outcome the request names as criteria (id and one line); a criterion names the state the person asked for (it works on staging), not that a check was run or its result reported; never ask the person to list them.
  • When the conversation holds a plan the user accepted (from omh-plan, ulw-plan or omh-refactor-plan), build the graph from it instead of re-planning: each task becomes a node with its id, depends_on and write scope, its done check goes into VERIFY and STOP WHEN, and its closing verification task becomes the role: verify node; plan only what it leaves open.
  • Plan the graph and call omh_dag action=define with the complete run goal and each node's id, label, category, prompt, depends_on, write_scope and role (build by default; baseline, verify, review); fix every refusal and read the lint before going on. Never delegate_task before define returns its calls. The saved goal reaches every native task; local VERIFY does not replace goal acceptance.
  • Keep the plan todo as the run's layers in ONE tool: todo_list when todo_list is in your tool list or tool_search finds it (OMH mirrors it), else omh_todo; an accepted plan stays in omh_todo. One item per layer, named for what it delivers, never a list of its nodes (the panel draws those); advance it as each layer settles.
  • For each call omh_dag returns, run its route (omh_delegate_route, set or fallback as given), then delegate_task with the tasks unchanged; never more calls than it returned. A call whose route names a backend (Hermes' model_map or profile_routes) runs no route tool: its tasks already carry what that backend takes. Then end the turn with one status line; never wait or poll.
  • On each completion read the node's handoff file and call omh_dag action=settle (accepted, failed, or blocked; a provider error is failed with provider_error); a verify node with criteria is accepted only when every CRITERION line says met, failed when one is unmet, blocked when one could not be checked here. Dispatch what it returns in the same turn.
  • When the run reports done, check each node against its SCOPE and the goal criteria: extend the run when work is missing, otherwise report.

Do Not Use When

Installs
7
GitHub Stars
5.5K
First Seen
14 days ago