Skip to content

Steps

Runs a shell command.

- id: test
type: shell
with:
command: cargo test
result: text # none | text | json (default: text)

result controls stdout capture: none discards it, text captures as string, json parses as structured data.

Two actions: review and exec.

Scans diffs and returns review findings.

- id: review
type: codex
with:
action: review
target: uncommitted # uncommitted | base | commit
prompt: Review for bugs.
# target: base → requires base: <branch>
# target: commit → requires commit: <sha>
title: Optional title # review-only
model: model_name # optional
mode: full_auto # default | full_auto

If target is omitted, presence of base infers target: base. commit alone does not infer target — you must set target: commit explicitly.

Review does not support conversation or output_schema. It always returns the built-in structured result below:

result:
findings:
- title: string
body: string
confidence_score: number
priority: integer
code_location:
absolute_file_path: string
line_range:
start: integer
end: integer
overall_correctness: string
overall_explanation: string
overall_confidence_score: number

Generates or modifies code.

- id: implement
type: codex
with:
action: exec
prompt: Add input validation. # required
mode: full_auto # default | full_auto
model: model_name # optional
add_dirs: # optional: additional directories
- ../shared
persist: true # session persistence (default: true)
conversation: # optional: see Conversations
name: planner
scope: workflow
output_schema: # optional: see below
type: object
required: [result]
additionalProperties: false
properties:
result:
type: string

Exec does not support target, base, commit, or title.

Prompts Claude Code. Only action is prompt.

- id: judge
type: claude
with:
action: prompt
prompt: Evaluate this code.
permission_mode: default # default | plan | acceptEdits | dontAsk | bypassPermissions
model: model_name # optional
add_dirs: [] # optional
persist: true # default: true
conversation: # optional
name: reviewer
scope: workflow
output_schema: # optional
type: object
required: [accepted]
additionalProperties: false
properties:
accepted:
type: boolean

Writes content to a file.

- id: save
type: write_file
with:
path: ${{ inputs.output_path }}
content: ${{ steps.draft.result.markdown }}

Available on codex (exec) and claude steps. Must be type: object at the root.

output_schema:
type: object
required: [status, findings]
additionalProperties: false
properties:
status:
type: string
enum: ["pass", "fail"]
findings:
type: array
items:
type: object
required: [description]
properties:
description:
type: string

Result fields are accessed via steps.<id>.result.<field>.

Supported types: string, number, integer, boolean, object, array.