We use cookies to enhance your experience on the site
CodeWorlds
Back to collections
Guide34 min read

Linear

Linear is a modern project management tool for software teams with keyboard-first UX and native GitHub integration.

Linear - Kompletny Przewodnik po Nowoczesnym Project Management

Czym jest Linear?

Linear to narzędzie do zarządzania projektami stworzone przez i dla zespołów software. W przeciwieństwie do tradycyjnych narzędzi jak Jira czy Asana, Linear stawia na szybkość, minimalizmem i keyboard-first experience - każda akcja może być wykonana bez dotykania myszki, co sprawia, że praca z narzędziem jest tak naturalna jak kodowanie.

Linear zostaΕ‚ zaΕ‚oΕΌony w 2019 roku przez byΕ‚ych pracownikΓ³w Uber (Karri Saarinen - ex-Head of Design Airbnb i Jori Lallo - ex-engineer Uber). Ich frustracjΔ… byΕ‚o to, ΕΌe narzΔ™dzia do zarzΔ…dzania projektami sΔ… wolniejsze i mniej intuicyjne niΕΌ same narzΔ™dzia developerskie - dlatego stworzyli Linear jako narzΔ™dzie, ktΓ³re jest rΓ³wnie szybkie i przyjemne w uΕΌyciu jak VS Code czy terminal.

Linear jest uΕΌywany przez tysiΔ…ce firm technologicznych, w tym Vercel, Retool, Ramp, Loom, Cash App i wielu innych. StaΕ‚ siΔ™ de facto standardem dla startupΓ³w i nowoczesnych zespoΕ‚Γ³w software.

Dlaczego Linear?

Kluczowe zalety Linear

  1. SzybkoΕ›Δ‡ - Instant load, zero lag, optimistic updates
  2. Keyboard-first - Wszystko przez skrΓ³ty klawiszowe
  3. Beautiful design - Minimalistyczny, estetyczny UI
  4. GitHub native - GΕ‚Δ™boka integracja z kodem
  5. Cycles - Sprints bez zbΔ™dnego boilerplate
  6. Roadmaps - Wizualna timeline projektΓ³w
  7. No-configuration - DziaΕ‚a out-of-the-box
  8. Real-time sync - Natychmiastowa synchronizacja

Linear vs Jira vs Asana vs Notion

CechaLinearJiraAsanaNotion
SzybkoΕ›Δ‡ UI⚑ BΕ‚yskawiczna🐌 Wolna🚢 Średnia🚢 Średnia
Keyboard shortcutsβœ… PeΕ‚ne❌ Ograniczone❌ Ograniczoneβœ… Dobre
GitHub integrationβœ… Nativeβœ… Plugin❌ Webhook❌ Embed
Setup time⚑ Instant🐌 DΕ‚ugi🚢 Średni🚢 Średni
Learning curveβœ… Niska❌ Wysokaβœ… Niska🚢 Średnia
Dla dev teamsβœ… Perfectβœ… Tak❌ OgΓ³lne❌ OgΓ³lne
Free tier250 issuesβœ… Do 10βœ… Limitedβœ… Limited
Cena$10/user$8.15/user$11/user$10/user

Podstawy Linear

Interfejs uΕΌytkownika

Code
TEXT
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Linear                                     πŸ” Cmd+K  [?] [βš™οΈ]  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              β”‚                                                   β”‚
β”‚  πŸ“₯ Inbox    β”‚  Issues                                          β”‚
β”‚  🎯 My Issuesβ”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  πŸ“‹ Backlog  β”‚  β”‚ β—‹ LIN-123  Fix auth redirect bug           β”‚  β”‚
β”‚  ▢️ Active   β”‚  β”‚   πŸ”΄ Urgent Β· @alice Β· Frontend            β”‚  β”‚
β”‚  πŸ“Š Triage   β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”‚
β”‚              β”‚  β”‚ β—‹ LIN-124  Add dark mode toggle            β”‚  β”‚
β”‚  ─────────── β”‚  β”‚   🟑 Medium Β· @bob Β· Design                β”‚  β”‚
β”‚              β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”‚
β”‚  Teams:      β”‚  β”‚ β—‹ LIN-125  Refactor API client             β”‚  β”‚
β”‚  🏠 Product  β”‚  β”‚   🟒 Low Β· Unassigned Β· Backend            β”‚  β”‚
β”‚  βš™οΈ Enginee. β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  🎨 Design   β”‚                                                   β”‚
β”‚              β”‚  [+ New Issue]                                   β”‚
β”‚  ─────────── β”‚                                                   β”‚
β”‚              β”‚  Filters: Status | Priority | Assignee | Label   β”‚
β”‚  πŸ—ΊοΈ Roadmap  β”‚                                                   β”‚
β”‚  πŸ“… Cycles   β”‚                                                   β”‚
β”‚              β”‚                                                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Hierarchia w Linear

Code
TEXT
Workspace (Firma/Organizacja)
β”‚
β”œβ”€β”€ Team: Engineering
β”‚   β”œβ”€β”€ Project: Mobile App v2.0
β”‚   β”‚   β”œβ”€β”€ Issue: LIN-101 Setup React Native
β”‚   β”‚   β”œβ”€β”€ Issue: LIN-102 Navigation system
β”‚   β”‚   └── Issue: LIN-103 API integration
β”‚   β”‚
β”‚   └── Project: Backend Refactor
β”‚       β”œβ”€β”€ Issue: LIN-201 Migrate to NestJS
β”‚       └── Issue: LIN-202 Add caching layer
β”‚
β”œβ”€β”€ Team: Design
β”‚   └── Project: Design System
β”‚       β”œβ”€β”€ Issue: DES-001 Color palette
β”‚       └── Issue: DES-002 Component library
β”‚
└── Team: Product
    └── Project: User Research
        └── Issue: PRD-001 Conduct interviews

Tworzenie issues

Code
TEXT
Szybkie tworzenie (C lub Cmd+I):

Title: Fix login redirect bug
─────────────────────────────────────────
Description (Markdown):

## Problem
Users are redirected to wrong page after login.

## Steps to reproduce
1. Go to /login
2. Enter credentials
3. Click "Sign In"
4. Expected: Dashboard
5. Actual: Landing page

## Technical details
- [ ] Check auth middleware
- [ ] Review redirect logic in AuthContext

─────────────────────────────────────────
Status: πŸ“‹ Backlog
Priority: πŸ”΄ Urgent
Assignee: @alice
Labels: bug, frontend, auth
Project: Authentication Improvements
Cycle: Sprint 24
Estimate: 2 points

Keyboard Shortcuts

Podstawowe skrΓ³ty

Code
TEXT
NAWIGACJA:
G I          - Go to Inbox
G M          - Go to My Issues
G B          - Go to Backlog
G A          - Go to Active
G P          - Go to Projects
G C          - Go to Cycles
G R          - Go to Roadmap
G T          - Go to Team
G S          - Go to Settings

