关于 issue-triage
通过 Composio CLI 检查 Linear 和 Jira 待办、归类疑似重复项并更新问题的分诊技能,也涵盖 Bug 扫描及从 Sentry 到 Linear 的工作流。
主要功能
- 01查询 Linear 与 Jira 待办
- 02归类疑似重复问题
- 03设置标签、优先级和负责人
- 04Sentry 到 Linear 的跨工具流程
- 05向 Slack 发布分诊摘要
适用场景
- 01查找未分配或长期未更新的问题
- 02按严重程度分诊发布 Bug
- 03去重并分配问题负责人
- 04根据 Sentry 发现创建 Linear 问题
MCP 相关
该技能通过 Composio CLI 使用 Linear、Jira 和 Sentry 工具;内容未说明 MCP 服务连接。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ composio-community/ awesome-codex-skills --skill issue-triage安装后在 Claude Code 中输入/issue-triage确认已加载。
详细介绍
问题分诊(Linear / Jira)
使用 Composio CLI 在 Linear 或 Jira 中开展分诊会议和 Bug 集中排查。拉取待办列表,将重复项归类,添加标签,然后将整理好的列表交还给团队。
适用场景
- 每周分诊:“哪些事项尚未分配、长期未更新,或缺少优先级?”
- 发布后 Bug 集中排查:“将所有 P1/P2 Bug 归类、去重并分配负责人。”
- 跨工具同步:Sentry → Linear、PagerDuty → Jira。
前提条件
curl -fsSL https://composio.dev/install | bash
composio login
composio link linear # or: composio link jira
查找工具
composio search "list issues" --toolkits linear
composio search "search issues" --toolkits jira
composio tools list linear
composio tools list jira
常用 slug(使用 --get-schema 确认):
Linear
LINEAR_LIST_ISSUESLINEAR_CREATE_ISSUELINEAR_UPDATE_ISSUELINEAR_CREATE_COMMENT
Jira
JIRA_SEARCH_FOR_ISSUES_USING_JQLJIRA_CREATE_ISSUEJIRA_EDIT_ISSUEJIRA_ADD_COMMENTJIRA_ASSIGN_ISSUE
分诊工作流
- 拉取待办列表中的一部分:
# Linear composio execute LINEAR_LIST_ISSUES -d '{ "filter": { "state": { "type": { "eq": "unstarted" } }, "assignee": { "null": true } }, "first": 100 }' # Jira 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"] }' - 按标题相似度和标签归类。 Agent 会在本地将可能重复的事项分组。
- 一次性应用更新(标签、优先级、负责人):
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"]} }' - 关联重复项,并添加评论,注明规范事项。
- 将变更摘要发布到 Slack,让团队了解本次集中排查的结果。
Bug 集中排查(发布后)
# Jira: every bug filed in the last 7 days, sorted by severity
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)"'
工作流文件
scripts/triage-linear.ts,使用 composio run --file scripts/triage-linear.ts 运行:
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.`
});
跨工具同步:Sentry → 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"]
});
}
'
故障排除
- 字段名称未知 →
composio execute <SLUG> --get-schema会显示准确的筛选条件格式(Linear 使用嵌套对象;Jira 使用 JQL 字符串)。 - Linear 返回
403→ 使用正确的工作区重新运行composio link linear。 - 缺少 Jira 自定义字段 → 在
fields数组中明确请求这些字段。 - 批量编辑触发速率限制 → 在
composio run循环中插入 250ms 的休眠;不要使用--parallel。
完整 CLI 参考:docs.composio.dev/docs/cli
评论
支持 Markdown