Triage GitHub issues into Linear tickets automatically
When a new GitHub issue is opened, an agent decides if it's a real bug, picks the right Linear team, and files a clean ticket with a back-link.
Build me an agent workflow that triages new GitHub issues into Linear tickets so my engineers only see real bugs in the tool they actually plan work in.
Trigger: a GitHub webhook on the 'issues' event, scoped to action = opened, on the public-facing repo I'll connect. The trigger payload gives the agent the repo owner, repo name, and issue number.
When the trigger fires, the agent should:
1. Call GitHub Get an Issue with the owner, repo, and issue number from the webhook to load the full title, body, labels, and author.
2. Decide whether the issue is a genuine bug. Treat questions, discussions, support requests, and feature requests as out of scope and stop. A genuine bug has reproducible behavior that contradicts documented or expected behavior of shipped features. If unsure, err on the side of skipping.
3. For genuine bugs, classify severity into one of: Urgent (crashes, data loss, security, production outage), High (broken core feature with no workaround), Medium (broken non-core feature or has a workaround), Low (cosmetic, minor).
4. Identify the likely product area from the issue body (for example: web app, API, billing, auth, mobile).
5. Call Linear List Teams to get the workspace teams. Pick the team whose name or key best matches the product area. If nothing matches confidently, default to the team I'll specify when I configure this.
6. Call Linear Create Issue on that team with: a clean, action-oriented title rewritten from the GitHub title; a description that contains a short summary, the extracted repro steps, expected vs. actual behavior, environment details if present, and a back-link to the original GitHub issue URL; a Linear priority that maps from the severity above (Urgent = 1, High = 2, Medium = 3, Low = 4).
7. Call GitHub Create an Issue Comment on the original issue with a short message thanking the reporter and linking to the new Linear ticket URL so they can follow along.
8. Call GitHub Add Labels to an Issue to add a 'triaged' label (I'll create this label in the repo first) so my team can filter triaged vs. untriaged issues in the GitHub UI.
Integrations: GitHub and Linear. Both should be OAuth-connected to my account before this runs.
Edge cases to handle: if the issue body is empty or just a screenshot, skip rather than guess. If Linear List Teams returns no match, fall back to the default team. If any step fails, stop without partial state (don't add the triaged label if the Linear ticket wasn't created).
Additional information
What does this prompt do?
- Listens for new issues opened on a public GitHub repo via webhook and reads the full issue body.
- Classifies each issue as bug, feature request, question, or discussion, and ignores anything that isn't a genuine bug.
- For real bugs, picks the matching Linear team, sets a severity priority, and creates a Linear ticket with extracted repro steps and a link back to GitHub.
- Comments on the original GitHub issue with the Linear ticket link and applies a triaged label so reporters know it's been routed.
What do I need to use this?
- A connected GitHub account with admin or maintainer access to the repo so the agent can read issues, post comments, and add labels.
- A connected Linear account with permission to list teams and create issues in the relevant projects.
- A 'triaged' (or similar) label already created in the GitHub repo so the agent has something to apply.
- A short policy in your own words for what counts as a real bug vs. a question or feature request.
How can I customize it?
- Tighten or loosen the bug definition. Some teams want anything reproducible filed; others only want regressions in shipped features.
- Change the team-routing rule. Route by repo name, by labels on the GitHub issue, or by keywords in the body.
- Adjust severity mapping. Map words like 'crash', 'data loss', or 'security' to Linear priority Urgent and everything else to Medium.
Frequently asked questions
What happens to feature requests and questions?
How does the agent pick the right Linear team?
Will it create duplicate Linear tickets if an issue is edited or reopened?
Does this work on private repos too?
What if our team uses Jira instead of Linear?
Stop hand-copying GitHub issues into Linear.
Connect GitHub and Linear once, and Geni triages every new issue the moment it's opened.