GLOBALNE:
Cmd/Ctrl + K - Command palette (najwaΕΌniejszy!)
/            - Quick search
?            - Show all shortcuts
Escape       - Close/Cancel

TWORZENIE:
C            - Create issue
Shift + C    - Create issue from anywhere
I            - Create sub-issue
P            - Create project

EDYCJA ISSUES:
Space        - Select/Deselect
Enter        - Open issue detail
S            - Change status
A            - Assign
L            - Add label
E            - Edit estimate
D            - Set due date
M            - Move to project
X            - Archive
Delete       - Delete (with confirmation)

NAWIGACJA W LIŚCIE:
J / ↓        - Move down
K / ↑        - Move up
[ / ]        - Previous/Next issue

Zaawansowane skrΓ³ty

Code
TEXT
BULK ACTIONS:
Shift + click    - Select range
Cmd + click      - Multi-select
Cmd + A          - Select all visible
Shift + S        - Change status for selected
Shift + A        - Assign selected
Shift + L        - Label selected

WIDOKI:
1               - List view
2               - Board view
3               - Calendar view
Cmd + Shift + \ - Toggle sidebar
F               - Full screen issue
Cmd + /         - Toggle activity

MARKDOWN (w edytorze):
Cmd + B         - Bold
Cmd + I         - Italic
Cmd + K         - Link
Cmd + E         - Code
Cmd + Shift + M - Mention user
Cmd + Shift + E - Mention issue

Command Palette (Cmd+K)

Code
TEXT
Cmd+K otwiera command palette - najszybszy sposΓ³b na wszystko:

> create issue
> assign to alice
> set status in progress
> add label bug
> move to project Authentication
> set priority urgent
> go to settings
> switch team engineering
> open preferences

Pro tip: Możesz łączyć akcje:
> LIN-123 status done assign me

Status i Workflow

DomyΕ›lne statusy

Code
TEXT
Backlog (πŸ“‹) - Issues do rozwaΕΌenia
β”‚
β”œβ”€β”€ Triage (πŸ“Š) - Nowe issues do przeglΔ…du
β”‚
β–Ό
Todo (β—‹) - Gotowe do pracy
β”‚
β–Ό
In Progress (◐) - W trakcie realizacji
β”‚
β–Ό
In Review (β—‘) - Code review / QA
β”‚
β–Ό
Done (●) - ZakoΕ„czone
β”‚
└── Canceled (⊘) - Anulowane

Customowe workflow

Code
TEXT
Zespół może dostosować workflow:

Settings β†’ Teams β†’ [Team Name] β†’ Workflow

PrzykΕ‚ad workflow dla Design team:

πŸ“‹ Backlog
β”œβ”€β”€ πŸ“Š Triage
β”œβ”€β”€ πŸ’‘ Discovery
β”œβ”€β”€ ✏️ Designing
β”œβ”€β”€ πŸ‘€ Design Review
β”œβ”€β”€ πŸ”„ Revisions
β”œβ”€β”€ βœ… Ready for Dev
└── ● Done

Cycles (Sprints)

Konfiguracja cycles

Code
TEXT
Settings β†’ Teams β†’ [Team] β†’ Cycles

Cycle length: 2 weeks
Start day: Monday
Auto-archive after: 1 week
Auto-move incomplete: βœ… (do nastΔ™pnego cycle)

Planowanie cyklu

Code
TEXT
1. PrzejdΕΊ do Cycles (G C)
2. Wybierz nadchodzΔ…cy cycle
3. PrzeciΔ…gnij issues z Backlog
4. Lub uΕΌyj M (move) na issue β†’ wybierz cycle

Cycle Planning View:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Cycle 24: Jan 20 - Feb 2                                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚ Capacity: 32 points                                         β”‚
β”‚ Committed: 28 points                                        β”‚
β”‚ Progress: β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 35%                         β”‚
β”‚                                                             β”‚
β”‚ Issues:                                                     β”‚
β”‚ ● LIN-101  Setup React Native           @alice   3 pts     β”‚
β”‚ ◐ LIN-102  Navigation system            @bob     5 pts     β”‚
β”‚ β—‹ LIN-103  API integration              @alice   8 pts     β”‚
β”‚ β—‹ LIN-104  Unit tests                   @charlie 5 pts     β”‚
β”‚ β—‹ LIN-105  Documentation                Unas.    2 pts     β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Velocity i metryki

Code
TEXT
Cycle metrics automatycznie Ε›ledzone:

- Velocity: Ε›rednia liczba punktΓ³w/cycle
- Completion rate: % ukoΕ„czonych issues
- Scope change: ile dodano/usuniΔ™to w trakcie
- Lead time: czas od created do done
- Cycle time: czas od started do done

Linear automatycznie pokazuje trendy i przewiduje
capacity dla przyszΕ‚ych cycles.

GitHub Integration

Linkowanie issues

Code
TEXT
W commit messages lub PR:
─────────────────────────────
fix: resolve auth redirect bug

Fixes LIN-123
Closes LIN-124
Relates to LIN-125
─────────────────────────────

Lub w PR description:
Closes LIN-123

Linear automatycznie:
1. Linkuje PR do issue
2. Zmienia status issue na "In Review"
3. Po merge zmienia na "Done" (opcjonalne)

Automatyzacja statusΓ³w

Code
TEXT
Settings β†’ Integrations β†’ GitHub β†’ Automations

DostΔ™pne triggery:
β”‚
β”œβ”€β”€ PR opened β†’ Move issue to "In Review"
β”œβ”€β”€ PR merged β†’ Move issue to "Done"
β”œβ”€β”€ PR closed β†’ Move issue to "Backlog"
β”œβ”€β”€ Branch created β†’ Move issue to "In Progress"
└── Commit pushed β†’ Show activity on issue

PrzykΕ‚adowa konfiguracja:
[βœ“] When PR is opened, move to "In Review"
[βœ“] When PR is merged to main, move to "Done"
[βœ“] Show commits and PRs on issue timeline
[βœ“] Auto-link issues from branch names (feature/LIN-123)

Branch naming

Code
TEXT
Linear może automatycznie generować nazwy branchy:

Issue: LIN-123 "Fix login redirect bug"
Branch: feature/lin-123-fix-login-redirect-bug

Settings β†’ Integrations β†’ GitHub:
Branch format: {prefix}/{issueId}-{title}
Prefix: feature, fix, chore (based on label)

GitHub Sync

Code
TEXT
Dwukierunkowa synchronizacja:

GitHub Issue β†’ Linear Issue
- Import issues z GitHub
- Sync komentarzy
- Sync labels

Linear Issue β†’ GitHub Issue
- Export issues do GitHub
- Mirror status changes

Projects i Roadmaps

Tworzenie projektu

Code
TEXT
1. G P (go to projects)
2. P (create project)
3. WypeΕ‚nij:

