linear
Original:🇺🇸 English
Translated
Use when querying, creating, updating, or managing Linear issues, projects, teams, and initiatives. Auto-invoke when the user mentions Linear tickets, issue tracking, or task management.
2installs
Sourcebuildrtech/dotagents
Added on
NPX Install
npx skill4agent add buildrtech/dotagents linearTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Linear
Overview
Interact with Linear via to manage issues, projects, teams, and initiatives. All commands use syntax. The tool does not support server-side assignee filtering reliably — when filtering by assignee, fetch all issues and pipe through a python script to filter client-side.
mcportermcporter call linear.<tool>list_issuesQuerying Issues
List my issues
The filter and parameter trigger GraphQL errors on the Linear MCP server. Always fetch all issues and filter client-side with :
assigneequeryjq- Check to determine the user's identity
git config user.email - Pipe mcporter output through :
jq
bash
mcporter call linear.list_issues limit:250 --output json | jq -r --arg email "$(git config user.email)" '
.issues | map(select(.assignee == $email)) |
(map(select(.status != "Done"))) as $open |
(map(select(.status == "Done")) | sort_by(.completedAt) | reverse) as $done |
($open[] | " \(.identifier): \(.title) [\(.status // "Unknown")]"),
(if ($done | length) > 0 then "\n--- Done ---" else empty end),
($done[:5][] | " \(.identifier): \(.title)"),
(if ($done | length) > 5 then " + \(($done | length) - 5) more completed issues" else empty end),
"\nTotal: \($open | length) open, \($done | length) done"
'Get a specific issue
bash
mcporter call linear.get_issue id=B-1234Filter by status
bash
mcporter call linear.list_issues state="In Progress" limit:50Filter by team
bash
mcporter call linear.list_issues team=Product limit:50Creating Issues
bash
mcporter call linear.create_issue title="Bug title" team=Product project="Project Name" description="Description here"Do NOT ask the user for extra details. Use what they gave you and fill in sensible defaults:
- — always
teamProduct - — required. If not specified by user, list projects with
projectand pick the most relevant one.mcporter call linear.list_projects - — write one yourself from the context the user provided
description - — default to
priority(Normal) unless the user indicates urgency3 - ,
assignee,state,labels— only include if the user explicitly provides themdueDate
Updating Issues
bash
mcporter call linear.update_issue id=ISSUE_ID state="Done"Use the issue's UUID field (not the identifier like B-1234). Get it from or output first.
idget_issuelist_issuesOther Resources
| Action | Command |
|---|---|
| List teams | |
| Get team details | |
| List projects | |
| Get project | |
| List users | |
| Get current user | |
| List issue statuses | |
| Add comment | |
Displaying Results
When presenting issues to the user, show all non-Done issues but limit Done issues to the 5 most recent (sorted by descending). After the Done list, include a count of how many additional Done issues were omitted (e.g., "+ 12 more completed issues"). This keeps the output scannable without losing important open work.
completedAtCommon Mistakes
- Do not use the parameter on
queryfor assignee filtering — it triggers a GraphQL search that errors out. Use thelist_issuesparameter or fall back to client-sideassigneefiltering.jq - The tool requires the issue's UUID
update_issue, not the human-readable identifier (e.g.,id). Fetch the issue first to get the UUID.B-1234 - When piping mcporter output to for filtering, use
jqto ensure parseable JSON output.--output json - The assignee field in responses may be an email address rather than a display name. Check both when filtering.