A chain is When an event happens → Then wait, notify, act on GitHub, or run a report. One grammar powers live cards, Review SLA, weekly digest, personal digest, production changelog, and the optional templates in the kind catalog. We will not add a second scheduler “for compliance.”
A report is a saved query with a run history. The chain is the only thing that decides when it runs and where the result goes. See Reports.
Authoring shape
- Pick an opinionated kind.
- Choose the supported event and conditions.
- Set repository, team, path, or space scope where the kind allows it.
- Configure waits and Then steps.
- Review the exact definition before saving.
Then destinations can include a Slack channel, Slack Messages role, email, or Linear comment where that kind and integration support it. GitHub-writing steps can request/reroute review, label, comment, or set a check.
Scope
Chains can be repository-scoped, team-scoped, path-scoped, or space-scoped where the event supports that boundary. scheduled_report is space-scoped; personal_digest is member-owned and hidden from the normal Chains list.
Delivery
| Kind | ID | When | Then (typical) |
|---|---|---|---|
| PR Slack live card | pull_request_slack_live_card | PR opened / updated | One channel message, updated in place |
| Review SLA | pull_request_review_sla | Review requested | Reviewer DM after delay, then owner DM |
| Production changelog | production_rollout_changelog | Deployment succeeded in production/prod | Wait briefly for associated PRs; announce what shipped |
| Scheduled report | scheduled_report | Cron you set | Weekly digest (or any saved report) to Slack |
| Personal digest | personal_digest | Person’s weekday local time | Private snapshot of Overview › Needs attention › For me |
The kinds catalog lists the rest (stale PR, failed workflow, bot approval, deployment review, and more). Most are available in the create flow today; later is first-enablement guidance, not product unavailability. Do not enable a default block_merge or fail_check step at first unless you ask for a gate.
Propose this when
| Observation | Kind ID |
|---|---|
| Production PRs need a Slack channel of record | pull_request_slack_live_card |
| Requested reviews sitting with no human review | pull_request_review_sla |
Successful GitHub deploys in production/prod | production_rollout_changelog |
| Need a weekly sample | scheduled_report |
| Reviewers miss GitHub noise | personal_digest candidates only |
Enable and pause
Saving produces a draft. Enable promotes the current definition. Pause stops new executions. Delete pauses, finishes in-flight cleanup, and removes authoring state — it does not restore legacy triggers or remove Slack/Linear address rows.
For chains that act on GitHub, enablement requires a reviewed dry-run of the current definition. Notify-only chains do not require that gate. Deployment, workflow, issue, repository, and schedule triggers do not have historical replay.
Dry-run replays supported stored evidence and sends nothing. Enabling starts with new events; it does not backfill historical PRs into Slack.
Inspect what happened
Automations › Activity records real executions, steps, person-delivery status, and terminal outcomes. It is distinct from both historical dry-run and a report’s query run history.