Agent skill

Open Dynamic Workflows

by xz1220 in xz1220/open-dynamic-workflows

Write and run dynamic workflows: short JavaScript scripts in Claude Code's workflow dialect, run with the odw CLI outside the host agent's context, fanning subtasks out to coding-agent CLIs (Codex…

MITAuto-check passedAgent Workflows

Install Open Dynamic Workflows

skills CLI
$ npx skills add xz1220/open-dynamic-workflows --skill open-dynamic-workflows -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install xz1220/open-dynamic-workflows open-dynamic-workflows --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/xz1220/open-dynamic-workflows.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/open-dynamic-workflows .claude/skills/open-dynamic-workflows && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
open-dynamic-workflows
GitHub stars
104
Token cost
~2k tokens
SKILL.md length
904 words
Files
3 (incl. references)
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Write and run dynamic workflows: short JavaScript scripts in Claude Code's workflow dialect, run with the odw CLI outside the host agent's context, fanning subtasks out to coding-agent CLIs (Codex…

  • A task is bigger than a single call — parallel draft fan-out
  • SKILL.md covers Write the workflow script, Primitives at a glance, Run and observe and Adapters, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Multi-stage review pipelines

What it does

Open Dynamic Workflows is an agent skill from xz1220/open-dynamic-workflows. Write and run dynamic workflows: short JavaScript scripts in Claude Code's workflow dialect, run with the odw CLI outside the host agent's context, fanning subtasks out to coding-agent CLIs (Codex, Claude Code, Gemini, Qwen, Kimi, or your own) in a background process and handing back only the final result. Use this skill when a task is bigger than a single call — parallel draft fan-out, multi-stage review pipelines, adversarial verification of findings, or discovery loops that run until nothing new turns up — or…

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/adapters.md` and `references/primitives.md`).

It sits in Agent Workflows, covering Multi-agent orchestration and Task breakdown. It works with JavaScript, Kimi and Qwen. The repository describes itself as: Open Dynamic Workflows: TypeScript CLI runtime for Claude Code-style dynamic workflows across Codex, Claude Code, Gemini, Qwen, Kimi, and custom coding-agent CLIs. The licence is MIT.

When your agent uses it

  • A task is bigger than a single call — parallel draft fan-out
  • Multi-stage review pipelines
  • Adversarial verification of findings
  • Discovery loops that run until nothing new turns up —

Example prompts

  • “s workflow dialect, run with the odw CLI outside the host agent”
  • “/open-dynamic-workflows”

What it can do on your machine

Read from SKILL.md and the folder at commit 16f57ee. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Open Dynamic Workflows loads about 2k tokens when it runs, and up to ~5.9k if it reads all its reference files. Until then it costs about 161 tokens; SKILL.md has 904 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~161
When it runs · the whole SKILL.md, loaded when a task matches
~2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from xz1220/open-dynamic-workflows at commit 16f57ee, republished under its MIT licence (© xz1220). 904 words, ~2,026 tokens.

Download SKILL.mdSave it as .claude/skills/open-dynamic-workflows/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
open-dynamic-workflows
description
Write and run dynamic workflows: short JavaScript scripts in Claude Code's workflow dialect, run with the `odw` CLI outside the host agent's context, fanning subtasks out to coding-agent CLIs (Codex, Claude Code, Gemini, Qwen, Kimi, or your own) in a background process and handing back only the final result. Use this skill when a task is bigger than a single call — parallel draft fan-out, multi-stage review pipelines, adversarial verification of findings, or discovery loops that run until nothing new turns up — or when the user mentions odw, dynamic workflows, multi-agent orchestration, or fanning out subagents.
license
MIT

Open Dynamic Workflows

A dynamic workflow is a short JavaScript script: the orchestration plan is ordinary code, executed by odw in a detached background process, dispatching each subtask to a real coding-agent CLI process. Intermediate output never enters your context; all that comes back is the script's final return value.

The flow is always three steps: write the script → odw run → inspect the result, then act. Don't use this for work that fits in a single call — just do it directly.

Write the workflow script

  • The file starts with export const meta = {…} — a pure literal (no variables, function calls, or template interpolation). meta.name and meta.description are required; whenToUse, phases, and model are optional.
  • The body runs in an async context: use top-level await directly; the top-level return value is the workflow's result.
  • The primitives are injected globals — never import them. Any top-level import / export other than export const meta is rejected by the loader.
  • Ordinary control flow (loops, if, dedup) lives in the script. The primitives only dispatch and wait; what to do with results is the script's decision.
js
// fan-out-reduce.js
export const meta = {
  name: 'fan-out-reduce',
  description: 'Draft in parallel, then synthesize.',
  phases: [{ title: 'Draft' }, { title: 'Synthesize' }],
}

const question = (args && args.question) || 'Design a cache.'

phase('Draft')
const drafts = await parallel(
  [1, 2, 3].map((i) => () => agent(`Draft #${i}: ${question}`, { phase: 'Draft' })),
)

phase('Synthesize')
return await agent(
  'Synthesize the best answer from:\n' + drafts.filter(Boolean).join('\n---\n'),
  { phase: 'Synthesize' },
)

Input passed with --args is injected as the global args (parsed JSON, or a raw string — input that looks like JSON but fails to parse is rejected outright, never silently passed through as a string).

Primitives at a glance

PrimitiveWhat it does
agent(prompt, opts?)Run one coding agent on a subtask; returns its reply text, or a validated object when opts.schema is set. The only verb that does real work.
parallel(thunks)Run zero-arg thunks concurrently and wait for all (barrier). Order preserved; a failed slot is null.
pipeline(items, ...stages)Stream each item through the stages independently (no barrier). Each stage receives (prev, item, index).
phase(title) / log(msg)Label the following work for progress / emit one progress line.
argsThe workflow input (injected).
budget{ total, spent(), remaining() } — scale depth to a token target.
workflow(ref, args?)Run another workflow inline (one level deep). ref is a managed-directory name or { scriptPath }; the child shares this run's concurrency cap, agent counter, and budget.
validate(source)Parse and compile-check trusted source without running its workflow body; metadata is evaluated. Returns { ok, meta?, errors, warnings }. ODW extension — not part of Claude Code's dialect.

opts for agent: { adapter?, schema?, label?, phase?, model?, agentType?, isolation? }. adapter picks the CLI; schema is a raw JSON Schema object (an option, not a global); agentType is a persona injected into the prompt — not an adapter name.

Rule of thumb: use parallel when the next step needs the whole batch at once (dedup, tally, synthesis); default to pipeline for multi-stage work.

Before writing complex compositions — nested workflows, schema retries, budget-scaled depth — read references/primitives.md.

Run and observe

bash
odw run wf.js --wait --args '{"question": "Design a cache."}'   # block and print the result

For long runs, fire-and-poll instead of blocking yourself:

bash
RUN=$(odw run wf.js)        # prints a run id and returns immediately
odw status $RUN             # state + agent count
odw logs $RUN --follow      # stream progress events
odw result $RUN             # print the final value when done
odw pause $RUN / resume $RUN / stop $RUN
odw list                    # all runs

Both patterns above behave exactly like this for you: your shell is not a terminal, so odw run detaches and prints the run id. Only a bare invocation in a human's interactive terminal attaches a live progress view instead (Ctrl-C there detaches; the run keeps going; odw attach <run_id> re-attaches). Force either way with -d/--detach or --fg, or ODW_DETACH=1.

Saved workflows run by name (odw run <name>); lookup order: .odw/workflows, .claude/workflows, ~/.odw/workflows, ~/.claude/workflows.

Show full SKILL.md (381 more words)Show less

Adapters

Codex, Claude Code, Gemini, Qwen, and Kimi work out of the box with no configuration. To change the default CLI, tune flags, or plug in a custom CLI, read references/adapters.md and write an odw.config.json (at the project root or ~/.config/odw/config.json, or pass --config).

If a run fails with AdapterNotFound (several agent CLIs installed, no default picked): run odw init --check to see which CLIs are installed — in your non-interactive shell it only reports, never prompts. Then ask your user which CLI to default to and persist their answer with odw init --adapter <name>. Do not pick for them silently; the default decides which vendor's CLI (and whose quota/permissions) every bare agent() call uses.

Behavior you must know

  • Context: each agent receives its own prompt. Agents using the default source directory share files; use worktree isolation when file edits must be separate.
  • Workspace: agents run directly in the run's source directory (--source, default the current directory) — the same semantics as Claude Code's own Workflow tool. For isolation, ask per agent with isolation: "worktree": the agent gets a throwaway git worktree (needs the source to be a git repo with at least one commit; the agent sees HEAD, not uncommitted edits). The temporary worktree is removed afterward and changes are not merged. agent() returns the reply, not a diff; include required deliverables in the reply or persist them explicitly before cleanup.
  • Cost: concurrency is capped (default min(16, cpus - 2)) and total dispatches per run have a hard guard; use odw pause / odw stop when a run exceeds expectations.
  • Results: the engine never commits, pushes, or applies diffs for you. Inspect the return value first, then decide the next step.

Common mistakes

MistakeCorrection
Importing primitives or other modules in the scriptPrimitives are injected globals; any extra top-level import/export is rejected by the loader.
Variables, spreads, or function calls inside metameta must be a pure literal.
Treating all failures in parallel/pipeline alikeRecoverable failures become null; stop, budget and dispatch-limit errors abort. Retry missing results or fail when every item is required; filter only when partial output is acceptable.
Branching on which agent finished firstBreaks reproducibility; keep reductions order-independent.
Using validate() and expecting the script to run on Claude Codevalidate is an ODW extension and runs on odw only.

© xz1220, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in skills/open-dynamic-workflows of xz1220/open-dynamic-workflows.

  • SKILL.md
  • references/adapters.md
  • references/primitives.md

Open the folder on GitHubat commit 16f57ee

Compare with similar skills

Open Dynamic Workflows next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Open Dynamic Workflows compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Open Dynamic Workflows this skillxz1220/open-dynamic-workflows104—~2kAutomated safety check: PassMIT
Orchestrator LanesVKirill/claude-lane-stack122—~4.6kAutomated safety check: NotesMIT
LLM Council on Fireworks AIdair-ai/dair-academy-plugins614—~5kAutomated safety check: NotesMIT
Kimi Code DelegationCherryHQ/cherry-studio52k1 repos~504Automated safety check: PassAGPL-3.0
MemPalace Task HandoffMemPalace/mempalace59k—~1.9kAutomated safety check: PassMIT
agtx One-Shot Project Runnerfynnfluegge/agtx1.7k—~3.8kAutomated safety check: PassApache-2.0

Similar skills

  • Orchestrator Lanes

    VKirill/claude-lane-stack

    Terminal Lane Stack Claude Code dev-orchestrator only (run-controller harness: score, DAG, run-supervisor, L0/L1/L2, wt-merge-main).

    122 GitHub stars~4.6k tokensUpdated yesterday
    Agent WorkflowsAuto-check: notes
  • LLM Council on Fireworks AI

    dair-ai/dair-academy-plugins

    Has several open-weight models answer a question, rank each other's anonymized answers, then lets a chairman model write the final response through Fireworks AI.

    614 GitHub stars~5k tokensUpdated 2 mo ago
    AI & LLM EngineeringAuto-check: notes
  • Kimi Code Delegation

    CherryHQ/cherry-studio

    Delegates one bounded repository task to Kimi Code in non-interactive prompt mode and reads back the final result from its JSON event stream.

    52k GitHub starsUsed in 1 repo~504 tokens
    Agent WorkflowsAuto-check passed
  • MemPalace Task Handoff

    MemPalace/mempalace

    Creates, hands off, claims, executes and closes agent tasks through the MemPalace logstream, with approval of the exact task before it is recorded.

    59k GitHub stars~1.9k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Runs a whole project unattended on an agtx kanban board, decomposing the goal, starting tasks, unblocking workers and merging each result.

    1.7k GitHub stars~3.8k tokensUpdated 6 days ago
    Agent WorkflowsAuto-check passed
  • Agtx Task Sweep

    fynnfluegge/agtx

    Breaks a conversation's results into feature-level tasks and pushes them to the agtx kanban board, where each task gets its own worktree and agent session.

    1.7k GitHub stars~1.7k tokensUpdated 6 days ago
    Agent WorkflowsAuto-check passed

More from xz1220/open-dynamic-workflows

  • Ultra Mode

    xz1220/open-dynamic-workflows

    Execute explicitly authorized Ultracode / Ultra Mode requests: optimize for exhaustive, correct answers within the user's stated scope by using any available independent-work mechanism (ODW…

    104 GitHub stars~1.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Open Dynamic Workflows

    xz1220/open-dynamic-workflows

    编写并运行 dynamic workflow:用 Claude Code 的 workflow 方言写一段简短的 JavaScript 脚本,再用 odw CLI 在宿主 agent 的上下文之外,把子任务扇出给 coding-agent CLI (Codex、Claude Code、Gemini、Qwen、Kimi 或自定义),后台跑完后只取回最终结果。

    104 GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check passed
  • Ultra Mode

    xz1220/open-dynamic-workflows

    执行被显式授权的 Ultracode / Ultra Mode 请求:在用户给定范围内,把优化目标设为尽可能 详尽和正确,使用当前环境提供的任何独立工作机制(ODW workflow、子智能体、派发 worker、 并行工具任务)进行覆盖、验证和综合;只有完全没有这类机制时才使用串行多趟退化方案。

    104 GitHub stars~832 tokensUpdated 1 mo ago
    Auto-check passed

Categories

Questions about Open Dynamic Workflows

What does Open Dynamic Workflows do?

Write and run dynamic workflows: short JavaScript scripts in Claude Code's workflow dialect, run with the odw CLI outside the host agent's context, fanning subtasks out to coding-agent CLIs (Codex…. Open Dynamic Workflows is an agent skill from xz1220/open-dynamic-workflows. Write and run dynamic workflows: short JavaScript scripts in Claude Code's workflow dialect, run with the odw CLI outside the host agent's context, fanning subtasks out to coding-agent CLIs (Codex, Claude Code, Gemini, Qwen, Kimi, or your own) in a background process and handing back only the final result.

When should I use Open Dynamic Workflows?

Open Dynamic Workflows fits situations like: A task is bigger than a single call — parallel draft fan-out; multi-stage review pipelines; adversarial verification of findings; discovery loops that run until nothing new turns up —.

How do I install Open Dynamic Workflows in Claude Code?

Run `npx skills add xz1220/open-dynamic-workflows --skill open-dynamic-workflows -a claude-code`. Or copy the skill folder (skills/open-dynamic-workflows in xz1220/open-dynamic-workflows) into .claude/skills/open-dynamic-workflows in your project. Claude Code loads it when a task matches its description.

How do I install Open Dynamic Workflows in Codex?

Run `npx skills add xz1220/open-dynamic-workflows --skill open-dynamic-workflows -a codex`. Or copy the skill folder (skills/open-dynamic-workflows in xz1220/open-dynamic-workflows) into .agents/skills/open-dynamic-workflows in your project. Codex loads it when a task matches its description.

Can I use Open Dynamic Workflows in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add xz1220/open-dynamic-workflows --skill open-dynamic-workflows -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/open-dynamic-workflows, .gemini/skills/open-dynamic-workflows, .github/skills/open-dynamic-workflows and .opencode/skills/open-dynamic-workflows in your project.

What does Open Dynamic Workflows need to run?

SKILL.md names no scripts, command-line tools or credentials: Open Dynamic Workflows is instructions for the agent only.

Does Open Dynamic Workflows access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Open Dynamic Workflows safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Open Dynamic Workflows use?

Open Dynamic Workflows is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Open Dynamic Workflows use?

About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.9k tokens, read only when the agent opens those files.

What are the alternatives to Open Dynamic Workflows?

Skills that share tags, products or a category with Open Dynamic Workflows: Orchestrator Lanes (VKirill/claude-lane-stack, 122 stars), LLM Council on Fireworks AI (dair-ai/dair-academy-plugins, 614 stars), Kimi Code Delegation (CherryHQ/cherry-studio, 52k stars) and MemPalace Task Handoff (MemPalace/mempalace, 59k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Open Dynamic Workflows?

xz1220 (a GitHub user) maintains it in xz1220/open-dynamic-workflows, which has 104 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on September 7, 2026.

Source: xz1220/open-dynamic-workflows on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.