Project: Mobile App v2.0
─────────────────────────────────────────
Icon: πŸ“±
Description: Complete rewrite of our mobile app
using React Native for both iOS and Android.

Status: 🟑 In Progress
Lead: @alice
Target date: March 30, 2025
─────────────────────────────────────────

Projects mogą zawierać:
- Multiple milestones
- Linked issues
- Documents
- Updates (progress posts)

Milestones

Code
TEXT
Project: Mobile App v2.0
β”‚
β”œβ”€β”€ Milestone 1: Foundation (Feb 15)
β”‚   β”œβ”€β”€ LIN-101 Setup project
β”‚   β”œβ”€β”€ LIN-102 Core navigation
β”‚   └── LIN-103 Design system integration
β”‚
β”œβ”€β”€ Milestone 2: Core Features (Mar 1)
β”‚   β”œβ”€β”€ LIN-201 User authentication
β”‚   β”œβ”€β”€ LIN-202 Profile management
β”‚   └── LIN-203 Settings screen
β”‚
β”œβ”€β”€ Milestone 3: Polish (Mar 20)
β”‚   β”œβ”€β”€ LIN-301 Performance optimization
β”‚   β”œβ”€β”€ LIN-302 Accessibility
β”‚   └── LIN-303 Bug fixes
β”‚
└── Milestone 4: Launch (Mar 30)
    β”œβ”€β”€ LIN-401 App Store submission
    └── LIN-402 Marketing assets

Roadmap view

Code
TEXT
Roadmap pokazuje projekty na timeline:

         Jan        Feb        Mar        Apr
         β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€
         β”‚          β”‚          β”‚          β”‚
Mobile   β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β”‚ ← In Progress
App v2   β”‚          β”‚          β”‚  ↑ Targetβ”‚
         β”‚          β”‚          β”‚          β”‚
Backend  β”‚     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚          β”‚ ← Completed
Refactor β”‚          β”‚          β”‚          β”‚
         β”‚          β”‚          β”‚          β”‚
Design   β”‚               β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ ← Planned
System   β”‚          β”‚          β”‚          β”‚
         β”‚          β”‚          β”‚          β”‚

Możesz drag & drop aby zmienić daty,
i kliknąć projekt aby zobaczyć szczegóły.

Triage i Inbox

Triage workflow

Code
TEXT
Triage to miejsce gdzie trafiajΔ… nowe issues
przed przypisaniem do backlogu:

1. Issue created β†’ Status: Triage
2. Team lead przeglΔ…da
3. Przypisuje:
   - Priority
   - Labels
   - Project/Cycle
   - Assignee
4. Przenosi do Backlog lub Todo
5. Lub zamyka jako duplicate/invalid

Triage View (G T):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Triage Β· 12 issues need attention                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Today (5)                                                   β”‚
β”‚ β—‹ LIN-200  Bug: Login fails on Safari      @user reported  β”‚
β”‚ β—‹ LIN-201  Feature: Dark mode support      @user requested β”‚
β”‚ β—‹ LIN-202  Bug: Crash on large files       @user reported  β”‚
β”‚                                                             β”‚
β”‚ Yesterday (4)                                               β”‚
β”‚ ...                                                         β”‚
β”‚                                                             β”‚
β”‚ Older (3)                                                   β”‚
β”‚ ...                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Inbox

Code
TEXT
Inbox (G I) pokazuje twoje notyfikacje:

- Issues assigned to you
- Issues where you're mentioned
- Comments on your issues
- Status changes on watched issues

MoΕΌesz:
- Mark as read (Enter)
- Snooze (z) - przypomni pΓ³ΕΊniej
- Archive (x) - usuΕ„ z inbox

Labels i Filtering

System labels

Code
TEXT
Labels pomagają kategoryzować issues:

Type labels:
β”œβ”€β”€ πŸ› bug
β”œβ”€β”€ ✨ feature
β”œβ”€β”€ πŸ“ documentation
β”œβ”€β”€ 🧹 chore
└── πŸ”§ refactor

Area labels:
β”œβ”€β”€ frontend
β”œβ”€β”€ backend
β”œβ”€β”€ mobile
β”œβ”€β”€ infrastructure
└── design

Priority labels (wbudowane):
β”œβ”€β”€ πŸ”΄ Urgent (P0)
β”œβ”€β”€ 🟠 High (P1)
β”œβ”€β”€ 🟑 Medium (P2)
β”œβ”€β”€ 🟒 Low (P3)
└── βšͺ No priority

Zaawansowane filtry

Code
TEXT
Filtrowanie w Linear jest potΔ™ΕΌne:

status:inProgress              - Issues in progress
assignee:me                    - My issues
priority:urgent,high           - Urgent or high priority
label:bug,frontend             - Bugs in frontend
created:>2024-01-01            - Created after date
updated:<7d                    - Updated in last 7 days
cycle:current                  - Current cycle
project:"Mobile App"           - Specific project
has:attachment                 - Has attachments
estimate:>3                    - Estimate > 3 points

Kombinacje:
assignee:me status:todo,inProgress label:bug

Zapisane filtry:
Views β†’ Custom Views β†’ Save current filter

Views

Code
TEXT
Tworzenie custom view:

1. Ustaw filtry
2. Wybierz kolumny i sortowanie
3. Click "Save view"
4. Nazwij i wybierz widocznoΕ›Δ‡:
   - Personal
   - Team
   - Workspace

PrzykΕ‚adowe views:
- "My urgent bugs" - assignee:me label:bug priority:urgent
- "Ready for review" - status:inReview
- "Blocked issues" - has:blocker
- "Unestimated" - estimate:none

Integracje

Slack

Code
TEXT
Linear ↔ Slack Integration:

1. Notifications β†’ Slack channel
   - New issues created
   - Status changes
   - Mentions

2. Create issues from Slack:
   /linear create "Bug: Login broken"
   /linear LIN-123 - show issue details

3. Unfurl Linear links:
   Paste Linear URL β†’ rich preview

Settings β†’ Integrations β†’ Slack

Figma

Code
TEXT
Figma Integration:

1. Paste Figma link in issue β†’ rich preview
2. Attach Figma files to issues
3. Open Figma from Linear

Workflow:
Designer creates design in Figma
β†’ Attaches to Linear issue
β†’ Developer sees preview in Linear
β†’ No context switching needed

Inne integracje

Code
TEXT
Oficjalne integracje:
β”œβ”€β”€ GitHub/GitLab/Bitbucket
β”œβ”€β”€ Slack
β”œβ”€β”€ Figma
β”œβ”€β”€ Sentry
β”œβ”€β”€ Zendesk
β”œβ”€β”€ Intercom
β”œβ”€β”€ Notion
β”œβ”€β”€ Discord
└── Zapier (dla custom)

API i Webhooks:
β”œβ”€β”€ GraphQL API
β”œβ”€β”€ Webhooks
└── OAuth apps

