Create Linear tickets from action items or task lists. Load when user says "create linear tickets", "add tickets to linear", "create tickets from meeting", "linear ticket for [task]", or wants to convert action items into Linear issues.
Batch create Linear tickets from action items using the GraphQL API.
Convert action items (from meetings, planning sessions, or direct input) into Linear tickets with proper formatting, project assignment, and priority.
Requirements: Linear API key in .env
# Add to .env (NO Bearer prefix when using!)
LINEAR_API_KEY=lin_api_xxxxx
Get your API key: Linear Settings → API → Personal API Keys
API Endpoint: https://api.linear.app/graphql
Auth Header: Authorization: {LINEAR_API_KEY} (NO "Bearer" prefix!)
Team IDs:
| Team | ID |
|---|
| Clients | 2686694f-6343-48a0-9efb-d69d77aaa621 |
State IDs (Clients team):
| State | ID |
|---|---|
| Todo | d8899534-a204-4446-a06b-681cbc4c6e04 |
| In Progress | 9a2c9ba8-5931-491e-8298-c9fb761aab23 |
| In Review | 7866c5ad-5654-4516-849f-b3f7462613d6 |
| Done | 40112a2a-870e-48ca-aeff-7f16356acd90 |
Priority Values:
| Priority | Value |
|---|---|
| Urgent | 1 |
| High | 2 |
| Medium | 3 |
| Low | 4 |
Accept from:
create-meeting-minutesInclude:
Exclude:
Ask user or infer:
GraphQL Mutation:
mutation CreateIssue($input: IssueCreateInput!) {
issueCreate(input: $input) {
success
issue {
id
identifier
title
url
}
}
}
Variables:
{
"input": {
"title": "Task title (no project prefix)",
"teamId": "2686694f-6343-48a0-9efb-d69d77aaa621",
"projectId": "PROJECT_UUID",
"stateId": "d8899534-a204-4446-a06b-681cbc4c6e04",
"priority": 3,
"description": "## Context\nFrom meeting: [date]\n\n## Description\n[Task details]"
}
}
Created 3 tickets:
1. CLI-456 - Implement data validation logic
URL: https://linear.app/team/issue/CLI-456
2. CLI-457 - Update documentation for new API
URL: https://linear.app/team/issue/CLI-457
Title Rules:
Description Template:
## Context
[Reference to source - meeting, discussion, etc.]
## Description
[What needs to be done]
## Acceptance Criteria
- [ ] Criterion 1
- [ ] Criterion 2
Get Teams:
query { teams { nodes { id name } } }
Get Projects in Team:
query($teamId: String!) {
team(id: $teamId) {
projects { nodes { id name } }
}
}
Get States:
query($teamId: String!) {
team(id: $teamId) {
states { nodes { id name } }
}
}
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Wrong auth format | Use key directly, NO "Bearer" prefix |
| Project not found | Invalid project ID | Query projects first |
| Invalid state | Wrong state ID | Query team states |
create-meeting-minutes - Source of action itemslinear-update-tickets - Update existing ticketscreate-weekly-update - Report on Linear activityprocess-client-meeting - Full workflowVersion: 1.0 Integration: Linear GraphQL API Owner: Hassaan Ahmed