跳到主要内容
知仓学习社ZHICANG

ops-linear

Linear command center. Shows current sprint, creates/updates issues, manages priorities, syncs with GSD phases.

不碰外部(只输出文字)无严重或高危命中davepoon/buildwithclaude

它会碰到什么

扫了多少1 个文本文件,5 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

OPS ► LINEAR COMMAND CENTER

Runtime Context

Before executing, load available context:

  1. Secrets: Linear API key required for MCP fallback queries.

### Secret Resolution

  • Check $LINEAR_API_KEY env var
  • Then: Doppler MCP tools (mcp__doppler__*) — if Doppler MCP server is configured
  • Then: doppler secrets get LINEAR_API_KEY --plain (if doppler CLI configured in prefs)
  • Then: use password_manager_config.query_cmd from ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json
  • If unavailable, use Linear MCP tools exclusively (no curl fallback possible)
  1. Preferences: Read ${CLAUDE_PLUGIN_DATA_DIR}/preferences.json for secrets_manager / doppler config.

CLI/API Reference

Linear GraphQL (fallback when MCP unavailable)

| 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 |


Phase 1 — Load data

Run in parallel:

  1. mcp__linear__list_teams — get all team IDs
  2. mcp__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.


Route by $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 |


Sprint board view

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 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]

Create issue flow

Collect from user (or parse from $ARGUMENTS):

  • Title
  • Team (list choices if ambiguous)
  • Priority (urgent/high/medium/low)
  • Cycle (current sprint or backlog)
  • Assignee (optional)
  • Estimate (optional)

Use mcp__linear__create_issue to create. Confirm: Created [id]: [title]


GSD sync flow

Read all active GSD STATE.md files across projects. For each active phase:

  1. Check if a Linear issue exists with matching phase reference.
  2. If not, offer to create one.
  3. If status differs (GSD says done, Linear says in-progress), offer to sync.

Update Linear issues to match GSD phase completion status.

Use AskUserQuestion after displaying any view to get the next action.


Native tool usage

Tasks — sprint work tracking

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.

WebFetch — Linear API fallback

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 } } } }"}')

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 3,470
本站分层T1
该仓技能数381
原文件路径plugins/claude-ops/skills/ops-linear/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 381 个技能