graph 精选
Deterministic orchestration graph runtime - declarative DAG pipelines with journal-based crash recovery
安装方式
cp -r skills/graph ~/.claude/skills/graph把该 skill 目录放进客户端 skills 目录。不同客户端的目录可能不同,Claude Code 默认是 ~/.claude/skills/
/plugin marketplace add Yeachan-Heo/oh-my-claudecode⚠️ 该命令形态随客户端版本变化,仅在检测到 .claude-plugin/marketplace.json 时展示;不可用时请用「目录复制」。
https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claudecode/8262f9f790eed35e6cbd66572b36c2acba18f679/skills/graph/SKILL.md下载后另存为 ~/.claude/skills/graph/SKILL.md。链接锁定采集时的 commit,内容与本站展示一致。
整仓一次性获取:git clone --depth 1 https://github.com/Yeachan-Heo/oh-my-claudecode.git
依赖与权限
- 无需 API Key
- 无需联网
- 依赖外部命令:
nodenpmgo - 以上为按正文与 frontmatter 自动推断的信号,仅供参考;安装前建议先阅读原文。
SKILL.md 正文
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
- Descriptor given -> go to step 3.
- 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.
- 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.
- 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)
- 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
fixededges 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.
质量与来源
- 所属仓库
- Yeachan-Heo/oh-my-claudecode
- 仓库星标
- 4.0 万
- 最近更新
- 今天
- 采集时间
- 今天
- commit
- 8262f9f790ee
- 内容指纹
- sha256:c0ebe6ddc524367
- 文件路径
- skills/graph/SKILL.md