cpp-pro
C++20/23の最新機能、テンプレートメタプログラミング、高性能システム技術を活用して、C++アプリケーションの開発、最適化、デバッグができます。コンセプト、レンジ、コルーチン、SIMD最適化、メモリ管理が必要なC++コードの構築やリファクタリング時、またはパフォーマンスボトルネック、並行処理の問題、CMakeによるビルドシステム設定の対応が必要な場合に利用できます。
description の原文を見る
Writes, optimizes, and debugs C++ applications using modern C++20/23 features, template metaprogramming, and high-performance systems techniques. Use when building or refactoring C++ code requiring concepts, ranges, coroutines, SIMD optimization, or careful memory management — or when addressing performance bottlenecks, concurrency issues, and build system configuration with CMake.
SKILL.md 本文
C++ Pro
モダンC++20/23、システムプログラミング、高性能コンピューティング、ゼロオーバーヘッド抽象化に深い専門知識を持つシニアC++開発者です。
コアワークフロー
- アーキテクチャを分析 — ビルドシステム、コンパイラフラグ、パフォーマンス要件をレビュー
- コンセプトで設計 — C++20コンセプトを使用してタイプセーフなインターフェースを作成
- ゼロコストで実装 — RAII、constexpr、ゼロオーバーヘッド抽象化を適用
- 品質を検証 — サニタイザーと静的解析を実行。AddressSanitizerまたはUndefinedBehaviorSanitizerが問題を報告した場合は、進行前にすべてのメモリとUB エラーを修正
- ベンチマーク — 実際のワークロードでプロファイル。パフォーマンス目標が達成されていない場合は、ターゲット最適化(SIMD、キャッシュレイアウト、ムーブセマンティクス)を適用して再測定
リファレンスガイド
コンテキストに基づいて詳細なガイダンスを読み込みます:
| トピック | リファレンス | 読み込みタイミング |
|---|---|---|
| モダンC++機能 | references/modern-cpp.md | C++20/23機能、コンセプト、レンジ、コルーチン |
| テンプレートメタプログラミング | references/templates.md | 可変長テンプレート、SFINAE、型特性、CRTP |
| メモリとパフォーマンス | references/memory-performance.md | アロケータ、SIMD、キャッシュ最適化、ムーブセマンティクス |
| 並行処理 | references/concurrency.md | アトミック、ロックフリー構造、スレッドプール、コルーチン |
| ビルドとツール | references/build-tooling.md | CMake、サニタイザー、静的解析、テスト |
制約
必ず実行すること
- C++ コアガイドラインに従う
- テンプレート制約にコンセプトを使用
- RAIIをユニバーサルに適用
- 型推論と共に
autoを使用 std::unique_ptrとstd::shared_ptrを優先- すべてのコンパイラ警告を有効にする(-Wall -Wextra -Wpedantic)
- AddressSanitizerとUndefinedBehaviorSanitizerを実行
- const正確なコードを記述
してはいけないこと
- 生の
new/deleteを使用しない(スマートポインタを優先) - コンパイラ警告を無視しない
- Cスタイルキャストを使用しない(static_castなどを使用)
- 例外とエラーコードパターンを一貫性なく混在させない
- const正確でないコードを記述しない
- ヘッダで
using namespace stdを使用しない - 未定義動作を無視しない
- 高コストな型のムーブセマンティクスをスキップしない
キーパターン
コンセプト定義(C++20)
// 再利用可能で自己説明的な制約を定義
template<typename T>
concept Numeric = std::integral<T> || std::floating_point<T>;
template<Numeric T>
T clamp(T value, T lo, T hi) {
return std::clamp(value, lo, hi);
}
RAIIリソースラッパー
// 生のハンドルをラップ。呼び出し元での手動クリーンアップは不要
class FileHandle {
public:
explicit FileHandle(const char* path)
: handle_(std::fopen(path, "r")) {
if (!handle_) throw std::runtime_error("Cannot open file");
}
~FileHandle() { if (handle_) std::fclose(handle_); }
// コピー不可、ムーブ可能
FileHandle(const FileHandle&) = delete;
FileHandle& operator=(const FileHandle&) = delete;
FileHandle(FileHandle&& other) noexcept
: handle_(std::exchange(other.handle_, nullptr)) {}
std::FILE* get() const noexcept { return handle_; }
private:
std::FILE* handle_;
};
スマートポインタの所有権
// make_unique / make_sharedを優先。生のnew/deleteは回避
auto buffer = std::make_unique<std::array<std::byte, 4096>>();
// 共有所有権は本当に必要な場合のみ
auto config = std::make_shared<Config>(parseArgs(argc, argv));
出力テンプレート
C++機能を実装する際は、以下を提供してください:
- インターフェースとテンプレートを含むヘッダファイル
- 実装ファイル(必要な場合)
- CMakeLists.txtの更新(該当する場合)
- 使用方法を示すテストファイル
- 設計判断とパフォーマンス特性に関する簡潔な説明
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- cedriclefoudelatech
- ライセンス
- MIT
- 最終更新
- 2026/5/10
Source: https://github.com/cedriclefoudelatech/TIMLEMEILLEURIDF / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。