Communitygithub.com

Graph (Graph-Skill)

Bestimmt orchestrierter Graph-Laufzeit für deklarative DAG-Pipelines mit Journal-basierter Crash-Wiederherstellung.

Was ist Graph (Graph-Skill)?

Der Graph-Skill ermöglicht die deterministische Ausführung von DAG-Pipelines auf Basis eines deklarativen JSON-Descriptors. Er nutzt die Contracts `sealed-descriptor` und `pure-scheduler` in `src/graph/*` und führt die Pipeline als unabhängigen OS-Prozess (`omc graph run`) aus. Dadurch ist eine echte Crash-Wiederherstellung möglich: Ein Abbruch mitten im Lauf gefolgt von einem Neustart setzt die Ausführung nahtlos über das Journal fort – bereits abgeschlossene Schritte werden nicht wiederholt. Der Skill unterstützt die Plattformen Claude Code, Cursor, Codex und andere CLI-basierte KI-Agenten. Die Nutzung ist besonders geeignet für wiederholbare Multi-Step-Pipelines mit expliziten Abhängigkeiten, überlebenssichere Workflows und auditierbare Läufe mit vollständiger Journal- und Projektionshistorie. Er liefert Exit-Codes für alle Zustände (Erfolg, Fehler, Belegt, Korrupt) und erlaubt über Approval-Knoten menschliche Freigaben, die interaktiv über das `!`-Präfix gestartet werden müssen.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/graph

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Graph-Skill

