Catalog
yeachan-heo/graph

Deterministic orchestration graph runtime - declarative DAG pipelines with journal-based crash recovery

v1.0LATEST
New~1.3kUpdated Aug 31, 2026

Graph Skill

Run a deterministic orchestration graph from a declarative JSON descriptor. The runtime consumes the sealed-descriptor and pure-scheduler contracts in src/graph/* and executes through an independent OS process (omc graph run), so crash recovery (kill mid-run, rerun, resume from journal) works for real.

Usage

/oh-my-claudecode:graph <descriptor.json>
/oh-my-claudecode:graph "build then test then ask me before deploy"   (author the descriptor first)

The execution surface is always the CLI subcommand:

omc graph run <descriptor.json> [--runs-root <dir>]

Run it via the Bash tool for non-interactive graphs. Progress lines stream as [run], [node], [ok], [fail], [join], [done].

When To Use

  • Repeatable multi-step pipelines with explicit dependencies (DAG)
  • Work that must survive interruption: kill/restart resumes from journal
  • Auditable runs: OCC journal + projection snapshots under .omc/graph-runs/<run_id>/

When NOT to use: exploratory one-off work (use conversation or /team); anything needing adaptive re-planning mid-run (graphs are deterministic).

Workflow

  1. Descriptor given -> go to step 3.

  2. Pipeline described -> author the descriptor JSON (schema below), write it next to the project (suggest .omc/graphs/<name>.json) and show it to the user before running. run_id must be unique per logical pipeline; rerunning with the same run_id RESUMES, not restarts.

  3. Approval nodes: if the descriptor contains any "kind": "human-approval" node, do NOT run it through the Bash tool (stdin is not interactive there; EOF fails closed to denied). Tell the user to run interactively instead:

    ! omc graph run <file>
    

    The ! prefix runs it inside this session with live stdin so y/n works.

  4. Run and relay progress. Exit codes (normative): 0 succeeded | 1 terminal failed | 19 another writer owns this run (busy) 20 corrupt/tampered journal (fail-closed) | 21 descriptor drift on resume | 70 runtime crash (unmapped error)

  5. Resume: rerunning the same command after a crash replays committed transitions and continues. Completed nodes never re-execute.

Descriptor Schema (minimal)

{ "descriptor_version": 1, "run_id": "unique-pipeline-id", "revision_id": "rev-1", "goal": "one line", "nodes": [ { "id": "n1", "kind": "command", "title": "...", "timeout_ms": 60000, "max_attempts": 2, "effect_policy": { "policy": "side_effect_free" }, "command": "npm test" }, { "id": "a1", "kind": "agent", "title": "...", "timeout_ms": 300000, "max_attempts": 1, "effect_policy": { "policy": "side_effect_free" }, "instructions": "..." }, { "id": "gate", "kind": "human-approval", "title": "...", "prompt": "Proceed?" } ], "edges": [ { "id": "e1", "kind": "fixed", "from": "n1", "to": "a1" } ], "entry_node_ids": ["n1"], "concurrency_limit": 2, "terminal_verification_node_id": "a1" }

Edge kinds: fixed | conditional | fan_out/join pairs | back_edge (bounded retries via max_traversals). See src/graph/schema.ts for the authoritative Zod schema — and read the Capability Boundary section above for what built-in executors actually execute today.

Capability Boundary & Semantics (read before authoring)

  • Edge support: built-in command/agent executors cover fixed edges and fan_out/join pairs. conditional and back_edge routes are fully supported by the runtime and scheduler contracts but require a custom NodeExecutor that emits route on its results — built-in executors never produce routes, so graphs relying on them fail fast with route_required rather than guessing.
  • Crash-recovery guarantee is at-least-once for command nodes: a crash between an external side effect and its journal append re-executes that node on resume. For idempotent commands, the resolved key is available to the command as GRAPH_IDEMPOTENCY_KEY before it starts and is also recorded for downstream dedupe. Built-in executors reject reconcile; reconciliation requires a custom executor with an actual external reconciliation authority. Exactly-once for external side effects is out of scope for v1.
  • Command trust boundary: command nodes are arbitrary shell lines with process authority in the current working directory. Only run descriptors you wrote or trust. Command children receive an allowlisted environment (PATH, HOME/USERPROFILE, TEMP/TMP, locale/timezone, USER identity, GRAPH_*, and the optional idempotency key), not the host's full secrets. Commands are not filesystem/process sandboxed.
  • Agent authority boundary: built-in agent nodes are explicitly read-only. They run in the current working directory with no additional directories, only Read, Glob, and Grep, permissionMode: dontAsk, session persistence disabled, and a provider-specific environment allowlist. Agent timeouts abort and interrupt the SDK query. Use a custom executor for any agent that needs mutation or external effects. Treat .omc/graph-runs/<run_id>/descriptor.json as executable content.
Files1
1 files · 1.0 KB

Select a file to preview

Overall Score

82/100

Grade

B

Good

Safety

78

Quality

85

Clarity

85

Completeness

80

Summary

This skill runs deterministic orchestration pipelines from declarative JSON descriptors using the `omc graph run` command. It enables reliable multi-step workflows with explicit dependencies, crash recovery via journaling, and audit trails. The runtime isolates command and agent execution with explicit capability boundaries: commands run with limited environment variables, and agents run read-only with restricted operations (Read, Glob, Grep only).

Detected Capabilities

shell command executionJSON descriptor parsingcrash recovery via journalprocess execution with environment isolationhuman-approval gatingagent-based node execution (read-only)structured pipeline logging

Trigger Keywords

Phrases that MCP clients use to match this skill to user intent.

orchestrate pipelinecrash recoverymulti-step workflowdag dependenciesapproval gateresume failed run

Risk Signals

WARNING

Command nodes execute arbitrary shell with process authority in current working directory

Capability Boundary section
WARNING

Descriptor JSON treated as executable content; trust boundary is user-authored or trusted descriptors only

Capability Boundary section
INFO

Command nodes can only receive allowlisted environment variables; secrets must not be passed as env vars to commands

Capability Boundary section
INFO

Agent nodes are read-only by design; mutation requires custom executor (out of scope for v1)

Capability Boundary section

Use Cases

  • Execute multi-step CI/CD pipelines with explicit dependencies and recovery from interruption
  • Run repeatable build-test-deploy workflows with audit trails and human approval gates
  • Resume failed pipelines from the last successful node without re-executing completed work
  • Define self-documenting DAGs with role-based approval checkpoints (human-approval nodes)
  • Integrate deterministic agent tasks into orchestrated pipelines with built-in crash recovery

Quality Notes

  • Clear capability boundaries documented: explicit separation between command (mutable, trusted-descriptor only), agent (read-only), and human-approval nodes
  • Comprehensive failure mode documentation: exit codes and recovery semantics are normative and well-defined
  • Minimal descriptor schema provided with examples for all three node kinds (command, agent, human-approval)
  • Strong idempotency and crash-recovery semantics documented; at-least-once guarantee with idempotency keys for command nodes
  • Risk clearly communicated: 'Only run descriptors you wrote or trust' with rationale (arbitrary shell authority)
  • Descriptor schema references authoritative Zod schema in src/graph/schema.ts for completeness
  • Lack of external code examples or full workflow walkthrough may slow first-time adoption
  • Edge kind support clearly scoped: fixed and fan_out/join work built-in; conditional and back_edge require custom executors
Model: claude-haiku-4-5-20251001Analyzed: Aug 31, 2026

Reviews

Add this skill to your library to leave a review.

No reviews yet

Be the first to share your experience.

Use yeachan-heo/graph in your dev environment

Command Palette

Search for a command to run...