Linear Issue Tracking
SkillProductivityLets your agent view, create, and update issues and sprints in Linear.
Then ask your AI: use the Linear Issue Tracking skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add it as a step in a pipeline you build on Ahel, or connect Ahel to Claude, ChatGPT, Cursor, Claude Code or Codex and ask your AI to use it.
About this skill
Manage Linear issues, projects, and cycles via the Linear GraphQL API
What this skill tells your AI
The instructions your AI receives, as published by taracodlabs/aiden in skills/linear/SKILL.md and read by Ahel’s review.
Query and mutate Linear data — issues, projects, cycles, and teams — using the Linear GraphQL API. Requires LINEAR_API_KEY set as an environment variable.
When to Use
- User wants to list open issues in a Linear team or project
- User wants to create a new Linear issue
- User wants to update issue status or priority
- User wants to see issues assigned to them
- User wants to look up current cycle/sprint progress
How to Use
1. Set API key
Generate a Personal API key at https://linear.app/settings/api — select read and write scopes.
$env:LINEAR_API_KEY = "lin_api_..."
2. Run a GraphQL query helper
All Linear API calls are POST to https://api.linear.app/graphql.
function Invoke-Linear($query, $variables = @{}) {
$body = @{ query = $query; variables = $variables } | ConvertTo-Json -Depth 10
$headers = @{ "Authorization" = $env:LINEAR_API_KEY; "Content-Type" = "application/json" }
(Invoke-RestMethod -Uri "https://api.linear.app/graphql" -Method Post -Headers $headers -Body $body).data
}
3. List my assigned issues
$q = '{ viewer { assignedIssues(first: 20, filter: { state: { type: { in: ["started","unstarted"] } } }) { nodes { identifier title priority state { name } } } } }'
(Invoke-Linear $q).viewer.assignedIssues.nodes | Format-Table identifier, title, priority
4. List issues in a team
$q = 'query($key:String!) { team(key:$key) { issues(first:30, filter:{state:{type:{in:["started","unstarted"]}}}) { nodes { identifier title assignee { name } state { name } } } } }'
(Invoke-Linear $q @{ key = "ENG" }).team.issues.nodes | Format-Table identifier, title
5. Create a new issue
# First get teamId
$teamQ = '{ teams { nodes { id key name } } }'
$teams = (Invoke-Linear $teamQ).teams.nodes
$teamId = ($teams | Where-Object key -eq "ENG").id
$mutation = 'mutation($input:IssueCreateInput!) { issueCreate(input:$input) { issue { identifier title url } } }'
$vars = @{ input = @{ teamId = $teamId; title = "Fix login timeout bug"; description = "Users are being logged out after 5 min of inactivity."; priority = 2 } }
(Invoke-Linear $mutation $vars).issueCreate.issue
6. Update issue state
# Get state IDs for the team first
$stateQ = 'query($key:String!) { team(key:$key) { states { nodes { id name } } } }'
$states = (Invoke-Linear $stateQ @{ key = "ENG" }).team.states.nodes
$doneId = ($states | Where-Object name -eq "Done").id
$mutation = 'mutation($id:String! $stateId:String!) { issueUpdate(id:$id input:{stateId:$stateId}) { issue { identifier state { name } } } }'
(Invoke-Linear $mutation @{ id = "ENG-42"; stateId = $doneId }).issueUpdate.issue
7. List current cycle
$q = 'query($key:String!) { team(key:$key) { activeCycle { name startsAt endsAt progress issues(first:50) { nodes { identifier title state { name } } } } } }'
(Invoke-Linear $q @{ key = "ENG" }).team.activeCycle | Select-Object name, progress
Examples
"Show me all my open Linear issues" → Use steps 2–3 to list viewer's assigned unstarted/in-progress issues.
"Create a Linear issue: 'Update onboarding flow' in the PRODUCT team" → Use step 5 — fetch team ID for PRODUCT, then create with given title.
"What's the progress on the current sprint?" → Use step 7 — ask user for their team key, then show activeCycle progress.
Cautions
- Linear API keys are personal — they act as the user who created them
- Priority values: 0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low
- Issue IDs look like
ENG-42but mutations need the UUID — always fetch UUID from the issues list - GraphQL depth limit is ~6 levels — avoid deeply nested queries
Signals
- GitHub stars
- 851
- Forks
- 149
- Last commit
- Sep 2026
- Hacker News mentions
- 20
Ahel review
S4info
community integration, published by taracodlabs, not linear
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
linear-taracodlabs- Source
- github.com/taracodlabs/aiden
Related picks
Skill · davila7
The pick for Linearlinear-ci-integration
Skill · jeremylongshore
The pick for Linearsocial
Skill · coreyhaines31
More in Productivityfrontend-ui-engineering
Skill · addyosmani
More in Productivitycontent-strategy
Skill · coreyhaines31
More in Productivityagent-self-evaluation
Skill · affaan-m
More in Productivity