Skills · Claude Code · Agent Skills

既存の C++ から生の new/delete と未定義動作を排除する。交渉の余地はありません。

既存の C++ コードを保守するための防御的な最低基準です。RAII、CI でのサニタイザ、clang-tidy、オブジェクト寿命の管理を求めます。新規コンポーネントは Rust か Zig で作り、C++ は例外 ADR がある場合のみです。

v0.4.0Disciplina · C++ defensivogithub.com/schematizeme/skill-cpp

メンテナー Lucas Andrade

schematize-cpp · v0.4.0bash
$ schematize install cpp
GitHub →スキル (.zip) をダウンロード/cpp-help · github.com/schematizeme/schematize-cli

譲れない最低基準

「速くするため」に外すことはありません。完全な一覧はスキル内にあります。

新規コンポーネントは Rust か Zig

C++ は例外 ADR がある場合のみで、適合性(fit)では採用しません。

RAII が基本の仕組み

新規コードで生の new/delete は禁止。既定は unique_ptr、shared_ptr は所有権が本当に共有される場合のみです。

ゼロの規則またはファイブの規則

デストラクタだけを書くのは、暗黙コピーによる二重解放への典型的な道です。

寿命を管理する

所有者より長く生きる string_view、span、参照は未定義動作です。非同期コードでの [&] ラムダも同じバグです。

サニタイザ付きテストと厳格なビルド

CI で ASan、UBSan、TSan を -fno-sanitize-recover=all 付きで実行し、-Werror、-Wconversion、-Wold-style-cast、_GLIBCXX_ASSERTIONS も有効にします。

例外・ロック・スレッド

catch は const 参照で受け、空の catch (...) は禁止。デストラクタは例外を投げず、手動 lock ではなく lock_guard、生の thread ではなく std::jthread を使います。

コマンド

.claude/commands/ にインストールされます。いつでも /cpp-help を実行できます。

/cpp-ccコンテキスト圧縮:ハンドオフ(コンテキスト+チェックリスト)をアーカイブに書き出し、/compact を実行します。
/cpp-claudeschematize-cpp の常時有効な CLAUDE.md をリポジトリ直下に作成またはマージします。他スキルのブロックは上書きしません。
/cpp-handoff圧縮せずにコンテキストのハンドオフをアーカイブに書き出します。セッション終了やタスク切り替え時に使います。
/cpp-helpスキルの全コマンドを一覧表示します。
/cpp-loadschematize-cpp の規範本体をすべて強制ロードし、セッション中適用します。
/cpp-review.cpp/.hpp とビルドを基準に照らしてレビューします。ゲート(コード+ビルド)を実行し、機械が読めない点(RAII、寿命、未定義動作、適用範囲)を読みます。

AIエージェント向け

人手を介さずにインストールできます。メタデータは llms.txt にあります。

  • 実行:git clone https://github.com/schematizeme/skill-cpp.git && ./skill-cpp/install.sh
  • または https://github.com/schematizeme/skill-cpp/releases/latest/download/skill-cpp.zip をダウンロードして .claude/skills/ に展開します。
  • assets/CLAUDE.md をリポジトリ直下にコピーします(常時有効ルール)。
  • /cpp-help で確認します。

インストールしたくない?

完全な規約を読み、そのままプロジェクトにコピーできます。あるいはスキルをインストールすれば、エージェントが自動で適用します。