Linear PM Skill
Overview
This skill provides comprehensive Linear project management capabilities with progressive disclosure for optimal context usage.
Context Savings: ~92% reduction
- Direct API Mode: ~15,000 tokens for full API documentation
- Skill Mode: ~300 tokens metadata + on-demand loading
Requirements
LINEAR_API_KEY environment variable set
- Internet connectivity for Linear API access
Toolsets
The skill provides 18+ tools across 5 toolsets:
| Toolset |
Description |
issues |
Issue creation, updates, comments, state changes |
projects |
Project management and issue association |
cycles |
Sprint/cycle management and planning |
teams |
Team structure and member management |
labels |
Label and workflow state management |
Quick Reference
# List issues
linear-pm list-issues --team-id "TEAM-123" --state "In Progress"
# Get issue details
linear-pm get-issue --issue-id "ISSUE-456"
# Create new issue
linear-pm create-issue --title "Bug fix" --description "Details" --team-id "TEAM-123"
# Update issue
linear-pm update-issue --issue-id "ISSUE-456" --state "Done"
# Add comment
linear-pm add-comment --issue-id "ISSUE-456" --comment "Fixed in PR #123"
# List projects
linear-pm list-projects --team-id "TEAM-123"
# Get current cycle
linear-pm current-cycle --team-id "TEAM-123"
# List cycle issues
linear-pm cycle-issues --cycle-id "CYCLE-789"
Tools by Category
Issue Operations (Confirmation Required for Mutations)
| Tool |
Description |
Confirmation |
list-issues |
List issues with filters (state, assignee, label) |
No |
get-issue |
Get detailed issue information |
No |
create-issue |
Create new issue with title, description, team |
Yes |
update-issue |
Update issue fields (state, assignee, priority) |
Yes |
add-comment |
Add comment to an issue |
Yes |
search-issues |
Search issues by text query |
No |
assign-issue |
Assign issue to team member |
Yes |
set-priority |
Set issue priority (urgent, high, medium, low) |
Yes |
add-label |
Add label to issue |
Yes |
Project Operations
| Tool |
Description |
Confirmation |
list-projects |
List all projects for a team |
No |
get-project |
Get project details and metadata |
No |
project-issues |
Get all issues in a project |
No |
create-project |
Create new project |
Yes |
update-project |
Update project details |
Yes |
Cycle Operations (Sprints)
| Tool |
Description |
Confirmation |
list-cycles |
List cycles for a team |
No |
current-cycle |
Get current active cycle |
No |
cycle-issues |
Get issues in a specific cycle |
No |
cycle-progress |
Get cycle completion metrics |
No |
Team Operations
| Tool |
Description |
Confirmation |
list-teams |
List all teams in workspace |
No |
get-team |
Get team details |
No |
team-members |
List team members |
No |
Label & State Operations
| Tool |
Description |
Confirmation |
list-labels |
List all labels for a team |
No |
list-states |
List workflow states (backlog, todo, in progress, done) |
No |
create-label |
Create new label |
Yes |
Implementation
Tool Execution Pattern
All tools use the Linear GraphQL API with progressive disclosure:
#!/usr/bin/env bash
# Example: list-issues tool
LINEAR_API_KEY="${LINEAR_API_KEY}"
if [[ -z "$LINEAR_API_KEY" ]]; then
echo "Error: LINEAR_API_KEY environment variable not set"
exit 1
fi
QUERY='query {
issues(filter: { state: { name: { eq: "In Progress" } } }) {
nodes {
id
title
state { name }
assignee { name }
priority
createdAt
}
}
}'
curl -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"query\": \"$QUERY\"}"
Common Filters
Issue Filters:
state: Filter by workflow state (e.g., "In Progress", "Done")
assignee: Filter by assigned user ID
priority: Filter by priority (0=none, 1=urgent, 2=high, 3=medium, 4=low)
label: Filter by label name
team: Filter by team ID
Project Filters:
state: Filter by project state (planned, started, paused, completed)
lead: Filter by project lead user ID
Cycle Filters:
isActive: Get only active cycles
team: Filter by team ID
Security
API Key Protection:
- Never expose
LINEAR_API_KEY in logs or output
- API key should have minimal required permissions
- Use read-only API key when possible for queries
Mutation Confirmation:
All tools that modify data require confirmation:
- Issue creation/updates
- Comment additions
- Project modifications
- Label creation
Read-Only Operations (No Confirmation):
- Listing issues, projects, cycles
- Getting details
- Searching
Error Handling
If tool execution fails:
Verify API Key: Check LINEAR_API_KEY is set correctly
echo $LINEAR_API_KEY
Check API Rate Limits: Linear enforces rate limits
- GraphQL: 1500 requests per hour per API key
- REST: 500 requests per hour per API key
Validate Query Syntax: Ensure GraphQL queries are well-formed
Check Team/Issue IDs: Verify IDs exist and are accessible
Agent Integration
Primary Agents:
pm - Product management and backlog prioritization
analyst - Issue analysis and sprint planning
Secondary Agents:
developer - Issue implementation and status updates
architect - Technical issue decomposition
qa - Issue testing and validation
Common Workflows
Sprint Planning
current-cycle - Get current sprint
list-issues --state "Backlog" - Get backlog items
update-issue --cycle-id "..." - Assign issues to sprint
Issue Triage
list-issues --state "Backlog" - Get unplanned issues
set-priority --issue-id "..." --priority 2 - Set priority
add-label --issue-id "..." --label "bug" - Categorize
Project Tracking
list-projects --team-id "..." - Get all projects
project-issues --project-id "..." - Get project issues
cycle-progress --cycle-id "..." - Check sprint progress
Related
1---2name: linear-pm-23description: Linear project management - issues, projects, cycles, and roadmaps. Use for Linear-related tasks like managing issues, tracking sprints, and organizing projects.4---56# Linear PM Skill78## Overview910This skill provides comprehensive Linear project management capabilities with progressive disclosure for optimal context usage.1112**Context Savings**: ~92% reduction1314- **Direct API Mode**: ~15,000 tokens for full API documentation15- **Skill Mode**: ~300 tokens metadata + on-demand loading1617## Requirements1819- `LINEAR_API_KEY` environment variable set20- Internet connectivity for Linear API access2122## Toolsets2324The skill provides 18+ tools across 5 toolsets:2526| Toolset | Description |27| ---------- | ------------------------------------------------ |28| `issues` | Issue creation, updates, comments, state changes |29| `projects` | Project management and issue association |30| `cycles` | Sprint/cycle management and planning |31| `teams` | Team structure and member management |32| `labels` | Label and workflow state management |3334## Quick Reference3536```bash37# List issues38linear-pm list-issues --team-id "TEAM-123" --state "In Progress"3940# Get issue details41linear-pm get-issue --issue-id "ISSUE-456"4243# Create new issue44linear-pm create-issue --title "Bug fix" --description "Details" --team-id "TEAM-123"4546# Update issue47linear-pm update-issue --issue-id "ISSUE-456" --state "Done"4849# Add comment50linear-pm add-comment --issue-id "ISSUE-456" --comment "Fixed in PR #123"5152# List projects53linear-pm list-projects --team-id "TEAM-123"5455# Get current cycle56linear-pm current-cycle --team-id "TEAM-123"5758# List cycle issues59linear-pm cycle-issues --cycle-id "CYCLE-789"60```6162## Tools by Category6364### Issue Operations (Confirmation Required for Mutations)6566| Tool | Description | Confirmation |67| --------------- | ------------------------------------------------- | ------------ |68| `list-issues` | List issues with filters (state, assignee, label) | No |69| `get-issue` | Get detailed issue information | No |70| `create-issue` | Create new issue with title, description, team | Yes |71| `update-issue` | Update issue fields (state, assignee, priority) | Yes |72| `add-comment` | Add comment to an issue | Yes |73| `search-issues` | Search issues by text query | No |74| `assign-issue` | Assign issue to team member | Yes |75| `set-priority` | Set issue priority (urgent, high, medium, low) | Yes |76| `add-label` | Add label to issue | Yes |7778### Project Operations7980| Tool | Description | Confirmation |81| ---------------- | -------------------------------- | ------------ |82| `list-projects` | List all projects for a team | No |83| `get-project` | Get project details and metadata | No |84| `project-issues` | Get all issues in a project | No |85| `create-project` | Create new project | Yes |86| `update-project` | Update project details | Yes |8788### Cycle Operations (Sprints)8990| Tool | Description | Confirmation |91| ---------------- | ------------------------------ | ------------ |92| `list-cycles` | List cycles for a team | No |93| `current-cycle` | Get current active cycle | No |94| `cycle-issues` | Get issues in a specific cycle | No |95| `cycle-progress` | Get cycle completion metrics | No |9697### Team Operations9899| Tool | Description | Confirmation |100| -------------- | --------------------------- | ------------ |101| `list-teams` | List all teams in workspace | No |102| `get-team` | Get team details | No |103| `team-members` | List team members | No |104105### Label & State Operations106107| Tool | Description | Confirmation |108| -------------- | ------------------------------------------------------- | ------------ |109| `list-labels` | List all labels for a team | No |110| `list-states` | List workflow states (backlog, todo, in progress, done) | No |111| `create-label` | Create new label | Yes |112113## Implementation114115### Tool Execution Pattern116117All tools use the Linear GraphQL API with progressive disclosure:118119```bash120#!/usr/bin/env bash121# Example: list-issues tool122123LINEAR_API_KEY="${LINEAR_API_KEY}"124if [[ -z "$LINEAR_API_KEY" ]]; then125 echo "Error: LINEAR_API_KEY environment variable not set"126 exit 1127fi128129QUERY='query {130 issues(filter: { state: { name: { eq: "In Progress" } } }) {131 nodes {132 id133 title134 state { name }135 assignee { name }136 priority137 createdAt138 }139 }140}'141142curl -X POST https://api.linear.app/graphql \143 -H "Authorization: $LINEAR_API_KEY" \144 -H "Content-Type: application/json" \145 -d "{\"query\": \"$QUERY\"}"146```147148### Common Filters149150**Issue Filters**:151152- `state`: Filter by workflow state (e.g., "In Progress", "Done")153- `assignee`: Filter by assigned user ID154- `priority`: Filter by priority (0=none, 1=urgent, 2=high, 3=medium, 4=low)155- `label`: Filter by label name156- `team`: Filter by team ID157158**Project Filters**:159160- `state`: Filter by project state (planned, started, paused, completed)161- `lead`: Filter by project lead user ID162163**Cycle Filters**:164165- `isActive`: Get only active cycles166- `team`: Filter by team ID167168## Security169170**API Key Protection**:171172- Never expose `LINEAR_API_KEY` in logs or output173- API key should have minimal required permissions174- Use read-only API key when possible for queries175176**Mutation Confirmation**:177All tools that modify data require confirmation:178179- Issue creation/updates180- Comment additions181- Project modifications182- Label creation183184**Read-Only Operations** (No Confirmation):185186- Listing issues, projects, cycles187- Getting details188- Searching189190## Error Handling191192If tool execution fails:1931941. **Verify API Key**: Check `LINEAR_API_KEY` is set correctly195196 ```bash197 echo $LINEAR_API_KEY198 ```1992002. **Check API Rate Limits**: Linear enforces rate limits201 - GraphQL: 1500 requests per hour per API key202 - REST: 500 requests per hour per API key2032043. **Validate Query Syntax**: Ensure GraphQL queries are well-formed2052064. **Check Team/Issue IDs**: Verify IDs exist and are accessible207208## Agent Integration209210**Primary Agents**:211212- `pm` - Product management and backlog prioritization213- `analyst` - Issue analysis and sprint planning214215**Secondary Agents**:216217- `developer` - Issue implementation and status updates218- `architect` - Technical issue decomposition219- `qa` - Issue testing and validation220221## Common Workflows222223### Sprint Planning2242251. `current-cycle` - Get current sprint2262. `list-issues --state "Backlog"` - Get backlog items2273. `update-issue --cycle-id "..."` - Assign issues to sprint228229### Issue Triage2302311. `list-issues --state "Backlog"` - Get unplanned issues2322. `set-priority --issue-id "..." --priority 2` - Set priority2333. `add-label --issue-id "..." --label "bug"` - Categorize234235### Project Tracking2362371. `list-projects --team-id "..."` - Get all projects2382. `project-issues --project-id "..."` - Get project issues2393. `cycle-progress --cycle-id "..."` - Check sprint progress240241## Related242243- Official Linear API Documentation: https://developers.linear.app/docs/graphql/working-with-the-graphql-api244- Linear GraphQL Explorer: https://studio.apollographql.com/public/Linear-API/home245- Linear Webhook Documentation: https://developers.linear.app/docs/graphql/webhooks