Linear Integration Rules
CLI Tool: Linearis
Use Linearis CLI as the primary tool for Linear operations.
Installation
mise use -g npm:linearis@2025.12.3
Authentication
Linearis uses the $LINEAR_API_TOKEN environment variable for authentication.
Why Linearis over MCP
- More stable than Linear MCP server (which frequently disconnects)
- JSON output for easy parsing
- No token overhead in LLM context
- Simple CLI commands via terminal
Team Configuration
- Default Team: Self Driven Platform
- Identifier:
PLTFRM - ID:
94fb9928-3874-464a-9f3d-a354d3364f5c
- Identifier:
- Alternative Team: Platform ICEBOX
- Identifier:
PLAI - ID:
7357e730-4a1a-4f1a-8e53-f42a5077dbbd - Use only when explicitly requested
- Identifier:
IMPORTANT: Always use PLTFRM as the issue team, unless explicitly requested otherwise.
Default Settings
| Setting | Default Value | Notes |
|---|---|---|
| Team | Self Driven Platform (PLTFRM) | Unless ICEBOX specifically requested |
| Assignee | me (current user) | Auto-assign to creator |
| Status | Backlog | Not Triage or Todo |
| Priority | Based on inference | See auto-detection rules |
| Labels | Based on inference | See auto-detection rules |
Status Options
- Backlog: Default for new issues (planned work)
- Triage: Use
/linear-triageor--status Triagefor unplanned/incoming requests - Todo: Ready to start
- In Progress: Currently being worked on
- In Review: Awaiting review
- Done: Completed
- Canceled: Will not be done
Auto-Detection Rules
Labels from Title Prefix
| Title Pattern | Label |
|---|---|
feat:, feat(, feature |
Feature |
fix:, fix(, bug |
Bug |
chore:, chore( |
Chore |
docs:, docs(, documentation |
Docs |
refactor:, refactor( |
Improvement |
Priority from Keywords
| Keywords in Title/Description | Priority |
|---|---|
urgent, critical, broken, production |
1 (Urgent) |
important, high, asap |
2 (High) |
| (default) | 3 (Normal) |
low, minor, nice-to-have, someday |
4 (Low) |
Issue Reference Format
Always Use Full Markdown URLs
When referencing Linear issues in PR descriptions, commits, or documentation, always use the full markdown URL format:
# Correct
Closes [PLTFRM-123: Issue Title](https://linear.app/cloudwalk/issue/PLTFRM-123/issue-slug)
# Avoid (less informative)
Closes PLTFRM-123
Magic Words for Auto-Linking
Closes- Closes the issue when PR is mergedFixes- Fixes the issue when PR is mergedResolves- Resolves the issue when PR is merged
Linearis CLI Commands Reference
Issues
# Create issue (use --status Backlog by default)
linearis issues create "Title" --team PLTFRM --status Backlog -a me
# Create with full options
linearis issues create "feat: new feature" \
--team PLTFRM \
--status Backlog \
-a me \
-d "Description here" \
--labels "Feature" \
-p 3 \
--project "Project Name"
# Read issue details
linearis issues read PLTFRM-123
# Update issue
linearis issues update PLTFRM-123 --status "In Progress"
# List issues
linearis issues list --team PLTFRM --assignee me
# Search issues
linearis issues search "search query"
Comments
# Add comment
linearis comments create PLTFRM-123 --body "Comment text"
Projects
# List projects
linearis projects list
# List issues in project
linearis issues list --project "Project Name"
Labels
# List available labels
linearis labels list
Teams
# List teams
linearis teams list
Workflow Integration
Creating Issues from Code Context
When working on code and needing to create a related issue:
- Use
/linear-createwith context from current work - Include file paths and relevant code snippets in description
- Link the created issue in subsequent commits
Linking Commits to Issues
git commit -m "feat(auth): add JWT validation
Closes [PLTFRM-123: Add JWT validation](https://linear.app/cloudwalk/issue/PLTFRM-123/add-jwt-validation)"
PR Description Format
## Related Issues
Closes [PLTFRM-123: Issue Title](https://linear.app/cloudwalk/issue/PLTFRM-123/issue-slug)
## Summary
- Implementation details here
MCP Fallback
Use Linear MCP only when Linearis CLI cannot perform the operation:
- Complex GraphQL queries not supported by Linearis
- Operations requiring real-time subscriptions
- Bulk operations not available in CLI
For most day-to-day operations (create, read, update, list, comment), prefer Linearis CLI.
/linear-create
Overview
Create a new Linear issue using Linearis CLI with intelligent inference for labels and priority.
Steps
Parse Arguments:
- Extract title from arguments (required)
- Extract description (optional)
- Extract team (default: PLTFRM)
- Extract project (optional)
- Extract labels (optional, or auto-detect)
- Extract priority (optional, or auto-detect)
- Extract status (default: Backlog)
Auto-Detect Labels from Title:
feat:,feat(,feature→ Label: Featurefix:,fix(,bug→ Label: Bugchore:,chore(→ Label: Choredocs:,docs(→ Label: Docsrefactor:,refactor(→ Label: Improvement
Auto-Detect Priority from Keywords:
urgent,critical,broken,production→ Priority 1 (Urgent)important,high,asap→ Priority 2 (High)- Default → Priority 3 (Normal)
low,minor,nice-to-have→ Priority 4 (Low)
Create Issue with Linearis CLI:
linearis issues create "Title" \ --team PLTFRM \ --status Backlog \ -a me \ -d "Description" \ --labels "Label1,Label2" \ -p 3Parse JSON Response:
- Extract issue identifier (e.g., PLTFRM-123)
- Extract issue URL
- Extract issue title
Generate Output:
- Display created issue details
- Provide full markdown URL for references
Default Settings
| Setting | Default | Notes |
|---|---|---|
| Team | PLTFRM | Self Driven Platform |
| Status | Backlog | Use /linear-triage for Triage |
| Assignee | me | Current user |
| Priority | 3 (Normal) | Unless detected from keywords |
| Labels | Auto-detected | Based on title prefix |
Output Format
## Issue Created
**Issue**: [PLTFRM-123: Issue Title](https://linear.app/cloudwalk/issue/PLTFRM-123/issue-slug)
**Team**: Self Driven Platform
**Status**: Backlog
**Priority**: Normal (3)
**Labels**: Feature
**Assignee**: @me
### Use in Commits/PRs
Closes PLTFRM-123: Issue Title
Examples
# Basic issue (auto-detects Feature label)
/linear-create "feat: add user authentication"
# Issue with description
/linear-create "fix: login timeout" "Users are experiencing timeouts after 30 seconds"
# Issue with explicit options
/linear-create "chore: update dependencies" --priority 4 --labels "Chore,maintenance"
# Issue in specific project
/linear-create "feat: new dashboard" --project "Q1 2025"
# Urgent issue (auto-detects priority 1)
/linear-create "fix: critical production bug breaking payments"
Arguments
Arguments: $ARGUMENTS
- First argument: Issue title (required)
- Second argument: Issue description (optional)
--team: Team key (default: PLTFRM)--project: Project name or ID--labels: Comma-separated labels--priorityor-p: Priority 1-4--status: Status name (default: Backlog)
Safety Checks
- ✅ Always use PLTFRM team unless explicitly specified
- ✅ Always set status to Backlog (not Triage/Todo)
- ✅ Always assign to current user
- ✅ Auto-detect labels and priority when not specified
- ✅ Generate full markdown URL for issue reference
- ❌ Never create issue without a title
/linear-update
Overview
Update an existing Linear issue using Linearis CLI.
Steps
Parse Arguments:
- Extract issue ID (required)
- Extract fields to update:
--title: New title--descriptionor-d: New description--status: New status--priorityor-p: New priority (1-4)--assigneeor-a: New assignee--labels: New labels (comma-separated)--project: Add to project
Update Issue with Linearis CLI:
linearis issues update PLTFRM-123 \ --status "In Progress" \ -p 2Parse JSON Response:
- Confirm update success
- Extract updated fields
Display Updated Issue:
- Show what changed
- Provide issue URL
Output Format
## Issue Updated
**Issue**: [PLTFRM-123: Issue Title](https://linear.app/cloudwalk/issue/PLTFRM-123/issue-slug)
### Changes Applied
| Field | Old Value | New Value |
|-------|-----------|-----------|
| Status | Backlog | In Progress |
| Priority | Normal (3) | High (2) |
Common Status Values
| Status | Description |
|---|---|
| Backlog | Planned work, not started |
| Triage | Needs review/prioritization |
| Todo | Ready to start |
| In Progress | Currently being worked on |
| In Review | Awaiting review |
| Done | Completed |
| Canceled | Will not be done |
Examples
# Update status
/linear-update PLTFRM-123 --status "In Progress"
# Update priority
/linear-update PLTFRM-123 --priority 1
# Update multiple fields
/linear-update PLTFRM-123 --status "In Review" --labels "Feature,ready-for-review"
# Update description
/linear-update PLTFRM-123 -d "Updated description with more details"
# Move to different status (start working)
/linear-update PLTFRM-123 --status "In Progress"
# Mark as done
/linear-update PLTFRM-123 --status "Done"
Arguments
Arguments: $ARGUMENTS
- First argument: Issue identifier (required)
--title: New title--descriptionor-d: New description--status: New status--priorityor-p: Priority 1-4--assigneeor-a: New assignee--labels: Comma-separated labels--project: Project name or ID
Safety Checks
- ✅ Always confirm issue exists before updating
- ✅ Show what will be changed before applying
- ❌ Never update without specifying issue ID
/linear-comment
Overview
Add a comment to a Linear issue using Linearis CLI.
Steps
Parse Arguments:
- Extract issue ID (required)
- Extract comment body (required)
Create Comment with Linearis CLI:
linearis comments create PLTFRM-123 --body "Comment text here"Parse JSON Response:
- Confirm comment created
- Extract comment details
Display Confirmation:
- Show comment added
- Provide issue URL
Output Format
## Comment Added
**Issue**: [PLTFRM-123: Issue Title](https://linear.app/cloudwalk/issue/PLTFRM-123/issue-slug)
### Comment
> Comment text here...
**View**: [See in Linear](https://linear.app/cloudwalk/issue/PLTFRM-123/issue-slug#comment-xyz)
Examples
# Add simple comment
/linear-comment PLTFRM-123 "Started working on this"
# Add progress update
/linear-comment PLTFRM-123 "Completed initial implementation. Ready for review."
# Add multi-line comment (use quotes)
/linear-comment PLTFRM-123 "Progress update:
- Implemented feature X
- Fixed bug Y
- Need to add tests"
# Add comment with code reference
/linear-comment PLTFRM-123 "Fixed in commit abc123. See PR #456"
Arguments
Arguments: $ARGUMENTS
- First argument: Issue identifier (required)
- Format:
PLTFRM-123
- Format:
- Second argument: Comment body (required)
- Supports markdown formatting
Use Cases
- Progress updates during development
- Questions or clarifications
- Review feedback
- Blockers or dependency notes
- Completion notes
/linear-list
Overview
List Linear issues with filters using Linearis CLI.
Steps
Parse Filter Arguments:
--team: Team filter (default: PLTFRM)--assigneeor-a: Assignee filter (default: me)--status: Status filter--project: Project filter--label: Label filter--limitor-l: Result limit (default: 20)
List Issues with Linearis CLI:
linearis issues list \ --team PLTFRM \ --assignee me \ --limit 20Parse JSON Response:
- Extract issue list
- Format for table display
Display Results:
- Show issues in table format
- Include count and filters applied
Output Format
## Issues (15 found)
**Filters**: Team: PLTFRM | Assignee: me | Status: all
| ID | Title | Status | Priority | Updated |
|----|-------|--------|----------|---------|
| PLTFRM-123 | feat: add authentication | In Progress | High | 2h ago |
| PLTFRM-122 | fix: login timeout | Backlog | Normal | 1d ago |
| PLTFRM-121 | chore: update deps | Done | Low | 3d ago |
**View in Linear**: [Team Issues](https://linear.app/cloudwalk/team/PLTFRM/active)
Examples
# List my issues (default)
/linear-list
# List by status
/linear-list --status "In Progress"
# List by project
/linear-list --project "Q1 2025"
# List all team issues (not just mine)
/linear-list --assignee all
# List with label filter
/linear-list --label "Bug"
# List more results
/linear-list --limit 50
# Combine filters
/linear-list --status "Backlog" --label "Feature" --limit 10
Arguments
Arguments: $ARGUMENTS
--team: Team key (default: PLTFRM)--assigneeor-a: Assignee filter (default: me, use "all" for all)--status: Status name filter--project: Project name or ID--label: Label name filter--limitor-l: Max results (default: 20)
Default Behavior
- Shows issues assigned to current user
- From PLTFRM team
- All statuses (except archived)
- Limited to 20 results
/linear-triage
Overview
Quick shortcut to create a Linear issue in Triage status (for unplanned/incoming requests).
When to Use
Use /linear-triage instead of /linear-create when:
- Receiving ad-hoc requests that need review
- Creating issues from Slack messages or emails
- Capturing bugs reported by users
- Anything that needs prioritization before starting
Steps
Parse Arguments:
- Same as
/linear-create - Status is automatically set to Triage
- Same as
Create Issue with Linearis CLI:
linearis issues create "Title" \ --team PLTFRM \ --status Triage \ -a meDisplay Created Issue:
- Same output as
/linear-create - Highlights Triage status
- Same output as
Output Format
## Issue Created (Triage)
**Issue**: [PLTFRM-123: Issue Title](https://linear.app/cloudwalk/issue/PLTFRM-123/issue-slug)
**Team**: Self Driven Platform
**Status**: ⚠️ Triage (needs prioritization)
**Assignee**: @me
> This issue is in Triage. Review and move to Backlog when prioritized.
Difference from /linear-create
| Aspect | /linear-create |
/linear-triage |
|---|---|---|
| Default Status | Backlog | Triage |
| Use Case | Planned work | Incoming requests |
| Priority | Auto-detected | Usually needs review |
Examples
# Quick triage issue
/linear-triage "User reported login issue"
# Triage with description
/linear-triage "API timeout from customer" "Customer XYZ reported timeouts on endpoint /api/v1/data"
# Triage with initial label
/linear-triage "Production error in payments" --labels "Bug"
Arguments
Arguments: $ARGUMENTS
- First argument: Issue title (required)
- Second argument: Issue description (optional)
--labels: Comma-separated labels (optional)--priorityor-p: Priority 1-4 (optional)--project: Project name (optional)
Workflow
- Create issue with
/linear-triage - Review and prioritize in Linear
- Move to Backlog when ready to plan
- Move to Todo when ready to start
/linear-view
Overview
View detailed information about a Linear issue using Linearis CLI.
Steps
Parse Issue Identifier:
- Extract issue ID from arguments (required)
- Supports formats:
PLTFRM-123,123, or full UUID
Fetch Issue Details:
linearis issues read PLTFRM-123Parse JSON Response:
- Extract all issue fields
- Format for readable output
Display Issue Information:
- Title and identifier
- Status and priority
- Assignee and team
- Labels and project
- Description
- URL
Output Format
## PLTFRM-123: Issue Title
**Status**: In Progress
**Priority**: Normal (3)
**Assignee**: @username
**Team**: Self Driven Platform
**Labels**: Feature, backend
**Project**: Q1 2025
**Created**: 2025-01-10
**Updated**: 2025-01-13
### Description
Issue description content here...
### Links
- **Linear**: [View in Linear](https://linear.app/cloudwalk/issue/PLTFRM-123/issue-slug)
- **Git Branch**: `pltfrm-123-issue-slug`
### Reference for PRs
Closes PLTFRM-123: Issue Title
Examples
# View by identifier
/linear-view PLTFRM-123
# View by number (assumes PLTFRM team)
/linear-view 123
Arguments
Arguments: $ARGUMENTS
- First argument: Issue identifier (required)
- Format:
PLTFRM-123or just123
- Format:
Error Handling
- If issue not found, display error message
- If identifier format invalid, suggest correct format
/linear-project-create
Overview
Create a Linear project from a Cursor plan file, converting plan tasks into Linear issues.
Steps
Parse Arguments:
- Extract plan file path (required, or detect from
.cursor/plans/) - Extract project name (optional, defaults to plan name)
- Extract team (default: PLTFRM)
- Extract plan file path (required, or detect from
Read Plan File:
- Load plan from
.cursor/plans/directory - Parse YAML frontmatter for metadata
- Extract tasks/todos from plan content
- Load plan from
Create Linear Project:
- Note: Linearis CLI doesn't support project creation directly
- Use Linear MCP or create issues with
--projectflag to existing project
Create Issues from Tasks:
- For each task in the plan:
linearis issues create "Task title" \ --team PLTFRM \ --status Backlog \ --project "Project Name" \ -d "Task description from plan"Update Plan with Issue Links:
- Add Linear issue IDs to plan tasks
- Create mapping between plan tasks and issues
Display Results:
- List all created issues
- Show project link
- Provide summary
Output Format
## Project Created from Plan
**Plan**: `.cursor/plans/2025-01-13-feature-x.md`
**Project**: [Project Name](https://linear.app/cloudwalk/project/project-id)
**Team**: Self Driven Platform
### Issues Created (5)
| # | Issue | Title | Status |
|---|-------|-------|--------|
| 1 | [PLTFRM-123](url) | Task 1 from plan | Backlog |
| 2 | [PLTFRM-124](url) | Task 2 from plan | Backlog |
| 3 | [PLTFRM-125](url) | Task 3 from plan | Backlog |
| 4 | [PLTFRM-126](url) | Task 4 from plan | Backlog |
| 5 | [PLTFRM-127](url) | Task 5 from plan | Backlog |
### Plan Updated
Tasks in plan now include Linear issue references.
Examples
# Create project from specific plan
/linear-project-create .cursor/plans/2025-01-13-feature-x.md
# Create with custom project name
/linear-project-create .cursor/plans/plan.md --project "Q1 Feature Release"
# Create from most recent plan (auto-detect)
/linear-project-create
Arguments
Arguments: $ARGUMENTS
- First argument: Plan file path (optional, auto-detects most recent)
--project: Project name in Linear (will create issues linked to this project)--team: Team key (default: PLTFRM)
Workflow
- Create plan using
/plancommand - Review and refine plan
- Run
/linear-project-createto create issues - Work on issues, update status
- Plan file stays in sync (optional)
Notes
- Requires existing Linear project to link issues to
- Each plan task becomes one Linear issue
- Task dependencies are noted in issue descriptions
- Plan file is updated with issue references after creation
/linear-project-plan
Overview
Generate a Cursor plan file from an existing Linear project, converting issues into actionable tasks.
Steps
Parse Arguments:
- Extract project name or ID (required)
- Extract output path (optional, defaults to
.cursor/plans/)
Fetch Project Details:
# List projects to find the one linearis projects listFetch Project Issues:
linearis issues list --project "Project Name"Generate Plan File:
- Create YAML frontmatter with project metadata
- Convert issues to todo items
- Preserve issue relationships as dependencies
- Include issue links in task descriptions
Write Plan File:
- Save to
.cursor/plans/directory - Use naming convention:
YYYY-MM-DD-project-name.md
- Save to
Display Results:
- Show created plan file path
- Summarize tasks imported
Output Format
## Plan Created from Project
**Project**: [Project Name](https://linear.app/cloudwalk/project/project-id)
**Plan File**: `.cursor/plans/2025-01-13-project-name.md`
### Tasks Imported (8)
| Status | Count |
|--------|--------|
| Backlog | 3 |
| Todo | 2 |
| In Progress | 2 |
| Done | 1 |
### Next Steps
1. Review the generated plan
2. Start working on tasks using the plan
3. Update Linear issues as you progress
Examples
# Generate plan from project name
/linear-project-plan "Q1 2025 Features"
# Generate with custom output path
/linear-project-plan "Project Name" --output .cursor/plans/q1-features.md
# Generate from project with specific team filter
/linear-project-plan "Project Name" --team PLTFRM
Arguments
Arguments: $ARGUMENTS
- First argument: Project name or ID (required)
--output: Custom output file path--team: Filter issues by team--status: Filter issues by status (e.g., only active issues)
Status Mapping
| Linear Status | Plan Status |
|---|---|
| Backlog | pending |
| Triage | pending |
| Todo | pending |
| In Progress | in_progress |
| In Review | in_progress |
| Done | completed |
| Canceled | cancelled |
Workflow
- Identify Linear project to work on
- Run
/linear-project-plan "Project Name" - Review generated plan
- Execute tasks using the plan
- Update Linear issues as you complete work
Use Cases
- Onboarding to existing project
- Planning sprint work from Linear backlog
- Creating execution roadmap from project issues
- Syncing Linear project state to local plan