Skip to content

Build workflows

The workflow editor is where you describe “what happens when a task is created” without writing code. Open Workflows in the sidebar.

Workflows listWorkflows list

Built-in workflows ship with Sybra. Fork them to customize. Reset them anytime from the list view.

Click any workflow for the editor.

Workflow editorWorkflow editor

Left side: step list. Center: canvas with the DAG. Right: inspector panel for the selected step.

Every workflow starts with one trigger. Click the trigger node to open the inspector.

Trigger panelTrigger panel

Pick an event:

  • task.created — fires when a new task lands on the board
  • task.status_changed — fires on any status transition
  • pr.event — fires on GitHub PR events (opened, updated, closed, labeled)

Add conditions to scope the trigger. Conditions are AND-combined and reference one of the fields below:

FieldUse for
task.idsingle-task targeting
task.titletitle pattern
task.statustasks in a specific status
task.tags”only backend tasks”
task.agent_mode”only headless”
task.project_id”only this repo”
task.branchspecific branch
task.pr_numbertasks with a linked PR
task.reviewedalready-reviewed tasks
pr.issue_kindPR failure class (ci_failure, merge_conflict, …)

Operators: equals, not_equals, contains, not_contains, exists.

From the canvas, click the + on any node to add a downstream step. Pick the step type:

TypeUse when
run_agentDispatch a Claude Code agent
wait_humanPause until you approve/reject
set_statusUnconditionally set the task’s status
conditionBranch the DAG based on state
shellRun a shell command (tests, linters)
ensure_pr_closes_issueRequire Closes #N in PR body
verify_commitsFail if branch has no commits
link_pr_and_reviewOpen PR from branch, attach review workflow
evaluateLLM judge step (for grading agent output)

The most common step. Inspector fields:

FieldDefaultNotes
Role""triage / plan / eval / pr-fix / "" (implementation)
Modeheadlessor interactive
Providerclaude / codex
ModelOverride the default
PromptTemplate; {{ task.body }}, {{ task.title }} interpolate
Allowed tools[]Empty = all with skip-permissions
Needs worktreefalseCreate a worktree before the run
Max retries0Retry on failure
Reuse agentfalseResume the prior session ID

Prompts support {{ }} interpolation:

Implement the task described below.
Task title: {{ task.title }}
Task body: {{ task.body }}
Tags: {{ task.tags | join: ", " }}
Project: {{ task.project_id }}

Missing fields render as empty strings. No exceptions.

wait_human pauses the workflow and surfaces buttons on the task detail page.

type: wait_human
config:
status: plan-review
human_actions: [approve, reject]

status sets the task’s status while waiting. human_actions renders as buttons. Approving completes the step; rejecting fails it.

- id: check-tag
type: condition
config:
branches:
- when: { field: task.tags, operator: contains, value: backend }
next: backend-agent
- when: { field: task.tags, operator: contains, value: frontend }
next: frontend-agent
else: generic-agent

Each branch has a list of conditions (AND). The first matching branch wins. else is the fallback.

Click Start workflow on any task that matches the trigger conditions. Sybra runs the workflow with live step-by-step tracing. The task’s frontmatter gets a workflow: block:

workflow:
execution_id: exec-abc123
status: running
current_step_id: plan

If you forked a built-in workflow and want to revert: open the workflow list, click Reset to built-in on the row. Your version is discarded.

Ship and maintained:

  • simple-task — default general-purpose workflow (triage → plan → implement → PR)
  • testing-task — drives a task through manual testing
  • pr-review — attaches to review-tagged tasks
  • pr-fix — triggered when a linked PR has CI red or a merge conflict

Treat these as examples. Real teams fork them.

When a step fails, the task surfaces the error. Inspect:

  • The agent log (if run_agent)
  • The shell command output (if shell)
  • The condition evaluation (if condition — Sybra shows which branch was chosen and why)

Fix the step and retry from the task detail page.

Every step is a place where something goes wrong. A 12-step workflow has 12 failure modes. Ship 4-step workflows and let the orchestrator handle the rest by conversation.