Guides

React to repository events

Start runs on PR, issue, push, Linear, and Slack events.

A react trigger runs an agent when an event happens: a pull request opens, an issue closes, code is pushed, a Linear issue is created, a Slack channel appears. The agent acts on the event itself; there is no typed prompt, just the agent's system plus the event context.

Splitshift's issue implementer starts whenever a Linear issue is created:

ellipsis:
  version: v1
  name: Linear issue implementer
  description: Draft implementation PRs from new Linear issues

claude:
  model: claude-opus-4-8
  system: |
    You implement well-scoped Linear issues.

    Read the issue, inspect the relevant code, and make the smallest
    coherent change. If the issue is missing product or technical
    detail, stop and write the exact questions needed before
    implementation.

triggers:
  - type: react
    events:
      - event: linear_issue_open

sandbox:
  repositories:
    - name: splitshift-web
    - name: splitshift-api

limits:
  run: 2.00
  day: 10.00

When someone files "Trade requests stay pending after the counterparty deactivates", the run opens a pull request against splitshift-api titled "Expire pending trades on account deactivation" with the issue linked, or posts the blocking questions back on the issue when the scope is unclear.

Events

Each entry under events names one event. A config can list any number, across any of the surfaces below.

Pull request events

eventFires on
pull_request_openA pull request is opened or reopened (non-draft).
pull_request_open_draftA draft pull request is opened.
pull_request_mergeA pull request is merged.
pull_request_closeA pull request is closed.
pull_request_pushA push to a branch that has an open pull request.
pull_request_review_submittedA pull request review is submitted.
pull_request_commentA comment is added to a pull request.

Issue events

eventFires on
issue_openA GitHub issue is opened or reopened.
issue_closeA GitHub issue is closed.
issue_commentA comment is added to a GitHub issue.

Push events

eventFires on
pushA push to any branch of a repository.

push also accepts branches: exact branch names, prefixes ending in *, or default for the repository's default branch. An empty list matches every branch. Branch filters are only valid on push.

triggers:
  - type: react
    events:
      - event: push
        branches: ["release/*", "default"]

A push to a branch with an open pull request can fire both push and pull_request_push for configs that declare them, so one webhook can start more than one run.

Linear events

eventFires on
linear_issue_openA Linear issue is created.

Linear events require the Linear integration and are workspace-wide; they do not take a repository filter.

Slack events

eventFires on
slack_channel_createdA public channel is created in your Slack workspace.

The new channel's name, ID, creator, and creation time reach the agent as context. Public channels only; renames and visibility changes do not fire it. A Slack event has no repository of its own, so the run clones whatever the config declares, the same as a cron run.

Scoping to a repository

GitHub events (pull_request_*, issue_*, push) accept a repository field to scope one event to one repository. Omitted, the event applies to every repository the config declares.

triggers:
  - type: react
    events:
      - event: issue_open
        repository: splitshift-api

Next

Answer conversational requests instead of events with mentions, or see how a run executes for what happens after the trigger fires.