Fetch and view Linear issues/tickets. List, search, read issue details, status, comments. Use when investigating tickets or gathering debugging context.
Fetch and view Linear issues to gather context for debugging investigations.
# linearis uses API token from environment or config
# Check if linearis is available
linearis --version 2>/dev/null || {
echo "linearis CLI not installed"
echo "Install: npm install -g linearis"
exit 1
}
# Test authentication (list with limit 1)
linearis issues list --limit 1 >/dev/null 2>&1 || {
echo "Not authenticated to Linear"
echo "Set LINEARIS_API_TOKEN environment variable or use --api-token flag"
exit 1
}
# Get issue by ID or identifier
linearis issues read ENG-1234
# Output is JSON - use jq to parse
linearis issues read ENG-1234 | jq '.title'
linearis issues read ENG-1234 | jq '.description'
linearis issues read ENG-1234 | jq '.state.name'
# Full issue details
linearis issues read ENG-1234 | jq '.'
# List recent issues (default limit: 25)
linearis issues list
# Limit results
linearis issues list --limit 10
linearis issues list --limit 100
# Save to file for analysis
linearis issues list --limit 50 > /tmp/linear-issues-$(date +%Y%m%d).json
# Search by text query
linearis issues search "api-gateway error"
linearis issues search "production crash"
linearis issues search "kubernetes pod"
# Save search results
linearis issues search "database connection" > /tmp/linear-search-$(date +%Y%m%d).json
All linearis commands output JSON. Use jq to parse and extract fields.
Common jq patterns:
# Extract issue title
linearis issues read ENG-1234 | jq -r '.title'
# Extract state
linearis issues read ENG-1234 | jq -r '.state.name'
# Extract assignee
linearis issues read ENG-1234 | jq -r '.assignee.name'
# Extract labels
linearis issues read ENG-1234 | jq -r '.labels[].name'
# Extract priority (0=None, 1=Low, 2=Medium, 3=High, 4=Urgent)
linearis issues read ENG-1234 | jq -r '.priority'
Save issue details for debugging context:
# Save issue to tmp file
linearis issues read ENG-1234 > /tmp/linear-issue-ENG-1234-$(date +%Y%m%d).json
# Extract key info for quick reference
linearis issues read ENG-1234 | jq -r '{
id: .identifier,
title: .title,
state: .state.name,
priority: .priority,
description: .description
}' > /tmp/issue-summary-ENG-1234.json
# Use issue context for debugging
ISSUE_DESC=$(linearis issues read ENG-1234 | jq -r '.description')
echo "Debugging: $ISSUE_DESC"
Benefits:
For detailed jq filtering patterns, see:
# Filter by team
linearis issues list --limit 200 | jq '[.[] | select(.team.key == "ENG")]'
# Filter by state
linearis issues list --limit 200 | jq '[.[] | select(.state.name == "In Progress")]'
# Filter by label
linearis issues list --limit 200 | jq '[.[] | select(.labels[]?.name == "Bug")]'
# Search in description
linearis issues list --limit 200 | jq '[.[] | select(has("description") and (.description | contains("error")))]'
# Extract summary
linearis issues list --limit 50 | jq '.[] | {
id: .identifier,
title: .title,
state: .state.name,
assignee: .assignee.name // "Unassigned"
}'
ENG-1234 instead of UUIDs for readabilityjq for parsing JSONhas("field") in jq to check field existence before accessing// operator in jq for default values when fields might be null? operator for safe array/object navigation (e.g., .labels[]?)--limit (max usually 200) for comprehensive searches