Examples / Linear issue triage
Linear issue triage
When an issue is created in the ENG team in Linear, your model reads it and decides how urgent it is and which part of the product it touches. Murmurator sets the priority, leaves a triage comment, and pages Slack when it's urgent.
LinearYour AI modelsSlack
What you tell the assistant
Why it works
- The trigger fires on new issues in one team only, and never on the connection's own updates, so setting the priority can't start another run.
- Structured output gives the priority as one of Linear's own values, so it goes straight into update_issue.
- Only urgent issues reach Slack; everything else stays in Linear.
What it builds
Trigger
Linear
llm
Triage the issue
smart · structured
tool
Set the priority
linear.update_issue
tool
Leave a triage note
linear.create_comment
tool
Alert #incidents
slack.post_message
if triage.output.data.priority equals urgent
View the definition
trigger:
kind: linear
connection: linear
events: [Issue]
actions: [create]
teams: [ENG]
steps:
- key: triage
name: Triage the issue
kind: llm
model: smart
system: You triage incoming engineering issues for a B2B billing product. Be decisive and brief.
prompt: |
Triage this new issue. Urgent means customers can't pay, get charged wrongly, or lose data right now.
Title: {{ trigger.data.title }}
Description: {{ trigger.data.description }}
schema:
type: object
properties:
priority: { type: string, enum: [urgent, high, medium, low] }
area: { type: string, enum: [billing, checkout, api, dashboard, infrastructure, other] }
reasoning: { type: string }
required: [priority, area, reasoning]
- key: prioritize
name: Set the priority
kind: tool
tool: linear.update_issue
args:
issue: "{{ trigger.data.identifier }}"
priority: "{{ steps.triage.output.data.priority }}"
- key: comment
name: Leave a triage note
kind: tool
tool: linear.create_comment
args:
issue: "{{ trigger.data.identifier }}"
body: "**Automated triage — {{ steps.triage.output.data.priority }}, {{ steps.triage.output.data.area }}**\n\n{{ steps.triage.output.data.reasoning }}"
- key: page
name: "Alert #incidents"
kind: tool
if: { path: steps.triage.output.data.priority, equals: urgent }
tool: slack.post_message
args:
channel: C03INCIDENTS
text: ":rotating_light: Urgent in Linear: {{ trigger.data.identifier }} {{ trigger.data.title }} {{ trigger.url }}"
A sample run
What each step produces
Triage the issue llm
succeeded
Triage the issue llm
Using model smart (Claude Sonnet 5, Murmurator AI)
{
"text": "",
"data": {
"priority": "urgent",
"area": "checkout",
"reasoning": "EUR card payments are failing at checkout since this morning's deploy, with 14 failures in the last hour. Customers can't pay, so this is urgent. Start with the currency passed to Stripe when the payment intent is created."
}
}
Set the priority tool
succeeded
Set the priority tool
Calling linear.update_issue
{
"id": "7d3e9b2a-1c4f-4e8a-9b6d-2f5a8c1e0d47",
"identifier": "ENG-482",
"title": "Card payments fail with currency mismatch for EUR accounts",
"priorityLabel": "Urgent",
"state": "Triage",
"team": "ENG",
"url": "https://linear.app/northwind/issue/ENG-482/card-payments-fail-with-currency-mismatch"
}
Leave a triage note tool
succeeded
Leave a triage note tool
Calling linear.create_comment
{
"id": "c9b1e4d7-3a2f-4b6c-8e5d-1f7a2c9e4b03",
"url": "https://linear.app/northwind/issue/ENG-482#comment-c9b1e4d7",
"issue": "ENG-482"
}
Alert #incidents tool
succeeded
Alert #incidents tool
Calling slack.post_message
{
"channel": "C03INCIDENTS",
"ts": "1758710520.000400"
}
Trigger payload
{
"type": "Issue",
"action": "create",
"url": "https://linear.app/northwind/issue/ENG-482/card-payments-fail-with-currency-mismatch",
"actor": {
"id": "a1f0c3e2",
"name": "Priya Raman",
"type": "user"
},
"data": {
"id": "7d3e9b2a-1c4f-4e8a-9b6d-2f5a8c1e0d47",
"identifier": "ENG-482",
"title": "Card payments fail with currency mismatch for EUR accounts",
"description": "Since this morning's deploy, EUR customers paying by card get \"currency mismatch\" at checkout. Stripe shows the charge attempted in USD. At least 14 failed payments in the last hour.",
"team": {
"key": "ENG",
"name": "Engineering"
},
"state": {
"name": "Triage",
"type": "triage"
}
}
}
More examples
Your next automation is one sentence away.
14-day free trial with $5 of built-in AI included. Cancel anytime.