Skip to content

Steps

Runs a shell command.

- id: test
type: shell
with:
command: npm test
stdout:
mode: text # none | text | json (default: text)

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

Two kinds are supported: turn and review.

Normal Codex turns. Set collaboration_mode: plan to use Codex’s Plan collaboration mode (planning-only, no repo mutations).

- id: implement
type: codex
with:
kind: turn
prompt: Add input validation.
model: gpt-5.4
- id: draft_plan
type: codex
with:
kind: turn
collaboration_mode: plan
prompt: Clarify the scope and produce an implementation plan.
model: gpt-5.4

steps.<id>.result is always the final plain-text response for turns.

Scans diffs and returns review findings.

- id: review
type: codex
with:
kind: review
model: gpt-5.4
target:
type: uncommitted # uncommitted | base | commit

Target variants:

  • type: uncommitted
  • type: base with branch
  • type: commit with sha

Review 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

Runs Claude Code through the local Claude CLI and returns the final plain-text assistant response.

- id: build
type: claude
with:
prompt: Implement the requested change.
model: claude-opus-4-6
effort: high
max_turns: 8
max_thinking_tokens: 12000
permission_mode: accept_edits

Required field:

  • with.prompt

Optional fields:

  • with.model
  • with.effort
  • with.max_turns
  • with.max_thinking_tokens
  • with.permission_mode

Claude YAML stays snake_case and maps directly to Claude Agent SDK options in camelCase. Do not set with.kind, with.mode, or with.action on Claude steps. Claude steps require a locally installed and authenticated Claude Code CLI. Run claude login before use.

Runs OpenCode through the local OpenCode CLI and returns the final plain-text assistant response.

- id: analyze
type: opencode
with:
prompt: Analyze the architecture.
- id: build
type: opencode
with:
prompt: Implement the requested change.
model: anthropic/claude-sonnet-4-20250514
agent: build
variant: high
permission_mode: auto_approve

Required field:

  • with.prompt

Optional fields:

  • with.model
  • with.agent
  • with.variant
  • with.permission_mode

OpenCode uses named agents and defaults with.agent to build. with.model must use provider/model. with.permission_mode supports default and auto_approve. Headless runs reject permission requests by default unless with.permission_mode is auto_approve. OpenCode steps require a local OpenCode CLI installation. Verify with opencode --version.

Runs Cursor Agent through ACP and returns the final plain-text assistant response.

- id: triage
type: cursor
with:
mode: agent # agent | ask | plan (default: agent)
model: composer-2
prompt: Summarize the diff.

cursor is ACP text-only. If you need structured JSON from Cursor, run Cursor headless through a shell step and parse that shell output there.

Writes content to a file.

- id: save
type: write_file
with:
path: ${{ inputs.output_path }}
content: ${{ steps.draft.result }}
  • codex turns: steps.draft.result
  • codex review: steps.review.result.findings
  • claude: steps.build.result
  • opencode: steps.build.result
  • cursor: steps.triage.result