Linear API

GraphQL API

Code
TypeScript
// Linear SDK
import { LinearClient } from '@linear/sdk'

const linear = new LinearClient({
  apiKey: process.env.LINEAR_API_KEY
})

// Pobierz issues
async function getMyIssues() {
  const me = await linear.viewer
  const issues = await me.assignedIssues()

  return issues.nodes.map(issue => ({
    id: issue.id,
    identifier: issue.identifier, // LIN-123
    title: issue.title,
    state: issue.state?.name,
    priority: issue.priority
  }))
}

// UtwΓ³rz issue
async function createIssue(teamId: string, title: string, description: string) {
  const issue = await linear.createIssue({
    teamId,
    title,
    description,
    priority: 2, // Medium
    labelIds: ['bug-label-id']
  })

  return issue.issue
}

// Aktualizuj issue
async function updateIssueStatus(issueId: string, stateId: string) {
  await linear.updateIssue(issueId, {
    stateId
  })
}

// Dodaj komentarz
async function addComment(issueId: string, body: string) {
  await linear.createComment({
    issueId,
    body
  })
}

Webhooks

Code
TypeScript
// Webhook handler (Next.js API route)
import { LinearWebhooks, LINEAR_WEBHOOK_SIGNATURE_HEADER } from '@linear/sdk'

const webhook = new LinearWebhooks(process.env.LINEAR_WEBHOOK_SECRET!)

export async function POST(request: Request) {
  const body = await request.text()
  const signature = request.headers.get(LINEAR_WEBHOOK_SIGNATURE_HEADER)

  if (!webhook.verify(body, signature!)) {
    return Response.json({ error: 'Invalid signature' }, { status: 401 })
  }

  const payload = JSON.parse(body)

  switch (payload.type) {
    case 'Issue':
      if (payload.action === 'create') {
        console.log('New issue:', payload.data.title)
        // Send to Slack, update CRM, etc.
      }
      break

    case 'Comment':
      if (payload.action === 'create') {
        console.log('New comment on:', payload.data.issue.identifier)
      }
      break
  }

  return Response.json({ success: true })
}

Best Practices

Issue writing

Code
TEXT
Dobry issue zawiera:

Title: KrΓ³tki, opisowy (co, nie jak)
βœ“ "Fix: Users can't reset password"
βœ— "Password bug"
βœ— "Use bcrypt instead of md5"

Description:
1. Problem/Context - co i dlaczego
2. Acceptance criteria - kiedy done
3. Technical notes - dla developera

PrzykΕ‚ad:
─────────────────────────────────────────
## Problem
Users are unable to reset their password.
The reset email is sent but the link returns 404.

## Root cause
Token expires before email is delivered (5 min TTL).

## Acceptance criteria
- [ ] Increase token TTL to 1 hour
- [ ] Add expiry message on 404
- [ ] Add "resend email" option

## Technical notes
- Token stored in Redis: `reset:{userId}`
- Email sent via Resend

Team workflow

Code
TEXT
Rekomendowany workflow:

Monday:
1. Cycle planning (30 min)
2. Review triage
3. Assign issues

Daily:
1. Check inbox (5 min)
2. Update issue statuses
3. Add blockers/comments

End of cycle:
1. Close completed issues
2. Review velocity
3. Incomplete β†’ next cycle
4. Retrospective

Pro tips:
- Use keyboard shortcuts religiously
- Keep issues small (1-3 days max)
- Update status in real-time
- Link all PRs to issues

Estimation

Code
TEXT
Story points w Linear:

1 - Trivial (< 1 hour)
2 - Small (half day)
3 - Medium (1 day)
5 - Large (2-3 days)
8 - Very large (1 week) β†’ consider splitting

Alternatywnie - T-shirt sizes:
XS, S, M, L, XL (mapujΔ… na 1, 2, 3, 5, 8)

Settings β†’ Teams β†’ Estimation:
- Points
- T-shirt
- Hours
- None

Cennik

Plany

Code
TEXT
Free:
β”œβ”€β”€ Do 250 issues
β”œβ”€β”€ Unlimited members
β”œβ”€β”€ Basic integrations
β”œβ”€β”€ Mobile apps
└── Public API

Standard ($10/user/month):
β”œβ”€β”€ Unlimited issues
β”œβ”€β”€ Cycles
β”œβ”€β”€ Roadmaps
β”œβ”€β”€ All integrations
β”œβ”€β”€ Custom workflows
β”œβ”€β”€ Triage
└── Priority support

Plus ($15/user/month):
β”œβ”€β”€ Everything in Standard
β”œβ”€β”€ Advanced insights
β”œβ”€β”€ SAML SSO
β”œβ”€β”€ SCIM provisioning
β”œβ”€β”€ Audit logs
β”œβ”€β”€ Custom roles
└── 99.99% SLA

Enterprise (custom):
β”œβ”€β”€ Everything in Plus
β”œβ”€β”€ Dedicated support
β”œβ”€β”€ Custom contracts
β”œβ”€β”€ On-premise option
└── Advanced security

PorΓ³wnanie z Jira

Code
TEXT
Linear vs Jira - Total Cost of Ownership:

Linear Standard: $10/user/month
Jira Standard: $8.15/user/month (seems cheaper but...)

Hidden Jira costs:
+ Admin time for configuration
+ Plugin costs ($5-20/user)
+ Training (steep learning curve)
+ Performance issues (developer frustration)
+ Context switching (slow UI)

Real-world comparison:
10-person team, 1 year:

Linear:
$10 Γ— 10 Γ— 12 = $1,200/year
+ 0 hours setup
+ 1 hour training
= $1,200 + minimal time

Jira:
$8.15 Γ— 10 Γ— 12 = $978/year
+ 20 hours setup Γ— $50/hr = $1,000
+ 10 hours training Γ— $50/hr = $500
+ Plugins ~$500/year
+ Lost productivity (slow UI) = ???
= $2,978+ annually

FAQ - CzΔ™sto zadawane pytania

Czy Linear ma darmowy tier?

Tak, Linear oferuje darmowy plan do 250 issues z unlimited members. To wystarcza dla maΕ‚ych zespoΕ‚Γ³w i side projects. Po przekroczeniu limitu musisz przejΕ›Δ‡ na Standard ($10/user/month).

Jak zmigrować z Jira?

Linear oferuje oficjalny importer:

  1. Settings β†’ Import β†’ Jira
  2. PoΕ‚Δ…cz konto Jira
  3. Wybierz projekty do importu
  4. Mapuj statusy i labels
  5. Import (może potrwać zależnie od ilości issues)

Linear migruje: issues, comments, attachments, labels, assignees.

Czy Linear dziaΕ‚a offline?

Linear jest web-first i wymaga internetu. Jednak:

  • PWA moΕΌna zainstalowaΔ‡
  • Desktop app (Electron) cache'uje dane
  • Optimistic updates - czujesz siΔ™ jak offline

