hegel について
hegel は複数のプログラミング言語でプロパティベーステストを行うスキルです。証拠に基づくテスト設計、失敗の調査、独立レビューをコーディングエージェントに案内します。
主な機能
- 01ランダム入力の生成と縮小
- 02複数言語のテストライブラリ
- 03証拠に基づくプロパティ設計
- 04網羅性と敵対的レビューのガイド
活用シーン
- 01最小反例の発見
- 02公開 API と境界条件のテスト
- 03完了前のテスト網羅性確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hegeldev/ hegel-skill --skill hegelインストール後、Claude Code で/hegelを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
techniques/adversarial-review.mddirections.mdgenerators.mdrunning.mdscale.mdsurfaces.mdtriage.md詳細
Hegel:プロパティベーステスト
Hegel はコードへのランダムな入力を生成し、失敗したケースを最小の反例へと縮小します。Rust(hegeltest)、Go、C++、TypeScript、Java、OCaml 向けのライブラリがあり、いずれも標準のテストランナーと統合されます。
API は次の順に確認してください。このリポジトリにある既存の hegel テスト、ライブラリのドキュメント、お使いの環境で利用できる hegel ライブラリのソース(ベンダー同梱版またはレジストリのコピー)です。使用するものの正確な名前とシグネチャを確認してください。構文を推測してはいけません。
すべてのプロパティを根拠に基づいて作成してください。根拠として使えるのは、ドキュメントに記載された契約、名前とシグネチャ、コード自体が表明する不変条件、既存のテストです。文書化されていない一般的な期待(往復変換、同等の2つの表記が同じ結果になること、スケール変更された入力が同じ答えになることなど)も根拠になります。その期待に名前を付け、そのようなテストが失敗した場合は、何かが約束されていたかどうかではなく、その挙動に擁護できる理由があるかどうかで判断してください。既存のテストファイルに、テストごとに1つのプロパティを記述してください。
技法
このスキルの techniques/ ディレクトリには、短く具体的なガイドがあります。該当する段階に進んだとき、行き詰まったとき、または予想外の結果が出たときに、必要なガイドを参照してください。
techniques/surfaces.md— テスト対象の選定:公開 API 全体、関連するエントリーポイント、各インスタンス化techniques/directions.md— 受理方向と拒否方向のプロパティ、妥当性だけでなく値を確定するオラクルtechniques/generators.md— ジェネレーター:ドメイン全体、敵対的な入力、対象を絞ったサブセットtechniques/scale.md— 再帰と複雑性のバグを調べるスケールプローブtechniques/running.md— ケース数と実行設定techniques/triage.md— 失敗の調査と誠実な報告techniques/adversarial-review.md— 完了前に、サブエージェントが見落としているプロパティをレビューする
完了前に
必須の手順が3つあります。どれかを省略すると作業は未完了です。
-
対象範囲の網羅性。
techniques/surfaces.mdの対象範囲リストをライブラリの公開 API インデックスと照合し直してください。公開モジュールはすべて、またテストした対象の関連するエントリーポイントとインスタンス化もすべて、テストするか、テストしない理由を明記してください。次に、テストした各対象を上記の技法一覧と照合してください。未確認の項目には、その理由を明記してください。 -
サブエージェントによる敵対的レビュー — 必須です。省略できません。 見落としたプロパティを見つけるため、別のサブエージェントを起動してください(Task ツール、またはお使いのハーネスで同等の機能を使用します)。実装と満たすべき契約(ドキュメントのコメント、README、シグネチャ)を渡しますが、自分のテストは渡さないでください。自分のテストを見たレビュアーは見落としを引き継いでしまいます。それこそが、新しいエージェントを使う理由です。反証されるまではコードに誤りがあると仮定し、契約が示唆するプロパティ(往復変換、不変条件、同等の経路間の一致、名前付きの値の文書化された意味)と、それらを壊しやすい入力クラス(空、退化、境界、最大、不正形式)を返すよう指示してください。返された内容を hegel テストとして記述し、実行して、検出された問題を修正してください。このレビューが実施され、その結果に対応するまでは完了ではありません。詳しい依頼内容は
techniques/adversarial-review.mdを参照してください。 -
チェックリスト。 作成した内容を
hegel-reviewチェックリストに照らして確認してください。