@alasano/pi-linear
v0.2.0
Published
Linear integration for pi with 55+ tools, multi-workspace auth, and per-tool settings
Downloads
477
Readme
pi-linear
Linear integration for pi with 55+ tools covering issues, projects, documents, initiatives, comments, relations, and more. Includes multi-workspace auth and a per-tool settings overlay.
Prerequisites
You need a Linear API key. To create one:
- Go to Linear Settings > Account > Security & Access > API
- Click Create key and give it a name (e.g. "pi")
- Under Permissions, select Only select permissions with Read and Write enabled. Leave Admin unchecked.
- Under Team access, choose All teams you have access to or scope to specific teams if you prefer
- Click Create and copy the key
Install
pi install npm:@alasano/pi-linearAuthentication
The extension auto-detects the LINEAR_API_KEY environment variable if set globally. No setup needed in that case.
For multi-workspace support or if you don't have the env var, use the /linear-auth command:
| Command | Description |
| ---------------------------- | -------------------------------------------------------- |
| /linear-auth add <name> | Add a workspace with an API key (prompts for key) |
| /linear-auth remove <name> | Remove a workspace (shows selector if name omitted) |
| /linear-auth switch <name> | Switch active workspace (shows selector if name omitted) |
| /linear-auth status | Show current auth source and configured workspaces |
| /linear-auth | Same as status |
When you add your first workspace, it becomes active automatically. Adding a second workspace prompts you to switch. After a /reload with two or more workspaces configured, the agent gets a linear_switch_workspace tool and can switch between them when asked.
Auth resolution order:
- Active stored workspace (if any workspaces are configured)
LINEAR_API_KEYenvironment variable (fallback when no workspaces configured)- Interactive prompt (asks you to set up a key)
Credentials are stored at ~/.pi/agent/state/extensions/linear/credentials.json.
Tool settings
Run /linear-settings to open an overlay where you can choose the default output view and enable or disable tools by category or individually. Linear results default to a human-readable view, with full JSON available via Ctrl+O; you can flip the default to full JSON if you prefer. Disabled tools are removed from the LLM's context entirely. Preferences persist across sessions.
Tools (55)
Issues
| Tool | Description |
| ------------------------ | ------------------------------------------------------------------ |
| linear_list_issues | List issues with filters, pagination, and sort |
| linear_get_issue | Get full issue details by identifier (ENG-123) or id |
| linear_create_issue | Create an issue with full IssueCreateInput support |
| linear_update_issue | Update an issue with full IssueUpdateInput support |
| linear_delete_issue | Delete an issue (admins can permanently delete) |
| linear_archive_issue | Archive or trash an issue |
| linear_unarchive_issue | Restore an archived issue |
| linear_search_issues | Search issues by text, with optional comment search and team boost |
Issue Labels
| Tool | Description |
| --------------------------- | ---------------------------------- |
| linear_list_issue_labels | List issue labels with team filter |
| linear_create_issue_label | Create an issue label |
| linear_update_issue_label | Update an issue label |
| linear_delete_issue_label | Delete an issue label |
Issue Statuses
| Tool | Description |
| ---------------------------- | ------------------------------------- |
| linear_list_issue_statuses | List workflow states (issue statuses) |
Issue Relations
| Tool | Description |
| ------------------------------ | ------------------------------------------------------- |
| linear_list_issue_relations | List issue relations |
| linear_create_issue_relation | Create a relation (blocks, duplicate, related, similar) |
| linear_update_issue_relation | Update a relation |
| linear_delete_issue_relation | Delete a relation |
Projects
| Tool | Description |
| -------------------------- | ------------------------------------------------ |
| linear_list_projects | List projects with filters, pagination, and sort |
| linear_get_project | Get full project details by id |
| linear_save_project | Create or update a project |
| linear_delete_project | Delete a project |
| linear_archive_project | Archive or trash a project |
| linear_unarchive_project | Restore an archived project |
Project Labels
| Tool | Description |
| ----------------------------- | ---------------------- |
| linear_list_project_labels | List project labels |
| linear_create_project_label | Create a project label |
| linear_update_project_label | Update a project label |
| linear_delete_project_label | Delete a project label |
Project Relations
| Tool | Description |
| -------------------------------- | ------------------------- |
| linear_list_project_relations | List project relations |
| linear_create_project_relation | Create a project relation |
| linear_update_project_relation | Update a project relation |
| linear_delete_project_relation | Delete a project relation |
Documents
| Tool | Description |
| --------------------------- | ------------------------------------------ |
| linear_list_documents | List documents with filters and pagination |
| linear_get_document | Get full document details by id |
| linear_create_document | Create a document |
| linear_update_document | Update a document |
| linear_delete_document | Delete a document |
| linear_unarchive_document | Restore an archived document |
Comments
| Tool | Description |
| ----------------------- | -------------------------------------------------- |
| linear_list_comments | List comments with filters and pagination |
| linear_create_comment | Create a comment on an issue, project update, etc. |
| linear_update_comment | Update a comment |
| linear_delete_comment | Delete a comment |
Initiatives
| Tool | Description |
| ----------------------------- | --------------------------------------------------- |
| linear_list_initiatives | List initiatives with filters, pagination, and sort |
| linear_get_initiative | Get full initiative details by id |
| linear_save_initiative | Create or update an initiative |
| linear_delete_initiative | Delete an initiative |
| linear_archive_initiative | Archive an initiative |
| linear_unarchive_initiative | Restore an archived initiative |
Milestones
| Tool | Description |
| ------------------------- | ---------------------------- |
| linear_list_milestones | List project milestones |
| linear_get_milestone | Get milestone details by id |
| linear_save_milestone | Create or update a milestone |
| linear_delete_milestone | Delete a milestone |
Teams
| Tool | Description |
| ------------------- | ------------------------------- |
| linear_list_teams | List teams with workflow states |
| linear_get_team | Get team details by id |
Users
| Tool | Description |
| ------------------- | ---------------------- |
| linear_list_users | List users |
| linear_get_user | Get user details by id |
Workspaces
| Tool | Description |
| ------------------------- | ----------------------------------------------------------- |
| linear_switch_workspace | Switch active workspace (only available with 2+ workspaces) |
Requirements
- Pi interactive mode (settings overlay uses the widget API)
