sentry-triage について
Composio CLI で Sentry のイシュー、イベント、疑わしいコミットを取得し、エージェントの調査と修正を支援するスキルです。個別のアラートや未解決イシューの一括確認に使えます。
主な機能
- 01Sentry のイシューとイベント取得
- 02スタックフレームと疑わしいコミットの確認
- 03パッチの作成とテスト実行
- 04未解決イシューの一覧と順位付け
- 05イシュー状態の更新
活用シーン
- 01新しい Sentry アラートの調査
- 02回帰の疑わしいコミットの追跡
- 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_ISSUESENTRY_LIST_AN_ISSUES_EVENTSSENTRY_RETRIEVE_AN_EVENT_FOR_A_PROJECTSENTRY_LIST_A_PROJECTS_ISSUESSENTRY_UPDATE_AN_ISSUE
単一のイシューを診断する
- イシューを取得します(
PROJ-1F4のような短い ID または数値 ID を使用):composio execute SENTRY_GET_AN_ISSUE -d '{"issue_id":"PROJ-1F4"}' - 最新のイベントを取得します(スタック全体とパンくずリストを含めます):
composio execute SENTRY_LIST_AN_ISSUES_EVENTS \ -d '{"issue_id":"PROJ-1F4","full":true,"limit":1}' - 各フレームをローカルのソースに対応付けます。 スタック内の各
filenameとlinenoについて、エージェントがファイルを開き、前後20行を読み取ります。手動でのコピー&ペーストは不要です。 - 疑わしいコミットを確認します(リリーストラッキングが設定されている場合、Sentry が添付します)。ローカルで
git show <sha>を使ってコミットを開きます。 - 修正案を提案し、差分を作成してテストを実行します。テストに合格したら、イシューを解決済みにします:
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
コメント
Markdown 対応