Jak Linear wypada dla non-dev teams?

Linear jest zoptymalizowany dla software teams. Dla:

  • Marketing/Sales β†’ Notion, Asana
  • All-purpose β†’ Monday, ClickUp
  • Design teams β†’ Linear jest OK

Czy mogę używać Linear z GitLab/Bitbucket?

Tak, Linear ma oficjalne integracje z GitLab i Bitbucket. FunkcjonalnoΕ›Δ‡ jest podobna do GitHub - linkowanie issues, auto-status changes.

Jak zarządzać wieloma zespołami?

Linear obsΕ‚uguje multiple teams w jednym workspace:

  • KaΕΌdy team ma wΕ‚asny backlog i workflow
  • Issues mogΔ… byΔ‡ przenoszone miΔ™dzy teamami
  • Roadmap pokazuje wszystkie projekty
  • Cross-team dependencies

Podsumowanie

Linear to idealne narzΔ™dzie do zarzΔ…dzania projektami dla zespoΕ‚Γ³w software, oferujΔ…ce:

  • BΕ‚yskawicznΔ… szybkoΕ›Δ‡ - Instant load, zero lag
  • Keyboard-first UX - Wszystko przez skrΓ³ty
  • Native GitHub - GΕ‚Δ™boka integracja z kodem
  • Cycles - Sprints bez boilerplate
  • Roadmaps - Wizualne planowanie
  • Beautiful design - Przyjemny w uΕΌyciu

JeΕ›li jesteΕ› zmΔ™czony wolnΔ… JirΔ… lub ogΓ³lnymi narzΔ™dziami jak Asana - Linear to game-changer dla dev teams.


Linear - a complete guide to modern project management

What is Linear?

Linear is a project management tool built by and for software teams. Unlike traditional tools like Jira or Asana, Linear prioritizes speed, minimalism, and a keyboard-first experience - every action can be performed without touching the mouse, making working with the tool feel as natural as coding itself.

Linear was founded in 2019 by former Uber employees (Karri Saarinen - ex-Head of Design at Airbnb and Jori Lallo - ex-engineer at Uber). Their frustration was that project management tools were slower and less intuitive than the developer tools themselves - so they created Linear as a tool that is just as fast and pleasant to use as VS Code or the terminal.

Linear is used by thousands of technology companies, including Vercel, Retool, Ramp, Loom, Cash App, and many others. It has become the de facto standard for startups and modern software teams.

Why Linear?

Key advantages of Linear

  1. Speed - Instant load, zero lag, optimistic updates
  2. Keyboard-first - Everything via keyboard shortcuts
  3. Beautiful design - Minimalist, aesthetic UI
  4. GitHub native - Deep integration with code
  5. Cycles - Sprints without unnecessary boilerplate
  6. Roadmaps - Visual project timelines
  7. No-configuration - Works out-of-the-box
  8. Real-time sync - Instant synchronization

Linear vs Jira vs Asana vs Notion

FeatureLinearJiraAsanaNotion
UI speed⚑ Lightning fast🐌 Slow🚢 Average🚢 Average
Keyboard shortcutsβœ… Full❌ Limited❌ Limitedβœ… Good
GitHub integrationβœ… Nativeβœ… Plugin❌ Webhook❌ Embed
Setup time⚑ Instant🐌 Long🚢 Medium🚢 Medium
Learning curveβœ… Low❌ Highβœ… Low🚢 Medium
For dev teamsβœ… Perfectβœ… Yes❌ General❌ General
Free tier250 issuesβœ… Up to 10βœ… Limitedβœ… Limited
Price$10/user$8.15/user$11/user$10/user

Linear basics

User interface

Code
TEXT
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Linear                                     πŸ” Cmd+K  [?] [βš™οΈ]  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              β”‚                                                   β”‚
β”‚  πŸ“₯ Inbox    β”‚  Issues                                          β”‚
β”‚  🎯 My Issuesβ”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  πŸ“‹ Backlog  β”‚  β”‚ β—‹ LIN-123  Fix auth redirect bug           β”‚  β”‚
β”‚  ▢️ Active   β”‚  β”‚   πŸ”΄ Urgent Β· @alice Β· Frontend            β”‚  β”‚
β”‚  πŸ“Š Triage   β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”‚
β”‚              β”‚  β”‚ β—‹ LIN-124  Add dark mode toggle            β”‚  β”‚
β”‚  ─────────── β”‚  β”‚   🟑 Medium Β· @bob Β· Design                β”‚  β”‚
β”‚              β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”‚
β”‚  Teams:      β”‚  β”‚ β—‹ LIN-125  Refactor API client             β”‚  β”‚
β”‚  🏠 Product  β”‚  β”‚   🟒 Low Β· Unassigned Β· Backend            β”‚  β”‚
β”‚  βš™οΈ Enginee. β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  🎨 Design   β”‚                                                   β”‚
β”‚              β”‚  [+ New Issue]                                   β”‚
β”‚  ─────────── β”‚                                                   β”‚
β”‚              β”‚  Filters: Status | Priority | Assignee | Label   β”‚
β”‚  πŸ—ΊοΈ Roadmap  β”‚                                                   β”‚
β”‚  πŸ“… Cycles   β”‚                                                   β”‚
β”‚              β”‚                                                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Hierarchy in Linear

Code
TEXT
Workspace (Company/Organization)
β”‚
β”œβ”€β”€ Team: Engineering
β”‚   β”œβ”€β”€ Project: Mobile App v2.0
β”‚   β”‚   β”œβ”€β”€ Issue: LIN-101 Setup React Native
β”‚   β”‚   β”œβ”€β”€ Issue: LIN-102 Navigation system
β”‚   β”‚   └── Issue: LIN-103 API integration
β”‚   β”‚
β”‚   └── Project: Backend Refactor
β”‚       β”œβ”€β”€ Issue: LIN-201 Migrate to NestJS
β”‚       └── Issue: LIN-202 Add caching layer
β”‚
β”œβ”€β”€ Team: Design
β”‚   └── Project: Design System
β”‚       β”œβ”€β”€ Issue: DES-001 Color palette
β”‚       └── Issue: DES-002 Component library
β”‚
└── Team: Product
    └── Project: User Research
        └── Issue: PRD-001 Conduct interviews

Creating issues

Code
TEXT
Quick creation (C or Cmd+I):

Title: Fix login redirect bug
─────────────────────────────────────────
Description (Markdown):

## Problem
Users are redirected to wrong page after login.

## Steps to reproduce
1. Go to /login
2. Enter credentials
3. Click "Sign In"
4. Expected: Dashboard
5. Actual: Landing page

## Technical details
- [ ] Check auth middleware
- [ ] Review redirect logic in AuthContext

