cpp-core-guidelines-review について
cpp-core-guidelines-reviewは、C++ Core Guidelinesに沿ったコードレビューを調整するスキルです。ガイドラインの各セクションを並列のサブエージェントに割り当て、範囲の明確化、ルールに対応した高確度の指摘、レビュー対象ソースの変更禁止を求めます。
主な機能
- 01開始前にレビュー範囲を明確化
- 02ガイドライン各章をサブエージェントに割り当て
- 03章ごとのレビューを並列実行
- 04指摘をサマリーに集約
- 05高確度の違反のみ報告
活用シーン
- 01指定したC++ファイルをガイドラインに照らしてレビュー
- 02ファイルパターンを指定してディレクトリをレビュー
- 03対象とするガイドラインの章を限定
- 04各章のレポートから指摘を集約
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openharmonyinsight/ openharmony-skills --skill cpp-core-guidelines-reviewインストール後、Claude Code で/cpp-core-guidelines-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/guideline-section-reviewer.mdreferences/Introduction.mdreferences/Content/Classes and class hierarchies.mdCon Constants and immutability.mdCP Concurrency and parallelism.mdCPL C-style programming.mdE Error handling.mdEnum Enumerations.mdES Expressions and statements.mdFunctions.mdInterfaces.mdNL Naming and layout suggestions.mdNR Non-Rules and myths.mdPer Performance.mdPhilosophy.mdR Resource management.mdSF Source files.mdT Templates and generic programming.md詳細
C++ Core Guidelines のレビュー
概要
並列サブエージェントを起動し、それぞれが特定のガイドラインセクションに照らしてコードを分析することで、C++ Core Guidelines に基づいて C++ コードをレビューします。このスキルにより、違反の特定に高い信頼性を保ちながら、網羅的に確認できます。
ワークフロー
ステップ 1:レビュー範囲の確認
サブエージェントを起動する前に、レビュー範囲をユーザーに確認してください。
- 対象のファイル/ディレクトリ:レビューする C++ ソースファイルまたはディレクトリはどれですか?
- ファイルパターン:対象に含めるファイル拡張子は何ですか?(例:
.cpp、.h、.hpp) - 除外対象:除外するファイルやディレクトリはありますか?
重要:範囲が明確に定義され、曖昧さがなくなるまで先に進まないでください。
ステップ 2:並列サブエージェントの起動
重要な要件:
references/Content/内のすべてのファイルに対して、必ずサブエージェントを 1 つ起動してください。ファイルを省略しないでください。各ガイドラインセクションには、それぞれ専用のサブエージェントが必要です。- このプラグインの
agents/guideline-section-reviewer.mdにある guideline-section-reviewer エージェントを、各サブエージェントに使用してください。
並列起動の戦略:パフォーマンスを最大化するため、1 回の応答メッセージで複数の Task ツール呼び出しを送信し、すべてのサブエージェントを並列で起動してください。Task ツールのドキュメントには、「ユーザーがエージェントを『並列で』実行するよう指定した場合、複数の Task ツール使用コンテンツブロックを含む単一のメッセージを必ず送信する」と明記されています。
ガイドラインセクションごとに、サブエージェントを 1 つ起動します。各サブエージェントは、次の処理を行います。
- 割り当てられたガイドラインファイルのルールのみに照らしてレビューします。
<current-working-directory>/review/<SectionName>.mdに指摘事項を出力します。- 違反について、ファイルパス、行番号、コードスニペット、および違反した具体的なルールを報告します。
エージェントの呼び出し手順:
- エージェントのテンプレートを読む:
agents/guideline-section-reviewer.mdからエージェント定義を読み取ります。 - パラメーターを置換する:エージェントファイル内のテンプレート変数を、次の実値に置き換えます。
{{SECTION_NAME}}:セクションの表示名(例:「Functions」){{SECTION_FILE}}:references/Content/内のセクションファイル名(例:「Functions.md」){{TARGET_FILES_PATTERN}}:レビューするファイル/ディレクトリ(例:「src/**/*.cpp」、または特定のファイルパス){{OUTPUT_DIR}}:出力ディレクトリ(通常は<current-working-directory>/review){{DATE}}:現在の日付(YYYY-MM-DD 形式){{FILES_COUNT}}:レビュー対象のファイル数{{VIOLATION_COUNT}}:プレースホルダー。エージェントが値を入力します。
- エージェントを起動する:
subagent_type=generalを指定して Task ツールを使用し、置換済みのプロンプトをエージェントへの指示として渡します。
呼び出し例:
For section "Functions":
- Read agent template from agents/guideline-section-reviewer.md
- Substitute: SECTION_NAME="Functions", SECTION_FILE="Functions.md", etc.
- Launch guideline-section-reviewer agent with substituted prompt
エージェントは次の処理を行います。
- プラグインの
references/Content/ディレクトリからガイドラインセクションを読み取ります。 - そのセクションのルールに照らして対象ファイルをレビューします。
- 指摘事項を
<OUTPUT_DIR>/<SECTION_NAME>.mdに出力します。 - ファイルパス、行番号、コードスニペット、および違反した具体的なルールを報告します。
ステップ 3:すべてのサブエージェントを待機する
すべてのサブエージェントを起動した後、それぞれのタスク ID を収集して、完了を待ちます。
待機プロセス:
- タスク ID を記録する:各 Task ツールの呼び出しで返されたタスク ID を保存します
- 完了を待つ:各タスク ID に対して、次の値を指定して
TaskOutputを使用します:task_id:サブエージェントの起動時に返されたタスク IDblock=true:サブエージェントが完了するまで待機しますtimeout=600000(10 分):エージェントごとの最大待機時間
- 成功を確認する:各サブエージェントについて、次の点を確認します:
- エラーなく完了したこと
<current-working-directory>/review/<SectionName>.mdに出力ファイルを作成したこと- ソースファイルを変更していないこと
エラー処理:
- サブエージェントが失敗した場合:ユーザーにエラーを報告し、他のエージェントの処理を続行します
- タイムアウトが発生した場合:タイムアウトしたエージェントを記録し、ユーザーに報告します
- 出力ファイルが見つからない場合:レビューが完了していないセクションを示します
確認チェックリスト:
- すべてのサブエージェントを起動した
- すべてのサブエージェントが完了した(または失敗を報告した)
- 完了した各セクションの出力ファイルが存在する
- ソースファイルが変更されていない
ステップ 4:概要を作成する
すべてのサブエージェントが完了したら、すべての指摘事項を包括的に分析した <current-working-directory>/review/Summary.md を作成します。
手順:
<current-working-directory>/review/*.mdからすべてのセクションレビュー・ファイルを読み込みます(Summary.md 自体は除外)- 違反件数、該当ファイル、ルール違反を集計します
- 以下のテンプレートを使用して概要を作成します
Summary.md のテンプレート:
# C++ Core Guidelines Review Summary
## Overview
**Date**: YYYY-MM-DD
**Review Scope**: <Files/directories reviewed>
**Total Sections Reviewed**: <Number of sections completed>
**Total Violations Found**: <Total count across all sections>
## Summary by Section
| Section | Violations | Most Violated Rule |
|---------|------------|-------------------|
| Functions | N | F.15, ... |
| Classes and Class Hierarchies | N | C.7, ... |
| Resource Management | N | R.1, ... |
| [Continue for all sections] | | |
## Summary by File
| File | Total Violations | Top Violation Categories |
|------|------------------|--------------------------|
| path/to/file1.cpp | N | Resource Management, Error Handling |
| path/to/file2.h | M | Const Correctness, Interfaces |
| [Continue for affected files] | | |
## Top Violations by Frequency
| Rank | Rule ID | Rule Summary | Count |
|------|---------|--------------|-------|
| 1 | F.15 | Prefer simple and default constructs | N |
| 2 | R.3 | Raw pointers should not be used | M |
| [Continue] | | | |
## Critical Findings
### High-Priority Issues
<List violations with high impact or security implications>
### Most Common Patterns
<Identify recurring violation patterns across the codebase>
## Detailed Section Breakdown
### Functions (N violations)
<Brief summary of key violations in this section>
See: [Functions.md](Functions.md)
### Classes and Class Hierarchies (N violations)
<Brief summary of key violations in this section>
See: [Classes and Class Hierarchies.md](Classes%20and%20Class%20Hierarchies.md)
### [Continue for all sections with violations]
## Recommendations
1. **Immediate Actions**: <Critical violations that should be addressed soon>
2. **Process Improvements**: <Suggestions to avoid common violations>
3. **Training Topics**: <Areas where team education may help>
## Review Metadata
- **Sections Completed**: <List of sections that completed>
- **Sections Skipped/Failed**: <List of sections that had issues>
- **Total Files Reviewed**: <Count>
- **Lines of Code Reviewed**: <If available>
概要に関する主な要件:
- すべてのセクションレポートから集計した正確な違反件数を記載する
- 該当する場合は、違反件数の降順で表を並べ替える
- 詳細な指摘事項を確認できるよう、各セクションレポートへのリンクを記載する
- 傾向や全体に共通する問題を明確にする
- 指摘事項に基づく、実行可能な改善策を提示する
重要な制約(最優先)
- 変更禁止:このスキルおよびすべてのサブエージェントは、レビュー対象ファイルを変更してはなりません。書き込み可能な場所は
<current-working-directory>/review/ディレクトリのみです。 - メインセッションの不関与:メインの会話でコードレビューを行ってはなりません。サブエージェントの調整のみを行います。
- セクションごとの適用:各サブエージェントは、割り当てられたセクションの規則に対してのみレビューします。セクションをまたぐ違反は報告しません。
- ルールとの対応付け:報告する違反はすべて、特定のガイドラインのルールに対応していなければなりません。ルールに対応付けられない指摘は無効です。
- 高い確信度の基準:確信度の高い違反のみを報告します。確信が持てないケースは省きます。
- 違反のみを報告:ガイドライン違反のみを報告します。ガイドラインに正しく従っているコードは報告しません。準拠しているコードを指摘事項に含めてはなりません。
C++ Core Guidelines の構成
C++ Core Guidelines の参照ファイルは、このスキルの references/ ディレクトリに含まれています:
Introduction.md- 概要と用語集Content/- 個別のガイドラインセクション
各セクションには、次の項目を含む複数のルールがあります:
- ルール識別子(例:「C.7」、「F.15」)
- ルールの記述
- 根拠(Reason)
- 例(準拠例/非準拠例)
- 例外(該当する場合)
- 適用に関する提案
ユーザーとのやり取りの例
例 1:特定のファイルをレビューする
User: "Review src/transaction.cpp and src/account.h against C++ Core Guidelines"
→ 対象範囲を確認してから、それらのファイル用にサブエージェントを起動します。
例 2:ディレクトリをレビューする
User: "Review all C++ files in the services/ directory"
→ ファイルのパターンと除外対象を確認してから、サブエージェントを起動します。
例 3:特定のセクションに照らしてレビューする
User: "Review using only Resource Management and Error Handling guidelines"
→ その 2 つのサブエージェントのみを起動します。