Claude-skill-registry linear-pm
Linear project management - issues, projects, cycles, and roadmaps. Use for Linear-related tasks like managing issues, tracking sprints, and organizing projects.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/linear-pm" ~/.claude/skills/majiayu000-claude-skill-registry-linear-pm && rm -rf "$T"
skills/data/linear-pm/SKILL.mdMode: Cognitive/Prompt-Driven — No standalone utility script; use via agent context.
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
environment variable setLINEAR_API_KEY- Internet connectivity for Linear API access
Toolsets
The skill provides 18+ tools across 5 toolsets:
| Toolset | Description |
|---|---|
| Issue creation, updates, comments, state changes |
| Project management and issue association |
| Sprint/cycle management and planning |
| Team structure and member management |
| 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 with filters (state, assignee, label) | No |
| Get detailed issue information | No |
| Create new issue with title, description, team | Yes |
| Update issue fields (state, assignee, priority) | Yes |
| Add comment to an issue | Yes |
| Search issues by text query | No |
| Assign issue to team member | Yes |
| Set issue priority (urgent, high, medium, low) | Yes |
| Add label to issue | Yes |
Project Operations
| Tool | Description | Confirmation |
|---|---|---|
| List all projects for a team | No |
| Get project details and metadata | No |
| Get all issues in a project | No |
| Create new project | Yes |
| Update project details | Yes |
Cycle Operations (Sprints)
| Tool | Description | Confirmation |
|---|---|---|
| List cycles for a team | No |
| Get current active cycle | No |
| Get issues in a specific cycle | No |
| Get cycle completion metrics | No |
Team Operations
| Tool | Description | Confirmation |
|---|---|---|
| List all teams in workspace | No |
| Get team details | No |
| List team members | No |
Label & State Operations
| Tool | Description | Confirmation |
|---|---|---|
| List all labels for a team | No |
| List workflow states (backlog, todo, in progress, done) | No |
| 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:
: Filter by workflow state (e.g., "In Progress", "Done")state
: Filter by assigned user IDassignee
: Filter by priority (0=none, 1=urgent, 2=high, 3=medium, 4=low)priority
: Filter by label namelabel
: Filter by team IDteam
Project Filters:
: Filter by project state (planned, started, paused, completed)state
: Filter by project lead user IDlead
Cycle Filters:
: Get only active cyclesisActive
: Filter by team IDteam
Security
API Key Protection:
- Never expose
in logs or outputLINEAR_API_KEY - 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
is set correctlyLINEAR_API_KEYecho $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:
- Product management and backlog prioritizationpm
- Issue analysis and sprint planninganalyst
Secondary Agents:
- Issue implementation and status updatesdeveloper
- Technical issue decompositionarchitect
- Issue testing and validationqa
Common Workflows
Sprint Planning
- Get current sprintcurrent-cycle
- Get backlog itemslist-issues --state "Backlog"
- Assign issues to sprintupdate-issue --cycle-id "..."
Issue Triage
- Get unplanned issueslist-issues --state "Backlog"
- Set priorityset-priority --issue-id "..." --priority 2
- Categorizeadd-label --issue-id "..." --label "bug"
Project Tracking
- Get all projectslist-projects --team-id "..."
- Get project issuesproject-issues --project-id "..."
- Check sprint progresscycle-progress --cycle-id "..."
Related
- Official Linear API Documentation: https://developers.linear.app/docs/graphql/working-with-the-graphql-api
- Linear GraphQL Explorer: https://studio.apollographql.com/public/Linear-API/home
- Linear Webhook Documentation: https://developers.linear.app/docs/graphql/webhooks
Memory Protocol (MANDATORY)
Before starting: Read
.claude/context/memory/learnings.md
After completing:
- New pattern ->
.claude/context/memory/learnings.md - Issue found ->
.claude/context/memory/issues.md - Decision made ->
.claude/context/memory/decisions.md
ASSUME INTERRUPTION: If it's not in memory, it didn't happen.