# Run Workflow

Orchestrate parallel subagent pipelines from a JavaScript workflow script.

- Repository: https://github.com/ginlix-ai/LangAlpha (2232 stars)
- Category: AI and agents
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add ginlix-ai/LangAlpha --skill run-workflow -g -a claude-code -y`
Codex: `npx skills add ginlix-ai/LangAlpha --skill run-workflow -g -a codex -y`
Cursor: `npx skills add ginlix-ai/LangAlpha --skill run-workflow -g -a cursor -y`
Gemini CLI: `npx skills add ginlix-ai/LangAlpha --skill run-workflow -g -a gemini-cli -y`

## Description

Orchestrate parallel subagent pipelines from a JavaScript workflow script. Fan out work across many items (tickers, filings, findings) then synthesize, or run a saved workflow by name. Unlocks the RunWorkflow tool.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Programmatic Workflows (RunWorkflow)

Use `RunWorkflow` when a deterministic pipeline should orchestrate multiple subagents, fan-out research then synthesize, classify then act per item, generate then verify. Prefer it over issuing many `Task` calls yourself when the dispatches are data-driven (one per ticker, per filing, per finding). Do NOT use it for a single subagent (use `Task`) or for code that dispatches nothing (use `ExecuteCode`).

## The script

You write JavaScript (ES2020). It executes server-side: the script itself cannot touch the workspace filesystem, the subagents it dispatches can. The script must declare a pure object literal first:

```js
export const meta = { name: 'ticker-briefs', description: 'Fan out research, synthesize' }
```

`name` (letters, digits, `-`, `_`) and `description` are required; no variables or function calls inside the literal. The rest of the body is free-form async JS, top-level `await` and `return` both work, and the `return` value (JSON-serializable) becomes the run result. Return a synthesis rather than the raw children: a large result is clipped for display, and a clipped object is unparseable.

## Built-ins

The rest: https://github.com/ginlix-ai/LangAlpha/blob/HEAD/plugins/langalpha_service/skills/run-workflow/SKILL.md
