mcpField
S
sentry-triage

sentry-triage

github.com/composio-community開発17.1k470 回インストール14 週間前に更新
リポジトリ

sentry-triage について

Composio CLI で Sentry のイシュー、イベント、疑わしいコミットを取得し、エージェントの調査と修正を支援するスキルです。個別のアラートや未解決イシューの一括確認に使えます。

主な機能

  1. 01Sentry のイシューとイベント取得
  2. 02スタックフレームと疑わしいコミットの確認
  3. 03パッチの作成とテスト実行
  4. 04未解決イシューの一覧と順位付け
  5. 05イシュー状態の更新

活用シーン

  1. 01新しい Sentry アラートの調査
  2. 02回帰の疑わしいコミットの追跡
  3. 03未解決イシューの順位付き概要作成

MCP 対応

これは MCP サーバーではなく、エージェントスキルです。Composio CLI を使って Sentry ツールにアクセスします。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/composio-community/awesome-codex-skills --skill sentry-triage

インストール後、Claude Code で/sentry-triageを入力して読み込まれたか確認します。

詳細

Sentry のトリアージ

Composio CLI を使って、Sentry のイシュー、イベント、疑わしいコミットをエージェントに直接取り込みます。スタックトレースをコピー&ペーストする手間を省けます。

使用するタイミング

  • Sentry の新しいアラートが届き、件名を引用するだけでなく、エージェントに調査させたいとき。
  • リグレッションの原因を診断するとき:リリース、疑わしいコミット、影響を受けたファイルを特定します。
  • 再現のヒントを含む「未解決イシューのトップ10」ダイジェストを作成するとき。

前提条件

curl -fsSL https://composio.dev/install | bash
composio login
composio link sentry        # auth token with event:read + project:read

ツールを見つける

composio search "get sentry issue" --toolkits sentry
composio search "list events for issue" --toolkits sentry
composio tools list sentry

よく使われるスラッグ(--get-schema で確認してください):

  • SENTRY_GET_AN_ISSUE
  • SENTRY_LIST_AN_ISSUES_EVENTS
  • SENTRY_RETRIEVE_AN_EVENT_FOR_A_PROJECT
  • SENTRY_LIST_A_PROJECTS_ISSUES
  • SENTRY_UPDATE_AN_ISSUE

単一のイシューを診断する

  1. イシューを取得します(PROJ-1F4 のような短い ID または数値 ID を使用):
    composio execute SENTRY_GET_AN_ISSUE -d '{"issue_id":"PROJ-1F4"}'
    
  2. 最新のイベントを取得します(スタック全体とパンくずリストを含めます):
    composio execute SENTRY_LIST_AN_ISSUES_EVENTS \
      -d '{"issue_id":"PROJ-1F4","full":true,"limit":1}'
    
  3. 各フレームをローカルのソースに対応付けます。 スタック内の各 filename と lineno について、エージェントがファイルを開き、前後20行を読み取ります。手動でのコピー&ペーストは不要です。
  4. 疑わしいコミットを確認します(リリーストラッキングが設定されている場合、Sentry が添付します)。ローカルで git show <sha> を使ってコミットを開きます。
  5. 修正案を提案し、差分を作成してテストを実行します。テストに合格したら、イシューを解決済みにします:
    composio execute SENTRY_UPDATE_AN_ISSUE \
      -d '{"issue_id":"PROJ-1F4","status":"resolved","statusDetails":{"inNextRelease":true}}'
    

複数のイシューをトリアージする

composio execute SENTRY_LIST_A_PROJECTS_ISSUES -d '{
  "organization_slug":"acme",
  "project_slug":"api",
  "query":"is:unresolved age:-24h",
  "sort":"freq",
  "limit":20
}'

jq に渡して、優先順位付きの概要を表示します:

composio execute SENTRY_LIST_A_PROJECTS_ISSUES -d '{"organization_slug":"acme","project_slug":"api","query":"is:unresolved"}' \
  | jq -r '.[] | "\(.count)\t\(.shortId)\t\(.title)"' | sort -rn | head

ワークフローファイル

scripts/sentry-diag.ts。次のコマンドで実行します:composio run --file scripts/sentry-diag.ts -- --id PROJ-1F4:

const id = process.argv[process.argv.indexOf("--id") + 1];

const issue = await execute("SENTRY_GET_AN_ISSUE", { issue_id: id });
const [event] = await execute("SENTRY_LIST_AN_ISSUES_EVENTS", {
  issue_id: id, full: true, limit: 1
});

const frames = (event?.entries ?? [])
  .filter(e => e.type === "exception")
  .flatMap(e => e.data.values.flatMap(v => v.stacktrace?.frames ?? []))
  .filter(f => f.inApp)
  .map(f => ({ file: f.filename, line: f.lineno, fn: f.function }));

console.log(JSON.stringify({ title: issue.title, culprit: issue.culprit, frames }, null, 2));

次にエージェントが各 file の指定行の前後20行を読み取り、パッチを作成します。

Linear/Slack に振り分ける

ツールを連携させて、未解決イシューのうち最優先のものに対するチケットを作成します:

composio run '
  const [top] = await execute("SENTRY_LIST_A_PROJECTS_ISSUES", {
    organization_slug: "acme", project_slug: "api",
    query: "is:unresolved", sort: "freq", limit: 1
  });
  await execute("LINEAR_CREATE_ISSUE", {
    teamId: "TEAM_ID",
    title: `[Sentry] ${top.title}`,
    description: `Short ID: ${top.shortId}\nPermalink: ${top.permalink}\nCount: ${top.count}`
  });
'

トラブルシューティング

  • issue_id が 404 になる → URL のスラッグではなく、短い ID(PROJ-1F4)を使ってください。
  • イベントが空になる → イシューは解決済み、またはアーカイブ済みです。query:"is:resolved" を指定するか、limit を増やしてください。
  • 疑わしいコミットがない → Sentry でリリーストラッキングが設定されていません。CI で sentry-cli releases を設定してください。
  • inApp フレームがない → ソースマップがアップロードされていません。スタックにはベンダーコードしか表示されません。

CLI の全リファレンス:docs.composio.dev/docs/cli

コメント