Guide · Agent skill
How to use the Graph Pipeline Runner agent skill
Updated · written with AI from the project's own documentation and checked against our catalogue data
The graph skill lets an agent turn a multi-step task into a fixed JSON workflow, a directed acyclic graph (DAG) of command and agent steps, and run it with the oh-my-claudecode command line tool. Each step's progress is written to a journal, so if a run is interrupted, rerunning the same command resumes where it stopped. This guide explains what the skill does, how to install it, how to trigger it, and what to check before running a pipeline.
Quick start
- 1Download and unzip the skill. Download the ZIP from this page and unzip it into ~/.claude/skills/ for all projects, or into .claude/skills/ inside one project. In the Claude apps, upload the ZIP under Settings → Capabilities → Skills instead.
- 2Confirm the prerequisites. Make sure oh-my-claudecode is installed with the omc command available, a Node.js environment is ready, and Claude Agent SDK access is set up if you plan to use agent nodes.
- 3Write or pick a descriptor. Provide an existing descriptor JSON file, or describe the pipeline and let the skill draft it. Review the file, then give each pipeline a unique run_id.
- 4Run the pipeline. Run omc graph run with your descriptor through the Bash tool for non-interactive graphs. Watch the [run], [node], [ok] and [fail] lines as the pipeline progresses.
- 5Resume or approve as needed. If the run is interrupted, rerun the same command to resume from the journal. For approval gates, run the command with the ! prefix in the interactive session so you can answer y or n.
What the graph skill makes the agent do
Normally an agent decides its next move as it goes. This skill does the opposite for a multi-step job: the sequence, dependencies and commands are written down in a JSON descriptor first, then executed by the runtime rather than re-planned mid-run.
Progress is streamed as lines tagged [run], [node], [ok], [fail], [join] and [done]. The skill is aimed at repeatable build, test or check sequences and at runs that must survive interruption.
- Good fit: repeatable multi-step pipelines with explicit dependencies
- Good fit: work that must survive a kill or restart
- Good fit: runs that need an audit trail under .omc/graph-runs/<run_id>/
- Poor fit: exploratory one-off work, where ordinary conversation or /team is more suitable
- Poor fit: anything that needs re-planning during the run, because graphs are deterministic
How to install the graph skill
Download the ZIP file from this page. Then choose one of two routes.
For Claude Code, unzip the download into ~/.claude/skills/ to make it available everywhere, or into a project's .claude/skills/ folder to limit it to that project.
In the Claude apps, open Settings, go to Capabilities, then Skills, and upload the ZIP there.
- Personal install: ~/.claude/skills/
- Project install: .claude/skills/ inside your project
- Claude apps: Settings → Capabilities → Skills
Check the requirements before you run anything
The skill depends on oh-my-claudecode being installed, with the omc command line tool available in your shell. It also needs a Node.js environment for the graph runtime. Agent-type nodes need Claude Agent SDK access.
The skill runs scripts and uses the network, so plan for both. The command the skill uses is the CLI subcommand below; the optional --runs-root flag sets where run data is written.
- oh-my-claudecode installed, with omc available
- Node.js environment for the graph runtime
- Claude Agent SDK access for agent-type nodes
- The skill runs scripts: yes. It uses the network: yes.
omc graph run <descriptor.json> [--runs-root <dir>]How to trigger the skill with a request
You can invoke the skill directly with its slash command, passing either a descriptor file or a plain-language description of the pipeline. If you describe a pipeline, the skill authors the descriptor JSON first, writes it into your project (the suggested location is .omc/graphs/<name>.json), and shows it to you before anything runs.
A request such as 'build, then test, then ask me before deploy' is the kind of description the skill is designed to turn into a descriptor. Review the file before running it.
- Direct: /oh-my-claudecode:graph <descriptor.json>
- From a description: /oh-my-claudecode:graph "build then test then ask me before deploy"
- Give each logical pipeline its own run_id, because rerunning with the same run_id resumes instead of restarting
/oh-my-claudecode:graph <descriptor.json>Run a pipeline and resume it after an interruption
Non-interactive graphs run through the Bash tool with omc graph run. If a run is killed partway through, rerun the same command. Committed transitions are replayed and the run continues. Completed nodes are not executed again.
Exit codes tell you the outcome: 0 means succeeded, 1 means terminal failure, 19 means another writer owns the run, 20 means the journal is corrupt or tampered with (the run fails closed), 21 means the descriptor changed on resume, and 70 means an unmapped runtime crash.
- 0 succeeded
- 1 terminal failed
- 19 another writer owns this run (busy)
- 20 corrupt or tampered journal (fail-closed)
- 21 descriptor drift on resume
- 70 runtime crash (unmapped error)
omc graph run <file>Handle approval steps interactively
If a descriptor contains a node of kind human-approval, do not run it through the Bash tool. There stdin is not interactive, and an end-of-input answer is treated as denied. Instead, run it yourself in the session with the ! prefix so that y/n answers work.
The source describes this approval behaviour only for interactive runs, so plan approval gates for that mode.
- Run approval graphs with the ! prefix so stdin stays live
- Automated Bash runs will deny approval gates
! omc graph run <file>Safety notes before you run a descriptor
Command nodes are arbitrary shell lines with full process authority in the current working directory. They are not sandboxed for files or processes. Only run descriptors you wrote or trust. Command children get an allowlisted environment (such as PATH, HOME, temp folders, locale and GRAPH_* values), not your full set of host secrets.
Built-in agent nodes are read-only: they can use Read, Glob and Grep only, and they cannot edit files or call external services. Crash recovery is at-least-once for command nodes, so a command can run again after a crash that happened between its side effect and the journal write. Treat .omc/graph-runs/<run_id>/descriptor.json as executable content.
- Do not run unreviewed shell commands through a graph
- Agent steps that must edit files or call services need a custom executor
- Exactly-once behaviour for external side effects is out of scope for v1
- Idempotent commands receive GRAPH_IDEMPOTENCY_KEY before they start
Tips for writing reliable graphs
Keep each node small and give each a clear title and timeout, so failures are easy to read. Use max_attempts for commands that may fail transiently. Check the descriptor schema in src/graph/schema.ts for the authoritative rules.
Built-in executors cover fixed edges and fan_out/join pairs. Conditional and back_edge routes need a custom executor that emits a route, and without one the graph fails fast with route_required instead of guessing.
- Use fixed edges and fan_out/join pairs with the built-in executors
- conditional and back_edge routes require a custom NodeExecutor
- Built-in executors reject reconcile
- Set concurrency_limit to control parallel nodes
What people use it for
- Running the same build, test and lint sequence every time before a release check
- Chaining a command step to an agent review step that reads the code and reports back, with read-only tools
- Running a long pipeline that can be safely resumed after the machine restarts
- Keeping an auditable record of which pipeline steps ran and what their outcomes were
Frequently asked questions
How do I install the graph agent skill?
Download the ZIP from this page and unzip it into ~/.claude/skills/ for personal use, or into a project's .claude/skills/ folder. In the Claude apps, upload the ZIP under Settings → Capabilities → Skills.
What do I need to run the graph skill?
You need oh-my-claudecode installed with the omc command line tool available, a Node.js environment for the graph runtime, and Claude Agent SDK access for agent-type nodes. The skill runs scripts and uses the network.
Why did my graph run stop with exit code 19 or 20?
Exit code 19 means another writer currently owns that run, so wait for it to finish or use a different run_id. Exit code 20 means the journal is corrupt or was tampered with, and the runtime fails closed rather than continuing.
Does rerunning a crashed pipeline start it over?
No. Rerunning the same command with the same run_id resumes from the journal, replays committed transitions and continues. Completed nodes are not executed again, though a command interrupted between its side effect and the journal write can run again.
Can a graph ask me for approval before deploying?
Yes, using a human-approval node. Run that graph interactively with the ! prefix, because the Bash tool has no interactive stdin and denies approval by default.
Is the graph skill safe to run on any project?
Only run descriptors you wrote or trust. Command nodes have full shell authority in the working directory and are not sandboxed, and built-in agent nodes are read-only and cannot edit files or call external services.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
The graph skill suits developers and teams who want the same multi-step build, test or check sequence to run the same way each time, with a journal that lets interrupted runs resume. Pick something else for exploratory work that needs re-planning mid-run, for pipelines that run untrusted shell commands, or for agent steps that must edit files or call external services with the built-in executors.
Download the skill