Interact with Linear issue tracker via CLI. Create, list, update, and close issues; add comments; manage cycles and teams. Use when the user wants to work with Linear issues, check their backlog, create tickets, or automate Linear workflows from the terminal.
Install
npx skillscat add duailibe/linear-cli Install via the SkillsCat registry.
SKILL.md
Linear CLI
CLI for Linear issue tracking. Manage issues, cycles, and teams from the terminal.
Installation
brew install duailibe/tap/linear-cliOr with Go:
go install github.com/duailibe/linear-cli/cmd/linear@latestAuthentication
Set API key via environment (preferred):
export LINEAR_API_KEY=lin_api_...Or store locally:
linear auth loginCheck auth status:
linear auth status
linear whoamiCommands
Issues
# List issues
linear issue list --team ENG
linear issue list --team ENG --cycle current
linear issue list --team ENG --assignee me
linear issue list --team ENG --state "In Progress"
linear issue list --team ENG --label bug
linear issue list --team ENG --priority 1
# View issue details
linear issue view ENG-123
linear issue view ENG-123 --comments
# Create issue
linear issue create --team ENG --title "Bug in auth"
linear issue create --team ENG --title "Feature" --description "Details here"
linear issue create --team ENG --title "Task" --priority 2 --assignee me
linear issue create --team ENG --title "Blocked" --blocked-by ENG-100 --blocks ENG-200
# Read description from stdin
cat spec.md | linear issue create --team ENG --title "New feature" --description -
# Update issue
linear issue update ENG-123 --state "In Progress"
linear issue update ENG-123 --assignee me
linear issue update ENG-123 --priority 1
linear issue update ENG-123 --cycle current
# Close/reopen
linear issue close ENG-123
linear issue reopen ENG-123
# Add comment
linear issue comment ENG-123 --body "Working on this"
echo "Status update" | linear issue comment ENG-123 --body -
# Download uploads
# Includes uploads from the issue description and comments (uploads.linear.app only).
linear issue uploads ENG-123 --dir ./downloadsCycles
# List cycles
linear cycle list --team ENG
linear cycle list --team ENG --current
# View cycle
linear cycle view <cycle-id>Teams
linear team listOutput
Human-readable tables by default. Use --json for machine output:
linear issue list --team ENG --json
linear issue list --team ENG --json | jq '.nodes[].identifier'Global Flags
--json Output JSON instead of tables
--quiet, -q Suppress non-essential output
--verbose, -v Enable verbose diagnostics
--no-color Disable colored output
--no-input Disable interactive prompts
--yes, -y Auto-confirm prompts
--timeout API request timeout (default 10s)
--api-key API key (overrides env/stored auth)Common Patterns
Get my issues in current sprint
linear issue list --team ENG --cycle current --assignee meCreate issue from a file
cat << 'EOF' | linear issue create --team ENG --title "Implement auth" --description -
## Overview
Add OAuth2 support.
## Requirements
- Google login
- GitHub login
EOFBatch operations with jq
# Get all issue IDs in a cycle
linear issue list --team ENG --cycle current --json | jq -r '.nodes[].identifier'
# Close all issues matching a label
for id in $(linear issue list --team ENG --label done --json | jq -r '.nodes[].identifier'); do
linear issue close "$id"
doneCheck issue before updating
linear issue view ENG-123 --json | jq '{state, assignee, priority}'
linear issue update ENG-123 --state "Done"