Führe einen deterministischen Orchestrierungsgraphen aus einem deklarativen JSON-Descriptor aus. Die Laufzeit nutzt die Contracts sealed-descriptor und pure-scheduler in src/graph/* und führt die Ausführung als unabhängigen OS-Prozess (omc graph run) aus, sodass eine Crash-Wiederherstellung (Abbruch mitten im Lauf, erneutes Ausführen, Fortsetzen über Journal) wirklich funktioniert.

Verwendung

/oh-my-claudecode:graph <descriptor.json>
/oh-my-claudecode:graph "build then test then ask me before deploy"   (zuerst den Descriptor erstellen)

Die Ausführung erfolgt immer über den CLI-Subbefehl:

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

Führe ihn über das Bash-Tool für nicht-interaktive Graphen aus. Fortschrittszeilen werden als [run], [node], [ok], [fail], [join], [done] ausgegeben.

Wann verwenden

  • Wiederholbare Multi-Step-Pipelines mit expliziten Abhängigkeiten (DAG)
  • Arbeiten, die Unterbrechungen überstehen müssen: Kill/Neustart setzt über das Journal fort
  • Auditierbare Läufe: OCC-Journal + Projektions-Snapshots unter .omc/graph-runs/<run_id>/

NICHT verwenden für: explorative Einmalarbeiten (nutze Konversation oder /team); alles, was adaptive Neuplanung während des Laufs erfordert (Graphen sind deterministisch).

Arbeitsablauf

  1. Descriptor gegeben -> gehe zu Schritt 3.

  2. Pipeline beschrieben -> erstelle den Descriptor (JSON, Schema unten), schreibe ihn neben das Projekt (Vorschlag: .omc/graphs/<name>.json) und zeige ihn dem Benutzer vor der Ausführung. run_id muss pro logischer Pipeline eindeutig sein; ein erneuter Lauf mit derselben run_id SETZT FORT, startet nicht neu.

  3. Genehmigungsknoten: Wenn der Descriptor einen Knoten vom Typ "kind": "human-approval" enthält, führe ihn NICHT über das Bash-Tool aus (stdin ist dort nicht interaktiv; EOF schlägt mit Verweigerung fehl). Sage dem Benutzer stattdessen, er solle interaktiv ausführen:

    ! omc graph run <Datei>
    

    Das !-Präfix führt den Befehl innerhalb dieser Sitzung mit live stdin aus, sodass j/n funktioniert.

  4. Ausführen und Fortschritt melden. Exit-Codes (normativ): 0 erfolgreich | 1 endgültig fehlgeschlagen | 19 ein anderer Schreiber besitzt diesen Lauf (belegt) 20 korruptes/manipuliertes Journal (Fail-Closed) | 21 Descriptordrift bei Wiederaufnahme | 70 Laufzeitabsturz (nicht zugeordneter Fehler)

  5. Wiederaufnahme: Ein erneuter Befehl nach einem Absturz spielt festgeschriebene Übergänge ab und fährt fort. Abgeschlossene Knoten werden nie erneut ausgeführt.

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": "Weiter?" }
  ],
  "edges": [ { "id": "e1", "kind": "fixed", "from": "n1", "to": "a1" } ],
  "entry_node_ids": ["n1"],
  "concurrency_limit": 2,
  "terminal_verification_node_id": "a1"
}

Arten von Kanten: fixed | conditional | fan_out/join-Paare | back_edge (begrenzte Wiederholungen über max_traversals). Siehe src/graph/schema.ts für das maßgebliche Zod-Schema – und lies den Abschnitt Capability Boundary oben, um zu verstehen, welche integrierten Executors heute tatsächlich ausgeführt werden.

Capability-Grenze & Semantik (vor dem Erstellen lesen)

  • Kantenunterstützung: Die integrierten Executors für Befehle/Agenten unterstützen fixed-Kanten und fan_out/join-Paare. conditional- und back_edge-Routen werden vollständig von der Laufzeit und den Scheduler-Contracts unterstützt, erfordern jedoch einen benutzerdefinierten NodeExecutor, der auf seinen Ergebnissen eine route ausgibt – integrierte Executors erzeugen niemals Routen, sodass Graphen, die darauf angewiesen sind, schnell mit route_required fehlschlagen, anstatt zu raten.
  • Crash-Wiederherstellungsgarantie ist mindestens einmal für Befehlsknoten: Ein Absturz zwischen einem externen Seiteneffekt und seinem Journal-Anhang führt bei der Wiederaufnahme zur erneuten Ausführung dieses Knotens. Für idempotente Befehle ist der aufgelöste Schlüssel dem Befehl als GRAPH_IDEMPOTENCY_KEY vor seinem Start verfügbar und wird auch für nachgelagerte Deduplizierung aufgezeichnet. Integrierte Executors lehnen reconcile ab; Abgleich erfordert einen benutzerdefinierten Executor mit einer tatsächlichen externen Abgleichsinstanz. Exakt-einmal für externe Seiteneffekte liegt außerhalb des Rahmens von v1.
  • Befehlsvertrauensgrenze: Befehlsknoten sind beliebige Shell-Zeilen mit Prozessberechtigungen im aktuellen Arbeitsverzeichnis. Führe nur Descriptoren aus, die du selbst geschrieben hast oder denen du vertraust. Befehlskinder erhalten eine zugelassene Umgebung (PATH, HOME/USERPROFILE, TEMP/TMP, Gebietsschema/Zeitzone, USER-Identität, GRAPH_* und den optionalen Idempotenzschlüssel), nicht die vollständigen Geheimnisse des Hosts. Befehle sind nicht in Dateisystem/Prozess-Sandboxen isoliert.
  • Agentenautoritätsgrenze: Integrierte Agentenknoten sind explizit schreibgeschützt. Sie laufen im aktuellen Arbeitsverzeichnis ohne zusätzliche Verzeichnisse, nur mit Read, Glob und Grep, permissionMode: dontAsk, Sitzungspersistenz deaktiviert und einer anbieterspezifischen Umgebungs-Zulassungsliste. Agenten-Timeouts brechen ab und unterbrechen die SDK-Abfrage. Verwende einen benutzerdefinierten Executor für jeden Agenten, der Mutationen oder externe Effekte benötigt. Behandle .omc/graph-runs/<run_id>/descriptor.json als ausführbaren Inhalt.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

agent-doc-discipline

Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and carrying a why, steps before reference, one meaning in one home, no restating what the environment already says. Mandatory at drydock seed generation and the launch C5 sediment pass; opt-in for any other agent-facing doc edit. The companion of minimal-code-discipline: that one disciplines code, this one disciplines papers.

ai-slop-cleaner

Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode

ask

Process-first advisor routing for Claude, Codex, Gemini, Antigravity, Grok, or Cursor via `omc ask`, with artifact capture and no raw CLI assembly

ask-navigator

Shipyard

autopilot

Full autonomous execution from idea to working code

autoresearch

Stateful single-mission improvement loop with strict evaluator contract, markdown decision logs, and max-runtime stop behavior

cancel

Cancel any active OMC mode (autopilot, ralph, ultragoal, swarm, ultrapilot, pipeline, team) and clean up retired legacy state

configure-notifications

Configure notification integrations (Telegram, Discord, Slack) via natural language

debug

Diagnose the current OMC session or repo state using logs, traces, state, and focused reproduction

deepinit

Deep codebase initialization with hierarchical AGENTS.md documentation

deep-interview

Socratic deep interview with mathematical ambiguity gating before explicit execution approval

drydock

Lay the keel of the shipyard harness in any repo — the 4-pillar shared environment (Context, Rules, Tools, Standards) across 5 surfaces (CLAUDE.md, skills, design-system, mcp/cli, shared context) so that every human and agent inherits the same design language and anyone can ship. Run once per repo; re-run with --check to audit drift.

execute

Carry an approved task through to working, verified code

external-context

Invoke parallel document-specialist agents for external web searches and documentation lookup

harbor

Harbor intake for external work — the captain only handles unresolved decisions. Sweeps incoming issues and PRs, verifies every claim before disposition, reuses every decision already made, and hands the maintainer a docket whose pending items each carry one question with options, recommendation, impact and evidence. Agent-autonomous for facts and for actions covered by standing authorization; signed for every new judgment. Never merges.

hud

Configure HUD display options (layout, presets, display elements)

launch

Shipyard

loft

Loft the shape before cutting steel — answer a design question that prose cannot settle by building a throwaway artifact: a pure logic module in a clickable shell, or structurally different UI variants behind one route. The captain reacts to the artifact; the answer folds into the decision; the artifact never docks. Use when a design question stalls in words, when a navigator map carries a loft ticket, or when a spec discussion reaches

minimal-code-discipline

YAGNI-ladder coding discipline for writing changes — existence-first, reuse before writing, dependency ladder, shortest correct diff, with non-negotiables that must never be minimized away

omc-doctor

Diagnose and fix oh-my-claudecode installation issues

Verwandte Skills