Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Linear expert for workspace/team admin, Cycles, Projects, Initiatives, Roadmaps, GraphQL API queries, triage workflows, GitHub integration, bulk operations, and Jira-to-Linear migration.
.claude/skills/borghei-linear-expert/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 97% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 110% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 50% | 0% |
Master-level expertise in Linear configuration, workflow design, GraphQL API mastery, Cycle and Project management, Initiative-level roadmaps, triage automation, GitHub integration, and migration from Jira. Covers everything from workspace setup to programmatic bulk operations against the Linear API.
Linear is an opinionated, keyboard-driven issue tracker built around a strict data model (Team → Project → Issue → Sub-issue) and a GraphQL-only public API. Unlike Jira, Linear's strength is its lack of configurability: there is one workflow shape (Backlog → Unstarted → Started → Completed → Canceled), one priority scale (0-4), and a tight set of first-class concepts (Cycles, Projects, Initiatives, Labels, Milestones). The job of a Linear expert is to operate fluently inside those rails while extending the system through the API, automations, and integrations.
Linear's API is GraphQL-only at https://api.linear.app/graphql; auth via personal API key (Authorization: <key>) or OAuth2.
bashlinear_query() { curl -s -X POST https://api.linear.app/graphql \ -H "Authorization: $LINEAR_API_KEY" \ -H "Content-Type: application/json" \ -d "{\"query\": \"$1\"}" }
Cache team/label/state UUIDs locally, use nested selection to avoid N+1 calls, and prefer webhooks over polling. See the references below for the full query catalog and operating workflows.
Load the reference that matches the task — keep this file lean and pull detail on demand:
In Scope: Linear workspace, team, and project configuration; cycle and project planning; Initiative and Roadmap hierarchy; triage workflow design; GitHub PR integration; GraphQL query and mutation authoring; bulk operations via API; webhook configuration; Jira → Linear migration planning and execution.
Out of Scope: Jira-side configuration and migration freeze (hand off to jira-expert/); Notion documentation pages for Linear roadmaps (hand off to notion-pm/); strategic prioritization and OKR setting (hand off to senior-pm/, execution/brainstorm-okrs/); sprint coaching and team health (hand off to scrum-master/); release notes generation from Linear issues (hand off to execution/release-notes/).
Limitations: Linear has no custom fields; all extension happens through labels, descriptions, or external systems. The free tier caps at 250 issues per workspace and excludes Initiatives and SAML. API rate limits are workspace-wide and shared across all keys; heavy automation may require coordination. Importers preserve most history but cannot recreate Jira's custom workflow states; mapping is many-to-five. GraphQL schema evolves continuously; pin client code to the deprecation calendar.
| Integration | Direction | What Flows | |---|---|---| | jira-expert/ | Jira → Linear | Migration mappings, custom-field translation, freeze coordination | | notion-pm/ | Linear → Notion | Roadmap embeds, Initiative pages, project status rollups | | execution/create-prd/ | PRD → Linear | PRD page becomes the Linear Project description; PRD sections become Milestones | | execution/brainstorm-okrs/ | OKR → Linear | Initiatives mapped to Objectives; Projects tagged with KR identifiers | | execution/outcome-roadmap/ | Roadmap → Linear | Outcome roadmap rows mapped to Linear Initiatives; outputs become Projects | | execution/release-notes/ | Linear → Release Notes | Closed issues in a cycle/project become release note line items | | execution/prioritization-frameworks/ | Scoring → Linear | RICE/WSJF scores written back to labels or description fields | | scrum-master/ | Linear → Analytics | Cycle data feeds velocity_analyzer.py and sprint_health_scorer.py | | senior-pm/ | Linear → Portfolio | Initiative-level rollups feed project_health_dashboard.py | | delivery-manager/ | Linear → Release | Project completion state and milestone dates feed release coordination |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 22,644 | 21,144 | -7% | 1 | 1 | 0% | 4,010 | 5,067 | +26% | 0 | 0 | — |
case-02 | fail→pass | 16,686 | 14,550 | -13% | 1 | 1 | 0% | 2,672 | 3,878 | +45% | 0 | 0 | — |
case-03 | pass→pass | 12,497 | 12,131 | -3% | 1 | 1 | 0% | 2,019 | 3,593 | +78% | 0 | 0 | — |
case-04 | fail→pass | 10,834 | 14,165 | +31% | 1 | 1 | 0% | 1,894 | 3,732 | +97% | 0 | 0 | — |
case-05 | fail→pass | 8,625 | 8,738 | +1% | 1 | 1 | 0% | 1,472 | 3,094 | +110% | 0 | 0 | — |
case-06 | pass→pass | 9,455 | 7,459 | -21% | 1 | 1 | 0% | 1,749 | 2,921 | +67% | 0 | 0 | — |
case-07 | fail→pass | 12,195 | 8,905 | -27% | 1 | 1 | 0% | 2,101 | 3,142 | +50% | 0 | 0 | — |
case-08 | pass→pass | 13,541 | 14,418 | +6% | 1 | 1 | 0% | 2,160 | 3,744 | +73% | 0 | 0 | — |
case-09 | fail→pass | 10,097 | 6,889 | -32% | 1 | 1 | 0% | 1,685 | 2,637 | +56% | 0 | 0 | — |
case-10 | pass→pass | 19,250 | 15,198 | -21% | 1 | 1 | 0% | 2,997 | 3,953 | +32% | 0 | 0 | — |
case-11 | pass→pass | 9,911 | 8,892 | -10% | 1 | 1 | 0% | 1,619 | 3,045 | +88% | 0 | 0 | — |
case-12 | pass→pass | 12,998 | 10,496 | -19% | 1 | 1 | 0% | 1,792 | 3,079 | +72% | 0 | 0 | — |
case-13 | pass→pass | 13,554 | 9,281 | -32% | 1 | 1 | 0% | 2,008 | 2,941 | +46% | 0 | 0 | — |
case-14 | fail→fail | 17,521 | 13,457 | -23% | 1 | 1 | 0% | 2,761 | 3,784 | +37% | 0 | 0 | — |
case-15 | pass→pass | 8,999 | 8,587 | -5% | 1 | 1 | 0% | 1,446 | 3,098 | +114% | 0 | 0 | — |
case-16 | pass→pass | 10,332 | 9,258 | -10% | 1 | 1 | 0% | 1,636 | 3,085 | +89% | 0 | 0 | — |
case-17 | pass→pass | 5,517 | 7,958 | +44% | 1 | 1 | 0% | 714 | 2,661 | +273% | 0 | 0 | — |
case-18 | pass→pass | 14,635 | 11,240 | -23% | 1 | 1 | 0% | 2,708 | 3,734 | +38% | 0 | 0 | — |
case-19 | pass→pass | 14,382 | 12,950 | -10% | 1 | 1 | 0% | 2,202 | 3,481 | +58% | 0 | 0 | — |
case-20 | fail→fail | 12,269 | 9,631 | -22% | 1 | 1 | 0% | 2,148 | 3,027 | +41% | 0 | 0 | — |
case-21 | fail→pass | 15,879 | 13,110 | -17% | 1 | 1 | 0% | 2,991 | 2,654 | -11% | 0 | 0 | — |
case-22 | fail→fail | 18,316 | 18,489 | +1% | 1 | 1 | 0% | 2,652 | 4,272 | +61% | 0 | 0 | — |
case-23 | fail→fail | 17,941 | 15,232 | -15% | 1 | 1 | 0% | 2,624 | 3,842 | +46% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +30 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.