Communityライティング&編集github.com

AlpharomeroJL/invarianteval

宣言された安全性不変条件評価ゲート:すべての出力に対してロックされたフィールドルールを適用し、モデルが人間所有のフィールドを自動入力した場合に最終確定を拒否します。MCPツールとエージェントスキルが含まれています。

invarianteval とは?

InvariantEvalは、開発者が宣言した不変条件をエージェントの出力に適用するためのスキルです。このスキルは、エージェントを「正しく」するものではなく、出力を書き換えるものでもありません。唯一の正直な主張は、エージェントがすべての出力に対して宣言された安全性ルールを実行し、ロックされたフィールドが人間の確認なしに自動入力された場合に最終確定を**拒否する**点です。これにより、pass/fail判定やコンプライアンスステータスなどの重要なフィールドを、モデルが勝手に埋めてしまうことを防止できます。 このスキルは、Claude Code、Cursor、CodexなどのAIエージェントと連携するよう設計されており、MCPツールとしても利用可能です。使用方法は、まず`suite.yaml`でフィールドポリシーとアサーションを宣言し、最終確定前に`check.py`スクリプトまたは`check_invariants` MCPツールを実行するだけです。チェックが失敗した場合は、出力を最終確定してはいけません。ユーザーが違反を修正するか、フィールドを明示的に確認するか、宣言されたルールを更新する必要があります。このスキルは不変条件を推測するものではなく、ユーザーが明示的に宣言することを前提としています。

対応~Claude Code~Codex CLI~Cursor
npx skills add AlpharomeroJL/invarianteval

Installed? Explore more ライティング&編集 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

InvariantEval エージェントスキル

InvariantEval は、あなたが宣言した不変条件を強制します。エージェントを「正しく」するものではなく、出力を書き換えるものでもありません。唯一の正直な主張:あなたのエージェントはすべての出力に対して宣言された安全性ルールを実行し、ロックされたフィールドが人間の確認なしに自動入力された場合に最終確定を拒否します。

このスキルを使用するタイミング

以下の場合、構造化JSON(または類似の)出力を最終確定する前に使用します:

  • ドメインに宣言されたロックフィールド(合格/不合格、コンプライアンスステータスなど)がある場合
  • field_policies と不変条件アサーションを含む suite.yaml がある(または必要とする)場合
  • 特定のフィールドを人間が所有し、モデルがそれらを自発的に入力してはならない場合

不変条件を推測するためにこのスキルを使用しないでください。あなたの仕事は、不変条件を宣言することを摩擦なくすることであり、推測することではありません。

ワークフロー

1. 宣言されたスイートを見つけるか作成する

  • プロジェクト内の既存の suite.yaml を見つけるか、
  • suite.template.yaml をプロジェクトにコピーし、ユーザーに field_policies、equivalence_classes、assertions を記入してもらいます。

スイート内のユーザー宣言なしにロックフィールドを決して発明しないでください。

2. 最終確定前に不変条件チェックを実行する

モデルの生の解析済み出力と最終的な出力が用意されています。実行:

python agent-skill/invarianteval/check.py \
  --suite path/to/suite.yaml \
  --case-id agent-check \
  --model-parsed /tmp/model_parsed.json \
  --final-output /tmp/final_output.json \
  --human-confirmed /tmp/human_confirmed.json

現在のターンからJSONファイルを書き込みます。--human-confirmed はオプションです(明示的に確認されたものがない場合は {} を使用)。

スイートには、指定された --case-id(デフォルト: agent-check)を持つケースと、適用したいアサーションが含まれている必要があります。

3. チェックが失敗した場合:停止

  • 最終確定、コミット、または出力を完了として提示しないでください。
  • CLI出力から正確な不変条件失敗を表示します(例:never_auto_filled[pass_fail_result])。
  • 次のいずれかを要求します:
    • ユーザーが最終出力を編集して違反を削除または修正する、または
    • ユーザーがフィールドを明示的に確認する(フィクスチャ内の human_confirmed)、または
    • ルールが間違っていた場合(稀)、ユーザーが宣言されたスイートを更新する。

4. チェックが成功した場合:続行

終了コード 0 の後にのみ最終確定します。

MCP 代替手段

環境に [mcp] エクストラがインストールされている場合は、同じ入力に対して check_invariants MCPツールを優先します。docs/mcp.md を参照してください。

正直な表現(必須)

  • 言う:「宣言された不変条件」「最終確定を拒否する」「ロックされたフィールドが自動入力された」
  • 絶対に言わない:「自己修正」「エージェントを正しくする」「不変条件を自動推測」

関連スキル