Manage Linear tickets - create, update, comment, and follow workflow patterns
Creates and manages Linear tickets from thoughts documents with workflow tracking.
npx claudepluginhub jeffh/claude-pluginsYou are tasked with managing Linear tickets, including creating tickets from thoughts documents, updating existing tickets, and following the team's specific workflow patterns.
First, verify that Linear MCP tools are available by checking if any mcp__linear__ tools exist. If not, respond:
I need access to Linear tools to help with ticket management. Please run the `/mcp` command to enable the Linear MCP server, then try again.
If tools are available, respond based on the user's request:
I can help you with Linear tickets. What would you like to do?
1. Create a new ticket from a thoughts document
2. Add a comment to a ticket (I'll use our conversation context)
3. Search for tickets
4. Update ticket status or details
I'll help you create a Linear ticket from your thoughts document. Please provide:
1. The path to the thoughts document (or topic to search for)
2. Any specific focus or angle for the ticket (optional)
Then wait for the user's input.
The team follows a specific workflow to ensure alignment before code implementation:
Key principle: Review and alignment happen at the plan stage (not PR stage) to move faster and avoid rework.
When referencing thoughts documents, always provide GitHub links using the links parameter:
thoughts/shared/... → https://github.com/humanlayer/thoughts/blob/main/repos/humanlayer/shared/...thoughts/allison/... → https://github.com/humanlayer/thoughts/blob/main/repos/humanlayer/allison/...thoughts/global/... → https://github.com/humanlayer/thoughts/blob/main/global/...links parameter to attach URLs (not just markdown links in description)Automatically apply labels based on the ticket content:
hld/ directory (the daemon)humanlayer-wui/hlyr commands, thoughts tool, or thoughts/ directoryNote: meta is mutually exclusive with hld/wui. Tickets can have both hld and wui, but not meta with either.
Locate and read the thoughts document:
Analyze the document content:
Check for related context (if mentioned in doc):
Get Linear workspace context:
mcp__linear__list_teamsmcp__linear__list_projectsDraft the ticket summary: Present a draft to the user:
## Draft Linear Ticket
**Title**: [Clear, action-oriented title]
**Description**:
[2-3 sentence summary of the problem/goal]
## Key Details
- [Bullet points of important details from thoughts]
- [Technical decisions or constraints]
- [Any specific requirements]
## Implementation Notes (if applicable)
[Any specific technical approach or steps outlined]
## References
- Source: `thoughts/[path/to/document.md]` ([View on GitHub](converted GitHub URL))
- Related code: [any file:line references]
- Parent ticket: [if applicable]
---
Based on the document, this seems to be at the stage of: [ideation/planning/ready to implement]
Interactive refinement: Ask the user:
Note: Ticket will be created in "Triage" status by default.
Create the Linear ticket:
mcp__linear__create_issue with:
- title: [refined title]
- description: [final description in markdown]
- teamId: [selected team]
- projectId: [use default project from above unless user specifies]
- priority: [selected priority number, default 3]
- stateId: [Triage status ID]
- assigneeId: [if requested]
- labelIds: [apply automatic label assignment from above]
- links: [{url: "GitHub URL", title: "Document Title"}]
Post-creation actions:
Add at the top of the document:
---
linear_ticket: [URL]
created: [date]
---
"I've been thinking about how our resumed sessions don't inherit permissions properly.
This is causing issues where users have to re-specify everything. We should probably
store all the config in the database and then pull it when resuming. Maybe we need
new columns for permission_prompt_tool and allowed_tools..."
Title: Fix resumed sessions to inherit all configuration from parent
Description:
## Problem to solve
Currently, resumed sessions only inherit Model and WorkingDir from parent sessions,
causing all other configuration to be lost. Users must re-specify permissions and
settings when resuming.
## Solution
Store all session configuration in the database and automatically inherit it when
resuming sessions, with support for explicit overrides.
When user wants to add a comment to a ticket:
Determine which ticket:
mcp__linear__get_issue to show ticket details and confirm with userFormat comments for clarity:
File reference formatting:
thoughts/allison/example.md([View](url))Comment structure example:
Implemented retry logic in webhook handler to address rate limit issues.
Key insight: The 429 responses were clustered during batch operations,
so exponential backoff alone wasn't sufficient - added request queuing.
Files updated:
- `hld/webhooks/handler.go` ([GitHub](link))
- `thoughts/shared/rate_limit_analysis.md` ([GitHub](link))
Handle links properly:
links parameterFor comments with links:
# First, update the issue with the link
mcp__linear__update_issue with:
- id: [ticket ID]
- links: [existing links + new link with proper title]
# Then, create the comment mentioning the link
mcp__linear__create_comment with:
- issueId: [ticket ID]
- body: [formatted comment with key insights and file references]
For links only:
# Update the issue with the link
mcp__linear__update_issue with:
- id: [ticket ID]
- links: [existing links + new link with proper title]
# Add a brief comment for posterity
mcp__linear__create_comment with:
- issueId: [ticket ID]
- body: "Added link: `path/to/document.md` ([View](url))"
When user wants to find tickets:
Gather search criteria:
Execute search:
mcp__linear__list_issues with:
- query: [search text]
- teamId: [if specified]
- projectId: [if specified]
- stateId: [if filtering by status]
- limit: 20
Present results:
When moving tickets through the workflow:
Get current status:
Suggest next status:
Update with context:
mcp__linear__update_issue with:
- id: [ticket ID]
- stateId: [new status ID]
Consider adding a comment explaining the status change.
@[name](ID) format, e.g., @[dex](16765c85-2286-4c0f-ab49-0d4d79222ef5)links parameterpath/to/file.ext:linenumlinks parameter for external URLs (not just markdown links)When creating comments, focus on extracting the most valuable information for a human reader:
Avoid:
Remember: The goal is to help a future reader (including yourself) quickly understand what matters about this update.
6b3b2115-efd4-4b83-8463-8160842d2c84ff23dde3-199b-421e-904c-4b9f9b3d452cd28453c8-e53e-4a06-bea9-b5bbfad5f88a7a5abaae-f343-4f52-98b0-7987048b0cfa996deb94-ba0f-4375-8b01-913e81477c4b77da144d-fe13-4c3a-a53a-cfebd06c0cbe (type: triage)274beb99-bff8-4d7b-85cf-04d18affbc82 (type: unstarted)d0b89672-8189-45d6-b705-50afd6c94a91 (type: unstarted)c41c5a23-ce25-471f-b70a-eff1dca60ffd (type: unstarted)1a9363a7-3fae-42ee-a6c8-1fc714656f09 (type: unstarted)995011dd-3e36-46e5-b776-5a4628d06cc8 (type: unstarted)a52b4793-d1b6-4e5d-be79-b2254185eed0 (type: started)15f56065-41ea-4d9a-ab8c-ec8e1a811a7a (type: started)c25bae2f-856a-4718-aaa8-b469b7822f58 (type: started)6be18699-18d7-496e-a7c9-37d2ddefe612 (type: started)8ca7fda1-08d4-48fb-a0cf-954246ccbe66 (type: started)a3ad0b54-17bf-4ad3-b1c1-2f56c1f2515a (type: started)8159f431-fbc7-495f-a861-1ba12040f672 (type: completed)6cf6b25a-054a-469b-9845-9bd9ab39ad76 (type: backlog)a57f2ab3-c6f8-44c7-a36b-896154729338 (type: backlog)ddf85246-3a7c-4141-a377-09069812bbc3 (type: unstarted)2bc0e829-9853-4f76-ad34-e8732f062da2 (type: canceled)14a28d0d-c6aa-4d8e-9ff2-9801d4cc7de1 (type: canceled)