Read Linear Work Item: $ARGUMENTS
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).
Configuration
Reads linear.workspace, linear.teamKey from .lisa.config.json (with .local override).
Phase 1 — Resolve Context
- If
$ARGUMENTS matches <TEAM>-<n> → Issue mode.
- If
$ARGUMENTS is a URL containing /project/<slug>-<short-id> → Project mode (extract <short-id>).
- Otherwise stop and report. Do NOT guess.
- Resolve team ID via
lisa-linear-access operation: list-teams({query: <teamKey>}).
Phase 2 — Fetch Primary Item
Issue mode
Call lisa-linear-access operation: get-issue. Extract and preserve:
Metadata
- Identifier, title, issue type (typically a label or workflow state), state, priority (0–4)
- Assignee, creator, subscribers
- Labels (capture full names —
status:*, component:*, priority:*, prd-*)
- Project (parent), parent Issue (if Sub-task), cycle, milestone (ProjectMilestone)
- Estimate, due date
- Created, updated, completed dates
Body
- Full description (preserve markdown)
- Validation Journey section if present (pass verbatim to downstream)
- Attachment URLs (capture, do not download unless needed)
Comments
Fetch ALL comments via lisa-linear-access operation: list-comments({issueId: <id>}) in chronological order. Walk thread parents/children — Linear comments are threaded via parentId. Do not truncate. For each comment:
- Author, timestamp, body
- Flag comments that contain: credentials, reproduction steps, status updates from stakeholders, decisions, or triage headers.
Project mode
Call lisa-linear-access operation: get-project with includeMilestones: true, includeResources: true. Extract:
Metadata
- ID, slug, name, state, priority, lead, color
- Teams, labels, milestones, target date, start date
- Created, updated dates
Body
- Description (markdown)
- Attached documents — call
lisa-linear-access operation: list-documents({projectId}) then lisa-linear-access operation: get-document per result. Treat each as additional spec content.
Member Issues
- Call
lisa-linear-access operation: list-issues({project: <id>}) to enumerate the Project's Issues. Capture identifier, title, state, parent Issue (for sub-Issue tree).
Phase 3 — Fetch Attachments / Remote Links
Linear stores remote URLs as attachments on the Issue. For each:
- GitHub PR or commit: run
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.
- Confluence page: capture title and URL. Do not fetch body unless a downstream task explicitly needs it.
- Dashboard / log link / external URL: capture title and URL only.
If gh is not authenticated, note "gh auth required" and continue — do not abort.
Phase 4 — Fetch Relations
Linear native Issue relations are returned in the get_issue response under relations. Group by type:
blocks / blocked_by
relates_to
duplicates / duplicated_by
For each related Issue, call lisa-linear-access operation: get-issue and capture:
- Identifier, title, state, priority, assignee
- Description (full, unless cancelled — then summary only)
- Acceptance Criteria section
- Last 10 comments (chronological)
- Attachments (URLs only — skip deep PR fetch unless the relation is
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.
Phase 5 — Fetch Project Context
If the primary Item is an Issue with a Project parent:
- Fetch the Project via
lisa-linear-access operation: get-project — full description, milestones, labels, lead.
- Fetch Project documents (Phase 2 procedure).
- Find Project siblings via
lisa-linear-access operation: list-issues({project: <projectId>}) excluding the primary identifier.
- For each sibling, capture: identifier, title, state, priority, assignee, summary (first paragraph of description).
- If a sibling is
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).
Phase 6 — Fetch Sub-Issues
If the primary Issue has children (sub-Issues), fetch each via lisa-linear-access operation: get-issue: identifier, title, state, assignee, description (first paragraph), Acceptance Criteria.
Phase 7 — Assemble Context Bundle
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>
Rules
- Never summarize or truncate the primary item's description or Validation Journey.
- Never skip a relation type, even if it seems unrelated — the downstream agent decides relevance.
- If a related item returns an access error, capture the error and continue. Do not abort the read.
- Flag in-flight sibling work prominently so the caller can avoid duplicate implementation.
- If the Issue has no Project parent, state this explicitly — do not silently skip Phase 5.
- Output is pure context. This skill never modifies the item.
1---2name: lisa-linear-read-issue3description: Fetches the full scope of a…4---56# Read Linear Work Item: $ARGUMENTS78Fetch 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.910This skill is the destination of the `lisa-tracker-read` shim when `tracker = "linear"`. Read-only.1112Repository name for scoped comments and logs: `basename $(git rev-parse --show-toplevel)`.1314## Configuration1516Reads `linear.workspace`, `linear.teamKey` from `.lisa.config.json` (with `.local` override).1718## Phase 1 — Resolve Context19201. If `$ARGUMENTS` matches `<TEAM>-<n>` → Issue mode.212. If `$ARGUMENTS` is a URL containing `/project/<slug>-<short-id>` → Project mode (extract `<short-id>`).223. Otherwise stop and report. Do NOT guess.234. Resolve team ID via `lisa-linear-access operation: list-teams({query: <teamKey>})`.2425## Phase 2 — Fetch Primary Item2627### Issue mode2829Call `lisa-linear-access operation: get-issue`. Extract and preserve:3031**Metadata**32- Identifier, title, issue type (typically a label or workflow state), state, priority (0–4)33- Assignee, creator, subscribers34- Labels (capture full names — `status:*`, `component:*`, `priority:*`, `prd-*`)35- Project (parent), parent Issue (if Sub-task), cycle, milestone (ProjectMilestone)36- Estimate, due date37- Created, updated, completed dates3839**Body**40- Full description (preserve markdown)41- **Validation Journey** section if present (pass verbatim to downstream)42- Attachment URLs (capture, do not download unless needed)4344**Comments**45Fetch ALL comments via `lisa-linear-access operation: list-comments({issueId: <id>})` in chronological order. Walk thread parents/children — Linear comments are threaded via `parentId`. Do not truncate. For each comment:46- Author, timestamp, body47- Flag comments that contain: credentials, reproduction steps, status updates from stakeholders, decisions, or triage headers.4849### Project mode5051Call `lisa-linear-access operation: get-project` with `includeMilestones: true`, `includeResources: true`. Extract:5253**Metadata**54- ID, slug, name, state, priority, lead, color55- Teams, labels, milestones, target date, start date56- Created, updated dates5758**Body**59- Description (markdown)60- Attached documents — call `lisa-linear-access operation: list-documents({projectId})` then `lisa-linear-access operation: get-document` per result. Treat each as additional spec content.6162**Member Issues**63- Call `lisa-linear-access operation: list-issues({project: <id>})` to enumerate the Project's Issues. Capture identifier, title, state, parent Issue (for sub-Issue tree).6465## Phase 3 — Fetch Attachments / Remote Links6667Linear stores remote URLs as attachments on the Issue. For each:6869- **GitHub PR or commit**: run `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.70- **Confluence page**: capture title and URL. Do not fetch body unless a downstream task explicitly needs it.71- **Dashboard / log link / external URL**: capture title and URL only.7273If `gh` is not authenticated, note "gh auth required" and continue — do not abort.7475## Phase 4 — Fetch Relations7677Linear native Issue relations are returned in the `get_issue` response under `relations`. Group by type:7879- `blocks` / `blocked_by`80- `relates_to`81- `duplicates` / `duplicated_by`8283For each related Issue, call `lisa-linear-access operation: get-issue` and capture:84- Identifier, title, state, priority, assignee85- Description (full, unless cancelled — then summary only)86- Acceptance Criteria section87- Last 10 comments (chronological)88- Attachments (URLs only — skip deep PR fetch unless the relation is `blocks` or `blocked_by`)8990**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.9192For 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.9394## Phase 5 — Fetch Project Context9596If the primary Item is an Issue with a Project parent:97981. Fetch the Project via `lisa-linear-access operation: get-project` — full description, milestones, labels, lead.992. Fetch Project documents (Phase 2 procedure).1003. Find Project siblings via `lisa-linear-access operation: list-issues({project: <projectId>})` excluding the primary identifier.1014. For each sibling, capture: identifier, title, state, priority, assignee, summary (first paragraph of description).1025. If a sibling is `Started` or `In Review` with a different assignee, flag it prominently.103104If the primary Item IS a Project, Phase 5 is the same as fetching all member Issues (already done in Phase 2 Project mode).105106## Phase 6 — Fetch Sub-Issues107108If the primary Issue has children (sub-Issues), fetch each via `lisa-linear-access operation: get-issue`: identifier, title, state, assignee, description (first paragraph), Acceptance Criteria.109110## Phase 7 — Assemble Context Bundle111112Produce a single structured output the caller can pass verbatim to downstream agents.113114```text115# Linear Work Item Context: <IDENTIFIER>116117## Primary Item118- Identifier: <ID>119- Type: <Issue | Project>120- State: <state>121- Priority: <0–4 or named>122- Assignee: <name or none>123- Project (parent): <project-slug — name> or none124- Parent Issue: <ID — title> or none (Sub-task only)125- Cycle: <name or none>126- Milestone: <project-milestone or none>127- Labels: <comma-separated>128- Estimate: <points>129130### Description131<full description>132133### Acceptance Criteria134<criteria>135136### Validation Journey137<section or "None">138139### Comments (<count>)140<chronological comments, flagged items called out>141142### Attachments143<list of URLs with titles>144145## Remote Links146### Pull Requests (<count>)147- <url> — <title> — <state> — <reviewDecision>148 <body summary + unresolved review comments>149150### Confluence151- <title> — <url>152153### Other154- <title> — <url>155156## Relations157### Blocks (<count>)158<per-issue block>159160### Blocked By (<count>)161<per-issue block with PR state>162163### Relates To (<count>)164<per-issue block>165166### Duplicates / Duplicated By167<per-issue block>168169## Project Context (when primary is an Issue under a Project)170### Project <slug> — <name>171- State: <state>172- Description: <full markdown>173- Milestones: <list>174- Documents: <list of doc titles + identifiers>175176### Siblings In-Flight (<count>)177- <ID> — <state> — <assignee> — <title> **[FLAG: in progress by other assignee]**178179### Other Siblings (<count>)180- <ID> — <state> — <title>181182## Sub-Issues (<count>)183- <ID> — <state> — <assignee> — <title>184185## Summary for Downstream186- Full item count pulled: <N>187- Blockers still open: <list>188- Related in-flight work: <list>189- Relevant PRs: <list with state>190```191192## Rules193194- Never summarize or truncate the primary item's description or Validation Journey.195- Never skip a relation type, even if it seems unrelated — the downstream agent decides relevance.196- If a related item returns an access error, capture the error and continue. Do not abort the read.197- Flag in-flight sibling work prominently so the caller can avoid duplicate implementation.198- If the Issue has no Project parent, state this explicitly — do not silently skip Phase 5.199- Output is pure context. This skill never modifies the item.