Managing Linear Issues

development

Manages Linear issues via MCP. Use when starting work on tickets, updating status, creating issues, or linking PRs. Covers workflow states, issue creation, and the discovered-issues pattern. Related: `contributing` for branch/commit workflow, `configuring-mcps` for MCP setup.

Using Linear

Linear issue tracking for CaseMark projects via the Linear MCP.

SkillUse When
contributingBranch naming, commits, PR workflow
using-vercelLinking deployment URLs to issues
using-neonDatabase issues to track
configuring-mcpsSetting up Linear MCP

Linear MCP Tools

See configuring-mcps for setup. Auth via OAuth (browser popup).

ToolPurpose
linear_get_issueGet issue details
linear_update_issueUpdate status, assignee, labels
linear_create_issueCreate new issues
linear_create_commentAdd comments to issues
linear_list_issuesSearch/filter issues
linear_list_teamsList available teams
linear_list_projectsList projects
linear_list_issue_statusesGet workflow states for a team

Quick Patterns

// Get issue details
linear_get_issue({ id: "CD-123" })

// Update status
linear_update_issue({ id: "CD-123", state: "In Progress" })

// Add comment
linear_create_comment({ issueId: "CD-123", body: "Started work. Creating branch..." })

// Create issue
linear_create_issue({
  title: "Fix auth bug",
  description: "Details...",
  team: "CaseDev",
  labels: ["bug"]
})

// List my in-progress issues
linear_list_issues({ assignee: "me", state: "In Progress" })

Workflow States

StateMeaning
TriageNew, needs review
BacklogApproved, not started
In ProgressActively working
In ReviewPR open, awaiting review
Done/MergedComplete

Starting Work Checklist

Load contributing skill for full git workflow. Quick reference:

Start Work:
- [ ] Get ticket: linear_get_issue({ id: "CD-xxx" })
- [ ] Update status: linear_update_issue({ id: "CD-xxx", state: "In Progress" })
- [ ] Create branch: git checkout -b agent/CD-xxx-slug
- [ ] Make changes, commit with ticket ID
- [ ] See `contributing` skill for PR workflow

Discovered Issues Pattern

When you find an unrelated bug while working:

When to Create Separate Issue

Create a new issue if:

  • Different app/package than current work
  • Conceptually unrelated to ticket scope
  • Would make PR harder to review

When to Fix Inline

Fix directly if:

  • Trivial (<5 lines)
  • Directly related to ticket scope

Creating a Blocking Issue

// 1. Create the blocking issue
linear_create_issue({
  title: "Fix router auth middleware null check",
  description: "Discovered while working on CD-123. The middleware crashes when...",
  team: "CaseDev",
  labels: ["bug"],
  blocks: ["CD-123"]
})

// 2. Document in original issue
linear_create_comment({
  issueId: "CD-123",
  body: "Discovered router bug that blocks this. Created CD-124 to track."
})

Scope Creep Detection

Signs your branch is growing beyond ticket scope:

  • Changes span multiple unrelated areas
  • Fixing "while I'm here" issues
  • Commit messages reference different problems

Action: Stop, propose splitting into focused issues:

linear_create_issue({
  title: "Refactor auth middleware",
  description: "Split from CD-123. Focused on...",
  team: "CaseDev",
  labels: ["refactor"]
})

Linking PRs

After creating a PR (see contributing skill):

linear_update_issue({ id: "CD-123", state: "In Review" })

linear_create_comment({
  issueId: "CD-123",
  body: "PR: https://github.com/CaseMark/repo/pull/456"
})

Stop and Ask

Stop and ask if:

  • Ticket requirements are ambiguous
  • Discovered bug blocks current work
  • Changes growing beyond ticket scope
  • Need to modify shared infrastructure

Proceed if:

  • Ticket is clear and scoped
  • Creating blocking issues for discovered bugs
  • Updating status through normal workflow

Danger Zone