Linear Automation — Claude Code skill: what it does, how to install
Automates Linear issue tracking, Git branch and PR syncing, and two-week cycle planning through project-mcp tools.
npx skills add claude-office-skills/skills --skill linear-automation -a claude-codeWhat Linear Automation does
This skill coordinates Linear workflows through the project-mcp server. It relies on four specific tools: linear_create_issue, linear_update_issue, linear_search, and linear_cycles. These handle ticket queries and status updates. The agent requires an active project-mcp connection to execute these actions.
The setup provides templates for bug reports, feature requests, and epic breakdown into sub-tasks. Workflow rules tie directly into GitHub events. Creating a branch moves a Linear issue to In Progress and assigns the author. Opening a pull request switches the status to In Review, and merging the PR marks the issue Done. A reminder triggers if an active task lacks a linked PR for 48 hours.
Cycle management runs on a two-week schedule with a 20% buffer. Engineering capacity is budgeted at 8 points per person. Fixed milestones include a feature freeze on day 10, code freeze on day 12, and release on day 14.
What it helps with
- break epics into sub-issues across backend, frontend, and QA
- synchronize Linear issue statuses with GitHub branches and pull requests
- calculate cycle capacity using an 8-point limit and 20% buffer
- generate bug reports and feature requests using predefined templates
Example prompts for the agent
- Create a Linear bug report for auth failure with reproduction steps and logs
- Break down the checkout epic into sub-issues with estimates and labels
- Show current cycle progress, story points, and blocked issues
How to install Linear Automation
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill linear-automation -a claude-code2Manually: put the files in place
~/.claude/skills/linear-automation/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/linear-automation/
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill linear-automation -a codex2Manually: put the files in place
.agents/skills/linear-automation/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill linear-automation -a cursor2Manually: put the files in place
.cursor/skills/linear-automation/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install claude-office-skills/skills linear-automation2Manually: put the files in place
.github/skills/linear-automation/SKILL.md1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill linear-automation -a gemini-cli2Platform CLI
gemini skills install https://github.com/claude-office-skills/skills --path linear-automationManually: put the files in place
.devin/skills/linear-automation/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill linear-automation -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about Linear Automation
How to install Linear Automation in Claude Code?
Run npx skills add claude-office-skills/skills --skill linear-automation -a claude-code. You can also manually place the file at ~/.claude/skills/linear-automation/SKILL.md.
What does Linear Automation do?
It manages issue lifecycles, applies bug and feature templates, links GitHub PRs with Linear tasks, and tracks cycle milestones.
Which MCP tools does this skill require?
It connects to the project-mcp server and uses four tools: linear_create_issue, linear_update_issue, linear_search, and linear_cycles.
Source text
SKILL.md · MIT
---
name: Linear Automation
description: Automate Linear issue tracking, cycle planning, roadmap management, and engineering workflows
version: 1.0.0
author: Claude Office Skills
category: project-management
tags:
- linear
- issue-tracking
- engineering
- agile
- automation
department: engineering
models:
- claude-3-opus
- claude-3-sonnet
- gpt-4
mcp:
server: project-mcp
tools:
- linear_create_issue
- linear_update_issue
- linear_search
- linear_cycles
capabilities:
- Issue creation and management
- Cycle planning
- Roadmap tracking
- GitHub integration
input:
- Issue details
- Cycle configurations
- Project milestones
- Team assignments
output:
- Created/updated issues
- Cycle reports
- Roadmap views
- Velocity metrics
languages:
- en
related_skills:
- jira-automation
- github-integration
- asana-automation
---
# Linear Automation
Comprehensive skill for automating Linear issue tracking and engineering workflows.
## Core Workflows
### 1. Issue Lifecycle
```
LINEAR ISSUE FLOW:
┌─────────────────┐
│ Triage │
│ (Backlog) │
└────────┬────────┘
▼
┌─────────────────┐
│ Todo │
│ (Prioritized) │
└────────┬────────┘
▼
┌─────────────────┐
│ In Progress │
│ (Active) │
└────────┬────────┘
▼
┌─────────────────┐
│ In Review │
│ (PR Created) │
└────────┬────────┘
▼
┌─────────────────┐
│ Done │
│ (Merged) │
└────────┬────────┘
▼
┌─────────────────┐
│ Cancelled │
│ (If needed) │
└─────────────────┘
```
### 2. Automation Triggers
```yaml
automations:
- name: auto_assign_on_start
trigger:
type: status_changed
to: "In Progress"
condition:
assignee: null
action:
set_assignee: "{{trigger_user}}"
- name: add_to_cycle
trigger:
type: issue_created
labels: ["sprint-ready"]
action:
add_to_cycle: current
set_priority: urgent
- name: create_pr_reminder
trigger:
type: status_changed
to: "In Progress"
duration: "48 hours"
condition:
no_linked_pr: true
action:
add_comment: "@{{assignee}} Please link your PR"
- name: close_on_merge
trigger:
type: github_pr_merged
action:
set_status: "Done"
add_comment: "Closed via PR merge"
```
## Issue Templates
### Bug Report
```yaml
bug_template:
title: "[Bug] {{summary}}"
team: "Engineering"
description: |
## Description
{{description}}
## Steps to Reproduce
1. {{step1}}
2. {{step2}}
3. {{step3}}
## Expected Behavior
{{expected}}
## Actual Behavior
{{actual}}
## Environment
- OS: {{os}}
- Browser: {{browser}}
- Version: {{version}}
## Logs/Screenshots
{{attachments}}
labels: ["bug", "needs-triage"]
priority: "{{severity}}"
estimate: null
```
### Feature Request
```yaml
feature_template:
title: "[Feature] {{summary}}"
team: "Product"
description: |
## Overview
{{overview}}
## User Story
As a {{user_type}}, I want to {{action}} so that {{benefit}}.
## Acceptance Criteria
- [ ] {{criteria1}}
- [ ] {{criteria2}}
- [ ] {{criteria3}}
## Design
{{design_link}}
## Technical Considerations
{{tech_notes}}
labels: ["feature", "needs-refinement"]
project: "{{roadmap_project}}"
```
### Sub-Issue Structure
```yaml
epic_breakdown:
parent:
title: "{{epic_name}}"
type: "Project"
sub_issues:
- title: "Design: {{epic_name}}"
labels: ["design"]
estimate: 3
- title: "Backend: {{epic_name}}"
labels: ["backend"]
estimate: 5
- title: "Frontend: {{epic_name}}"
labels: ["frontend"]
estimate: 5
- title: "Testing: {{epic_name}}"
labels: ["qa"]
estimate: 2
- title: "Documentation: {{epic_name}}"
labels: ["docs"]
estimate: 1
```
## Cycle Management
### Cycle Planning
```yaml
cycle_config:
duration: 2_weeks
planning:
capacity_per_engineer: 8 # points
buffer_percentage: 20
milestones:
- day: 1
event: "Cycle Start"
- day: 10
event: "Feature Freeze"
- day: 12
event: "Code Freeze"
- day: 14
event: "Release"
auto_rollover:
enabled: true
statuses: ["Backlog", "Todo"]
exclude_labels: ["blocked"]
```
### Cycle Dashboard
```
CYCLE 24 - WEEK 2/2
═══════════════════════════════════════
Progress:
████████████████░░░░ 78% Complete
Story Points:
Planned: 42
Completed: 33 ████████████████░░░░
Remaining: 9 ████░░░░░░░░░░░░░░░░
BY STATUS:
Done ████████████████ 18
In Review ████░░░░░░░░░░░░ 5
In Progress ██░░░░░░░░░░░░░░ 3
Todo ██░░░░░░░░░░░░░░ 2
TEAM PROGRESS:
Sarah ██████████████░░ 8/10 pts
Mike ████████████████ 12/12 pts
Alex ██████████░░░░░░ 7/10 pts
Lisa ████████████░░░░ 6/10 pts
BLOCKERS:
• LIN-234: Waiting for API access
• LIN-256: Design review pending
```
## GitHub Integration
### Branch & PR Sync
```yaml
github_sync:
branch_format: "{{username}}/lin-{{issue_number}}-{{issue_slug}}"
on_branch_created:
- set_status: "In Progress"
- add_assignee: branch_creator
on_pr_opened:
- set_status: "In Review"
- add_link: pr_url
- add_comment: "PR opened: {{pr_url}}"
on_pr_merged:
- set_status: "Done"
- add_comment: "Merged in {{pr_url}}"
on_pr_closed:
- add_comment: "PR closed without merge"
commit_linking:
patterns:
- "LIN-{{number}}"
- "lin-{{number}}"
- "Fixes LIN-{{number}}"
```
### CI/CD Integration
```yaml
cicd_integration:
on_build_failed:
- add_label: "ci-failed"
- add_comment: |
❌ Build failed
{{build_url}}
on_build_passed:
- remove_label: "ci-failed"
on_deploy_staging:
- add_label: "on-staging"
- add_comment: "Deployed to staging: {{staging_url}}"
on_deploy_production:
- add_label: "released"
- add_comment: "Released to production 🚀"
```
## Labels & Organization
### Label System
```yaml
labels:
type:
- name: "bug"
color: "#eb5757"
- name: "feature"
color: "#5e6ad2"
- name: "improvement"
color: "#26b5ce"
- name: "chore"
color: "#bec2c8"
priority:
- name: "urgent"
color: "#eb5757"
- name: "high"
color: "#f2994a"
- name: "medium"
color: "#f2c94c"
- name: "low"
color: "#bec2c8"
area:
- name: "frontend"
color: "#5e6ad2"
- name: "backend"
color: "#26b5ce"
- name: "infrastructure"
color: "#bb87fc"
- name: "design"
color: "#f7b500"
status:
- name: "blocked"
color: "#eb5757"
- name: "needs-review"
color: "#f2994a"
- name: "ready"
color: "#0e7a42"
```
## Reporting
### Velocity Tracking
```yaml
velocity_report:
metrics:
- completed_points_per_cycle
- issues_closed_per_cycle
- cycle_completion_rate
- carryover_percentage
chart_data:
cycles: last_6
show_trend: true
show_commitment: true
```
### Team Analytics
```
TEAM VELOCITY - LAST 6 CYCLES
═══════════════════════════════════════
│ 50 ┤
│ │ ▓▓
│ 40 ┤ ▓▓ ▓▓ ▓▓ ▓▓
│ │ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓
│ 30 ┤ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓
│ │ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓
│ 20 ┤ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓
│ │ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓
│ 10 ┤ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓
│ │ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓
│ 0 ┴─────────────────────────
C19 C20 C21 C22 C23 C24
Average: 38 pts | Trend: +8%
Completion Rate: 92%
```
## API Examples
### GraphQL Queries
```graphql
# Create Issue
mutation CreateIssue {
issueCreate(input: {
teamId: "team-id"
title: "New Feature Request"
description: "Description here"
priority: 2
labelIds: ["label-id"]
}) {
success
issue {
id
identifier
url
}
}
}
# Update Issue Status
mutation UpdateIssue {
issueUpdate(
id: "issue-id"
input: {
stateId: "state-id"
assigneeId: "user-id"
}
) {
success
}
}
# Query Cycle Issues
query CycleIssues {
cycle(id: "cycle-id") {
name
issues {
nodes {
identifier
title
state {
name
}
assignee {
name
}
estimate
}
}
}
}
```
## Best Practices
1. **Quick Triage**: Process new issues daily
2. **Consistent Estimates**: Use planning poker
3. **Link Everything**: Connect PRs, commits, docs
4. **Use Projects**: Organize related work
5. **Cycle Commitment**: Protect sprint scope
6. **Regular Grooming**: Keep backlog healthy
7. **Automate Status**: Let integrations update
8. **Measure Velocity**: Track team capacity
© Claude Office Skills · MIT · claude-office-skills/skills