Add your description here
Project description
Linear CLI
A command-line interface for interacting with Linear - list issues, view project details, and manage your workflow from the terminal.
Getting started
Set your Linear API key as an environment variable:
export LINEAR_API_KEY="<linear-api-key>"
Use uvx, or set an alias:
$ uvx --from linear-app linear
Usage: linear [OPTIONS] COMMAND [ARGS]...
Linear CLI - Interact with Linear from your terminal
╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy it or customize the installation. │
│ --help Show this message and exit. │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ issues Manage Linear issues │
│ projects Manage Linear projects │
│ teams Manage Linear teams │
│ cycles Manage Linear cycles │
│ users Manage Linear users │
│ labels Manage Linear labels │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Get your API key at: https://linear.app/settings/api
Available Commands
Issues
# List issues with filters
linear issues list [OPTIONS]
# View details of a specific issue
linear issues view <issue-id> [OPTIONS]
# Search issues by title
linear issues search <query> [OPTIONS]
# Create a new issue (interactive if no title provided)
linear issues create [title] [OPTIONS]
List options:
--assignee <email>- Filter by assignee (use "me" or "self" for yourself)--status <status>- Filter by status (e.g., "in progress", "done")--priority <0-4>- Filter by priority--team <team>- Filter by team name or key--project <name>- Filter by project name--label <label>- Filter by label (repeatable)--limit <n>- Number of results (default: 50)--sort <field>- Sort results--format <format>- Output format:table(default),json
View options:
--web/-w- Open issue in browser--format/-f <format>- Output format:detail(default),json
Search options:
--limit <n>- Number of results (default: 50)--sort <field>- Sort results--format/-f <format>- Output format:table(default),json
Create options:
--team/-t <team>- Team key (e.g., "ENG")--description/-d <text>- Issue description--assignee/-a <email>- Assign to user--priority/-p <0-4>- Priority level--project <name>- Project name--label/-l <label>- Add label (repeatable)--format/-f <format>- Output format:detail(default),json
Projects
# List projects
linear projects list [OPTIONS]
# View details of a specific project
linear projects view <project-id> [OPTIONS]
List options:
--state <state>- Filter by state (planned, started, paused, completed, canceled)--team <team>- Filter by team name or key--limit <n>- Number of results (default: 50)--include-archived- Include archived projects--format/-f <format>- Output format:table(default),json
View options:
--format/-f <format>- Output format:detail(default),json
Teams
# List all teams
linear teams list [OPTIONS]
# View details of a specific team
linear teams view <team-id> [OPTIONS]
List options:
--limit <n>- Number of results (default: 50)--include-archived- Include archived teams--format/-f <format>- Output format:table(default),json
View options:
--format/-f <format>- Output format:detail(default),json
Note: Team ID can be a team key (e.g., "ENG") or team ID.
Cycles
# List cycles
linear cycles list [OPTIONS]
# View details of a specific cycle
linear cycles view <cycle-id> [OPTIONS]
List options:
--team/-t <team>- Filter by team name or key--active/-a- Show only active cycles--future- Show only future cycles--past- Show only past cycles--limit/-l <n>- Number of results (default: 50)--include-archived- Include archived cycles--format/-f <format>- Output format:table(default),json
View options:
--format/-f <format>- Output format:detail(default),json
Users
# List workspace users
linear users list [OPTIONS]
# View details of a specific user
linear users view <user-id> [OPTIONS]
List options:
--active-only- Show only active users (default: true)--include-disabled- Include disabled users--limit/-l <n>- Number of results (default: 50)--format/-f <format>- Output format:table(default),json
View options:
--format/-f <format>- Output format:detail(default),json
Note: User ID can be an email address or user ID.
Labels
# List issue labels
linear labels list [OPTIONS]
List options:
--team/-t <team>- Filter by team ID or key--limit/-l <n>- Number of results (default: 50)--include-archived- Include archived labels--format/-f <format>- Output format:table(default),json
Common Patterns
Command Aliases: You can use short aliases for all command groups:
linear iinstead oflinear issueslinear pinstead oflinear projectslinear tinstead oflinear teamslinear cinstead oflinear cycleslinear uinstead oflinear userslinear linstead oflinear labels
Output Formats:
table- Human-readable table format (default for list commands)json- JSON output for scripting and automationdetail- Detailed view (default for view commands)
Common Flags:
- Most list commands support
--limitto control result count - Most list commands support
--include-archivedto show archived items - All commands support
--format/-fto change output format
Development
Pre-commit Hooks
This project uses pre-commit to run code quality checks before commits. All hooks use uv run to execute tools from the project's virtual environment:
ruff check --fixfor lintingruff formatfor code formattingty checkfor type checking
Setup:
# Install dev dependencies (includes pre-commit, ruff, and ty)
uv sync --dev
# Install the pre-commit hooks
uv run pre-commit install
Manual run:
# Run on all files
uv run pre-commit run --all-files
# Run on staged files only
uv run pre-commit run
The hooks will automatically run when you commit changes. If any issues are found and auto-fixed, you'll need to stage the fixes and commit again.
Releases
This project uses GitHub Actions for automated PyPI publishing. When you create a GitHub release, the workflow automatically validates, builds, and publishes to PyPI.
Setup
For Repository Maintainers:
- Generate a PyPI API token at https://pypi.org/manage/account/token/
- Scope: Project (
linear-app) - Token name:
linear-app-github-actions
- Scope: Project (
- Add the token to GitHub repository secrets:
- Go to: Settings → Secrets and variables → Actions
- Create new secret:
PYPI_API_TOKEN
Release Process
-
Update version in pyproject.toml
vim pyproject.toml # Change version = "X.Y.Z"
-
Commit and push version bump
git add pyproject.toml git commit -m "Bump version to X.Y.Z" git push origin main
-
Create GitHub release
Option A: Using GitHub CLI (recommended)
gh release create vX.Y.Z --generate-notes
Tag Format
Releases use the vX.Y.Z tag format (e.g., v0.0.1).
CI/CD
- Pull Requests & Main Branch: CI workflow runs quality checks on all PRs and pushes to main
- GitHub Releases: Publish workflow automatically deploys to PyPI
- Status Checks: CI checks are required to pass before merging PRs
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file linear_app-0.0.3.tar.gz.
File metadata
- Download URL: linear_app-0.0.3.tar.gz
- Upload date:
- Size: 22.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c3252698f9ed231a08ba0a52666e42f2b2c7c9d344a7a7f04196a394e990b0f
|
|
| MD5 |
6be321ad5da0ad821a99a11917cd589b
|
|
| BLAKE2b-256 |
a8982f3c9cb1be23090fbc0e8e47988dce62a7df785d92520353727c80adf172
|
File details
Details for the file linear_app-0.0.3-py3-none-any.whl.
File metadata
- Download URL: linear_app-0.0.3-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.15 {"installer":{"name":"uv","version":"0.9.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b72685b3ec5d4dd4d371f3136e35ab766f6796c1e0424e71bba25046c596920
|
|
| MD5 |
83045f250a41b8e0021be7b05a495f2f
|
|
| BLAKE2b-256 |
fe98516489f9ba53e04b38b4ec8000f0d60cc1cdb5f37f6c426a11304bb0f025
|