Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/graniet-linear
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, security, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
linear- Description
- Manage Linear issues, projects, and teams via the GraphQL API. Create, update, search, and organize issues. Uses API key auth (no OAuth needed). All operations via curl — no dependencies.
- License
- MIT
- Instructions
- 298 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Agent Skills spec issues
- name: missing
Files (1)
- SKILL.md
SKILL.md (first lines)
## Kheish Compatibility
This skill is repo-local and stays inactive until explicitly activated.
When the original instructions refer to legacy tool names, use these Kheish mappings:
- `terminal` => `bash`
- `web_extract` => `web_fetch`, plus `web_search` when discovery is needed
- `search_files` => `grep_search` and `glob_search`
- `browser_*` tools require a browser-capable surfaced tool or MCP; if none is available, use the closest available surface and say so explicitly
When the instructions mention local helper files, resolve them from `${KHEISH_SKILL_DIR}`.
# Linear — Issue & Project Management
Manage Linear issues, projects, and teams directly via the GraphQL API using `curl`. No MCP server, no OAuth flow, no extra dependencies.
## Setup
1. Get a personal API key from **Linear Settings > API > Personal API keys**
2. Set `LINEAR_API_KEY` in your environment (via your environment config or secret manager)
## API Basics
- **Endpoint:** `https://api.linear.app/graphql` (POST)
- **Auth header:** `Authorization: $LINEAR_API_KEY` (no "Bearer" prefix for API keys)
- **All requests are POST** with `Content-Type: application/json`
- **Both UUIDs and short identifiers** (e.g., `ENG-123`) work for `issue(id:)`
Base curl pattern:
```bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ viewer { id name } }"}' | python3 -m json.tool
```
## Workflow States
Linear uses `WorkflowState` objects with a `type` field. **6 state types:**
| Type | Description |
|------|-------------|
| `triage` | Incoming issues needing review |
| `backlog` | Acknowledged but not yet planned |
| `unstarted` | Planned/ready but not started |
| `started` | Actively being worked on |
| `completed` | Done |
| `canceled` | Won't do |
Each team has its own named states (e.g., "In Progress" is type `started`). To change an issue's status, you need the `stateId` (UUID) of the target state — query workflow states first.
**Priority values:** 0 = None, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low
## Common Queries
### Get current user
```bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ viewer { id name email } }"}' | python3 -m json.tool
```
### List teams
```bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ teams { nodes { id name key } } }"}' | python3 -m json.tool
```
### List workflow states for a team
```bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ workflowStates(filter: { team: { key: { eq: \"ENG\" } } }) { nodes { id name type } } }"}' | python3 -m json.tool
```
### List issues (first 20)
```bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ issues(first: 20) { nodes { identifier title priority state { name type } assignee { name } team { key } url } pageInfo { hasNextPage endCursor } } }"}' | python3 -m json.tool
```
### List my assigned issues
```bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ viewer { assignedIssues(first: 25) { nodes { identifier title state { name type } priority url } } } }"}' | python3 -m json.tool
```
### Get a single issue (by identifier like ENG-123)
```bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ issue(id: \"ENG-123\") { id identifier title description priority state { id name type } assignee { id name } team { key } project { name } labels { nodes { name } } comments { nodes { body user { name } createdAt } } url } }"}' | python3 -m json.tool
```
### Search issues by text
```bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ issueSearch(query: \"bug login\", first: 10) { nodes { identifier title state { name } assignee { name } url } } }"}' | python3 -m json.tool
```
### Filter issues by state type
```bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ issues(filter: { state: { type: { in: [\"started\"] } } }, first: 20) { nodes { identifier title state { name } assignee { name } } } }"}' | python3 -m json.tool
```From graniet/kheish, MIT.
More from graniet/kheish
- 0.645score
trl-fine-tuning
graniet
Fine-tune LLMs using reinforcement learning with TRL - SFT for instruction tuning, DPO for preference alignment, PPO/GRPO for reward optimization, and reward…
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
godmode
graniet
Jailbreak API-served LLMs using G0DM0D3 techniques — Parseltongue input obfuscation (33 techniques), GODMODE CLASSIC system prompt templates, ULTRAPLINIAN…
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
lm-evaluation-harness
graniet
Evaluates LLMs across 60+ academic benchmarks (MMLU, HumanEval, GSM8K, TruthfulQA, HellaSwag).
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
gguf
graniet
GGUF format and llama.cpp quantization for efficient CPU/GPU inference.
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
vllm
graniet
Serves LLMs with high throughput using vLLM's PagedAttention and continuous batching.
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
creative-ideation
graniet
Generate project ideas through creative constraints.
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
peft
graniet
Parameter-efficient fine-tuning for LLMs using LoRA, QLoRA, and 25+ methods.
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
modal
graniet
Serverless GPU cloud platform for running ML workloads.
SkillCFreshness: C★ 217Claude Code +9 - 0.641score
find-nearby
graniet
Find nearby places (restaurants, cafes, bars, pharmacies, etc.) using OpenStreetMap.
SkillCFreshness: C★ 217Claude Code +9 - 0.641score
google-workspace
graniet
Gmail, Calendar, Drive, Contacts, Sheets, and Docs integration via gws CLI (googleworkspace/cli).
SkillCFreshness: C★ 217Claude Code +9 - 0.639score
webhook-subscriptions
graniet
Create and manage webhook subscriptions for event-driven agent activation.
SkillCFreshness: C★ 217Claude Code +9 - 0.636score
xitter
graniet
Interact with X/Twitter via the x-cli terminal client using official X API credentials.
SkillCFreshness: C★ 217Claude Code +9
Signals
- Stars
- 217
- Forks
- 18
- Open issues
- 0
- Last commit (this folder)
- Jun 25, 2026 (4 months ago)
- Last release
- Jun 27, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/graniet/kheish
- Website
- kheish.ai
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from graniet
- 0.645score
vllm
graniet
Serves LLMs with high throughput using vLLM's PagedAttention and continuous batching.
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
gguf
graniet
GGUF format and llama.cpp quantization for efficient CPU/GPU inference.
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
creative-ideation
graniet
Generate project ideas through creative constraints.
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
lm-evaluation-harness
graniet
Evaluates LLMs across 60+ academic benchmarks (MMLU, HumanEval, GSM8K, TruthfulQA, HellaSwag).
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
modal
graniet
Serverless GPU cloud platform for running ML workloads.
SkillCFreshness: C★ 217Claude Code +9 - 0.645score
peft
graniet
Parameter-efficient fine-tuning for LLMs using LoRA, QLoRA, and 25+ methods.
SkillCFreshness: C★ 217Claude Code +9
Cite this page
linear skill. Agent Mart. https://agentmart.dev/skills/graniet-linear (last updated 2026-10-24)