この記事は何
Claude Codeには Pluginという形でカスタムコマンド, サブエージェント, Skills, MCP, Hooksなどをひとつのパッケージとして配布できる機能があります。
僕はこのPlugin機能を用いて、自身の環境をPluginとしてGitHubに公開しています。
これから複数回に分け、この自身のClaude Code Pluginの環境を紹介していきます。
今回は実装したSkillの一つである、skills/resolve-pr-commentsについて紹介をします。
Skillsとは
SkillsはClaude Codeが特定のタスクを実行する際に参照できる、再利用可能な知識・手順をまとめたものです。
各Skillは主にMarkdownファイル(SKILL.md)として定義され、必要に応じて関連するスクリプトやリソースを含むことができます。
Claude Codeは、ユーザーのリクエストに応じて適切なSkillを読み込み、その指示に従って作業を実行します。これにより、複雑なワークフローや定型的な作業を一貫性のある方法で自動化できます。
Claude Code自身が参照する知識ベースとして機能し、直接的にスクリプトの実行やワークフローの管理が可能なため、どのような時にどのようなことをするべきかをルールベースで定義、実行させることが可能です。
詳しくは以下をご覧ください。
skills/resolve-pr-comments について
skills/resolve-pr-commentsは、GitHub PRの未解決Review threadsを一括で自動的にResolveするSkillです。
できること
このSkillでは、以下のことができます。
- GitHub GraphQL APIを使って未解決のReview threads(コード特定行へのコメント)を取得
-
resolveReviewThreadmutationで全てのスレッドを自動的にResolve - 各スレッドの処理結果を個別に表示
なお、Issue comments(会話タブのコメント)は元々Resolve機能がないため、このSkillの対象外となっています。
いつ使うか
コードレビュー後の修正作業が完了し、全てのレビューコメントに対応した後、手動で1つずつResolveボタンをクリックする代わりに、このSkillを使って一括でResolveできます。
特に大量のレビューコメントがあるPRでは、手動でResolveする作業が非常に時間がかかるため、このSkillが役立ちます。
プロンプトの紹介
このSkillのプロンプトは非常にシンプルです。SKILL.mdに以下のように記述されています。
プロンプトの要点は以下の通りです。
- 目的の明確化: GitHub PRの未解決Review threadsを一括Resolveすることを明示
- 処理内容の説明: GraphQL APIを使った取得とmutationによるResolve処理を説明
- 対象範囲の明確化: Review threads(コード特定行へのコメント)が対象で、Issue commentsは対象外であることを明記
- 実行方法の指示: スクリプトを実行するコマンドを記載
コードの紹介
このSkillのコアとなるスクリプトはscripts/resolve-pr-comments.shです。
実装のポイント
このスクリプトの実装には、以下のようなポイントがあります。
GraphQL APIの活用
GitHub CLIのgh api graphqlコマンドを使って、未解決のReview threadsを取得しています。ページネーションにも対応しており、hasNextPageとendCursorを使って全てのスレッドを取得できます。
取得データの構造
以下のような情報を取得しています。
- PR基本情報(番号、タイトル、URL、ステータス)
- 著者情報
- レビュー要求者リスト
- レビュースレッド詳細(ID、解決状態、ファイルパス、行番号、コメント履歴)
一括Resolve処理
未解決のスレッドIDを収集し、resolveReviewThread mutationを使って1つずつResolveしていきます。各スレッドの処理結果を表示することで、何が処理されたのかを確認できるようになっています。
まとめ
skills/resolve-pr-commentsは、PRのレビューコメントを一括でResolveするシンプルながら便利なSkillです。
コードレビュー後の作業を効率化したい方は、ぜひ試してみてください。