Clawbounty 2 Linear - 赏金任务
v1.0.02 Linear 通过 GraphQL 管理 Linear 的 issue、project 与 cycle。用于梳理待办、从对话创建任务、查看冲刺进度或运行 te...
0· 24·0 当前·0 累计
下载技能包
最后更新
2026/4/20
安全扫描
OpenClaw
可疑
medium confidence该技能似乎确实使用 Linear API 密钥实现了 Linear GraphQL 操作,但 SKILL.md、effector.toml 与注册表元数据之间在二进制/子进程权限声明上存在不一致,安装前需谨慎。
评估建议
此技能看似一个简单的 Linear GraphQL 辅助工具,只需 LINEAR_API_KEY。安装前:
1) 注意清单不一致——SKILL.md 使用 curl/jq(shell 命令),但 effector.toml 中 subprocess=false,且顶层元数据未列出所需二进制。请与发布者确认,或查看你的 OpenClaw 运行时如何执行 SKILL.md(是执行 shell 命令还是内部转换 GraphQL 调用)。
2) 使用最小权限 API 密钥(建议创建仅限工作区/团队的密钥,测试后轮换/撤销)。
3) 先用只读或限定权限凭据测试,运行简单只读查询,确认网络端点仅为 api.linear.app。
4) 检查截断的 Notes 或其他文件中是否出现意外外部端点(SKILL.md 在 webhooks 附近被截断)。
5) 若需更高保障,请要求发布者解决 effector.toml 与 SKILL.md 的 subprocess/二进制不一致,或提供参考运行时集成示例,展示 shell 命令如何执行。...详细分析 ▾
✓ 用途与能力
名称、描述与运行时指令均围绕通过 GraphQL API 管理 Linear 展开。唯一必需的环境变量(LINEAR_API_KEY)与所述功能(创建/列出/更新 issue、comment、cycle)匹配。
⚠ 指令范围
SKILL.md 指示 agent 使用 LINEAR_API_KEY 对 https://api.linear.app 执行 curl 命令,这是预期的。然而,effector.toml 声明 subprocess = false,且早期 registry 元数据未列出所需二进制文件,而 runtime.openclaw.requires 却列出 curl 和 jq。这些相互矛盾:该技能的运行时显然需要调用 curl/jq(子进程行为)。这种不匹配是一个一致性问题,可能反映出打包草率或安全清单错误。
ℹ 安装机制
这是一个仅提供指令的技能,没有安装规范或下载内容,风险较低。该技能要求 PATH 中已有 curl 和 jq,详见 effector.toml 和示例。技能本身不会获取或安装任何外部压缩包或 URL。
✓ 凭证需求
仅请求 LINEAR_API_KEY。README/SKILL.md 说明需要具备读写权限的个人 API 密钥,这与所宣称的能力相符。未请求任何其他无关凭据或文件路径。
✓ 持久化与权限
始终为 false,且该 skill 不会请求持久化或跨 skill 的配置变更。自主调用(disable-model-invocation=false)是平台默认行为,本身不会被标记。未声明文件系统写入或其他高权限操作。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.02026/4/20
初始版本:通过 GraphQL 和 cURL 在 OpenClaw 中管理 Linear 的 issue、项目与 cycle。 - 用命令行片段直接创建、分级、更新、搜索 Linear issue。 - 支持批量操作:标签/负责人更新、状态报告、冲刺回顾。 - 适用于任意团队(查询/变更使用 team key 与 UUID)。 - 一条环境变量(LINEAR_API_KEY)即可启动,无需 SDK 或 CLI。 - 提供丰富示例,覆盖常见流程(站会、会议、分级、评审)。 - 附带 API 使用技巧:限流、分页、schema 自省。
● 无害
安装命令
点击复制官方npx clawhub@latest install clawbounty-2-linear
镜像加速npx clawhub@latest install clawbounty-2-linear --registry https://cn.longxiaskill.com 镜像可用
技能文档
用途
在 OpenClaw 中控制 Linear:创建 issue、整理 backlog、更新优先级、进行冲刺评审——全部通过 AI 助手完成,无需切换标签页。通过 Linear 的 GraphQL API 使用curl 实现,无需 CLI 或 SDK。 何时使用
- 中期检查冲刺进度
- 根据会议纪要或对话创建 issue
- 整理并重新排定 backlog
- 每日站会前查询 issue 状态
- 批量更新标签、负责人或优先级
- 生成跨项目/团队的状态报告
何时不用
- 复杂的 Figma/设计评审(使用浏览器工具)
- GitHub PR 集成(改用
githubskill) - Linear 与 Jira 或其他追踪器同步(直接用 Linear API 编写脚本)
配置
- 打开 Linear → Settings → API → Personal API keys
- 创建 key(读写权限)
- 加入 OpenClaw 配置:
LINEAR_API_KEY=lin_api_xxxxxxxxxxxxxxxx
`
验证 key:
`bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "{ viewer { name } }"}' | jq .
`
应返回你的名字。 命令
列出你的开放 issue
`bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "query": "{ viewer { assignedIssues(filter: { state: { type: { nin: [\"completed\", \"cancelled\"] } } }) { nodes { id title priority state { name } team { name } } } } }" }' | jq '.data.viewer.assignedIssues.nodes'
` 获取某团队 issue
`bash
TEAM_KEY="ENG" # 团队 key
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d "{ \"query\": \"{ team(key: \\\"$TEAM_KEY\\\") { issues(filter: { state: { type: { eq: \\\"started\\\" } } }) { nodes { id identifier title assignee { name } priority } } } }\" }" | jq '.data.team.issues.nodes'
` 创建 issue
`bash
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "query": "mutation IssueCreate($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { id identifier title } } }", "variables": { "input": { "teamId": "TEAM_ID_HERE", "title": "Issue title from OpenClaw", "description": "Created via OpenClaw linear skill.", "priority": 2 } } }' | jq '.data.issueCreate'
`
优先级:0=无,1=紧急,2=高,3=中,4=低。 更新 issue
`bash
ISSUE_ID="ISSUE_ID_HERE"
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d "{ \"query\": \"mutation { issueUpdate(id: \\\"$ISSUE_ID\\\", input: { priority: 1, stateId: \\\"STATE_ID\\\" }) { success issue { id title priority state { name } } } }\" }" | jq '.data.issueUpdate'
` 按关键词搜索 issue
`bash
QUERY="authentication bug"
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d "{ \"query\": \"{ issueSearch(query: \\\"$QUERY\\\") { nodes { id identifier title state { name } assignee { name } priority } } }\" }" | jq '.data.issueSearch.nodes'
` 获取团队当前周期(冲刺)
`bash
TEAM_KEY="ENG"
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d "{ \"query\": \"{ team(key: \\\"$TEAM_KEY\\\") { activeCycle { id name startsAt endsAt issues { nodes { id title state { name } estimate } } } } }\" }" | jq '.data.team.activeCycle'
` 给 issue 添加评论
`bash
ISSUE_ID="ISSUE_ID_HERE"
COMMENT="LGTM — deploying to staging now."
curl -s -X POST https://api.linear.app/graphql \
-H "Authorization: $LINEAR_API_KEY" \
-H "Content-Type: application/json" \
-d "{ \"query\": \"mutation { commentCreate(input: { issueId: \\\"$ISSUE_ID\\\", body: \\\"$COMMENT\\\" }) { success comment { id body } } }\" }" | jq '.data.commentCreate'
``