All skills
n8n-io avatar

/create-issue

@83852f9 official
by n8n - Workflow Automationn8n-io/n8n206k stars
60,960

Create Linear tickets or GitHub issues following n8n conventions. Use when the user asks to create a ticket, file a bug, open an issue, or says /create-issue.

Use this Skill: https://skilld.dev/gh/n8n-io/n8n/create-issue

This session only. Nothing lands on disk.

SKILL.md

β‰ˆ43 tokens always: the name and description. β‰ˆ2.9k when used: this file.

Create Issue

Create a Linear ticket or GitHub issue for: $ARGUMENTS

Write all titles and descriptions in ASD-STE100 Simplified Technical English: use short sentences, the active voice, and one instruction for each sentence.

Determine Target

Decide where the issue should be created based on user input:

  • If the user says "Linear", "ticket", or provides a team key (e.g., AI, NODE, N8N) β†’ Linear
  • If the user says "GitHub", "GH issue", or "open source" β†’ GitHub
  • If ambiguous, ask the user which platform they want

Linear Tickets

Prerequisites

Verify the Linear MCP is connected before proceeding.

Style Guide

Title
  • Sentence case β€” capitalize only the first word (e.g., "Add webhook verification to Trello trigger")
  • Descriptive β€” a reader should understand the scope without opening the ticket
  • 5–15 words β€” long enough to be specific, short enough to scan
  • Imperative mood for features/enhancements β€” "Add ...", "Support ...", "Improve ..."
  • Bug titles β€” prefix with Bug - followed by a description of the symptom (e.g., "Bug - Pin data not updating after workflow edit")
  • No ticket IDs in titles β€” the identifier (AI-1234) is assigned automatically
  • No trailing punctuation
Description

Structure the description using markdown headers. Use the appropriate template:

For bugs:

## Description
[Clear explanation of the problem]

## Expected
[What should happen]

## Actual
[What happens instead]

## Attachments
[Screenshots, videos, or screen recordings that illustrate the problem]

## Steps to reproduce
1. [Step-by-step reproduction]

## Additional context
- n8n version: [version]
- Database: [SQLite/PostgreSQL]
- Hosting: [cloud/self-hosted]

For features / enhancements:

## Goal
[What this adds and why: the user problem it solves]

## Background
[Current state and the gap, plus the technical context needed to plan the work: relevant constraints, prior findings, and links to any related investigation.]

## Scope
[Concrete list of what changes. Name the files or areas to create or modify and any existing pattern to follow.]

## Acceptance criteria
[Testable outcomes, including automated tests.]

## Out of scope
[What this explicitly does not cover]

For tech debt:

## Summary
[What technical improvement is needed]

