{
  "$schema": "https://promptfoo.tech/schemas/workflow-template.json",
  "name": "n8n: GitHub Issue → Linear Ticket with AI Enrichment",
  "slug": "n8n-github-issue-to-linear",
  "platform": "n8n",
  "category": "n8n",
  "difficulty": "Intermediate",
  "tags": [
    "n8n",
    "github",
    "linear",
    "openai"
  ],
  "summary": "Turn inbound GitHub issues into fully-formed Linear tickets, enriched with priority, team assignment, and a suggested acceptance-criteria list.",
  "overview": "Open-source projects and shared internal repos drown in issues that need triage. This n8n workflow catches every new issue, classifies it, drafts acceptance criteria, and creates a Linear ticket in the right team with the right priority — leaving the human to approve, not to type.",
  "variables": {
    "WEBHOOK_URL": "<your webhook URL>",
    "API_KEY": "<your provider API key>",
    "OPENAI_API_KEY": "sk-...",
    "GITHUB_TOKEN": "ghp_..."
  },
  "steps": [
    {
      "order": 1,
      "name": "Configure the GitHub webhook",
      "description": "Repo settings → Webhooks → issues event. Send to n8n with a signing secret."
    },
    {
      "order": 2,
      "name": "Verify the HMAC signature",
      "description": "Function node validates x-hub-signature-256. Reject on mismatch."
    },
    {
      "order": 3,
      "name": "Classify with a small model",
      "description": "GPT-4o-mini with tool-choice=required and a strict JSON schema (type, area, priority, ac[])."
    },
    {
      "order": 4,
      "name": "Create the Linear issue",
      "description": "GraphQL createIssue mutation. Map area→team via a lookup table stored in n8n static data."
    },
    {
      "order": 5,
      "name": "Comment back on GitHub",
      "description": "'Tracking internally as LIN-1234'. Close-loop transparency for external reporters."
    },
    {
      "order": 6,
      "name": "Audit weekly",
      "description": "Sample 20 tickets, grade classification accuracy. Update the prompt with new areas as products evolve."
    }
  ],
  "howItWorks": [
    "GitHub webhook on issues.opened → n8n.",
    "GPT-4o-mini classifies: bug/feature/question, area, priority.",
    "Prompt generates acceptance criteria if it's a bug or feature.",
    "Linear GraphQL mutation creates the issue in the mapped team with labels.",
    "n8n posts back a comment on the GitHub issue linking the Linear ticket."
  ],
  "benefits": [
    "Every issue lands in Linear the same day, formatted the same way.",
    "Reporter sees an acknowledgement + link within a minute.",
    "Triage meetings shorten by 60%."
  ],
  "useCases": [
    "OSS maintainers with high issue volume.",
    "Internal platform teams whose customers are other engineers.",
    "Product teams using GitHub for public roadmap and Linear internally."
  ],
  "example": "Issue: 'Crash on iPad Safari when uploading > 5MB' → type:bug, area:uploads, priority:high, ac:['Reproduce on iPadOS 17 Safari','Confirm 413 vs client-side crash','Fix + add e2e test'].",
  "faqs": [
    {
      "q": "Why not GitHub Actions?",
      "a": "Actions can do this but n8n's UI + retries + auth management make it faster to maintain when the flow grows tentacles."
    },
    {
      "q": "How do I handle spam?",
      "a": "Add a pre-filter: reject issues from new accounts with < 2 karma unless a maintainer labels them 'valid'."
    },
    {
      "q": "Cost?",
      "a": "About $0.001 per issue on GPT-4o-mini. Free tier of n8n Cloud handles low volume."
    }
  ],
  "source": "https://promptfoo.tech/workflows/n8n-github-issue-to-linear",
  "updated": "2026-06-23",
  "license": "CC-BY-4.0"
}