─────────────────────────────────────────
Status: πŸ“‹ Backlog
Priority: πŸ”΄ Urgent
Assignee: @alice
Labels: bug, frontend, auth
Project: Authentication Improvements
Cycle: Sprint 24
Estimate: 2 points

Keyboard shortcuts

Basic shortcuts

Code
TEXT
NAVIGATION:
G I          - Go to Inbox
G M          - Go to My Issues
G B          - Go to Backlog
G A          - Go to Active
G P          - Go to Projects
G C          - Go to Cycles
G R          - Go to Roadmap
G T          - Go to Team
G S          - Go to Settings

GLOBAL:
Cmd/Ctrl + K - Command palette (the most important one!)
/            - Quick search
?            - Show all shortcuts
Escape       - Close/Cancel

CREATING:
C            - Create issue
Shift + C    - Create issue from anywhere
I            - Create sub-issue
P            - Create project

EDITING ISSUES:
Space        - Select/Deselect
Enter        - Open issue detail
S            - Change status
A            - Assign
L            - Add label
E            - Edit estimate
D            - Set due date
M            - Move to project
X            - Archive
Delete       - Delete (with confirmation)

LIST NAVIGATION:
J / ↓        - Move down
K / ↑        - Move up
[ / ]        - Previous/Next issue

Advanced shortcuts

Code
TEXT
BULK ACTIONS:
Shift + click    - Select range
Cmd + click      - Multi-select
Cmd + A          - Select all visible
Shift + S        - Change status for selected
Shift + A        - Assign selected
Shift + L        - Label selected

VIEWS:
1               - List view
2               - Board view
3               - Calendar view
Cmd + Shift + \ - Toggle sidebar
F               - Full screen issue
Cmd + /         - Toggle activity

MARKDOWN (in editor):
Cmd + B         - Bold
Cmd + I         - Italic
Cmd + K         - Link
Cmd + E         - Code
Cmd + Shift + M - Mention user
Cmd + Shift + E - Mention issue

Command Palette (Cmd+K)

Code
TEXT
Cmd+K opens the command palette - the fastest way to do anything:

> create issue
> assign to alice
> set status in progress
> add label bug
> move to project Authentication
> set priority urgent
> go to settings
> switch team engineering
> open preferences

Pro tip: You can chain actions:
> LIN-123 status done assign me

Status and workflow

Default statuses

Code
TEXT
Backlog (πŸ“‹) - Issues to consider
β”‚
β”œβ”€β”€ Triage (πŸ“Š) - New issues to review
β”‚
β–Ό
Todo (β—‹) - Ready to work on
β”‚
β–Ό
In Progress (◐) - Currently being worked on
β”‚
β–Ό
In Review (β—‘) - Code review / QA
β”‚
β–Ό
Done (●) - Completed
β”‚
└── Canceled (⊘) - Canceled

Custom workflows

Code
TEXT
Teams can customize their workflow:

Settings β†’ Teams β†’ [Team Name] β†’ Workflow

Example workflow for a Design team:

πŸ“‹ Backlog
β”œβ”€β”€ πŸ“Š Triage
β”œβ”€β”€ πŸ’‘ Discovery
β”œβ”€β”€ ✏️ Designing
β”œβ”€β”€ πŸ‘€ Design Review
β”œβ”€β”€ πŸ”„ Revisions
β”œβ”€β”€ βœ… Ready for Dev
└── ● Done

Cycles (Sprints)

Configuring cycles

Code
TEXT
Settings β†’ Teams β†’ [Team] β†’ Cycles

Cycle length: 2 weeks
Start day: Monday
Auto-archive after: 1 week
Auto-move incomplete: βœ… (to next cycle)

Planning a cycle

Code
TEXT
1. Navigate to Cycles (G C)
2. Select the upcoming cycle
3. Drag issues from Backlog
4. Or use M (move) on an issue β†’ select cycle

Cycle Planning View:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Cycle 24: Jan 20 - Feb 2                                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚ Capacity: 32 points                                         β”‚
β”‚ Committed: 28 points                                        β”‚
β”‚ Progress: β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 35%                         β”‚
β”‚                                                             β”‚
β”‚ Issues:                                                     β”‚
β”‚ ● LIN-101  Setup React Native           @alice   3 pts     β”‚
β”‚ ◐ LIN-102  Navigation system            @bob     5 pts     β”‚
β”‚ β—‹ LIN-103  API integration              @alice   8 pts     β”‚
β”‚ β—‹ LIN-104  Unit tests                   @charlie 5 pts     β”‚
β”‚ β—‹ LIN-105  Documentation                Unas.    2 pts     β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Velocity and metrics

Code
TEXT
Cycle metrics are tracked automatically:

- Velocity: average number of points per cycle
- Completion rate: percentage of completed issues
- Scope change: how many issues were added/removed during the cycle
- Lead time: time from created to done
- Cycle time: time from started to done

Linear automatically shows trends and predicts
capacity for future cycles.

GitHub integration

Linking issues

Code
TEXT
In commit messages or PRs:
─────────────────────────────
fix: resolve auth redirect bug

Fixes LIN-123
Closes LIN-124
Relates to LIN-125
─────────────────────────────

Or in the PR description:
Closes LIN-123

Linear automatically:
1. Links the PR to the issue
2. Changes the issue status to "In Review"
3. After merge, changes it to "Done" (optional)

Status automation

Code
TEXT
Settings β†’ Integrations β†’ GitHub β†’ Automations

Available triggers:
β”‚
β”œβ”€β”€ PR opened β†’ Move issue to "In Review"
β”œβ”€β”€ PR merged β†’ Move issue to "Done"
β”œβ”€β”€ PR closed β†’ Move issue to "Backlog"
β”œβ”€β”€ Branch created β†’ Move issue to "In Progress"
└── Commit pushed β†’ Show activity on issue

Example configuration:
[βœ“] When PR is opened, move to "In Review"
[βœ“] When PR is merged to main, move to "Done"
[βœ“] Show commits and PRs on issue timeline
[βœ“] Auto-link issues from branch names (feature/LIN-123)

Branch naming

Code
TEXT
Linear can automatically generate branch names:

Issue: LIN-123 "Fix login redirect bug"
Branch: feature/lin-123-fix-login-redirect-bug

Settings β†’ Integrations β†’ GitHub:
Branch format: {prefix}/{issueId}-{title}
Prefix: feature, fix, chore (based on label)

GitHub Sync

Code
TEXT
Two-way synchronization:

GitHub Issue β†’ Linear Issue
- Import issues from GitHub
- Sync comments
- Sync labels

Linear Issue β†’ GitHub Issue
- Export issues to GitHub
- Mirror status changes

Projects and roadmaps

Creating a project

Code
TEXT
1. G P (go to projects)
2. P (create project)
3. Fill in:

Project: Mobile App v2.0
─────────────────────────────────────────
Icon: πŸ“±
Description: Complete rewrite of our mobile app
using React Native for both iOS and Android.

