Agent skill

Workflows

by vellum-ai in vellum-ai/vellum-assistant

Delegate a big or high-stakes job to a fleet of parallel subagents, orchestrated deterministically; runs unattended and reports back

MITAuto-check passed

Install Workflows

skills CLI
$ npx skills add vellum-ai/vellum-assistant --skill workflows -a claude-code

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

GitHub CLI
$ gh skill install vellum-ai/vellum-assistant 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/vellum-ai/vellum-assistant.git skills-src && mkdir -p .claude/skills && cp -r skills-src/assistant/src/config/bundled-skills/workflows .claude/skills/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
workflows
GitHub stars
1.4k
Token cost
~3.2k tokens
SKILL.md length
1,196 words
Files
4
Skills in repo
108
Repo updated
First seen
Licence
MIT

At a glance

Delegate a big or high-stakes job to a fleet of parallel subagents, orchestrated deterministically; runs unattended and reports back

  • SKILL.md covers The script model, Host API, Leaf options (opts for agent /… and Capabilities — the single…, plus 3 more sections
  • Runs TypeScript scripts from its folder

What it does

Workflows is an agent skill from vellum-ai/vellum-assistant. Delegate a big or high-stakes job to a fleet of parallel subagents, orchestrated deterministically; runs unattended and reports back

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files (for example `TOOLS.json`, `tools/manage-workflows.ts` and `tools/run-workflow.ts`). Compatibility notes: Designed for Vellum personal assistants

The repository describes itself as: An AI Assistant that’s easy to setup, does your work 24/7, knows your preferences and gets better over time. The licence is MIT.

Example prompts

  • “/workflows”

Requirements

  • Node.js
  • Compatibility (from SKILL.md): Designed for Vellum personal assistants

What it can do on your machine

Read from SKILL.md and the folder at commit 844117a. 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

    Ships script files (TypeScript), which the agent can run.

    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.

  • Compatibility

    Designed for Vellum personal assistants

    From compatibility in the SKILL.md frontmatter.

Context cost

Workflows loads about 3.2k tokens when it runs. Until then it costs about 36 tokens; SKILL.md has 1,196 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~36
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

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 vellum-ai/vellum-assistant at commit 844117a, republished under its MIT licence (© vellum-ai). 1,196 words, ~3,168 tokens.

Download SKILL.mdSave it as .claude/skills/workflows/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
workflows
description
Delegate a big or high-stakes job to a fleet of parallel subagents, orchestrated deterministically; runs unattended and reports back
compatibility
Designed for Vellum personal assistants
metadata.emoji
⚙️

A workflow is a short JS/TS script you author that runs in a sandbox and fans work out across many short-lived leaf agents, orchestrated deterministically. Launch one with run_workflow (inline script OR saved name, exactly one). It returns a runId immediately; the run is asynchronous and you are notified in this conversation when it completes — do NOT poll.

Reach for one when a job is too big, too parallel, or too important for one inline pass. That is more than batch/map-reduce over many items — it also covers exhaustively sweeping or auditing a large surface, researching across many sources and synthesizing, and generating several independent attempts to judge or adversarially verify before trusting the result. For a single task or a quick lookup, do it inline.

The script model

These are the load-bearing invariants. Get them wrong and the run misbehaves silently.

Scripts are SYNCHRONOUS — never await

Host functions block and return their result directly. Write straight-line code.

js
const r = agent("Summarize this thread."); // r is the result, right here

Do not write await agent(...), and do not make the script async. An async script deadlocks on its second host call — the sandbox can suspend the main evaluation stack but not a promise continuation.

Every script begins with a literal meta

The first statement must be a pure-literal export — no computed values, template strings, or concatenation:

js
export const meta = {
  name: "triage-inbox",
  description: "Triage and label inbox messages",
};

meta is extracted statically, without executing the script, so it must be a plain object literal with string name and description. The name is how a saved workflow is referenced by workflow(name) and the scheduler.

You must return the result

The script body runs as a function. Its result is whatever it returns at the top level — a bare trailing expression (e.g. result;) is discarded and the run finishes with no result. Always return the value you want surfaced.

js
const result = agent(`Write the final summary: ${JSON.stringify(parts)}`);
return result;
Determinism (this is what makes runs resumable)

Every leaf call is journaled by sequence number and input hash, so a resumed run can replay the unchanged prefix instead of re-spawning agents. That only holds if the script is deterministic, so Date.now(), Math.random(), and argless new Date() throw. Pass any timestamps or random seeds in through args.

Host API

All functions are synchronous from the script's perspective.

FunctionReturnsNotes
agent(prompt, opts?)the leaf's resultRuns ONE leaf. Throws on leaf failure (fails the whole run).
leaf(prompt, opts?)a leaf descriptorRuns nothing on its own; used inside parallel/map/pipeline.
parallel(specs)results[]Runs an array of leaf(...) descriptors concurrently, results in input order. A failed leaf becomes null (never throws).
map(items, build)results[]build(item, i) returns a leaf(...) descriptor per item; runs them like parallel.
pipeline(items, ...stages)results[]Each stage(prev, i) returns a leaf(...) descriptor (run an agent) OR a plain value (pass through unchanged — filter/transform locally, no agent spent). Per-stage barrier: stage N+1 starts only after all of stage N finishes.
phase(title)—Marks a named phase for progress reporting.
log(msg)—Emits a progress log line.
usage(){ agentsSpawned, inputTokens, outputTokens }Live snapshot so a script can self-moderate.
workflow(name, args?)the child's resultRuns a SAVED workflow inline, depth 1 only (a child may not call workflow()).
argsthe run inputThe args object passed to run_workflow.

Use agent for a single sequential leaf (throws on failure). Use parallel/map/ pipeline for fan-out (a failed leaf is null, so a batch survives a few bad items).

Leaf options (opts for agent / leaf)

OptionTypeEffect
schemaJSON Schema object literalForces structured output via a tool. A schema leaf runs with no tools — no file_read/file_list/recall/web_search, so it cannot read files or recall memory (pure judge/extractor). Pass anything it must judge inline in the prompt; a schema leaf told to "read these files" answers from the model's prior, not real data. Use a plain JSON Schema literal, not Zod.
labelstringShort display/diagnostic label for the leaf.
profilestringOverrides the model profile. Must exist in llm.profiles or the leaf throws. See Listing profiles.
personabooleantrue makes the leaf speak AS the assistant (identity + memory) — use for output meant to be in the assistant's voice. Default is anonymous — use for impartial judging/extraction.

persona: true is the costly path (it runs the full memory-injection pipeline). Use it only for the few leaves whose output must be in the assistant's voice; keep bulk judging/extraction anonymous.

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

The capabilities argument to run_workflow declares once, up front, what the run's leaves may do. There are no per-call permission prompts inside a running workflow.

jsonc
{
  "tools": ["file_write", "gmail_send"], // side-effecting tools granted to leaves
  "hostFunctions": [],                    // host-function names the run may invoke
  "persona": true                         // grant leaves persona (identity + memory)
}
  • Read-only baseline (available to tool leaves, no declaration, no launch prompt): file_read, file_list, recall, web_search. A schema leaf gets none of these (it runs as a single forced-tool-choice call) — pass it inline content, never tell it to read.
  • web_fetch is NOT in the baseline — an outbound fetch is side-effecting (its URL can exfiltrate read data), so a leaf that must fetch a URL has to declare "web_fetch" in capabilities.tools.
  • Declaring ANY side-effecting tool (writes, sends, shell, web_fetch, …) or host function makes the LAUNCH prompt the user for approval once — that single approval covers the whole run. A read-only run (no declared tools) launches with no prompt. Declare the minimum you need.

Runs are autonomous but BOUNDED by a per-run agent cap — spend is structurally capped and you cannot exceed it.

Listing available profiles

Before choosing a profile for a leaf, look up the valid values rather than guessing — an unknown profile throws.

  • Preferred (model-accessible): call manage_workflows with action list_profiles. It returns the profile names defined in llm.profiles plus the workspace-wide active profile.
  • The same data is served by the daemon route GET config/llm/profiles (operationId llm_profiles_list), which clients use to populate profile dropdowns.

Omit profile to use the default: a persona leaf mirrors the main agent (the active profile floats above the call-site default); an anonymous leaf uses the cost-optimized workflowLeaf default.

Run management

Use manage_workflows to inspect and control runs:

ActionRequiresPurpose
statusrun_idStatus + agent/token counts for one run (NOT the result).
get_resultrun_idThe full result of a finished run.
list_runs—Recent runs, newest first.
abortrun_idSignal an in-flight run to abort.
resumerun_idResume an interrupted run (see below).
list_profiles—List defined profiles + the active profile (for leaf profile).

The completion notification injected when a run finishes carries a truncated preview of the result (large results are cut off). To read the complete result, call manage_workflows with action get_result and the run_id — status deliberately omits the result to stay lightweight.

Crash recovery / resume

Resume is not automatic. If the assistant restarts mid-run, the run is reconciled to status interrupted (the agent/token accounting is preserved so the agent cap still carries across the restart). It sits there until you explicitly resume it by run_id via manage_workflows action resume. Resuming re-invokes the engine with the same runId: the journal replays the completed prefix without re-spawning (or re-paying for) finished leaves, then continues from the first unfinished leaf under the run's originally-declared capabilities. Only interrupted runs are resumable; a completed / failed / aborted run is terminal.

Worked example

Score each inbox item in parallel (anonymous schema leaves), then write one summary in the assistant's voice (a single persona leaf). The item list comes in via args — never fetched inside the script.

js
export const meta = {
  name: "triage-inbox",
  description: "Score and summarize inbox items",
};

phase("score");
const scored = map(args.items, (item) =>
  leaf(`Rate this message's urgency 0-10 with a one-line reason:\n${item.subject}\n${item.body}`, {
    label: `score:${item.id}`,
    schema: {
      type: "object",
      properties: { urgency: { type: "number" }, reason: { type: "string" } },
      required: ["urgency", "reason"],
    },
  }),
);

phase("summarize");
const summary = agent(
  `Here are scored inbox items. Write a short triage summary, highlighting anything urgent:\n${JSON.stringify(scored)}`,
  { persona: true },
);
return summary;

A failed scoring leaf shows up as null in scored; the run continues.

© vellum-ai, 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 3 other files in assistant/src/config/bundled-skills/workflows of vellum-ai/vellum-assistant.

  • SKILL.md
  • TOOLS.json
  • tools/manage-workflows.ts
  • tools/run-workflow.ts

Open the folder on GitHubat commit 844117a

Compare with similar skills

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.

Workflows compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Workflows this skillvellum-ai/vellum-assistant1.4k—~3.2kAutomated safety check: PassMIT
Technical Job Searchgithub/awesome-copilot40k—~1.2kAutomated safety check: PassMIT
Job Application AssistantMadsLorentzen/ai-job-search45k—~1.2kAutomated safety check: NotesMIT
Parallels Discord Roundtripopenclaw/openclaw392k—~788Automated safety check: PassMIT
Python Background Jobswshobson/agents40k—~1.8kAutomated safety check: PassMIT
Openclaw Parallels Smokeopenclaw/openclaw392k—~8.4kAutomated safety check: NotesMIT

Similar skills

  • Technical Job Search

    github/awesome-copilot

    Official

    A skill your agent uses when a software engineer asks for help with job search tasks: parsing or analyzing a job description, tailoring a CV/resume, writing a cover letter, evaluating a job offer…

    40k GitHub stars~1.2k tokensUpdated today
    Business, Finance & HRAuto-check passed
  • Job Application Assistant

    MadsLorentzen/ai-job-search

    Evaluates job postings against your profile, then tailors a LaTeX CV and cover letter and prepares interview answers for the roles you pursue.

    45k GitHub stars~1.2k tokensUpdated today
    Business, Finance & HRAuto-check: notes
  • Run macOS Parallels smoke with Discord send, host verification, host reply, and guest readback proof.

    392k GitHub stars~788 tokensUpdated today
    Auto-check passed
  • Python Background Jobs

    wshobson/agents

    Python background job patterns including task queues, workers, and event-driven architecture.

    40k GitHub stars~1.8k tokensUpdated 4 days ago
    Backend & APIsAuto-check passed
  • Openclaw Parallels Smoke

    openclaw/openclaw

    Prepare, snapshot, run, rerun, debug, or interpret OpenClaw Parallels guest install, onboarding, gateway smoke, and upgrade checks across macOS, Windows, and Linux.

    392k GitHub stars~8.4k tokensUpdated today
    Auto-check: notes
  • Delegate Work

    paperclipai/paperclip

    Delegate user-requested work to an existing Paperclip agent, with a durable task reference and clear execution expectations.

    99k GitHub stars~372 tokensUpdated today
    Auto-check passed

More from vellum-ai/vellum-assistant

All 108 skills in this repo
  • Vellum GitHub App Setup

    vellum-ai/vellum-assistant

    Create and configure a GitHub App so the assistant can push commits, open PRs, and comment under its own bot identity.

    1.4k GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Discord App Setup

    vellum-ai/vellum-assistant

    Connect a Discord bot to the assistant via the Discord Gateway with guided application creation and intent configuration

    1.4k GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Sentry App Setup

    vellum-ai/vellum-assistant

    Create and configure a Sentry internal integration so the assistant can manage issues, alerts, and releases under its own identity

    1.4k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Memory Corpus Ingest

    vellum-ai/vellum-assistant

    Ingest a large dataset into memory as a skimmed map. An agent skill from vellum-ai/vellum-assistant.

    1.4k GitHub stars~3k tokensUpdated today
    Auto-check: notes
  • Plugin Builder

    vellum-ai/vellum-assistant

    A skill your agent uses when the user wants to build, scaffold, ship, or edit a Vellum plugin that bundles multiple surfaces (hooks, tools, skills, and more) into one installable package.

    1.4k GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Slack App Setup

    vellum-ai/vellum-assistant

    Connect a Slack app to the Vellum Assistant via Socket Mode.

    1.4k GitHub stars~2.5k tokensUpdated today
    Auto-check: warnings

Questions about Workflows

What does Workflows do?

Delegate a big or high-stakes job to a fleet of parallel subagents, orchestrated deterministically; runs unattended and reports back. Workflows is an agent skill from vellum-ai/vellum-assistant.

How do I install Workflows in Claude Code?

Run `npx skills add vellum-ai/vellum-assistant --skill workflows -a claude-code`. Or copy the skill folder (assistant/src/config/bundled-skills/workflows in vellum-ai/vellum-assistant) into .claude/skills/workflows in your project. Claude Code loads it when a task matches its description.

How do I install Workflows in Codex?

Run `npx skills add vellum-ai/vellum-assistant --skill workflows -a codex`. Or copy the skill folder (assistant/src/config/bundled-skills/workflows in vellum-ai/vellum-assistant) into .agents/skills/workflows in your project. Codex loads it when a task matches its description.

Can I use 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 vellum-ai/vellum-assistant --skill 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/workflows, .gemini/skills/workflows, .github/skills/workflows and .opencode/skills/workflows in your project.

What does Workflows need to run?

Going by SKILL.md and its folder, Workflows needs TypeScript for the scripts in its folder. Our summary lists: Node.js. Compatibility (from SKILL.md): Designed for Vellum personal assistants.

Does 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 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 Workflows use?

Workflows is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Workflows use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Workflows?

Skills that share tags, products or a category with Workflows: Technical Job Search (github/awesome-copilot, 40k stars), Job Application Assistant (MadsLorentzen/ai-job-search, 45k stars), Parallels Discord Roundtrip (openclaw/openclaw, 392k stars) and Python Background Jobs (wshobson/agents, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Workflows?

vellum-ai (a GitHub organization) maintains it in vellum-ai/vellum-assistant, which has 1,400 GitHub stars. The repository holds 108 skills in this directory. The repository was last updated on October 9, 2026.

Source: vellum-ai/vellum-assistant on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.