Home
cd ../playbooks
Project ManagementAdvanced

Linear Project Automation

Automate Linear issue tracking, cycle planning, roadmap management, and engineering workflows

10 minutes
By communitySource
#linear#issue-tracking#engineering#agile#automation
CLAUDE.md Template

Download this file and place it in your project folder to get started.

# Linear Automation

Comprehensive workflow 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
README.md

What This Does

Comprehensive workflow for automating Linear issue tracking and engineering workflows.


Quick Start

Step 1: Create a Project Folder

mkdir -p ~/Documents/LinearAutomation

Step 2: Download the Template

Click Download above, then:

mv ~/Downloads/CLAUDE.md ~/Documents/LinearAutomation/

Step 3: Start Working

cd ~/Documents/LinearAutomation
claude

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

$Related Playbooks