Status: 🟑 In Progress
Lead: @alice
Target date: March 30, 2025
─────────────────────────────────────────

Projects can contain:
- Multiple milestones
- Linked issues
- Documents
- Updates (progress posts)

Milestones

Code
TEXT
Project: Mobile App v2.0
β”‚
β”œβ”€β”€ Milestone 1: Foundation (Feb 15)
β”‚   β”œβ”€β”€ LIN-101 Setup project
β”‚   β”œβ”€β”€ LIN-102 Core navigation
β”‚   └── LIN-103 Design system integration
β”‚
β”œβ”€β”€ Milestone 2: Core Features (Mar 1)
β”‚   β”œβ”€β”€ LIN-201 User authentication
β”‚   β”œβ”€β”€ LIN-202 Profile management
β”‚   └── LIN-203 Settings screen
β”‚
β”œβ”€β”€ Milestone 3: Polish (Mar 20)
β”‚   β”œβ”€β”€ LIN-301 Performance optimization
β”‚   β”œβ”€β”€ LIN-302 Accessibility
β”‚   └── LIN-303 Bug fixes
β”‚
└── Milestone 4: Launch (Mar 30)
    β”œβ”€β”€ LIN-401 App Store submission
    └── LIN-402 Marketing assets

Roadmap view

Code
TEXT
The roadmap displays projects on a timeline:

         Jan        Feb        Mar        Apr
         β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€
         β”‚          β”‚          β”‚          β”‚
Mobile   β”‚β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β”‚ ← In Progress
App v2   β”‚          β”‚          β”‚  ↑ Targetβ”‚
         β”‚          β”‚          β”‚          β”‚
Backend  β”‚     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚          β”‚ ← Completed
Refactor β”‚          β”‚          β”‚          β”‚
         β”‚          β”‚          β”‚          β”‚
Design   β”‚               β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ ← Planned
System   β”‚          β”‚          β”‚          β”‚
         β”‚          β”‚          β”‚          β”‚

You can drag & drop to change dates,
and click on a project to see its details.

Triage and inbox

Triage workflow

Code
TEXT
Triage is where new issues land
before being assigned to the backlog:

1. Issue created β†’ Status: Triage
2. Team lead reviews
3. Assigns:
   - Priority
   - Labels
   - Project/Cycle
   - Assignee
4. Moves to Backlog or Todo
5. Or closes as duplicate/invalid

Triage View (G T):
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Triage Β· 12 issues need attention                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Today (5)                                                   β”‚
β”‚ β—‹ LIN-200  Bug: Login fails on Safari      @user reported  β”‚
β”‚ β—‹ LIN-201  Feature: Dark mode support      @user requested β”‚
β”‚ β—‹ LIN-202  Bug: Crash on large files       @user reported  β”‚
β”‚                                                             β”‚
β”‚ Yesterday (4)                                               β”‚
β”‚ ...                                                         β”‚
β”‚                                                             β”‚
β”‚ Older (3)                                                   β”‚
β”‚ ...                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Inbox

Code
TEXT
Inbox (G I) shows your notifications:

- Issues assigned to you
- Issues where you're mentioned
- Comments on your issues
- Status changes on watched issues

You can:
- Mark as read (Enter)
- Snooze (z) - will remind you later
- Archive (x) - remove from inbox

Labels and filtering

System labels

Code
TEXT
Labels help categorize issues:

Type labels:
β”œβ”€β”€ πŸ› bug
β”œβ”€β”€ ✨ feature
β”œβ”€β”€ πŸ“ documentation
β”œβ”€β”€ 🧹 chore
└── πŸ”§ refactor

Area labels:
β”œβ”€β”€ frontend
β”œβ”€β”€ backend
β”œβ”€β”€ mobile
β”œβ”€β”€ infrastructure
└── design

Priority labels (built-in):
β”œβ”€β”€ πŸ”΄ Urgent (P0)
β”œβ”€β”€ 🟠 High (P1)
β”œβ”€β”€ 🟑 Medium (P2)
β”œβ”€β”€ 🟒 Low (P3)
└── βšͺ No priority

Advanced filters

Code
TEXT
Filtering in Linear is powerful:

status:inProgress              - Issues in progress
assignee:me                    - My issues
priority:urgent,high           - Urgent or high priority
label:bug,frontend             - Bugs in frontend
created:>2024-01-01            - Created after date
updated:<7d                    - Updated in last 7 days
cycle:current                  - Current cycle
project:"Mobile App"           - Specific project
has:attachment                 - Has attachments
estimate:>3                    - Estimate > 3 points

Combinations:
assignee:me status:todo,inProgress label:bug

Saved filters:
Views β†’ Custom Views β†’ Save current filter

Views

Code
TEXT
Creating a custom view:

1. Set your filters
2. Choose columns and sorting
3. Click "Save view"
4. Name it and choose visibility:
   - Personal
   - Team
   - Workspace

Example views:
- "My urgent bugs" - assignee:me label:bug priority:urgent
- "Ready for review" - status:inReview
- "Blocked issues" - has:blocker
- "Unestimated" - estimate:none

Integrations

Slack

Code
TEXT
Linear ↔ Slack Integration:

1. Notifications β†’ Slack channel
   - New issues created
   - Status changes
   - Mentions

2. Create issues from Slack:
   /linear create "Bug: Login broken"
   /linear LIN-123 - show issue details

3. Unfurl Linear links:
   Paste Linear URL β†’ rich preview

Settings β†’ Integrations β†’ Slack

Figma

Code
TEXT
Figma Integration:

1. Paste Figma link in issue β†’ rich preview
2. Attach Figma files to issues
3. Open Figma from Linear

Workflow:
Designer creates design in Figma
β†’ Attaches to Linear issue
β†’ Developer sees preview in Linear
β†’ No context switching needed

Other integrations

Code
TEXT
Official integrations:
β”œβ”€β”€ GitHub/GitLab/Bitbucket
β”œβ”€β”€ Slack
β”œβ”€β”€ Figma
β”œβ”€β”€ Sentry
β”œβ”€β”€ Zendesk
β”œβ”€β”€ Intercom
β”œβ”€β”€ Notion
β”œβ”€β”€ Discord
└── Zapier (for custom workflows)

API and Webhooks:
β”œβ”€β”€ GraphQL API
β”œβ”€β”€ Webhooks
└── OAuth apps

Linear API

GraphQL API

Code
TypeScript
import { LinearClient } from '@linear/sdk'

const linear = new LinearClient({
  apiKey: process.env.LINEAR_API_KEY
})

async function getMyIssues() {
  const me = await linear.viewer
  const issues = await me.assignedIssues()

  return issues.nodes.map(issue => ({
    id: issue.id,
    identifier: issue.identifier,
    title: issue.title,
    state: issue.state?.name,
    priority: issue.priority
  }))
}

