linear-automation
Automate Linear tasks via Rube MCP (Composio): issues, projects, cycles, teams, labels. Always search tools first for current schemas.
Install
npx skills add https://github.com/davepoon/buildwithclaude/tree/main/plugins/all-skills/skills/linear-automation
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install davepoon-buildwithclaude@llmmart
git clone https://github.com/davepoon/buildwithclaude.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole davepoon/buildwithclaude collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Linear Automation via Rube MCP
Automate Linear operations through Composio's Linear toolkit via Rube MCP.
Toolkit docs: composio.dev/toolkits/linear
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Linear connection via
RUBE_MANAGE_CONNECTIONSwith toolkitlinear - Always call
RUBE_SEARCH_TOOLSfirst to get current tool schemas
Setup
Get Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
RUBE_SEARCH_TOOLSresponds - Call
RUBE_MANAGE_CONNECTIONSwith toolkitlinear - If connection is not ACTIVE, follow the returned auth link to complete Linear OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Manage Issues
When to use: User wants to create, search, update, or list Linear issues
Tool sequence:
LINEAR_GET_ALL_LINEAR_TEAMS- Get team IDs [Prerequisite]LINEAR_LIST_LINEAR_STATES- Get workflow states for a team [Prerequisite]LINEAR_CREATE_LINEAR_ISSUE- Create a new issue [Optional]LINEAR_SEARCH_ISSUES/LINEAR_LIST_LINEAR_ISSUES- Find issues [Optional]LINEAR_GET_LINEAR_ISSUE- Get issue details [Optional]LINEAR_UPDATE_ISSUE- Update issue properties [Optional]
Key parameters:
team_id: Team ID (required for creation)title: Issue titledescription: Issue description (Markdown supported)state_id: Workflow state IDassignee_id: Assignee user IDpriority: 0 (none), 1 (urgent), 2 (high), 3 (medium), 4 (low)label_ids: Array of label IDs
Pitfalls:
- Team ID is required when creating issues; use GET_ALL_LINEAR_TEAMS first
- State IDs are team-specific; use LIST_LINEAR_STATES with the correct team
- Priority uses integer values 0-4, not string names
2. Manage Projects
When to use: User wants to create or update Linear projects
Tool sequence:
LINEAR_LIST_LINEAR_PROJECTS- List existing projects [Optional]LINEAR_CREATE_LINEAR_PROJECT- Create a new project [Optional]LINEAR_UPDATE_LINEAR_PROJECT- Update project details [Optional]
Key parameters:
name: Project namedescription: Project descriptionteam_ids: Array of team IDs associated with the projectstate: Project state (e.g., 'planned', 'started', 'completed')
Pitfalls:
- Projects span teams; they can be associated with multiple teams
3. Manage Cycles
When to use: User wants to work with Linear cycles (sprints)
Tool sequence:
LINEAR_GET_ALL_LINEAR_TEAMS- Get team ID [Prerequisite]LINEAR_GET_CYCLES_BY_TEAM_ID/LINEAR_LIST_LINEAR_CYCLES- List cycles [Required]
Key parameters:
team_id: Team ID for cycle operationsnumber: Cycle number
Pitfalls:
- Cycles are team-specific; always scope by team_id
4. Manage Labels and Comments
When to use: User wants to create labels or comment on issues
Tool sequence:
LINEAR_CREATE_LINEAR_LABEL- Create a new label [Optional]LINEAR_CREATE_LINEAR_COMMENT- Comment on an issue [Optional]LINEAR_UPDATE_LINEAR_COMMENT- Edit a comment [Optional]
Key parameters:
name: Label namecolor: Label color (hex)issue_id: Issue ID for commentsbody: Comment body (Markdown)
Pitfalls:
- Labels can be team-scoped or workspace-scoped
- Comment body supports Markdown formatting
5. Custom GraphQL Queries
When to use: User needs advanced queries not covered by standard tools
Tool sequence:
LINEAR_RUN_QUERY_OR_MUTATION- Execute custom GraphQL [Required]
Key parameters:
query: GraphQL query or mutation stringvariables: Variables for the query
Pitfalls:
- Requires knowledge of Linear's GraphQL schema
- Rate limits apply to GraphQL queries
Common Patterns
ID Resolution
Team name -> Team ID:
1. Call LINEAR_GET_ALL_LINEAR_TEAMS
2. Find team by name in response
3. Extract id field
State name -> State ID:
1. Call LINEAR_LIST_LINEAR_STATES with team_id
2. Find state by name
3. Extract id field
Pagination
- Linear tools return paginated results
- Check for pagination cursors in responses
- Pass cursor to next request for additional pages
Known Pitfalls
Team Scoping:
- Issues, states, and cycles are team-specific
- Always resolve team_id before creating issues
Priority Values:
- 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low
- Use integer values, not string names
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List teams | LINEAR_GET_ALL_LINEAR_TEAMS | (none) |
| Create issue | LINEAR_CREATE_LINEAR_ISSUE | team_id, title, description |
| Search issues | LINEAR_SEARCH_ISSUES | query |
| List issues | LINEAR_LIST_LINEAR_ISSUES | team_id, filters |
| Get issue | LINEAR_GET_LINEAR_ISSUE | issue_id |
| Update issue | LINEAR_UPDATE_ISSUE | issue_id, fields |
| List states | LINEAR_LIST_LINEAR_STATES | team_id |
| List projects | LINEAR_LIST_LINEAR_PROJECTS | (none) |
| Create project | LINEAR_CREATE_LINEAR_PROJECT | name, team_ids |
| Update project | LINEAR_UPDATE_LINEAR_PROJECT | project_id, fields |
| List cycles | LINEAR_LIST_LINEAR_CYCLES | team_id |
| Get cycles | LINEAR_GET_CYCLES_BY_TEAM_ID | team_id |
| Create label | LINEAR_CREATE_LINEAR_LABEL | name, color |
| Create comment | LINEAR_CREATE_LINEAR_COMMENT | issue_id, body |
| Update comment | LINEAR_UPDATE_LINEAR_COMMENT | comment_id, body |
| List users | LINEAR_LIST_LINEAR_USERS | (none) |
| Current user | LINEAR_GET_CURRENT_USER | (none) |
| Run GraphQL | LINEAR_RUN_QUERY_OR_MUTATION | query, variables |
Powered by Composio
Files (buildwithclaude)
-
SKILL.md 5.9 KB
--- name: linear-automation description: "Automate Linear tasks via Rube MCP (Composio): issues, projects, cycles, teams, labels. Always search tools first for current schemas." requires: mcp: [rube] category: project-management --- # Linear Automation via Rube MCP Automate Linear operations through Composio's Linear toolkit via Rube MCP. **Toolkit docs**: [composio.dev/toolkits/linear](https://composio.dev/toolkits/linear) ## Prerequisites - Rube MCP must be connected (RUBE_SEARCH_TOOLS available) - Active Linear connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `linear` - Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas ## Setup **Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works. 1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds 2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `linear` 3. If connection is not ACTIVE, follow the returned auth link to complete Linear OAuth 4. Confirm connection status shows ACTIVE before running any workflows ## Core Workflows ### 1. Manage Issues **When to use**: User wants to create, search, update, or list Linear issues **Tool sequence**: 1. `LINEAR_GET_ALL_LINEAR_TEAMS` - Get team IDs [Prerequisite] 2. `LINEAR_LIST_LINEAR_STATES` - Get workflow states for a team [Prerequisite] 3. `LINEAR_CREATE_LINEAR_ISSUE` - Create a new issue [Optional] 4. `LINEAR_SEARCH_ISSUES` / `LINEAR_LIST_LINEAR_ISSUES` - Find issues [Optional] 5. `LINEAR_GET_LINEAR_ISSUE` - Get issue details [Optional] 6. `LINEAR_UPDATE_ISSUE` - Update issue properties [Optional] **Key parameters**: - `team_id`: Team ID (required for creation) - `title`: Issue title - `description`: Issue description (Markdown supported) - `state_id`: Workflow state ID - `assignee_id`: Assignee user ID - `priority`: 0 (none), 1 (urgent), 2 (high), 3 (medium), 4 (low) - `label_ids`: Array of label IDs **Pitfalls**: - Team ID is required when creating issues; use GET_ALL_LINEAR_TEAMS first - State IDs are team-specific; use LIST_LINEAR_STATES with the correct team - Priority uses integer values 0-4, not string names ### 2. Manage Projects **When to use**: User wants to create or update Linear projects **Tool sequence**: 1. `LINEAR_LIST_LINEAR_PROJECTS` - List existing projects [Optional] 2. `LINEAR_CREATE_LINEAR_PROJECT` - Create a new project [Optional] 3. `LINEAR_UPDATE_LINEAR_PROJECT` - Update project details [Optional] **Key parameters**: - `name`: Project name - `description`: Project description - `team_ids`: Array of team IDs associated with the project - `state`: Project state (e.g., 'planned', 'started', 'completed') **Pitfalls**: - Projects span teams; they can be associated with multiple teams ### 3. Manage Cycles **When to use**: User wants to work with Linear cycles (sprints) **Tool sequence**: 1. `LINEAR_GET_ALL_LINEAR_TEAMS` - Get team ID [Prerequisite] 2. `LINEAR_GET_CYCLES_BY_TEAM_ID` / `LINEAR_LIST_LINEAR_CYCLES` - List cycles [Required] **Key parameters**: - `team_id`: Team ID for cycle operations - `number`: Cycle number **Pitfalls**: - Cycles are team-specific; always scope by team_id ### 4. Manage Labels and Comments **When to use**: User wants to create labels or comment on issues **Tool sequence**: 1. `LINEAR_CREATE_LINEAR_LABEL` - Create a new label [Optional] 2. `LINEAR_CREATE_LINEAR_COMMENT` - Comment on an issue [Optional] 3. `LINEAR_UPDATE_LINEAR_COMMENT` - Edit a comment [Optional] **Key parameters**: - `name`: Label name - `color`: Label color (hex) - `issue_id`: Issue ID for comments - `body`: Comment body (Markdown) **Pitfalls**: - Labels can be team-scoped or workspace-scoped - Comment body supports Markdown formatting ### 5. Custom GraphQL Queries **When to use**: User needs advanced queries not covered by standard tools **Tool sequence**: 1. `LINEAR_RUN_QUERY_OR_MUTATION` - Execute custom GraphQL [Required] **Key parameters**: - `query`: GraphQL query or mutation string - `variables`: Variables for the query **Pitfalls**: - Requires knowledge of Linear's GraphQL schema - Rate limits apply to GraphQL queries ## Common Patterns ### ID Resolution **Team name -> Team ID**: ``` 1. Call LINEAR_GET_ALL_LINEAR_TEAMS 2. Find team by name in response 3. Extract id field ``` **State name -> State ID**: ``` 1. Call LINEAR_LIST_LINEAR_STATES with team_id 2. Find state by name 3. Extract id field ``` ### Pagination - Linear tools return paginated results - Check for pagination cursors in responses - Pass cursor to next request for additional pages ## Known Pitfalls **Team Scoping**: - Issues, states, and cycles are team-specific - Always resolve team_id before creating issues **Priority Values**: - 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low - Use integer values, not string names ## Quick Reference | Task | Tool Slug | Key Params | |------|-----------|------------| | List teams | LINEAR_GET_ALL_LINEAR_TEAMS | (none) | | Create issue | LINEAR_CREATE_LINEAR_ISSUE | team_id, title, description | | Search issues | LINEAR_SEARCH_ISSUES | query | | List issues | LINEAR_LIST_LINEAR_ISSUES | team_id, filters | | Get issue | LINEAR_GET_LINEAR_ISSUE | issue_id | | Update issue | LINEAR_UPDATE_ISSUE | issue_id, fields | | List states | LINEAR_LIST_LINEAR_STATES | team_id | | List projects | LINEAR_LIST_LINEAR_PROJECTS | (none) | | Create project | LINEAR_CREATE_LINEAR_PROJECT | name, team_ids | | Update project | LINEAR_UPDATE_LINEAR_PROJECT | project_id, fields | | List cycles | LINEAR_LIST_LINEAR_CYCLES | team_id | | Get cycles | LINEAR_GET_CYCLES_BY_TEAM_ID | team_id | | Create label | LINEAR_CREATE_LINEAR_LABEL | name, color | | Create comment | LINEAR_CREATE_LINEAR_COMMENT | issue_id, body | | Update comment | LINEAR_UPDATE_LINEAR_COMMENT | comment_id, body | | List users | LINEAR_LIST_LINEAR_USERS | (none) | | Current user | LINEAR_GET_CURRENT_USER | (none) | | Run GraphQL | LINEAR_RUN_QUERY_OR_MUTATION | query, variables | --- *Powered by [Composio](https://composio.dev)*
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.