Unofficial Linear extension for VS Code and Cursor. Manage issues, branches, pull requests, and agent workflows without leaving the editor.
- Connect your Linear account and browse My Issues or Current Cycle in the activity bar
- Open issues in a rich React panel (TipTap editor, comments, sub-issues, attachments, history)
- Drag and drop issues from the tree view to open them
- Move issues between workflow states via drag and drop (multi-select supported)
- Persisted expand/collapse state for teams and workflow columns
- Assignee avatar icons in the tree view
- Inline hover actions on issues:
- Start work or Switch to branch (when a branch is configured)
- Create pull request (when a branch exists and a git provider is connected)
- Open on Linear
- Start Work flow: create or bind a branch, update issue state/cycle, optional stash
- Git provider settings for GitHub, GitLab, and Bitbucket Cloud (OAuth or API token)
- Pull requests sidebar: open linked issues, diff, switch to source branch, open on the web
- Create or open pull requests from issue branches (target branch picker)
- Workflow: branch naming, prefixes, stash-before-create, auto-refresh interval
- Git: provider connection, credentials, setup instructions with clickable links
- Work with agent (Cursor): customizable prompt templates with placeholders
- Start work with agent: open Composer with a prompt that loads the Linear ticket via MCP
- Review with agent: review a PR diff with linked-issue context via MCP
- Bundled Linear Manager MCP server (issues, comments, related issues, PR metadata, diffs)
- Agent prompts support
{{editorLanguage}}and instruct the agent to respond in the editor UI language
- VS Code 1.105.0 or higher (including Cursor)
- Linear Connect extension
- Git extension (
vscode.git, usually built-in)
- Install Linear Manager from the marketplace (or load the VSIX in development)
- Reload the window
- Open the Linear activity bar view and run Connect to Linear
- Open Linear manager in the activity bar
- Run Connect to Linear if you are not authenticated
- Use My issues to see assigned work, or toggle Current Cycle from the view title bar
- Open: click an issue, use the context menu, or drag it to the editor
- Start work: create/configure a Git branch from the context menu or inline play button
- Switch to branch: switch to the issue branch (inline button when a branch is configured)
- Create pull request: inline button when a branch and git provider are configured
- Open on Linear: inline external-link button or context menu
When a git provider is connected for the current repository:
- Lists open pull requests for the origin remote
- Click a row to open the linked Linear issue (or the PR on the web)
- Inline actions: review with agent (Cursor), open diff, switch to branch, open on web
| Shortcut | Command | Description |
|---|---|---|
Cmd+K I (Mac) / Ctrl+K I (Win/Linux) |
Open Issue for Current Branch | Open the Linear issue for the current Git branch |
| Command | Description |
|---|---|
| Connect / Disconnect from Linear | Authenticate or sign out |
| Open Issue | Open issue in the editor panel |
| Open on Linear | Open issue in the browser |
| Start work on issue | Branch setup workflow |
| Start work with agent | Launch Cursor Composer with issue MCP context (Cursor) |
| Switch to branch | Switch to the issue branch |
| Create pull request | Open provider compare/create flow |
| Review with agent | Review PR with MCP context (Cursor) |
| Refresh / Toggle View | Reload data or switch My Issues ↔ Current Cycle |
| Open settings | Workflow, Git, and agent prompt settings |
src/
├── extension.ts # Activation entry point
├── controller.ts # Extension lifecycle and services
├── linear/ # LinearService, API, caching
├── git/ # Git client, branch checkout, diffs
├── gitProviders/ # GitHub, GitLab, Bitbucket integrations
├── mcp/ # Bundled Linear Manager MCP server
├── cursor/ # Agent prompts, Cursor detection, MCP registration
├── panels/ # Webview panels (issue, start work, settings)
├── views/
│ ├── myIssues/ # My Issues tree view
│ └── pullRequests/ # Pull requests tree view
├── webviews/ # React UI (issue panel, settings, start work)
└── test/ # Unit and integration tests
npm installnpm run watchPress F5 to launch an Extension Development Host.
npm run packagenpm run check:types && npm run lint && npm run testWhen CSS/SCSS files change, also run:
npm run lint:stylesOr run everything:
npm run lint:all| Script | Description |
|---|---|
npm run watch |
Extension + webview rebuild on change |
npm run compile |
Compile extension host |
npm run package |
Production webpack build |
npm run check:types |
TypeScript check |
npm run lint |
ESLint |
npm run lint:styles |
Stylelint (CSS/SCSS) |
npm run lint:all |
ESLint + Prettier + Stylelint |
npm run test |
Unit and integration tests |
npm run analyze:webview |
Webpack bundle analysis (webview) |
- Extension host: TypeScript, VS Code Extension API, Linear SDK, Simple Git
- Webviews: React, TipTap, RSuite, Sass
- Build: Webpack, Fork TS Checker
- Quality: ESLint, Stylelint, Prettier, Mocha +
@vscode/test-electron
Contributions are welcome. Please open an issue or PR on GitHub.
Before submitting:
- Run
npm run check:types && npm run lint && npm run test(andnpm run lint:stylesif you changed styles) - Add tests for testable logic changes
- Update CHANGELOG.md for user-visible features and fixes
MIT
Report bugs or request features on GitHub Issues.