plugins/claude-ops/skills/ops-linear/SKILL.md
Linear command center. Shows current sprint, creates/updates issues, manages priorities, syncs with GSD phases.
npx skillsauth add davepoon/buildwithclaude ops-linearInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before executing, load available context:
Secrets: Linear API key required for MCP fallback queries.
$LINEAR_API_KEY env varmcp__doppler__*) — if Doppler MCP server is configureddoppler secrets get LINEAR_API_KEY --plain (if doppler CLI configured in prefs)password_manager_config.query_cmd from ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.jsonPreferences: Read ${CLAUDE_PLUGIN_DATA_DIR}/preferences.json for secrets_manager / doppler config.
| Command | Usage | Output |
|---------|-------|--------|
| curl -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\",\"unstarted\"]}}}) { nodes { id title state { name } priority assignee { name } } } }"}' | Active issues | JSON |
| curl -X POST https://api.linear.app/graphql -H "Authorization: $LINEAR_API_KEY" -H "Content-Type: application/json" -d '{"query":"{ cycles(filter: {isActive: {eq: true}}) { nodes { id number startsAt endsAt } } }"}' | Current cycles | JSON |
Run in parallel:
mcp__linear__list_teams — get all team IDsmcp__linear__list_issues — get issues with cycle filter (use GraphQL fallback for cycle queries if needed)Then fetch issues for the current cycle: mcp__linear__list_issues filtered to current cycle ID.
$ARGUMENTS| Argument | Action | | --------------- | --------------------------------------- | | (empty), sprint | Show current sprint board | | backlog | Show unassigned/unscheduled issues | | create [title] | Create a new issue (prompt for details) | | update [id] | Update issue by ID | | sync | Sync GSD phases to Linear issues | | [issue-id] | Show and edit that specific issue |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LINEAR ► SPRINT [N] — [start] → [end]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IN PROGRESS
[id] [priority] [title] [assignee] [estimate]
TODO
[id] [priority] [title] [assignee] [estimate]
DONE THIS SPRINT
[id] [title] [completed date]
BLOCKED / CANCELLED
[id] [title] [reason]
──────────────────────────────────────────────────────
Sprint velocity: [done points] / [total points] ([%])
──────────────────────────────────────────────────────
Use batched AskUserQuestion calls (max 4 options each):
AskUserQuestion call 1:
[Create new issue]
[Update issue status]
[Move issue to/from sprint]
[More...]
AskUserQuestion call 2 (only if "More..."):
[View backlog]
[Sync with GSD phases]
Collect from user (or parse from $ARGUMENTS):
Use mcp__linear__create_issue to create. Confirm: Created [id]: [title]
Read all active GSD STATE.md files across projects. For each active phase:
Update Linear issues to match GSD phase completion status.
Use AskUserQuestion after displaying any view to get the next action.
When the user starts working on a Linear issue, use TaskCreate to track it locally. Update with TaskUpdate as the issue progresses. This bridges Linear state with local session state.
When Linear MCP tools hit quota limits or fail, fall back to WebFetch with the Linear GraphQL API:
WebFetch(url: "https://api.linear.app/graphql", method: "POST", headers: {"Authorization": "$LINEAR_API_KEY"}, body: '{"query":"{ issues(filter: {cycle: {id: {eq: \"<id>\"}}}}) { nodes { id title state { name } } } }"}')
development
Show drill-me learning progress — topics studied, cards due for review, weakest concepts, and what to study next. Use when the user asks what's due, how their learning is going, or for their drill-me status.
development
Teach the user a topic as an adaptive tutor — retrieval practice, spaced repetition with decay, and persistent memory in ~/.drill-me/. Use when the user wants to learn or be drilled on something, says "drill me on X", "teach me X", or wants to study a topic, a codebase, or a document.
development
Turn any codebase into evidence-grounded Markdown docs plus a machine-readable index.json. Every claim cites its source; never invents deployment steps.
tools
Assesses the current state of the startup project and recommends what to focus on next. Use when there is a need or a question from the user to understand what the next steps are or what to focus on next.