workflow-runner
Skill2 starsChanged 2 months agoMITView on GitHub
Execute a workflow.yaml graph — the scheduler protocol: validate the graph, topologically order nodes, execute each node via its skill, carry artifacts, apply gates/branches/loops/skips, persist state to .workflow/state.json, resume from checkpoints, and close with engineering-closeout. Use when a workflow.yaml exists and the user says run/continue/resume the workflow, execute the graph, or start the SOP.
10 other projects use a version of this.
Adopted by
Most recently taken up by
- Leodorareluctant259/superpowers-zhtheir own version, first seen Nov 8, 2026
- rzx007/openharness-tstheir own version, first seen Oct 22, 2026
- rzx007/Vykortheir own version, first seen Oct 22, 2026
- 10CG/aria-plugintheir own version, first seen Oct 20, 2026
- xjxj71/ai-token-usage-statisticstheir own version, first seen Oct 20, 2026
- GEd520/legadostheir own version, first seen Oct 9, 2026
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 10
- jnMetaCode/superpowers-zh★ 8.4ksame name
- shibit-net/xuanji-community★ 90same name
- GEd520/legados★ 75same name
- Leodorareluctant259/superpowers-zh★ 5same name
- rzx007/openharness-ts★ 3same name
- rzx007/Vykor★ 3same name
- Jacobinwwey/notemdpro★ 2same name
- 10CG/aria-plugin★ 1same name
- xjxj71/ai-token-usage-statistics★ 1same name
- sueryue/Claude-Skillls★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository30 other files it gives its agents.
- agents-mdSkill
- agent-workflow-engineeringSkill
- analyze-architectureSkill
- architecture-auditSkill
- ask-mattSkill
- check-readinessSkill
- ci-cd-and-automationSkill
- codebase-contextSkill
- decision-memorySkill
- delegation-protocolSkill
- dependency-analysisSkill
- diagnosing-bugsSkill
- dispatching-parallel-agentsSkill
- documentation-maintenanceSkill
- engineering-closeoutSkill
- environment-discoverySkill
- github-pr-workflowSkill
- implementSkill
- interview-meSkill
- parallel-feature-developmentSkill
- planning-and-task-breakdownSkill
- project-contextSkill
- project-retrospectiveSkill
- release-managementSkill
- requesting-code-reviewSkill
- solution-architectureSkill
- subagent-driven-developmentSkill
- synthesize-project-contextSkill
- task-intakeSkill
- workflow-definitionSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 0 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 27
Run the validator from the workflow-definition skill (from the repository root):
- Very specific: line 37
Read .workflow/state.json if present.
- Very specific: line 46
No state file → initialize: all nodes pending, entry set = nodes with no incoming non-loop edges (plus independent: true nodes).
- Very specific: line 74
When final node passes → run engineering-closeout (the closeout report is the workflow's terminal artifact).
- Very specific: line 75
Verify: every node is passed or skipped (skips must be explainable by skip_when or a branch condition).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Workflow Runner (Graph Execution Protocol)
Companion to
workflow-definition(the graph file + validator). This skill is the scheduler: it consumes the declarative graph and executes it node by node. The graph owns sequencing; skills own content; this protocol owns execution.
Inputs
workflow.yamlat the project root (or explicit path).- Optional: a starting node id (partial run) — otherwise run from the entry set.
- Optional: an argument/parameter to inject as the intake input.
Execution Protocol
Step 0 — Validate
Run the validator from the workflow-definition skill (from the repository root):
python workflow-definition/scripts/validate-workflow.py workflow.yamlGate: invalid graph → STOP. A workflow that fails validation must not run.
Step 1 — Load state
- Read
.workflow/state.jsonif present. Format:{ "workflow": "<name>", "version": "<semver>", "started": "<iso>", "nodes": { "<id>": { "status": "pending|running|passed|skipped|failed|blocked", "at": "<iso>", "artifacts": ["<paths>"], "note": "<text>" } }, "current": ["<ids ready to run>"] } - No state file → initialize: all nodes
pending, entry set = nodes with no incoming non-loop edges (plusindependent: truenodes). - State file exists → resume: continue from
pending/runningnodes. Arunningnode found in state is treated as failed-attempt-1 (rerun once).
Step 2 — Schedule (topological order)
- Compute the order from non-loop edges (Kahn's algorithm).
independent: truenodes have no prerequisites — they can run at any time (audit axis). - Parallelism: any set of ready nodes whose file sets do not overlap may run concurrently via background sub-agents (the parallel-execution mechanism of your harness). Serialize when file sets overlap (measured rule — see
subagent-driven-development).
Step 3 — Execute each node
For each ready node, in order:
- Precondition check — all non-loop in-edges come from
passednodes;skip_whenpredicate evaluated (if true → markskipped, follow the edge labeled for the skip path if declared, else continue downstream as if passed). - Load the node's skill — load the skill by name (e.g.
skill_view(<skill>)in Hermes); the skill's workflow IS the node's execution. - Execute — run the skill's procedure with the node's
inputsartifacts available; produceoutputsartifacts (create parent dirs; paths relative to project root). - Record — update
state.jsonimmediately after the node: status, artifacts, note, timestamp. State is the only memory the scheduler trusts. - Route — after a node passes:
- Gate node (has
on_pass/on_failureedges): evaluate the gate condition (e.g. CI result) → follow the matching edge. Failure → theon_failuretarget becomes ready; the failure is recorded with its evidence. - Router node (≥2 outgoing edges): evaluate the edge labels (conditions) → exactly one edge is taken; record which in the node's note.
- Chain node: follow its single outgoing edge.
- Loop edges (
loop: true) are taken only when the loop condition in the label fires (e.g. integration feedback, re-evaluation) — the target node is re-run (its status resets topending; bound the retry to the label's stated limit or 2 attempts).
- Gate node (has
Step 4 — Failure handling
- Node fails: mark
failed, record evidence. If the node is a gate target with a declared recovery path (its in-edge label states recovery), follow it. Otherwise retry ONCE (same node, note "retry-1"); still failing → markblockedand STOP with a report. Never loop silently.
Step 5 — Completion
- When
finalnode passes → runengineering-closeout(the closeout report is the workflow's terminal artifact). - Verify: every node is
passedorskipped(skips must be explainable byskip_whenor a branch condition); state file showsfinal: passed.
Conventions
- Artifacts: node
outputsland underartifacts/by default (e.g.artifacts/00-requirements.md) unless the graph says otherwise. The runner never fabricates an artifact for a failed node. - Synthesis hubs (nodes consuming many ancestors' outputs): gather all inputs BEFORE starting —
synthesize-project-contextis the reference procedure for the S10-style slot. - Independent axis: audit-style nodes (
independent: true, e.g. S18) run as a background track; their outputs feed the graph at the declared merge point (e.g. S21 → final). - Human checkpoints: a node whose skill requires user decisions (a clarify-style prompt, batch confirm) pauses the runner — state.json marks it
runningwith a note; resume after the user responds. - State is committable:
.workflow/state.jsonmay be committed for auditability; it is the graph's monitoring output (readable by humans and CI).
Anti-Patterns
- Free-form execution — the agent must follow the graph, not its own judgment about what to do next; if the graph is wrong, edit the graph, not the run.
- Skipping validation — an invalid graph produces an unpredictable run.
- Writing state into workflow.yaml — state belongs in state.json.
- Unbounded loops — every
loop: truetraversal needs a bound (label limit or 2-attempt default). - Ignoring branch labels — the condition text on the taken edge is recorded; an untaken edge's label explains why (audit trail).
- Parallel with overlapping files — serialize overlapping file sets (measured: 3 parallel implementers with disjoint sets ran conflict-free; overlap → conflicts).
- Fabricating artifacts — a failed node's outputs do not exist; downstream must block, not imagine them.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

