Workflow Steps
Build workflows from actions, sessions, reviews, waits, approvals, outcome routes, and reusable workflows. Choose Valdr Tools, Git, GitHub, or Command for the action you need.
Shared fields
Every step uses the same outer fields, plus configuration for its selected kind:
| Field | Required | Purpose |
|---|---|---|
key | Yes | Unique name used by dependencies and expressions |
name | Yes | Human-readable label shown in Valdr UI |
kind | Yes | Selects the step behavior |
needs | No | Steps that must finish before this step can run |
when | No | Conditions that must pass, otherwise the step is skipped |
inputs | Depends on kind | Values supplied to a tool or child workflow |
outputs | No | Named values made available to later steps |
onFailure | No | Block, fail, or use a supported bounded loop |
Connect steps with expressions
- key: load_task
name: Load Task
kind: tool
tool:
id: pm_task
action: get
inputs:
taskKey: "${workflow.inputs.taskKey}"
outputs:
status: "$.normalized.task.status"
- key: route_task
name: Route Task
kind: condition
needs: [load_task]
checks:
- kind: value_equals
value: "${steps.load_task.outputs.status}"
equals: readyThe producing step declares status; the consuming step names load_task in needs and reads the declared output.
Route with when
when:
- kind: value_equals
value: "${steps.review.outputs.outcome}"
equals: review_approvedAll when checks must pass. A false check skips the step; it does not fail the run.
Handle failure deliberately
onFailure:
action: blockblockstops at a recoverable point.failends the run as failed.loop_backis available only on an Outcome route and must set a maximum number of passes.
Valdr UI shows Retry step only when the current or latest attempt is failed or blocked and its error category is safe to repeat. Authored retry.maxAttempts is a reported attempt count; it neither caps manual recovery nor schedules automatic retries or backoff.
Validate before running
The Workflow Builder validates supported fields continuously and offers action-specific inputs and outputs. Diagnostics link back to the affected step or field. For YAML definitions, pm_workflow validate applies strict validation automatically:
pm_workflow { action: "validate", definitionYaml: "..." }Next step
Start with Valdr Tools for the action-based MCP surface, use Git for repository operations, GitHub for pull-request publication, Command for a trusted shell command, or choose another step above.