## Current state
[What the code/system looks like today and why it's problematic]

## Proposed improvement
[What the improved state should look like]

## Motivation
[Why this matters β€” maintainability, performance, developer experience, etc.]

## Scope
[What is included / excluded from this work]

For spikes / investigations:

## Goal
[What question(s) are we trying to answer]

## Context
[Why this investigation is needed now]

## Questions
1. [Specific question to resolve]

## Expected output
[What deliverable is expected: RFC, PoC, decision document, path matrix, etc.]

## Acceptance criteria
[How we know the spike is done: each question answered, deliverable produced]
Attachments (Screenshots / Videos)

If the user provides screenshots, videos, or screen recordings:

  • URLs β€” embed directly in the description using markdown image syntax (![description](url))
  • File paths β€” if the user provides a local file path, ask them to upload it to a hosting service (e.g., GitHub, Imgur) or use the available Linear MCP attachment tool to attach it to the Linear ticket after creation
  • Pasted images in conversation β€” describe what the image shows in the ticket description and note that a screenshot was provided. You cannot upload binary data directly.

Always mention in the description when visual evidence was provided, even if it cannot be directly embedded.

Priority
Value Level When to use
4 Low Nice-to-have, no user impact
3 Normal Default β€” standard planned work
2 High Blocks other work or affects users significantly
1 Urgent Production-breaking, security vulnerability, data loss
0 None Not yet assessed

Guardrails:

  • Default to Normal (3) unless the user explicitly states otherwise
  • Never set Urgent (1) unless the user explicitly says "urgent", "P0", "production down", or "security vulnerability"
  • Never set None (0) β€” always make a priority assessment. If unsure, use Normal (3)
Status

Guardrails:

  • Never create issues in Triage status β€” Triage is for externally-reported issues that enter through automated pipelines (GitHub sync, support escalation). Agent-created tickets have known context and should skip triage
  • Default to Backlog β€” use this when the issue is acknowledged but not yet planned for a sprint
  • Use Todo only when the user indicates the work is planned for the current cycle or should be picked up soon
  • Never set In Progress, Review, or Done at creation time
Team
  • Try to fetch up-to-date team areas of responsibility from Notion using the available Notion MCP search tool (search for "areas of responsibility" or similar). Use the fetched data to determine the best team for the issue.
  • If Notion MCP is unavailable or the lookup fails, fall back to these common teams: Engineering (N8N), AI, NODES, Identity & Access (IAM), Catalysts (CAT), Lifecycle & Governance (LIGO), Cloud Platform, Docs (DOC)
  • Always ask the user which team if not obvious from context or the Notion lookup
  • If the issue is node-specific, it likely belongs to NODES
  • If it involves AI/LangChain nodes, it likely belongs to AI
Labels

Apply labels from these groups as appropriate:

Type (pick one):

  • bug β€” something is broken
  • feature β€” net-new capability
  • enhancement β€” improvement to existing functionality
  • tech debt β€” internal quality improvement
  • spike β€” time-boxed investigation
  • doc β€” documentation-only change

Area (pick if applicable):

  • frontend, backend, performance, testing, infra, DX, Security-Team

Source (pick if applicable):

  • Internal β€” created by team members
  • GitHub β€” originated from a GitHub issue
  • Sentry β€” originated from error monitoring
  • Zammad β€” originated from support

Bucket (pick if applicable):

  • Use the relevant feature-area bucket (e.g., Credentials, Canvas/Node, RBAC, LangChain nodes, Form Trigger, etc.)

Guardrails:

  • Always apply a type label β€” every ticket needs at least a type
  • Do not apply triage-state labels (Triage: Pending, Triage: Complete, etc.) β€” these are managed by triage automation
  • Do not apply release labels (n8n@1.36.0, etc.) β€” these are managed by release automation
  • Do not apply docs-automation labels β€” these are managed by docs automation
Estimates

Only set an estimate if the user provides one or explicitly asks for one. Use t-shirt sizes:

Size Value Approximate effort
XS 1 ≀ 1 hour
S 2 ≀ 1 day
M 3 2–3 days
L 4 3–5 days
XL 5 β‰₯ 6 days

Creating the Ticket

  1. Gather required fields β€” if any are missing, ask the user:

    • Title
    • Team
    • Description (draft one from the user's input using the templates above)
  2. Present a preview before creating β€” show the user:

    • Title
    • Team
    • Status
    • Priority
    • Labels
    • Description (abbreviated if long)
  3. Wait for user confirmation β€” do not create until the user approves

  4. Create the ticket using the available Linear MCP issue-creation tool:

    title: <title>
    team: <team name>
    description: <markdown description>
    priority: <priority number>
    state: <status name>
    labels: [<label names>]
  5. Report back with the issue identifier and URL

Things to Never Do (Linear)

  • Never create issues in Triage status
  • Never set Urgent priority without explicit user instruction
  • Never apply triage-state, release, or docs-automation labels
  • Never set assignee unless the user explicitly asks
  • Never set a cycle or milestone unless the user explicitly asks
  • Never create duplicate issues β€” if the user describes something that sounds like it may exist, search first with the available Linear MCP issue-search tool

GitHub Issues

Prerequisites

Verify gh CLI is authenticated: gh auth status

Important Context

The n8n GitHub issue tracker (n8n-io/n8n) is bug-only. Feature requests and questions are redirected to the community forum. Blank issues are disabled β€” the bug template must be used.

Style Guide

Title
  • Sentence case β€” same as Linear
  • Descriptive of the symptom β€” what is broken, not what you want
  • No prefixes required β€” do not add "Bug:" or "Bug Report:" (the template handles categorization)
  • No trailing punctuation
Body

GitHub issues must follow the bug report template structure:

### Bug Description

[Clear explanation of the bug]

### Steps to Reproduce

1. [Step 1]
2. [Step 2]
3. [Step 3]

### Expected Behavior

[What should happen]

### Debug Info

[If available β€” output from Help > About n8n > Copy debug information]

### Operating System

[e.g., macOS 14.2, Ubuntu 22.04]

### n8n Version

[e.g., 1.72.1]

### Node.js Version

[e.g., 20.11.0]

### Database

SQLite / PostgreSQL

### Execution Mode

main / queue

### Hosting

n8n cloud / self hosted

Guardrails:

  • Always include reproduction steps β€” issues without them get closed as closed:incomplete-template
  • Include debug info if available β€” this is critical for triage
  • Never file feature requests as GitHub issues β€” redirect the user to the community forum or suggest creating a Linear ticket instead
Labels

Do not manually apply labels when creating GitHub issues. The triage automation handles labeling:

  • triage:pending is auto-applied
  • status:in-linear is auto-applied when synced

Creating the Issue

  1. Verify it's a bug β€” if the user describes a feature request, inform them that GitHub issues are bug-only and suggest alternatives (Linear ticket or community forum)

  2. Draft the issue using the template above, filling in fields from the user's input

  3. Present a preview before creating β€” show the user:

    • Title
    • Body (abbreviated if long)
    • Repository (default: n8n-io/n8n)
  4. Wait for user confirmation

  5. Create the issue using gh:

    gh issue create --repo n8n-io/n8n --title "<title>" --body "$(cat <<'EOF'
    <body content>
    EOF
    )"
  6. Report back with the issue number and URL

Things to Never Do (GitHub)

  • Never file feature requests as GitHub issues
  • Never create issues without reproduction steps
  • Never manually apply labels β€” let automation handle it
  • Never create issues in repositories other than n8n-io/n8n unless the user explicitly specifies

Cross-Linking

When both a Linear ticket and GitHub issue exist for the same problem:

  • Linear β†’ GitHub: Add the GitHub issue URL as a link attachment on the Linear ticket
  • GitHub β†’ Linear: Add https://linear.app/n8n/issue/<TICKET-ID> in the GitHub issue body

If the user creates one and mentions the other exists, offer to add the cross-link.

Source: SKILL.md on GitHub

1 warning6mo3 checks Β· Risk MEDIUM
  • Gen Agent Trust Hub6mo

    This skill facilitates the creation of Linear tickets and GitHub issues using established tools like the GitHub CLI and Linear MCP. While it incorporates security best practices such as pre-creation previews and user confirmation, the command template for GitHub issue creation is susceptible to shell command injection if the AI agent does not properly sanitize user-provided titles. The skill also manages untrusted input, creating an indirect prompt injection surface.

  • Socket6mo

    No alerts

  • Snyk6mo

    Risk: LOW Β· No issues

Signed by skilld at 83852f9. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 16 hours ago.

Activeupdated last month
argument-hint
[linear|github] <description of the issue>
Other metadata
compatibility
{
  "requires": [
    {
      "mcp": "linear",
      "description": "Required for creating Linear tickets"
    },
    {
      "cli": "gh",
      "description": "Required for creating GitHub issues. Must be authenticated (gh auth login)"
    }
  ]
}
  • MCP
  • linear
  • github
  • issue-tracking
  • bug-reporting
  • automation
  • n8n

README badge

README badge for n8n-io/n8n/create-issue

Creates Linear tickets or GitHub issues following n8n conventions, choosing the platform based on user input. Requires the Linear MCP for tickets or authenticated gh CLI for GitHub issues, and formats submissions using structured templates for bugs, features, tech debt, and investigations.

Generated from the current SKILL.md.

Does this skill work with both Linear and GitHub?
Yes. It creates Linear tickets or GitHub issues depending on user input. Linear requires the Linear MCP to be connected; GitHub requires the gh CLI to be authenticated.
Can I create feature requests as GitHub issues?
No. The n8n GitHub issue tracker is bug-only. Feature requests should go to the community forum or be created as Linear tickets instead.
What priority should I set if the user doesn't specify one?
Default to Normal (priority 3). Only set Urgent (priority 1) if the user explicitly says so or mentions production downtime or a security vulnerability.
Do I need to apply labels when creating a GitHub issue?
No. GitHub triage automation applies labels automatically. Do not manually set them when creating the issue.
What status should new Linear tickets have?
Use Backlog by default, or Todo if the user indicates the work is planned for the current cycle. Never create tickets in Triage status.

Generated from the current SKILL.md. These answers refresh after source changes.