cpp-review

作成者: clickhouse

Review C++ code against Google C++ Style Guide. Use when reviewing C++ code, pull requests, or when asked to check code style compliance.

npx skills add https://github.com/clickhouse/pg_stat_ch --skill cpp-review

C++ Code Review (Google Style)

Review C++ code for compliance with the Google C++ Style Guide.

Review Checklist

Naming

  • Types use PascalCase
  • Functions use PascalCase (accessors use snake_case)
  • Variables use snake_case
  • Class members have trailing underscore: member_
  • Constants use kPascalCase
  • Macros use UPPER_CASE with project prefix

Headers

  • Has #define guard: PROJECT_PATH_FILE_H_
  • Self-contained (includes all dependencies)
  • Includes ordered: related header, C system, C++ stdlib, other libs, project
  • No forward declarations unless necessary

Classes

  • Single-argument constructors are explicit
  • Data members are private
  • Copy/move semantics explicit (= default, = delete)
  • No virtual calls in constructors
  • Uses composition over inheritance when appropriate

Functions

  • Returns values instead of output parameters when possible
  • Parameters ordered: inputs before outputs
  • Functions are ≤40 lines (prefer smaller)
  • Uses override/final for virtual overrides

Modern C++

  • Uses nullptr (not NULL or 0)
  • Uses C++ casts (not C-style)
  • Uses range-based for loops where appropriate
  • Uses auto appropriately (not excessively)
  • Smart pointers for ownership (unique_ptr, shared_ptr)

Formatting

  • 80 character line limit
  • 2-space indent
  • Braces on same line as control structures
  • Spaces around binary operators

Feedback Format

Use severity levels:

  • 🔴 MUST FIX: Style violations or bugs that must be fixed
  • 🟡 SHOULD FIX: Strong recommendations for improvement
  • 🟢 CONSIDER: Optional enhancements or suggestions

Example Review Comment

🔴 **MUST FIX**: Missing `explicit` on single-argument constructor
Line 45: `Foo(int value)` should be `explicit Foo(int value)` to prevent
implicit conversions.

🟡 **SHOULD FIX**: Function too long
Lines 78-145: `ProcessData()` is 67 lines. Consider breaking into smaller
functions for readability and testability.

🟢 **CONSIDER**: Use structured bindings
Line 23: `auto [iter, success] = map.insert({key, value});` would be clearer
than separate `.first` and `.second` access.

clickhouseのその他のスキル

clickhouse-best-practices
clickhouse
ClickHouseのベストプラクティス28ルールを、スキーマ設計、クエリ最適化、データ取り込み戦略に分類。プライマリキーとデータ型の選択(不変の設計判断)、JOINとクエリの最適化、挿入のバッチ処理とミューテーション回避の3つの重要領域をカバー。影響度で優先順位付けされた28ルールを含み、ClickHouseのカラムナストレージとスパースインデックスの仕組みにより、スキーマ設計とクエリ最適化のルールはCRITICALとマーク。構造化されたレビュー手順を提供...
official
clickhouse-js-node-coding
clickhouse
Write idiomatic application code with the ClickHouse Node.js client (`@clickhouse/client`). Use this skill whenever a user is *building* against the Node.js…
official
clickhousectl-cloud-deploy
clickhouse
ユーザーがClickHouseをクラウドにデプロイしたい、本番環境に移行したい、ClickHouse Cloudを使用したい、マネージドClickHouseサービスをホストしたい、またはローカルから移行したい場合に使用します。
official
clickstack-otel-collector
clickhouse
Use when a user wants to wire an OpenTelemetry collector into a Managed ClickStack service on ClickHouse Cloud, either by deploying a new local collector…
official
infra-clickhouse
clickhouse
Sets up and manages ClickHouse using the clickhousectl CLI — installs and runs a local ClickHouse server for development, and creates managed ClickHouse Cloud…
official
infra-postgres
clickhouse
Sets up and manages Postgres using the clickhousectl CLI — runs a local Docker-backed Postgres for development, and creates and operates managed ClickHouse…
official
clickhouse-best-practices
clickhouse
ClickHouseのスキーマ、クエリ、または設定をレビューする際に必ず使用すること。推奨事項を提供する前に必ず確認すべき31のルールが含まれています。常に読んでください…
official
setup
clickhouse
このプラグインにバンドルされているClickHouse MCPサーバー接続のセットアップをユーザーに案内します。ユーザーが初めてプラグインをインストールしたときや、問題が発生したときに使用します…
official