plugins/lisa-agy/skills/linear-read-issue/SKILL.md
Fetches the full scope of a Linear work item — Issue or Project — including metadata, description, acceptance criteria, all comments, attachments, native relations (blocks/blocked_by/relates_to/duplicates), Project parent (if any) with siblings, and sub-Issues. Produces a consolidated context bundle that downstream agents consume so they never act on a single item in isolation.
npx skillsauth add codyswanngt/lisa linear-read-issueInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fetch the full scope of the item AND its related graph. Downstream agents must never act on an item in isolation — always call this skill first so they see blockers, project siblings, linked PRs, and historical comments.
This skill is the destination of the lisa:tracker-read shim when tracker = "linear". Read-only.
Repository name for scoped comments and logs: basename $(git rev-parse --show-toplevel).
Reads linear.workspace, linear.teamKey from .lisa.config.json (with .local override).
$ARGUMENTS matches <TEAM>-<n> → Issue mode.$ARGUMENTS is a URL containing /project/<slug>-<short-id> → Project mode (extract <short-id>).mcp__linear-server__list_teams({query: <teamKey>}).Call mcp__linear-server__get_issue. Extract and preserve:
Metadata
status:*, component:*, priority:*, prd-*)Body
Comments
Fetch ALL comments via mcp__linear-server__list_comments({issueId: <id>}) in chronological order. Walk thread parents/children — Linear comments are threaded via parentId. Do not truncate. For each comment:
Call mcp__linear-server__get_project with includeMilestones: true, includeResources: true. Extract:
Metadata
Body
mcp__linear-server__list_documents({projectId}) then get_document per result. Treat each as additional spec content.Member Issues
mcp__linear-server__list_issues({project: <id>}) to enumerate the Project's Issues. Capture identifier, title, state, parent Issue (for sub-Issue tree).Linear stores remote URLs as attachments on the Issue. For each:
gh pr view <url> --json title,state,body,mergedAt,reviewDecision,comments,reviews (PRs) or gh api repos/<owner>/<repo>/commits/<sha> (commits). Capture title, state, unresolved review comments, merge status.If gh is not authenticated, note "gh auth required" and continue — do not abort.
Linear native Issue relations are returned in the get_issue response under relations. Group by type:
blocks / blocked_byrelates_toduplicates / duplicated_byFor each related Issue, call mcp__linear-server__get_issue and capture:
blocks or blocked_by)Special handling for blocked_by: fetch full PR details via gh for each blocker's GitHub attachments so the agent knows whether the blocker is actually shipped.
For Project-level relationships (Project ↔ Project), Linear doesn't model native relations — check the Project description and resources for cross-references and capture them as plain links.
If the primary Item is an Issue with a Project parent:
mcp__linear-server__get_project — full description, milestones, labels, lead.mcp__linear-server__list_issues({project: <projectId>}) excluding the primary identifier.Started or In Review with a different assignee, flag it prominently.If the primary Item IS a Project, Phase 5 is the same as fetching all member Issues (already done in Phase 2 Project mode).
If the primary Issue has children (sub-Issues), fetch each via mcp__linear-server__get_issue: identifier, title, state, assignee, description (first paragraph), Acceptance Criteria.
Produce a single structured output the caller can pass verbatim to downstream agents.
# Linear Work Item Context: <IDENTIFIER>
## Primary Item
- Identifier: <ID>
- Type: <Issue | Project>
- State: <state>
- Priority: <0–4 or named>
- Assignee: <name or none>
- Project (parent): <project-slug — name> or none
- Parent Issue: <ID — title> or none (Sub-task only)
- Cycle: <name or none>
- Milestone: <project-milestone or none>
- Labels: <comma-separated>
- Estimate: <points>
### Description
<full description>
### Acceptance Criteria
<criteria>
### Validation Journey
<section or "None">
### Comments (<count>)
<chronological comments, flagged items called out>
### Attachments
<list of URLs with titles>
## Remote Links
### Pull Requests (<count>)
- <url> — <title> — <state> — <reviewDecision>
<body summary + unresolved review comments>
### Confluence
- <title> — <url>
### Other
- <title> — <url>
## Relations
### Blocks (<count>)
<per-issue block>
### Blocked By (<count>)
<per-issue block with PR state>
### Relates To (<count>)
<per-issue block>
### Duplicates / Duplicated By
<per-issue block>
## Project Context (when primary is an Issue under a Project)
### Project <slug> — <name>
- State: <state>
- Description: <full markdown>
- Milestones: <list>
- Documents: <list of doc titles + identifiers>
### Siblings In-Flight (<count>)
- <ID> — <state> — <assignee> — <title> **[FLAG: in progress by other assignee]**
### Other Siblings (<count>)
- <ID> — <state> — <title>
## Sub-Issues (<count>)
- <ID> — <state> — <assignee> — <title>
## Summary for Downstream
- Full item count pulled: <N>
- Blockers still open: <list>
- Related in-flight work: <list>
- Relevant PRs: <list with state>
development
Use Expo DOM components to run web code in a webview on native and as-is on web. Migrate web code to native incrementally.
development
Guidelines for upgrading Expo SDK versions and fixing dependency issues
development
Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (`useLoaderData`).
tools
`@expo/ui/swift-ui` package lets you use SwiftUI Views and modifiers in your app.