deck-to-pptx
Build a PowerPoint .pptx file with python-pptx, on this deployment, without the deck engine.…
Use when a task breaks into several distinct steps that a separate sub-agent could each carry out. A DAG node dispatches to an agent on the roster and cannot call your own tools, so steps that are just your own tool calls (reading files, small edits, running commands) are not a
$ npx -y skills add EverMind-AI/Raven --skill subagent-dag-orchestration --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/subagent-dag-orchestrationContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when a task breaks into several distinct steps that a separate sub-agent could each carry out. A DAG node dispatches to an agent on the roster and cannot call your own tools, so steps that are just your own tool calls (reading files, small edits, running commands) are not a
name: subagent-dag-orchestration
description: Use when a task breaks into several distinct steps that a separate sub-agent could each carry out. A DAG node dispatches to an agent on the roster and cannot call your own tools, so steps that are just your own tool calls (reading files, small edits, running commands) are not a DAG for being many - do those yourself. The bound is about who can carry the work, not what kind of work it is: when the roster carries a specialist for it (a coding agent for code changes, an on-call agent for long runs) and the request assigns the work that way, it clears the bound like any other. For work that clears it, test three things before running the steps one at a time: are two or more steps independent (they can run at once), does a step hand its result to the next (a graph wires that handoff with no turn of yours in between), do the steps want different specialists (the tool lists the roster). If any of the three holds, orchestrate the whole task as one run_subagent_dag call. Iteration is graphs in series, one graph per round, driven by you.
metadata: {"raven":{"emoji":"🕸️","always":true,"inject":"description","requires":{"tools":["run_subagent_dag"]}}}The trigger is **a task that breaks into several distinct steps** — not a task you have already decided needs sub-agents.
**First, the hard bound.** A DAG node dispatches only to a configured third-party sub-agent; it cannot call your own tools. So steps that are just your own tool calls — reading files, small edits, running commands — are not a DAG for being many or independent: do those yourself. The bound is about who can carry the work, not what kind of work it is: when the roster carries a specialist for it (a coding agent for code changes, an on-call agent for long runs) and the owner's request assigns the work that way, it clears the bound like any other. Only work a sub-agent on the roster could carry out gets as far as the tests below.
For work that clears that bound, test three things before running the steps one at a time:
scheduled concurrently, up to the shared sub-agent cap (`max_concurrent_subagents` — `spawn` draws on the same allowance).
to a file the downstream node reads, and the graph wires that handoff itself. A `spawn` can hand its result on too — it takes a `node_id` and a later task names it the same way a node does — but only across a turn of yours; a graph needs none.
lists the roster and what each one is for.
If any of the three holds, express the whole task as **one** `run_subagent_dag` call rather than dispatching sub-agents one at a time. Persistence is not one of the reasons: every node's prompt and output is written to disk, and so is every `spawn`'s.
**Iteration is graphs in series, not a cycle in one graph.** A graph is acyclic and runs once. When the work loops — code changes feeding experiment rounds feeding the next code change — dispatch one graph per round and drive the loop yourself: each graph's outputs come back to you, and the next round's nodes reuse the same `instance` handles, so each side keeps its context across rounds.
If none of the three holds, the graph buys you nothing — dispatch the work as a single `spawn`, which is the right call exactly when the task is genuinely one sub-agent doing one thing. The work you do yourself is the work that never cleared the bound above, not this.
Every install can run a graph: raven's own agents are on the roster whether or not any third-party agent is configured, so `run_subagent_dag` is always available. Which agents exist is still the tool description's answer, not this file's — read the roster there.
A node sees only its prompt. Whatever the owner asked for, and whatever the owner allowed the node to change, reaches the node only if the prompt carries it -- and the prompt is where a whole run's search space gets narrowed without anyone deciding to narrow it. Three rules, each from a measured loss on 2026-09-08, where a two-round search left the one knob worth most of the result untouched:
the owner's request in every node's brief, not only the first round's. Your own reading of where the gains are is welcome as a suggestion, and it stays a suggestion: "gains can only come from ..." is a boundary the owner never drew. That day the owner allowed "training configuration, data mix, architecture, algorithm"; the round-one brief added "the hyperparameters are exhausted, so gains can only come from three classes outside the falsified list", and the round-two brief to the experiment runner opened with "you change no case". The runner changed nothing in 26 scored runs. One plain training setting, the kind the runner owned, was worth most of the gap to the best known result. It was never tried.
names settings already swept, pass the list itself and ask the node to check what is *not* on it before it picks directions. Eighteen named hyperparameter groups became "the hyperparameters are exhausted"; the setting that mattered was on neither.
gave the experiment runner the training configuration, the runner's brief says so every round, whether or not you expect it to matter this round. A duty left out of the brief is a duty the node takes to be someone else's.
You submit a flat list of `nodes`. A scheduler runs every node whose dependencies are met,
One Surface, All Agents: Raven generates DAGs and orchestrates multiple specialized agents for complex tasks. Raven is the harness of harnesses, built for recursive self-improvement (RSI).
Build a PowerPoint .pptx file with python-pptx, on this deployment, without the deck engine.…
Generate images via Nano Banana (Gemini 2.5/3.1 Flash Image) on OpenRouter. Use when the user…
构建以内容实体的发布、发现、阅读、引用、修订与归档为核心的网站;适用于单篇出版物、小型静态站、出版或机构站、文档与知识库、目录与档案、CMS…
构建、重构、诊断和验证以玩家能动性为核心的二维游戏与趣味体验。用于二维规则/动作/益智游戏、互动玩具、叙事探索、节奏体验、生成体验和本地多人;按子型选择专业运行时与内容工具,分别验证机制、…
构建、改造或诊断由可执行模型驱动的交互解释器、计算器与仿真。适用于用户通过参数、状态、步骤或事件理解规律的任务;负责主型分路、reference model、独立…
构建、重做、诊断或提升最终由浏览器消费的高完成度视觉前端。用于 HTML/CSS/JS/TS、React/Vue/Svelte/Astro、SVG/Canvas/WebGL 或…