wrsmith108/linear-claude-skill
Claude Code skill for managing Linear issues, projects, and teams. MCP tools, SDK automation, GraphQL API patterns.
Deep Analysis
管理Linear问题、项目和团队的综合Claude Code技能,支持MCP工具、SDK自动化和GraphQL API
Core Features
Technical Implementation
- 官方MCP服务器 - 使用Linear官方而非社区服务器
- 三种接入方式 - MCP/SDK/GraphQL按需选择
- MCP可靠性回退 - 超时/失败场景的备用模式
- 子问题支持 - 父子关系管理
- 完整SDK脚本 - linear-ops.ts涵盖常用操作
- Linear问题创建和管理
- 项目和计划管理
- 子问题层级管理
- 状态批量更新
- 代码变更同步到Linear
- 需要Linear API密钥
- 需要Node.js和TypeScript
- MCP服务器配置较复杂
- 部分功能依赖官方MCP
- 文档全英文
Linear Skill for Claude Code
A comprehensive Claude Code skill for managing Linear issues, projects, and teams. Provides patterns for MCP tools, SDK automation, and GraphQL API access.
Features
- First-Time Setup Check — Automatic configuration validation with actionable guidance
- High-Level Operations — Simple commands for initiatives, projects, and status updates
- Sub-Issue Management — Create and manage parent-child issue relationships
- Discovery Before Creation — Mandatory checks to prevent duplicate projects/issues
- MCP Tool Integration — Simple operations via Linear MCP server
- SDK Automation — Complex operations with TypeScript scripts
- GraphQL API — Direct API access for advanced queries
- Project Management — Content, descriptions, milestones, resource links
- Status Management — Project status UUIDs for workflow automation
- MCP Reliability Workarounds — Fallback patterns for timeout/failure scenarios
- Bulk Sync — Synchronize code changes with Linear via CLI, agents, or hooks
Quick Start (New Users)
1. Install the Skill
# Option A: Claude Plugin (Recommended)
claude plugin add github:wrsmith108/linear-claude-skill
# Option B: Manual Installation
git clone https://github.com/wrsmith108/linear-claude-skill ~/.claude/skills/linear
cd ~/.claude/skills/linear && npm install
2. Run Setup Check
npx tsx ~/.claude/skills/linear/skills/linear/scripts/setup.ts
This checks your configuration and tells you exactly what's missing.
3. Get Your API Key (If Needed)
- Open Linear in your browser
- Go to Settings → Security & access → Personal API keys
- Click Create key and copy it (starts with
lin_api_) - Add to your environment:
# Add to shell profile
echo 'export LINEAR_API_KEY="lin_api_your_key_here"' >> ~/.zshrc
source ~/.zshrc
4. Verify It Works
npx tsx ~/.claude/skills/linear/skills/linear/scripts/linear-ops.ts whoami
You should see your name and organization.
5. Start Using It
# Create an initiative
npx tsx scripts/linear-ops.ts create-initiative "My Project"
# Create a project
npx tsx scripts/linear-ops.ts create-project "Phase 1" "My Project"
# Create a sub-issue under a parent
npx tsx scripts/linear-ops.ts create-sub-issue ENG-100 "Add tests" "Unit tests for feature"
# Set parent-child relationships for existing issues
npx tsx scripts/linear-ops.ts set-parent ENG-100 ENG-101 ENG-102
# Update issue status
node scripts/linear-helpers.mjs update-status Done 123 124
# See all commands
npx tsx scripts/linear-ops.ts help
Installation
Option A: Claude Plugin (Recommended)
claude plugin add github:wrsmith108/linear-claude-skill
Option B: Manual Installation
# Clone directly to your skills directory
git clone https://github.com/wrsmith108/linear-claude-skill ~/.claude/skills/linear
cd ~/.claude/skills/linear && npm install
Prerequisites
- Linear API Key — Generate at Linear → Settings → Security & access → Personal API keys
- Linear MCP Server (Recommended) — Use the official Linear MCP server for best reliability:
{
"mcpServers": {
"linear": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.linear.app/sse"],
"env": {
"LINEAR_API_KEY": "your_api_key"
}
}
}
}
Important: Always use Linear's official MCP server at
mcp.linear.app. Do NOT use deprecated community servers likelinear-mcp-server(npm) orjerhadf/linear-mcp-server(GitHub).
Directory Structure
skills/linear/
├── SKILL.md # Main skill instructions
├── api.md # GraphQL API reference
├── sdk.md # SDK automation patterns
├── sync.md # Bulk sync patterns
├── scripts/
│ ├── linear-ops.ts # High-level operations (issues, projects, sub-issues)
│ ├── query.ts # GraphQL query runner
│ ├── setup.ts # Configuration checker
│ └── sync.ts # Bulk sync CLI tool
└── hooks/
└── post-edit.sh # Auto-sync hook
Key Patterns
Discovery Before Creation (Critical!)
ALWAYS check Linear before creating projects or issues. This prevents duplicates:
# Check for existing projects
linear projects list | grep -i "phase\|feature-name"
# Check for existing issues
linear issues list --filter "title:keyword"
See skills/linear/SKILL.md → "Discovery Before Creation" for the full checklist.
Codebase Verification Before Work (Critical!)
ALWAYS verify codebase state before accepting issue scope at face value.
Issue descriptions may be outdated or speculative. APIs or features may already be implemented!
# Before starting "implement API" issues:
ls src/pages/api/admin/members/ # Check if files exist
grep -r "test.skip" tests/ # Check if tests are just skipped
Key Lesson: Issues describing "missing" features may already be implemented. The real work is often un-skipping tests and fixing assertions, not reimplementing.
See skills/linear/SKILL.md → "Codebase Verification Before Work" for the full checklist.
MCP Reliability (Critical!)
The Linear MCP server has known reliability issues (34% timeout rate due to SSE idle timeouts):
| Operation | MCP Reliability | Recommendation |
|---|---|---|
| Create issue | ✅ Reliable | Use MCP |
| Search issues | ⚠️ Times out | Use GraphQL |
| Update status | ⚠️ Unreliable | Use GraphQL |
| Add comment | ❌ Broken | Use GraphQL |
See skills/linear/SKILL.md for GraphQL workaround patterns and root cause explanation.
Content vs Description (Critical!)
Linear has TWO text fields — using the wrong one causes blank displays:
| Field | Limit | Shows In |
|---|---|---|
description |
255 chars | List views, tooltips |
content |
Unlimited | Main detail panel |
Always set BOTH when creating projects.
Project Status UUIDs
Status UUIDs are workspace-specific. Query your workspace:
query { projectStatuses { nodes { id name } } }
Common statuses: Backlog, Planned, In Progress, Completed, Canceled
Sub-Issue Management
Organize issues into parent-child hierarchies for better tracking:
# Create a sub-issue under a parent issue
# Inherits team and project from parent automatically
npx tsx scripts/linear-ops.ts create-sub-issue <parent> <title> [description] [--priority 1-4] [--labels label1,label2]
# Set existing issues as children of a parent
npx tsx scripts/linear-ops.ts set-parent <parent> <child1> <child2> ...
# List all sub-issues of a parent
npx tsx scripts/linear-ops.ts list-sub-issues <parent>
When to use sub-issues:
- Breaking down features into trackable subtasks
- Organizing TDD/E2E test issues under a feature issue
- Sequential phases within a larger initiative
Resource Links
Add clickable links to projects/initiatives:
mutation {
entityExternalLinkCreate(input: {
url: "https://github.com/org/repo/docs/phase-1.md",
label: "Implementation Doc",
projectId: "<uuid>"
}) { success }
}
Project Milestones
Track Definition of Done:
mutation {
projectMilestoneCreate(input: {
projectId: "<uuid>",
name: "DoD: Testing",
description: "Unit tests, E2E tests, 100% coverage"
}) { success }
}
Project Updates (Status Reports)
Post status updates to a project's Updates tab:
# Using SDK script (recommended)
LINEAR_API_KEY=lin_api_xxx npx tsx scripts/create-project-update.ts "Project Name" "## Update\n\nBody" onTrack
Health options: onTrack, atRisk, offTrack
See SKILL.md for full documentation and GraphQL examples.
Usage Examples
Create Issue (MCP)
Create a high priority issue titled "Fix authentication bug" in the ENG team
Update Project Status (GraphQL)
mutation {
projectUpdate(id: "<project-uuid>", input: {
statusId: "<status-uuid>" # Get from projectStatuses query
}) { success }
}
Bulk Operations (SDK)
See skills/linear/sdk.md for TypeScript patterns for loops, filtering, and batch updates.
Bulk Sync (NEW)
Synchronize code changes with Linear issues in bulk:
# Update multiple issues to Done
npx ts-node scripts/sync.ts --issues SMI-432,SMI-433,SMI-434 --state Done
# Update project status after phase completion
npx ts-node scripts/sync.ts --project "Phase 11" --state completed
# Verify sync completed
npx ts-node scripts/sync.ts --verify SMI-432,SMI-433 --expected-state Done
Agent-Spawned Sync
Spawn a parallel agent for autonomous sync via Task tool:
Task({
description: "Sync Phase 11 to Linear",
prompt: "Update SMI-432,433,434 to Done. Update project to completed.",
subagent_type: "general-purpose"
})
Hook-Triggered Sync
Auto-suggest sync after code edits. Add to .claude/settings.json:
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [{
"type": "command",
"command": "bash ~/.claude/skills/linear/hooks/post-edit.sh"
}]
}]
}
}
See skills/linear/sync.md for complete patterns including AgentDB integration.
Contributing
Contributions welcome! Please submit issues and PRs to improve the skill.
License
MIT License — See LICENSE
Credits
Created for the Claude Code community. Patterns developed through real-world project management workflows.
Related Skills
wshobson/agents
wshobsonIntelligent automation and multi-agent orchestration for Claude Code
The most comprehensive Claude Code plugin ecosystem, covering full-stack development scenarios with a three-tier model strategy balancing performance and cost.
ComposioHQ/awesome-claude-skills
ComposioHQA curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows
The most comprehensive Claude Skills resource list; connect-apps is a killer feature.
code-yeongyu/oh-my-opencode
code-yeongyuThe Best Agent Harness. Meet Sisyphus: The Batteries-Included Agent that codes like you.
Powerful multi-agent coding tool, but note OAuth limitations.
nextlevelbuilder/ui-ux-pro-max-skill
nextlevelbuilderAn AI SKILL that provide design intelligence for building professional UI/UX multiple platforms
Essential for designers; comprehensive UI/UX knowledge base.
thedotmack/claude-mem
thedotmackA Claude Code plugin that automatically captures everything Claude does during your coding sessions, compresses it with AI (using Claude's agent-sdk), and injects relevant context back into future sessions.
A practical solution for Claude's memory issues.
OthmanAdi/planning-with-files
OthmanAdiClaude Code skill implementing Manus-style persistent markdown planning — the workflow pattern behind the $2B acquisition.
Context engineering best practices; an open-source implementation of Manus mode.

