mcpField
I
issue-triage

issue-triage

github.com/composio-community生産性17.1k466 回インストール13 週間前に更新
リポジトリ

issue-triage について

Composio CLI で Linear と Jira のバックログを確認し、重複候補をまとめて課題を更新するトリアージスキルです。バグの一括確認や、Sentry から Linear への連携フローも扱います。

主な機能

  1. 01Linear と Jira のバックログ検索
  2. 02重複候補のグループ化
  3. 03ラベル、優先度、担当者の設定
  4. 04Sentry から Linear への連携
  5. 05トリアージ結果の Slack 投稿

活用シーン

  1. 01未割り当て・更新停滞中の課題の発見
  2. 02リリース後のバグを重大度で分類
  3. 03課題の重複排除と担当者割り当て
  4. 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_ISSUES
  • LINEAR_CREATE_ISSUE
  • LINEAR_UPDATE_ISSUE
  • LINEAR_CREATE_COMMENT

Jira

  • JIRA_SEARCH_FOR_ISSUES_USING_JQL
  • JIRA_CREATE_ISSUE
  • JIRA_EDIT_ISSUE
  • JIRA_ADD_COMMENT
  • JIRA_ASSIGN_ISSUE

トリアージのワークフロー

  1. バックログの対象範囲を取得します:
    # 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"]
    }'
    
  2. タイトルの類似度とラベルに基づいてグループ化します。エージェントが重複の可能性が高い課題をローカルでまとめます。
  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"]}
    }'
    
  4. 正式な課題を参照するコメントを付けて、重複した課題をリンクします。
  5. 変更内容のダイジェストを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

コメント