Communitygithub.com

graph

Runtime de orquestación determinista con grafo DAG declarativo y recuperación ante fallos basada en diario

¿Qué es graph?

Graph Skill proporciona un runtime de ejecución para grafos de orquestación deterministas definidos mediante descriptores JSON. Está diseñado para pipelines repetibles con dependencias explícitas (DAG) que deben sobrevivir a interrupciones: si el proceso falla a medio camino, se puede reanudar desde el último punto registrado en el diario de ejecución. Soporta nodos de comando, agente y aprobación humana, así como aristas fijas, fan-out/join, condicionales y back-edge; los ejecutores incluidos cubren aristas fijas y fan-out/join, mientras que las demás requieren ejecutores personalizados. La garantía de recuperación es al-menos-una-vez para nodos de comando, y los nodos de agente integrados son explícitamente de solo lectura. La salida se puede consumir desde la herramienta Bash o de forma interactiva con el prefijo '!' para manejar nodos de aprobación humana. Está implementado para el asistente Claude Code de Anthropic y se invoca mediante el comando `/oh-my-claudecode:graph`.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Graph Skill

Ejecuta un grafo de orquestación determinista a partir de un descriptor JSON declarativo. El runtime consume los contratos sealed-descriptor y pure-scheduler en src/graph/* y se ejecuta mediante un proceso OS independiente (omc graph run), por lo que la recuperación ante fallos (matar a medio camino, reejecutar, reanudar desde el diario) funciona de verdad.

Uso

/oh-my-claudecode:graph <descriptor.json>
/oh-my-claudecode:graph "build then test then ask me before deploy"   (crear el descriptor primero)

La superficie de ejecución es siempre el subcomando CLI:

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

Ejecútalo mediante la herramienta Bash para grafos no interactivos. Las líneas de progreso se muestran como [run], [node], [ok], [fail], [join], [done].

Cuándo Usarlo

  • Pipelines multi-paso repetibles con dependencias explícitas (DAG)
  • Trabajo que debe sobrevivir a interrupciones: matar/reiniciar reanuda desde el diario
  • Ejecuciones auditables: diario OCC + instantáneas de proyección en .omc/graph-runs/<run_id>/

Cuándo NO usarlo: trabajo exploratorio de una sola vez (usar conversación o /team); cualquier cosa que necesite replanificación adaptativa a medio camino (los grafos son deterministas).

Flujo de Trabajo

  1. Descriptor proporcionado -> ir al paso 3.

  2. Pipeline descrito -> crear el descriptor JSON (esquema más abajo), escribirlo junto al proyecto (sugerir .omc/graphs/<nombre>.json) y mostrarlo al usuario antes de ejecutar. run_id debe ser único por pipeline lógico; reejecutar con el mismo run_id REANUDA, no reinicia.

  3. Nodos de aprobación: si el descriptor contiene algún nodo "kind": "human-approval", NO lo ejecutes mediante la herramienta Bash (stdin no es interactivo allí; EOF falla cerrado a denegado). Indica al usuario que ejecute interactivamente:

    ! omc graph run <archivo>
    

    El prefijo ! lo ejecuta dentro de esta sesión con stdin en vivo para que funcione s/n.

  4. Ejecutar y relatar el progreso. Códigos de salida (normativos): 0 éxito | 1 fallo terminal | 19 otro escritor posee esta ejecución (ocupado) 20 diario corrupto/manipulado (fallo cerrado) | 21 desviación del descriptor al reanudar | 70 fallo del runtime (error no mapeado)

  5. Reanudar: reejecutar el mismo comando tras un fallo reproduce las transiciones confirmadas y continúa. Los nodos completados nunca se reejecutan.

Esquema del Descriptor (mínimo)

{
  "descriptor_version": 1,
  "run_id": "id-unico-del-pipeline",
  "revision_id": "rev-1",
  "goal": "una línea",
  "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": "¿Proceder?" }
  ],
  "edges": [ { "id": "e1", "kind": "fixed", "from": "n1", "to": "a1" } ],
  "entry_node_ids": ["n1"],
  "concurrency_limit": 2,
  "terminal_verification_node_id": "a1"
}

Tipos de arista: fixed | conditional | fan_out/join pair | back_edge (reintentos acotados mediante max_traversals). Consulta src/graph/schema.ts para el esquema Zod autoritativo — y lee la sección de Límite de Capacidad anterior para ver qué ejecutores integrados ejecutan realmente hoy.

Límite de Capacidad y Semántica (leer antes de crear)

  • Soporte de aristas: los ejecutores integrados de comando/agente cubren aristas fixed y pares fan_out/join. Las rutas conditional y back_edge son totalmente soportadas por el runtime y los contratos del scheduler, pero requieren un NodeExecutor personalizado que emita route en sus resultados — los ejecutores integrados nunca producen rutas, por lo que los grafos que dependen de ellas fallan rápidamente con route_required en lugar de adivinar.
  • La garantía de recuperación ante fallos es al-menos-una-vez para nodos de comando: un fallo entre un efecto secundario externo y su apéndice en el diario reejecuta ese nodo al reanudar. Para comandos idempotent, la clave resuelta está disponible para el comando como GRAPH_IDEMPOTENCY_KEY antes de que comience y también se registra para deduplicación posterior. Los ejecutores integrados rechazan reconcile; la reconciliación requiere un ejecutor personalizado con una autoridad de reconciliación externa real. La ejecución exactamente-una-vez para efectos secundarios externos está fuera del alcance de v1.
  • Límite de confianza del comando: los nodos de comando son líneas de shell arbitrarias con autoridad de proceso en el directorio de trabajo actual. Solo ejecuta descriptores que hayas escrito o en los que confíes. Los hijos del comando reciben un entorno permitido (PATH, HOME/USERPROFILE, TEMP/TMP, locale/timezone, identidad de USER, GRAPH_* y la clave de idempotencia opcional), no los secretos completos del host. Los comandos no están en un entorno aislado de archivos/sistema.
  • Límite de autoridad del agente: los nodos de agente integrados son explícitamente de solo lectura. Se ejecutan en el directorio de trabajo actual sin directorios adicionales, solo Read, Glob y Grep, permissionMode: dontAsk, persistencia de sesión deshabilitada y una lista de entornos permitidos específica del proveedor. Los tiempos de espera del agente abortan e interrumpen la consulta del SDK. Usa un ejecutor personalizado para cualquier agente que necesite mutación o efectos externos. Trata .omc/graph-runs/<run_id>/descriptor.json como contenido ejecutable.

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

Skills relacionados