关于 ops-linear
ops-linear 是用于查看和管理 Linear 问题、迭代看板及待办项的 Claude 技能,也支持将活跃的 GSD 阶段与 Linear 问题状态同步。
主要功能
- 01查看当前迭代和待办项
- 02创建和更新 Linear 问题
- 03在迭代间移动问题
- 04同步 GSD 阶段
- 05使用 Linear MCP 或 GraphQL 回退
适用场景
- 01检查当前迭代的计划工作
- 02创建或编辑 Linear 问题
- 03使 Linear 问题与 GSD 阶段保持一致
MCP 相关
使用 Linear MCP 工具列出团队和问题并创建问题。MCP 工具不可用或失败时,可回退到 Linear GraphQL API。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill ops-linear安装后在 Claude Code 中输入/ops-linear确认已加载。
详细介绍
OPS ► LINEAR COMMAND CENTER
运行时上下文
执行前,加载可用上下文:
-
密钥:MCP 回退查询需要 Linear API 密钥。
密钥解析
- 检查
$LINEAR_API_KEY环境变量 - 然后:Doppler MCP 工具(
mcp__doppler__*)——如果已配置 Doppler MCP 服务 - 然后:
doppler secrets get LINEAR_API_KEY --plain(如果 prefs 中已配置 doppler CLI) - 然后:使用
${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json中的password_manager_config.query_cmd - 如果不可用,则仅使用 Linear MCP 工具(无法回退到 curl)
- 检查
-
偏好设置:读取
${CLAUDE_PLUGIN_DATA_DIR}/preferences.json中的secrets_manager/doppler配置。
CLI/API 参考
Linear GraphQL(MCP 不可用时的回退方式)
| 命令 | 用法 | 输出 |
|---|---|---|
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 } } } }"}' | 活跃问题 | 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 } } }"}' | 当前周期 | JSON |
阶段 1 — 加载数据
并行运行:
mcp__linear__list_teams— 获取所有团队 IDmcp__linear__list_issues— 获取带周期筛选条件的问题(必要时使用 GraphQL 回退方式查询周期)
然后获取当前周期的问题:使用当前周期 ID 作为筛选条件调用 mcp__linear__list_issues。
根据 $ARGUMENTS 分流
| 参数 | 操作 |
|---|---|
| (空),sprint | 显示当前冲刺看板 |
| backlog | 显示未分配/未安排的问题 |
| create [title] | 创建新问题(提示用户提供详细信息) |
| update [id] | 按 ID 更新问题 |
| sync | 将 GSD 阶段同步到 Linear 问题 |
| [issue-id] | 显示并编辑指定问题 |
冲刺看板视图
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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] ([%])
──────────────────────────────────────────────────────
使用分批调用 AskUserQuestion(每次最多 4 个选项):
AskUserQuestion 调用 1:
[Create new issue]
[Update issue status]
[Move issue to/from sprint]
[More...]
AskUserQuestion 调用 2(仅当选择“更多...”时):
[View backlog]
[Sync with GSD phases]
创建问题流程
向用户收集(或从 $ARGUMENTS 解析):
- 标题
- 团队(选项不明确时列出可选项)
- 优先级(紧急/高/中/低)
- 周期(当前冲刺或待办列表)
- 负责人(可选)
- 预估工时(可选)
使用 mcp__linear__create_issue 创建。确认:Created [id]: [title]
GSD 同步流程
读取所有项目中活跃的 GSD STATE.md 文件。针对每个活跃阶段:
- 检查是否存在引用该阶段的 Linear 问题。
- 如果不存在,询问是否创建。
- 如果状态不同(GSD 显示已完成,Linear 显示进行中),询问是否同步。
更新 Linear 问题,使其与 GSD 阶段的完成状态一致。
显示任何视图后,使用 AskUserQuestion 询问下一步操作。
原生工具用法
任务 — 冲刺工作跟踪
用户开始处理 Linear 问题时,使用 TaskCreate 在本地跟踪。随着问题进展,使用 TaskUpdate 更新。这将 Linear 状态与本地会话状态衔接起来。
WebFetch — Linear API 回退方式
当 Linear MCP 工具达到配额限制或失败时,使用 Linear GraphQL API 回退到 WebFetch:
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 } } } }"}')