Skip to content

Workflow YAML front matter

Coro workflows are Markdown files with YAML front matter between --- fences. At runtime parseWorkflowConfig() (packages/runner/src/workflow-parser.ts) extracts the YAML; the prose sections become human-readable guidance for operators and model prompts.

Top-level keys

KeyMeaning
display_nameDashboard / documentation label
descriptionShort summary surfaced in tooling
kindTaxonomy hint (job, campaign, internal, …)
initial_phaseFirst phase name executed when a job adopts this workflow
initial_statusRunner job.status seed (defaults derive from YAML or queued)
phasesOrdered list — see below
overridesMap of logical trigger keys (jira, …) → { initial_phase } tweaks

Note: display_name, description, and kind are documentation / dashboard signals; the deterministic phase machine keys off initial_phase, initial_status, and phases.

Phase object

FieldMeaning
nameStable identifier referenced by goto_phase
agentPath to Markdown instructions (agents/foo.md) or null for agent-less phases (coordinating, tracking)
model (optional)Alias key (planning) or concrete provider model string — beats tier resolution
tier (optional)Capability bucket (planning, coding, mini). Parser defaults omitted tiers to planning. Typical bindings: planning → high-capability model, coding → implementation model, mini → lightweight subagents (e.g. inline code review). spec-writing in STANDARD/DEEP uses coding, not mini.
provider (optional)Executor plugin id (anthropic, openai, …)
statusHuman-facing status slug stored on job.status
subagents (optional)Lightweight child conversations (see below)
interactive_checkpointWhen true (and interactive jobs enabled), runner parks until approval before advancing
tools (optional)Explicit allowlist replacing the default union of SDK built-ins + every mcp__coro__* tool

Subagent object

FieldMeaning
nameKey used by run_subagent / native Task dispatch
agentMarkdown path (defaults handled in workflow prose)
model / tier / providerSame resolution semantics as phases but scoped to the subagent
toolsTighter allowlist for the side conversation

Merge + override behaviour

  • Workflow files from repo .coro/ or tenant overlays can replace the base file path-for-path.
  • Trigger-specific overrides let one Markdown serve multiple entry points (CLI vs Jira) without duplicating the entire workflow.