issue-triage について
Composio CLI で Linear と Jira のバックログを確認し、重複候補をまとめて課題を更新するトリアージスキルです。バグの一括確認や、Sentry から Linear への連携フローも扱います。
主な機能
- 01Linear と Jira のバックログ検索
- 02重複候補のグループ化
- 03ラベル、優先度、担当者の設定
- 04Sentry から Linear への連携
- 05トリアージ結果の Slack 投稿
活用シーン
- 01未割り当て・更新停滞中の課題の発見
- 02リリース後のバグを重大度で分類
- 03課題の重複排除と担当者割り当て
- 04Sentry の検出結果から 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を入力して読み込まれたか確認します。
詳細
Issue Triage(Linear / Jira)
Composio CLIを使って、Linear または Jira でトリアージセッションやバグの一斉確認を進めます。バックログを取得し、重複をグループ化して、ラベルを付け、整理した一覧をチームに共有します。
使用するタイミング
- 週次トリアージ:「未割り当て、長期間更新されていない、または優先度が設定されていない課題は?」
- リリース後のバグ確認:「P1/P2 のバグをすべてグループ化し、重複を整理して、担当者を割り当てて。」
- ツール間の同期: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
一般的なスラッグ(--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"] }' - タイトルの類似度とラベルに基づいてグループ化します。エージェントが重複の可能性が高い課題をローカルでまとめます。
- 一度に更新を適用します(ラベル、優先度、担当者):
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に投稿し、チームが一斉確認の結果を把握できるようにします。
バグの一斉確認(リリース後)
# 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 対応