sentry-code-review について
Sentry Code Review は、GitHub のプルリクエストにある Sentry のレビューコメントを分析し、確認済みの問題への対処を案内するスキルです。Sentry のコメントを抽出し、該当コードを確認して、的を絞った修正を支援します。
主な機能
- 01プルリクエストの Sentry コメント取得
- 02問題の詳細と修正案の抽出
- 03該当コードでの指摘内容の検証
- 04問題に応じた修正の案内
活用シーン
- 01GitHub のプルリクエストで Sentry の指摘を確認
- 02報告された不具合が残っているか検証
- 03確認済みの修正を適用して要約
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ getsentry/ sentry-for-ai --skill sentry-code-reviewインストール後、Claude Code で/sentry-code-reviewを入力して読み込まれたか確認します。
詳細
Sentry コードレビュー
GitHub プルリクエストのレビューコメントで Sentry が特定した問題を分析し、解決するための専門スキルです。
Sentry PR レビューコメントの形式
Sentry は、PR のコード変更に対して行単位のレビューコメントを投稿します。各コメントには次の内容が含まれます。
コメントのメタデータ(API から取得)
author:ボットのユーザー名(例:「sentry[bot]」)file:コメント対象の特定のファイル(例:「src/sentry/seer/explorer/tools.py」)line:コード内の行番号(ファイル全体へのコメントの場合はnullのことがあります)body:コメントの全文(HTML の詳細タグを含む Markdown)
本文の構成
body フィールドには、折りたたみ可能なセクションを含む Markdown が格納されます。
ヘッダー:
**Bug:** [Issue description]
<sub>Severity: CRITICAL | Confidence: 1.00</sub>
分析セクション(<details> タグ内):
<details>
<summary>🔍 <b>Detailed Analysis</b></summary>
Explains the technical problem and consequences
</details>
修正セクション(<details> タグ内):
<details>
<summary>💡 <b>Suggested Fix</b></summary>
Proposes a concrete solution
</details>
AI エージェントのプロンプト(<details> タグ内):
<details>
<summary>🤖 <b>Prompt for AI Agent</b></summary>
Specific instructions for reviewing and fixing the issue
Includes: Location (file#line), Potential issue description
</details>
問題の例
-
None 値による TypeError
- リストが期待されている箇所で None を返す関数
- 反復処理の前に null チェックがない
-
検証の問題
- 入力検証が寛容すぎる
- 無効なデータがそのまま通過する
-
エラーハンドリングの不備
- エラーがログに記録されるが、再スローされない
- 重要な処理経路でエラーがサイレントに失敗する
ワークフロー
1. PR コメントを取得する
PR 番号または URL が指定された場合:
# Get PR review comments (line-by-line code comments) using GitHub API
gh api repos/{owner}/{repo}/pulls/<PR_NUMBER>/comments --jq '.[] | select(.user.login | startswith("sentry")) | {author: .user.login, file: .path, line: .line, body: .body}'
または、WebFetch を使って PR の URL から直接取得します。
2. Sentry のコメントを解析する
- Sentry のコメントのみを処理します(ユーザー名が「sentry」で始まるもの。例:「sentry[bot]」)
- 「cursor[bot]」やその他のボットからのコメントは無視します
- 各コメントから次の情報を抽出します。
file:コメント対象のファイルパスline:特定の行番号(利用可能な場合)body:Markdown/HTML の本文を解析し、次の情報を抽出します。- バグの説明(「Bug:」で始まるヘッダー行から)
- 重大度レベル(
<sub>Severity: Xタグから) - 信頼度スコア(sub タグ内の
Confidence: X.XXから) - 詳細な分析(
<summary>🔍 <b>Detailed Analysis</b></summary>詳細ブロック内のテキスト) - 推奨される修正(
<summary>💡 <b>Suggested Fix</b></summary>詳細ブロック内のテキスト) - AI エージェントのプロンプト(
<summary>🤖 <b>Prompt for AI Agent</b></summary>詳細ブロック内のテキスト)
3. 各問題を分析する
Sentry の各コメントについて:
- コメントのメタデータから
fileとlineを確認します。これにより、確認すべき箇所を正確に把握できます - コメントで指定されたファイルを読みます
- 行番号に移動して、問題のあるコードを確認します
- 問題に関する具体的なコンテキストを把握するため、「🤖 Prompt for AI Agent」セクションを読みます
- 現在のコードにも問題が残っているかを確認します
- Detailed Analysis から根本原因を把握します
- Suggested Fix を評価します
4. 修正を実装する
確認済みの各問題について:
- 影響を受けるファイルを読みます
- 推奨される修正、または独自の解決策を実装します
- 修正によって根本原因が解消されることを確認します
- エッジケースと副作用を考慮します
- Edit ツールを使って、正確に変更します
5. 概要を提示する
問題を分析して修正した後、次の形式で報告します。
## Sentry Code Review Summary
**PR:** #[number] - [title]
**Sentry Comments Found:** [count]
### Issues Resolved
#### 1. [Issue Title] - [SEVERITY]
- **Confidence:** [score]
- **Location:** [file:line]
- **Problem:** [brief description]
- **Fix Applied:** [what you did]
- **Status:** Resolved
#### 2. [Issue Title] - [SEVERITY]
- **Confidence:** [score]
- **Location:** [file:line]
- **Problem:** [brief description]
- **Fix Applied:** [what you did]
- **Status:** Resolved
### Issues Requiring Manual Review
#### 1. [Issue Title] - [SEVERITY]
- **Reason:** [why manual review is needed]
- **Recommendation:** [suggested approach]
### Summary
- **Total Issues:** [count]
- **Resolved:** [count]
- **Manual Review Required:** [count]
重要なガイドライン
- Sentry のみ:「sentry」で始まるユーザー名の Sentry からのコメントに注目します
- 最初に確認する:修正を試みる前に、必ず問題が存在することを確認します
- 編集前に読む:Edit ツールを使う前に、必ず Read ツールを使います
- 正確さ:根本原因に対処する、対象を絞った修正を行います
- 安全性:修正に確信が持てない場合は、AskUserQuestion を使ってユーザーに指示を求めます
- テスト:修正を適用した後にテストを実行するよう、ユーザーに伝えます
Sentry ボットでよくある問題のカテゴリ
ビルド設定の問題
- ビルド出力にファイルが含まれていない
- tsconfig の設定が正しくない
- ビルドスクリプトにファイルのコピー手順がない
エラーハンドリングの問題
- エラーが捕捉されるが、再スローされない
- 重要な処理経路でエラーがサイレントに失敗する
- エラーバウンダリーがない
実行時設定の問題
- 環境変数の不足
- パス解決の誤り
- 必須の依存関係の不足
型安全性の問題
- null チェックの不足
- 失敗する可能性のある型アサーション
- 入力検証の不足
コメント
Markdown 対応