关于 linear-pm
面向 Agent 的提示驱动型 Linear 项目管理技能,需要设置 LINEAR_API_KEY 并连接互联网。覆盖问题、项目、周期、团队、标签和状态,修改数据的操作需确认。
主要功能
- 01管理问题和评论
- 02跟踪项目及关联问题
- 03规划周期并查看进度
- 04查看团队与成员
- 05管理标签和工作流状态
- 06修改操作需确认
适用场景
- 01整理并确定待办问题优先级
- 02在冲刺规划中分配问题
- 03查看项目问题和周期进度
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oimiragieo/ agent-studio --skill linear-pm安装后在 Claude Code 中输入/linear-pm确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
commands/linear-pm.mdhooks/post-execute.cjspre-execute.cjsreferences/research-requirements.mdrules/linear-pm.mdschemas/input.schema.jsonoutput.schema.jsonscripts/main.cjstemplates/implementation-template.md详细介绍
模式:认知/提示词驱动 - 无独立实用脚本;通过 Agent 上下文使用。
Linear PM 技能
概述
此技能提供全面的 Linear 项目管理功能,并采用渐进式披露,以优化上下文使用。
上下文节省:约减少 92%
- 直接 API 模式:完整 API 文档约需 15,000 个 token
- 技能模式:元数据约需 300 个 token,按需加载
要求
- 已设置 LINEAR_API_KEY 环境变量
- 可连接互联网,以访问 Linear API
工具集
| 工具集 | 描述 |
|---|---|
| issues | 创建问题、更新问题、添加评论、更改状态 |
| projects | 项目管理及问题关联 |
| cycles | 冲刺/周期管理与规划 |
| teams | 团队结构与成员管理 |
| labels | 标签与工作流状态管理 |
按类别划分的工具
问题操作(变更需确认)
| 工具 | 描述 | 确认 |
|---|---|---|
| list-issues | 按状态、负责人、标签等筛选并列出问题 | 否 |
| get-issue | 获取问题的详细信息 | 否 |
| create-issue | 创建问题,并设置标题、描述和团队 | 是 |
| update-issue | 更新问题字段(状态、负责人、优先级) | 是 |
| add-comment | 为问题添加评论 | 是 |
| search-issues | 按文本查询搜索问题 | 否 |
| assign-issue | 将问题分配给团队成员 | 是 |
| set-priority | 设置问题优先级(紧急、高、 中、低) | 是 |
| add-label | 为问题添加标签 | 是 |
项目操作
| 工具 | 描述 | 确认 |
|---|---|---|
| list-projects | 列出团队的所有项目 | 否 |
| get-project | 获取项目详情和元数据 | 否 |
| project-issues | 获取项目中的所有问题 | 否 |
| create-project | 创建新项目 | 是 |
| update-project | 更新项目详情 | 是 |
周期操作(冲刺)
| 工具 | 描述 | 确认 |
|---|---|---|
| list-cycles | 列出团队的周期 | 否 |
| current-cycle | 获取当前活动周期 | 否 |
| cycle-issues | 获取特定周期中的问题 | 否 |
| cycle-progress | 获取周期完成情况指标 | 否 |
团队操作
| 工具 | 描述 | 确认 |
|---|---|---|
| list-teams | 列出工作区中的所有团队 | 否 |
| get-team | 获取团队详情 | 否 |
| team-members | 列出团队成员 | 否 |
标签与状态操作
| 工具 | 描述 | 确认 |
|---|---|---|
| list-labels | 列出团队的所有标签 | 否 |
| list-states | 列出工作流状态(待办列表、待办、进行中、已完成) | 否 |
| create-label | 创建新标签 | 是 |
安全
- 切勿在日志或输出中泄露 LINEAR_API_KEY
- API 密钥应仅拥有必要的最小权限
- 所有会修改数据的工具都需要确认
错误处理
- 验证 API 密钥:检查是否正确设置了 LINEAR_API_KEY
- 检查 API 速率限制:GraphQL 每小时 1500 次请求;REST 每小时 500 次请求
- 验证查询语法:确保 GraphQL 查询格式正确
- 检查团队/Issue ID:确认 ID 存在且可访问
Agent 集成
- planner:项目管理和待办事项优先级排序
- developer:开发期间的 Issue 跟踪
常见工作流
Sprint 规划
- current-cycle - 获取当前 Sprint
- list-issues --state Backlog - 获取待办事项
- update-issue --cycle-id ... - 将 Issue 分配到 Sprint
Issue 分类
- list-issues --state Backlog - 获取未规划的 Issue
- set-priority --issue-id ... --priority 2 - 设置优先级
- add-label --issue-id ... --label bug - 添加分类标签
项目跟踪
- list-projects --team-id ... - 获取所有项目
- project-issues --project-id ... - 获取项目 Issue
- cycle-progress --cycle-id ... - 检查 Sprint 进度
相关链接
- Linear API 官方文档:https://developers.linear.app/docs/graphql/working-with-the-graphql-api
- Linear GraphQL Explorer:https://studio.apollographql.com/public/Linear-API/home
- Linear Webhook 文档:https://developers.linear.app/docs/graphql/webhooks
铁律
- 始终在进行任何 API 调用前验证是否已设置
LINEAR_API_KEY——如果密钥缺失或已过期,Linear API 会返回带有通用错误消息的 401 错误;提前验证可以生成清晰且可采取行动的错误信息。 - 绝不在按标题搜索之前创建重复的 Issue——Linear 不会自动去重 Issue;不经搜索就运行两次此技能会创建重复的工作项,干扰团队跟踪。
- 始终在转换 Issue 状态时使用状态 ID(而不是状态名称)——状态名称区分大小写、依赖区域设置,且会随团队重命名状态而改变;ID 则保持稳定。
- 绝不在没有筛选条件的情况下获取团队的所有 Issue——不受限制的团队查询会返回数千个 Issue,耗尽 API 速率限制,并产生无法使用的上下文信息。
- 始终在会话期间缓存团队和项目信息——团队 ID 和项目键在会话期间不会改变;每次操作都重新获取会浪费 API 配额并拖慢工作流。
反模式
| 反模式 | 失败原因 | 正确做法 |
|---|---|---|
| 创建 Issue 前不检查是否重复 | 重复的 Issue 会分散跟踪记录;团队速度指标会失真 | 创建前使用标题筛选器搜索(issues 查询中的 filter.title.eq 字段) |
| 在状态转换中使用状态名称 | 区分大小写;团队重命名状态时会失效;存在区域设置问题 | 使用 workflowState { id } 查询获取稳定 ID;通过 ID 转换状态 |
| 不加筛选条件地获取团队的所有 Issue | 结果数以千计;触发速率限制;输出无法使用 | 在 GraphQL 查询中按 state、assignee、cycle 或 label 筛选 |
| 每次操作都重新获取团队/项目元数据 | 多次发出相同的 API 调用;浪费速率限制配额;执行缓慢 | 在会话开始时获取一次团队和项目 ID;后续调用均重复使用 |
| 忽略分页游标 | 只返回第一页;遗漏的 Issue 会导致报告不完整 | 使用 pageInfo { hasNextPage, endCursor },并持续分页,直到 hasNextPage: false |
记忆协议(必须遵守)
开始前: 阅读 .claude/context/memory/learnings.md
完成后:
- 新模式 -> .claude/context/memory/learnings.md
- 发现的问题 -> .claude/context/memory/issues.md
- 做出的决定 -> .claude/context/memory/decisions.md
假定任务会中断:如果没有记录在记忆中,就视为没有发生。
评论
支持 Markdown