Linear
Query and manage Linear issues, projects, and team workflows.
ManuelHettich
@manuelhettich
What This Skill Does
Command-line interface for querying and managing Linear issues, projects, and team workflows. Supports creating issues, updating status, assigning users, setting priorities, adding comments, and generating standup summaries.
Replaces manual Linear UI navigation and repetitive status updates by exposing all common issue management actions through a single CLI with team and project filtering.
When to Use It
- Check your assigned issues and todos before a standup
- Create a new issue with title and description from a terminal or chat
- Update an issue's status to progress, review, or done during a workflow
- Get a daily standup summary of your team's blocked, in-review, and completed items
- Retrieve the correct branch name for an issue to enable automatic Linear-GitHub status tracking
- Triage urgent or high-priority issues across your team
Install
$ openclaw skills install @manuelhettich/linearLinear
Manage issues, check project status, and stay on top of your team's work.
Setup
export LINEAR_API_KEY="your-api-key"
# Optional: default team key used when a command needs a team
export LINEAR_DEFAULT_TEAM="TEAM"
Discover team keys:
{baseDir}/scripts/linear.sh teams
If LINEAR_DEFAULT_TEAM is set, you can omit the team key in team and call:
{baseDir}/scripts/linear.sh create "Title" ["Description"]
Quick Commands
# My stuff
{baseDir}/scripts/linear.sh my-issues # Your assigned issues
{baseDir}/scripts/linear.sh my-todos # Just your Todo items
{baseDir}/scripts/linear.sh urgent # Urgent/High priority across team
# Browse
{baseDir}/scripts/linear.sh teams # List available teams
{baseDir}/scripts/linear.sh team <TEAM_KEY> # All issues for a team
{baseDir}/scripts/linear.sh project <name> # Issues in a project
{baseDir}/scripts/linear.sh issue <TEAM-123> # Get issue details
{baseDir}/scripts/linear.sh branch <TEAM-123> # Get branch name for GitHub
# Actions
{baseDir}/scripts/linear.sh create <TEAM_KEY> "Title" ["Description"]
{baseDir}/scripts/linear.sh comment <TEAM-123> "Comment text"
{baseDir}/scripts/linear.sh status <TEAM-123> <todo|progress|review|done|blocked>
{baseDir}/scripts/linear.sh assign <TEAM-123> <userName>
{baseDir}/scripts/linear.sh priority <TEAM-123> <urgent|high|medium|low|none>
# Overview
{baseDir}/scripts/linear.sh standup # Daily standup summary
{baseDir}/scripts/linear.sh projects # All projects with progress
Common Workflows
Morning Standup
{baseDir}/scripts/linear.sh standup
Shows: your todos, blocked items across team, recently completed, what's in review.
Quick Issue Creation (from chat)
{baseDir}/scripts/linear.sh create TEAM "Fix auth timeout bug" "Users getting logged out after 5 min"
Triage Mode
{baseDir}/scripts/linear.sh urgent # See what needs attention
Git Workflow (Linear ↔ GitHub Integration)
Always use Linear-derived branch names to enable automatic issue status tracking.
Getting the Branch Name
{baseDir}/scripts/linear.sh branch TEAM-212
# Returns: dev/team-212-fix-auth-timeout-bug
Creating a Worktree for an Issue
# 1. Get the branch name from Linear
BRANCH=$({baseDir}/scripts/linear.sh branch TEAM-212)
# 2. Pull fresh main first (main should ALWAYS match origin)
cd /path/to/repo
git checkout main && git pull origin main
# 3. Create worktree with that branch (branching from fresh origin/main)
git worktree add .worktrees/team-212 -b "$BRANCH" origin/main
cd .worktrees/team-212
# 4. Do your work, commit, push
git push -u origin "$BRANCH"
⚠️ Never modify files on main. All changes happen in worktrees only.
Why This Matters
- Linear's GitHub integration tracks PRs by branch name pattern
- When you create a PR from a Linear branch, the issue automatically moves to "In Review"
- When the PR merges, the issue automatically moves to "Done"
- Manual branch names break this automation
- Keeping main clean = no accidental pushes, easy worktree cleanup
Quick Reference
# Full workflow example
ISSUE="TEAM-212"
BRANCH=$({baseDir}/scripts/linear.sh branch $ISSUE)
# Always start from fresh main
cd ~/workspace/your-repo
git checkout main && git pull origin main
# Create worktree (inside .worktrees/)
git worktree add .worktrees/${ISSUE,,} -b "$BRANCH" origin/main
cd .worktrees/${ISSUE,,}
# ... make changes ...
git add -A && git commit -m "fix: implement $ISSUE"
git push -u origin "$BRANCH"
gh pr create --title "$ISSUE: <title>" --body "Closes $ISSUE"
Priority Levels
| Level | Value | Use for |
|---|---|---|
| urgent | 1 | Production issues, blockers |
| high | 2 | This week, important |
| medium | 3 | This sprint/cycle |
| low | 4 | Nice to have |
| none | 0 | Backlog, someday |
Teams (cached)
Team keys and IDs are discovered via the API and cached locally after the first lookup.
Use linear.sh teams to refresh and list available teams.
Notes
- Uses GraphQL API (api.linear.app/graphql)
- Requires
LINEAR_API_KEYenv var - Issue identifiers are like
TEAM-123
Attribution
Inspired by schpet/linear-cli by Peter Schilling (ISC License). This is an independent bash implementation for Clawdbot integration.
Top skills in this category
Gog
@steipeteGoogle Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
API Gateway
@byungkyuCall third-party APIs through the Maton gateway, which injects the credential for an app the user has already connected. Use this skill when the user names a connected app and a concrete action in it - read a mailbox, query a CRM, file an issue, update a spreadsheet, run a query through a connected
Notion
@steipeteNotion API for creating and managing pages, databases, and blocks.
Mcporter
@steipeteUse the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.
Caldav Calendar
@asleep123Sync and query CalDAV calendars (iCloud, Google, Fastmail, Nextcloud, etc.) using vdirsyncer + khal. Works on Linux.