async function createIssue(teamId: string, title: string, description: string) {
  const issue = await linear.createIssue({
    teamId,
    title,
    description,
    priority: 2,
    labelIds: ['bug-label-id']
  })

  return issue.issue
}

async function updateIssueStatus(issueId: string, stateId: string) {
  await linear.updateIssue(issueId, {
    stateId
  })
}

async function addComment(issueId: string, body: string) {
  await linear.createComment({
    issueId,
    body
  })
}

Webhooks

Code
TypeScript
import { LinearWebhooks, LINEAR_WEBHOOK_SIGNATURE_HEADER } from '@linear/sdk'

const webhook = new LinearWebhooks(process.env.LINEAR_WEBHOOK_SECRET!)

export async function POST(request: Request) {
  const body = await request.text()
  const signature = request.headers.get(LINEAR_WEBHOOK_SIGNATURE_HEADER)

  if (!webhook.verify(body, signature!)) {
    return Response.json({ error: 'Invalid signature' }, { status: 401 })
  }

  const payload = JSON.parse(body)

  switch (payload.type) {
    case 'Issue':
      if (payload.action === 'create') {
        console.log('New issue:', payload.data.title)
      }
      break

    case 'Comment':
      if (payload.action === 'create') {
        console.log('New comment on:', payload.data.issue.identifier)
      }
      break
  }

  return Response.json({ success: true })
}

Best practices

Issue writing

Code
TEXT
A good issue contains:

Title: Short, descriptive (what, not how)
βœ“ "Fix: Users can't reset password"
βœ— "Password bug"
βœ— "Use bcrypt instead of md5"

Description:
1. Problem/Context - what and why
2. Acceptance criteria - when is it done
3. Technical notes - for the developer

Example:
─────────────────────────────────────────
## Problem
Users are unable to reset their password.
The reset email is sent but the link returns 404.

## Root cause
Token expires before email is delivered (5 min TTL).

## Acceptance criteria
- [ ] Increase token TTL to 1 hour
- [ ] Add expiry message on 404
- [ ] Add "resend email" option

## Technical notes
- Token stored in Redis: `reset:{userId}`
- Email sent via Resend

Team workflow

Code
TEXT
Recommended workflow:

Monday:
1. Cycle planning (30 min)
2. Review triage
3. Assign issues

Daily:
1. Check inbox (5 min)
2. Update issue statuses
3. Add blockers/comments

End of cycle:
1. Close completed issues
2. Review velocity
3. Incomplete β†’ next cycle
4. Retrospective

Pro tips:
- Use keyboard shortcuts religiously
- Keep issues small (1-3 days max)
- Update status in real-time
- Link all PRs to issues

Estimation

Code
TEXT
Story points in Linear:

1 - Trivial (< 1 hour)
2 - Small (half day)
3 - Medium (1 day)
5 - Large (2-3 days)
8 - Very large (1 week) β†’ consider splitting

Alternatively - T-shirt sizes:
XS, S, M, L, XL (map to 1, 2, 3, 5, 8)

Settings β†’ Teams β†’ Estimation:
- Points
- T-shirt
- Hours
- None

Pricing

Plans

Code
TEXT
Free:
β”œβ”€β”€ Up to 250 issues
β”œβ”€β”€ Unlimited members
β”œβ”€β”€ Basic integrations
β”œβ”€β”€ Mobile apps
└── Public API

Standard ($10/user/month):
β”œβ”€β”€ Unlimited issues
β”œβ”€β”€ Cycles
β”œβ”€β”€ Roadmaps
β”œβ”€β”€ All integrations
β”œβ”€β”€ Custom workflows
β”œβ”€β”€ Triage
└── Priority support

Plus ($15/user/month):
β”œβ”€β”€ Everything in Standard
β”œβ”€β”€ Advanced insights
β”œβ”€β”€ SAML SSO
β”œβ”€β”€ SCIM provisioning
β”œβ”€β”€ Audit logs
β”œβ”€β”€ Custom roles
└── 99.99% SLA

Enterprise (custom):
β”œβ”€β”€ Everything in Plus
β”œβ”€β”€ Dedicated support
β”œβ”€β”€ Custom contracts
β”œβ”€β”€ On-premise option
└── Advanced security

Comparison with Jira

Code
TEXT
Linear vs Jira - Total Cost of Ownership:

Linear Standard: $10/user/month
Jira Standard: $8.15/user/month (seems cheaper but...)

Hidden Jira costs:
+ Admin time for configuration
+ Plugin costs ($5-20/user)
+ Training (steep learning curve)
+ Performance issues (developer frustration)
+ Context switching (slow UI)

Real-world comparison:
10-person team, 1 year:

Linear:
$10 Γ— 10 Γ— 12 = $1,200/year
+ 0 hours setup
+ 1 hour training
= $1,200 + minimal time

Jira:
$8.15 Γ— 10 Γ— 12 = $978/year
+ 20 hours setup Γ— $50/hr = $1,000
+ 10 hours training Γ— $50/hr = $500
+ Plugins ~$500/year
+ Lost productivity (slow UI) = ???
= $2,978+ annually

FAQ - frequently asked questions

Does Linear have a free tier?

Yes, Linear offers a free plan for up to 250 issues with unlimited members. This is enough for small teams and side projects. Once you exceed the limit, you need to upgrade to Standard ($10/user/month).

How do I migrate from Jira?

Linear offers an official importer:

  1. Settings β†’ Import β†’ Jira
  2. Connect your Jira account
  3. Select projects to import
  4. Map statuses and labels
  5. Import (may take a while depending on the number of issues)

Linear migrates: issues, comments, attachments, labels, assignees.

Does Linear work offline?

Linear is web-first and requires an internet connection. However:

  • The PWA can be installed
  • The desktop app (Electron) caches data
  • Optimistic updates make it feel like you're working offline

How does Linear work for non-dev teams?

Linear is optimized for software teams. For other use cases:

  • Marketing/Sales β†’ Notion, Asana
  • All-purpose β†’ Monday, ClickUp
  • Design teams β†’ Linear works well

Can I use Linear with GitLab/Bitbucket?

Yes, Linear has official integrations with GitLab and Bitbucket. The functionality is similar to GitHub - issue linking, auto-status changes.

How do I manage multiple teams?

Linear supports multiple teams within a single workspace:

  • Each team has its own backlog and workflow
  • Issues can be moved between teams
  • The roadmap shows all projects
  • Cross-team dependencies are supported

Summary

Linear is the ideal project management tool for software teams, offering:

  • Lightning-fast speed - Instant load, zero lag
  • Keyboard-first UX - Everything via shortcuts
  • Native GitHub - Deep integration with code
  • Cycles - Sprints without boilerplate
  • Roadmaps - Visual planning
  • Beautiful design - A pleasure to use

If you're tired of slow Jira or general-purpose tools like Asana - Linear is a game-changer for dev teams.