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.00When 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
event | Fires on |
|---|---|
pull_request_open | A pull request is opened or reopened (non-draft). |
pull_request_open_draft | A draft pull request is opened. |
pull_request_merge | A pull request is merged. |
pull_request_close | A pull request is closed. |
pull_request_push | A push to a branch that has an open pull request. |
pull_request_review_submitted | A pull request review is submitted. |
pull_request_comment | A comment is added to a pull request. |
Issue events
event | Fires on |
|---|---|
issue_open | A GitHub issue is opened or reopened. |
issue_close | A GitHub issue is closed. |
issue_comment | A comment is added to a GitHub issue. |
Push events
event | Fires on |
|---|---|
push | A 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
event | Fires on |
|---|---|
linear_issue_open | A Linear issue is created. |
Linear events require the Linear integration and are workspace-wide; they do not take a repository filter.
Slack events
event | Fires on |
|---|---|
slack_channel_created | A 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-apiNext
Answer conversational requests instead of events with mentions, or see how a run executes for what happens after the trigger fires.