← ClaudeAtlas

linearlisted

Use when user references Linear, linear.app/*/issue/ URLs, or an issue key like ENG-123, or asks to list/create/update/comment on Linear issues, teams, projects, or cycles. Multi-workspace via LINEAR_PROFILE.
tuannv14/claude-team-toolkit · ★ 1 · Testing & QA · score 70
Install: claude install-skill tuannv14/claude-team-toolkit
# /linear — Linear GraphQL API (multi-workspace) One endpoint: `POST https://api.linear.app/graphql`. No REST API exists. Arguments: `$ARGUMENTS`. Profile: `--profile` → `LINEAR_PROFILE` → `~/.linear/active_profile` → `[default]`. Deps: `curl`, `jq` 1.6+. ## Overview Auth header is **`Authorization: <api_key>` with NO `Bearer`** (`Bearer` is OAuth-only and a personal key sent that way is rejected). Full curl + jq per verb in **[recipes.md](recipes.md)** — load it when a verb is invoked. ## When to Use - Triage: list unresolved, fetch `ENG-123`, comment, change state - User pastes `https://linear.app/<workspace>/issue/ENG-123/...` - Filing an issue for a bug found during a session - Team / state / project / cycle lookup; multi-workspace work ## When NOT to Use - Webhooks or OAuth apps → both need your own HTTP server - Bulk import or migration → Linear's own importers are safer - Linear Asks in Slack → that is Slack's side ## Profile config `~/.linear/credentials` (mode 600): ```ini [default] api_key = lin_api_YOUR-KEY-HERE default_team = ENG read_only = true [work] api_key = lin_api_YOUR-KEY-HERE default_team = PLAT require_confirm = true ``` `default_team` is the team **key** (`ENG`), not a UUID. **Get a key:** Linear → Settings → Account → Security & Access → Personal API keys → Create API key. Shown **once**; prefix `lin_api_`; never expires, so revoking on that page is the only way one stops working. **Permissions** — a key is created wit