Creating Linear Issues

SkillProductivity

Create a Linear issue from your current coding context with this Linear Claude skill.

Use Creating Linear Issues in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Creating Linear Issues and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Creating Linear Issues skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Creating Linear IssuesStart free
About this skill

Use when creating a Linear issue from the current coding context, or when the user invokes /linear-issue. Infers team, priority, status, and relationships from conversation context, working directory, and git branch.

What this skill tells your AI

The instructions your AI receives, as published by reviewstage/stage-cli in .agents/skills/linear-issue/SKILL.md and read by Ahel’s review.

Single-pass workflow: gather context, search existing issues, infer fields informed by what's already filed, create issue.

Workflow

1. CONTEXT  → Gather signals: args, conversation, directory, git branch
2. SEARCH   → list_issues broadly to find duplicates, related issues, and inform inference
3. TEAMS    → list_teams to get available teams (informed by search results)
4. INFER    → Determine title, description, team, priority, status, labels, project, links, relationships
5. CREATE   → create_issue with inferred fields + relationships
6. REPORT   → Display created issue summary

Step 1: CONTEXT

Gather all available signals:

  • Args: Description provided after /linear-issue — primary signal
  • Conversation: If no args, summarize current discussion as issue description
  • Directory: Current working directory/package (e.g. packages/ai/ suggests AI-related team)
  • Git branch: Branch name often encodes feature/bug context

Step 2: SEARCH

Search existing issues before anything else — what's already filed informs every downstream decision including team selection.

  1. Call list_issues with keywords extracted from the context (args, conversation summary, branch name)
  2. Search broadly across teams — no team filter yet, since search results may reveal the correct team
  3. Collect results into three buckets:
BucketCriteriaUsed for
DuplicatesSame intent and scope as new issueStop and warn user
RelatedSame area, overlapping contextRelationship inference in Step 4
InformativeSame team/area but different scopeTeam/priority/status inference in Step 4

If a strong duplicate is found (same intent and scope): STOP. Do not proceed to Step 4. Report the existing issue:

Possible duplicate found — did not create.
Existing: TEAM-99 "Add retry logic to extraction agent"
Status: In Progress  |  Assignee: @charles
URL: https://linear.app/...

Reply if you still want to create a new issue.

Step 3: TEAMS

Call list_teams → get all workspace teams

Use search results from Step 2 to guide matching — if related issues belong to a specific team, that's strong evidence for the correct team.

Step 4: INFER

Use context from Step 1, search results from Step 2, and team list from Step 3 to determine all fields.

Team

  • Primary signal: which team do related/informative issues belong to?
  • Secondary signal: directory/package name fuzzy-matched against team names from Step 3
  • Fallback: broadest team

Priority

SignalPriority
"ASAP", "urgent", "blocking", "broken", "critical", "P0", "production down"1 (Urgent)
"soon", "important", "next few days", "high priority", "P1"2 (High)
No urgency signal / default3 (Normal)
"low priority", "nice to have", "when we get to it", "P3", "minor"4 (Low)

Also consider: what priority are related issues set to? Match the neighborhood.

Status

SignalStatus
"needs discussion", "RFC", "should we", "not sure if", "explore", "maybe"Backlog
Default / clear actionable taskTodo
"I'm working on", "currently", "in progress", "started"In Progress

Title

Extract or generate a concise title in imperative form, under 80 characters.

Description

Format as markdown. Include:

  • What the issue is about
  • Context: branch name, relevant file/package, conversation summary
  • Any acceptance criteria apparent from context

Labels

Infer labels from context and search results:

  • From description: "bug"/"broken"/"error" → bug label, "feature"/"add"/"new" → feature label, "refactor"/"tech debt"/"cleanup" → tech-debt label
  • From related issues: If related issues share a common label, apply it to the new issue too
  • Call list_issue_labels with the inferred team to verify labels exist before applying. Only use labels that actually exist in the workspace.

Project

  • If related issues from Step 3 belong to a project, add the new issue to the same project
  • If the conversation or args explicitly mention a project name, use that
  • Otherwise, leave unset

Links

Add traceability links back to the development context:

  • If on a branch with an open PR, link to the PR URL
  • If the conversation references a specific file or commit, link to it on GitHub
  • Use links: [{url, title}] format

Relationships

Analyze related issues from Step 3:

Sub-issue (parentId) — New issue is a specific task within a broader existing issue. Example: "fix retry in extraction agent" is a sub-issue of "improve chapter generation reliability"

Parent — New issue encompasses existing smaller issues. After creating, call update_issue on each child to set their parentId.

Blocking / Blocked-by (blocks / blockedBy) — Use when:

  • Explicit dependency language: "this blocks X", "can't do Y until this is done"
  • Technical dependency: "migrate DB schema" blocks "add new column"

Related (relatedTo) — Same area, shared context, but neither blocks the other.

Step 5: CREATE

Call create_issue with:

FieldValue
titleInferred title (imperative, <80 chars)
descriptionMarkdown description with context
teamMatched team name
priorityNumeric: 1=Urgent, 2=High, 3=Normal, 4=Low
stateStatus name: "Backlog", "Todo", "In Progress"
labelsArray of label names inferred from context
projectProject name (if related issues share a project)
linksArray of {url, title} linking to PR/branch/commit
parentIdParent issue identifier (if sub-issue)
blocksArray of issue identifiers this blocks
blockedByArray of issue identifiers blocking this
relatedToArray of related issue identifiers

If this issue is a parent of existing issues, after creation call update_issue on each child to set parentId.

Step 6: REPORT

Created: TEAM-123 "Add retry logic to chapter generation"
Team: Product  |  Priority: Normal  |  Status: Todo
Labels: bug, ai-pipeline  |  Project: Chapter Gen V2
Parent: TEAM-100 "Improve chapter generation reliability"
Related: TEAM-98 "Audit error handling in AI pipeline"
Links: PR #42 "feat: add retry logic"
URL: https://linear.app/...

Common Mistakes

MistakeFix
Inferring fields before searching existing issuesAlways search first — existing issues inform team, priority, and relationships
Creating without checking duplicatesStep 3 catches duplicates before any inference work
Setting priority too high by defaultDefault is Normal (3), only escalate with clear urgency signals
Guessing team instead of looking upAlways call list_teams and match against actual teams
Searching only within one teamSearch broadly first — related issues may be in a different team
Forgetting to set relationshipsCheck related bucket from Step 3 for parent/blocking/related
Using IDs instead of names for statecreate_issue accepts state names directly ("Backlog", "Todo")
Skipping description contextAlways include branch, directory, and conversation context
Creating parent without updating childrenAfter creating a parent issue, call update_issue on children
Applying labels that don't existCall list_issue_labels to verify labels exist before using them
Ignoring project from related issuesIf related issues share a project, add the new issue to it
Not linking back to PR/branchAlways check for an open PR with gh pr view and link it

Signals

GitHub stars
274
Forks
28
Last commit
Sep 2026

Ahel review

  • S4info
    community integration, published by reviewstage, not linear

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Item type
skill
Key
linear-issue
Source
github.com/reviewstage/stage-cli