十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于 Composio CLI 的 Linear / Jira 议题分诊与 Bug 扫描自动化实战

基于 Composio CLI 的 Linear / Jira 议题分诊与 Bug 扫描自动化实战 基于 Composio CLI 的 Linear / Jira 议题分诊与 Bug 扫描自动化实战【免费下载链接】awesome-codex-skillsA curated list of practical Codex skills for automating workflows across the Codex CLI and API.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-codex-skills导读本文面向需要在 Codex CLI / API 中批量处理项目积压backlog的工程团队讲解如何借助 Composio CLI 驱动 Linear 与 Jira在纯命令行环境下完成拉取积压 → 聚类去重 → 批量打标/重分配 → 回帖汇总的完整分诊闭环。读完本文你将掌握工具发现composio search/tools list、单条与批量执行composio execute/composio run、跨工具串联Sentry → Linear以及常见限流与鉴权问题的排查方法。该技能在仓库中的完整定义位于 issue-triage/SKILL.md同仓库的 linear/SKILL.md 与 sentry-triage/SKILL.md 分别覆盖了 Linear MCP 管理流程与 Sentry 错误诊断可作为本技能的延伸阅读。一、技能定位与适用场景Issue Triage 技能解决的核心问题是分诊动作过多依赖人工点击 UI。它把每周例会式的分诊、发布后的 Bug 清扫、以及跨工具同步Sentry 告警 → Linear 建单、PagerDuty 告警 → Jira 建单全部压缩为可重复执行的 CLI 流程。典型触发时机每周例行分诊回答哪些议题无人认领、长期停滞、或缺少优先级发布后 Bug 扫描将全部 P1/P2 Bug 聚类去重、指定负责人、批量打标签跨工具同步Sentry 或 PagerDuty 的告警事件自动沉淀为 Linear / Jira 议题。技能元数据name: issue-triage声明它面向bulk-fetch issues, dedupe, relabel, reassign, and post summaries——即批量获取、去重、重打标签、重新指派与摘要回帖全部通过 shell 完成。二、前置准备安装与授权技能运行依赖 Composio CLI需先完成安装、登录与工具授权三步curl -fsSL https://composio.dev/install | bash composio login composio link linear # 或: composio link jira其中composio link会引导 OAuth 授权将你的 Linear / Jira 账号与本地 CLI 绑定。注意若授权过期或更换工作区执行composio link linear时报403需要重新授权并确认选择的是正确的 workspace详见下文故障排查。补充同仓库 linear/SKILL.md 提供了另一条接入路径——通过 Linear 官方 MCP 服务器codex mcp add linear --url https://mcp.linear.app/mcp配合[features] rmcp_client true实现自然语言式项目管理。二者的取舍是MCP 方式适合在 Codex 会话中做交互式管理而 Composio CLI 方式更适合写进可重复执行的脚本与 CI 流程本文后续内容均以 Composio CLI 为主线。三、发现工具确认可用的工具 Slug在编写任何分诊脚本之前先用 CLI 自带的搜索与列表命令确认当前可用的工具集composio search list issues --toolkits linear composio search search issues --toolkits jira composio tools list linear composio tools list jira常用工具 Slug执行前建议用--get-schema核对字段形状LinearSlug作用LINEAR_LIST_ISSUES按过滤器拉取议题列表LINEAR_CREATE_ISSUE新建议题LINEAR_UPDATE_ISSUE更新议题优先级、标签、负责人LINEAR_CREATE_COMMENT在议题下追加评论JiraSlug作用JIRA_SEARCH_FOR_ISSUES_USING_JQL用 JQL 搜索议题JIRA_CREATE_ISSUE新建议题JIRA_EDIT_ISSUE编辑议题字段JIRA_ADD_COMMENT追加评论JIRA_ASSIGN_ISSUE指派负责人为什么必须先核对 schemaLinear 的过滤器是嵌套对象结构如{ state: { type: { eq: unstarted } } }而 Jira 使用扁平的 JQL 字符串。二者差异极大直接凭记忆传参最容易踩Unknown field names错误。composio execute SLUG --get-schema会打印精确的入参形状。四、完整分诊工作流五步技能文档给出了一个可直接照搬的五步分诊流程第 1 步拉取积压切片先获取当前需要处理的议题集合。Linear 版使用嵌套过滤器筛选未开始 无人认领的议题composio execute LINEAR_LIST_ISSUES -d { filter: { state: { type: { eq: unstarted } }, assignee: { null: true } }, first: 100 }Jira 版使用 JQL 表达等价条件并显式声明需要的字段composio execute JIRA_SEARCH_FOR_ISSUES_USING_JQL -d { jql: project APP AND statusCategory ! Done AND assignee is EMPTY ORDER BY updated DESC, maxResults: 100, fields: [summary,priority,labels,updated,reporter] }实操要点fields数组务必显式列出所需字段尤其是 Jira 的自定义字段custom fields——不显式请求时默认不会返回这也是下文故障排查中Jira custom fields missing的根因。第 2 步聚类去重将拉取到的议题按标题相似度与标签进行本地聚类。这一步由 Agent 在本地完成——把可能重复的议题归为一组不立即写回远端形成一份疑似重复清单供后续统一处理。聚类逻辑放在脚本中时通常基于updatedAt、title、labels等字段做规则匹配可参考下文工作流文件示例中的字段用法。第 3 步批量更新打标、优先级、指派对聚类后的议题一次性应用更新composio execute LINEAR_UPDATE_ISSUE -d { id:abc-123,priority:2,labelIds:[label-bug,label-p1],assigneeId:user-42 } composio execute JIRA_EDIT_ISSUE -d { issueIdOrKey:APP-482, fields:{priority:{name:High},labels:[bug,p1]} }注意两类工具的参数风格差异Linear 用id 扁平字段priority、labelIds、assigneeIdJira 用issueIdOrKey 嵌套的fields对象。批量更新务必控制节奏——Composio 与远端 API 都有速率限制建议在循环中插入约 250ms 的 sleep且不要使用--parallel并发见故障排查。第 4 步链接重复项对第 2 步识别出的重复议题通过追加评论的方式引用规范议题canonical issue而不是直接删除——保留审计痕迹团队成员从任意重复项都能跳到被保留的那一条。第 5 步发布变更摘要将本次分诊的变更结果处理了多少条、哪些被去重、哪些重新指派以摘要形式发送到 Slack让团队无需打开工具即可了解扫描结果调用SLACK_SEND_MESSAGE等 Slack 工具 slug。五、发布后 Bug 扫描Bug Sweep技能文档专门为发布后清扫提供了一个高效范例用 JQL 拉取最近 7 天的全部 Bug按优先级降序、创建时间升序排列并用jq就地生成 TSV 排行composio execute JIRA_SEARCH_FOR_ISSUES_USING_JQL -d { jql:type Bug AND created -7d ORDER BY priority DESC, created ASC, fields:[summary,priority,labels,reporter,components] } | jq -r .issues[] | \(.fields.priority.name)\t\(.key)\t\(.fields.summary)这一模式的复用价值在于把扫描 格式化 排序全部留在管道内完成输出可直接粘贴进周报或作为 Slack 摘要的输入。将created -7d替换为任意 JQL 时间窗即可复用于近 24 小时回归上季度遗留等不同扫描口径。六、可复用的工作流文件技能文档建议将分诊逻辑沉淀为 TypeScript 工作流文件scripts/triage-linear.ts并通过composio run --file scripts/triage-linear.ts执行。注意该路径是执行时传给composio run的本地脚本路径约定实际文件名与存放位置由你的仓库决定。核心逻辑示例如下const { nodes: issues } await execute(LINEAR_LIST_ISSUES, { filter: { state: { type: { eq: unstarted } }, assignee: { null: true } }, first: 100 }); const stale issues.filter(i { const age (Date.now() - new Date(i.updatedAt).getTime()) / 86400000; return age 14; }); for (const i of stale) { await execute(LINEAR_CREATE_COMMENT, { issueId: i.id, body: Auto-triage: stale for 14 days. Please assign or close. }); } await execute(SLACK_SEND_MESSAGE, { channel: triage, text: Weekly triage: pinged ${stale.length} stale issues. });脚本要点拆解过滤与批量LINEAR_LIST_ISSUES返回的nodes直接作为内存中的议题集合first: 100控制单次拉取上限停滞判定用updatedAt与当前时间差毫秒除以86400000一天的毫秒数得到停滞天数age 14即视为 14 天未更新写回策略仅对筛选出的停滞议题逐个追加评论避免全量写入收尾通知最终用SLACK_SEND_MESSAGE把本次处理数量广播到triage频道让整个流程闭环可见。这类文件把第 4 节中的人工五步流程固化为可 cron 化、可回放的自动化任务是分诊技能落地到日常运营的关键形态。七、跨工具链路Sentry → Linear技能还演示了如何把 Sentry 告警自动转成 Linear 议题。利用composio run的内联脚本模式将取热点未解决错误 → 建 Linear 议题两步串成一次调用composio run const hot await execute(SENTRY_LIST_A_PROJECTS_ISSUES, { organization_slug:acme, project_slug:api, query:is:unresolved, sort:freq, limit:5 }); for (const s of hot) { await execute(LINEAR_CREATE_ISSUE, { teamId: TEAM_ID, title: [Sentry] ${s.title}, description: ${s.permalink}\nCount: ${s.count}, labelIds: [label-bug,label-from-sentry] }); } 要点用sort:freqlimit:5只捞取最高频的未解决错误避免刷屏式建单议题标题加[Sentry]前缀、描述中携带 permalink 与错误计数保证后续定位与复盘有据可查labelIds打上label-from-sentry这类来源标签便于日后按来源聚合统计。与之配套的完整 Sentry 诊断流程拉取事件、解析inApp栈帧、定位本地源码、提出修复并回写状态可参考仓库中的 sentry-triage/SKILL.md两者结合即可构成告警 → 诊断 → 建单 → 修复的完整链路。八、故障排查速查表技能文档针对高频踩坑点给出了明确处置建议整理如下症状处置Unknown field names运行composio execute SLUG --get-schema查看精确的入参形状。Linear 使用嵌套对象过滤器Jira 使用 JQL 字符串两者结构完全不同Linear 返回 403重新执行composio link linear确认授权的是正确的工作区Jira 自定义字段缺失在fields数组中显式请求这些字段否则默认返回结果不包含它们批量编辑被限流在composio run的循环内插入 250ms 左右的 sleep避免使用--parallel并发执行额外建议来自同仓库 linear/SKILL.md 的运维经验批量操作时尽量复用/缓存过滤器以减少高频 list 调用遇到鉴权问题时清理浏览器 Cookie 后重跑 OAuth并确认 workspace 权限与 API 访问已开启。九、与仓库其他技能的协同issue-triage在仓库技能体系中属于流程编排类技能推荐组合使用linear/SKILL.md提供 Linear MCP 接入与完整的项目管理工作流冲刺规划、工作量平衡、智能打标、发布计划、文档审计等适合需要自然语言交互式管理的场景sentry-triage/SKILL.md提供 Sentry 错误诊断与LINEAR_CREATE_ISSUE路由示例与本文第 7 节形成前后端闭环composio-skills/目录仓库中还有覆盖 Linear、Jira、Slack、Sentry 等大量工具的自动化说明如composio-skills/linear-automation等子目录可作为扩展工具 slug 与参数用法的参考索引。结语Issue Triage 技能的核心价值在于把分诊从点 UI 的体力活变成可执行、可编排、可回放的 CLI 流程通过composio search发现工具、--get-schema核对参数、composio execute单步执行、composio run编排多步链路再配合 jq 管道与 TS 工作流文件即可覆盖每周分诊、发布后 Bug 扫描与 Sentry → Linear 自动建单三类高频场景。完整技能定义与最新命令示例请以仓库中的 issue-triage/SKILL.md 为准。【免费下载链接】awesome-codex-skillsA curated list of practical Codex skills for automating workflows across the Codex CLI and API.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-codex-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表