Skip to content

Latest commit

 

History

History
244 lines (165 loc) · 13.4 KB

File metadata and controls

244 lines (165 loc) · 13.4 KB

Prove It

AI は「修正できた」と言う。ならば証明させよう。

Prove It は、Claude Code、OpenAI Codex、Cursor などの AI コーディングエージェント向けに作られた、オープンソースの敵対的検証 Agent Skill です。

English · 简体中文 · Português do Brasil · 日本語 · Español · Русский

Agent Skill No dependencies Benchmark License

Prove It がない場合、テスト成功が早すぎる確信につながる。Prove It はアサーションの弱体化を見つけ、FAILED と判定する。

コーディングエージェントは、自分の作業が成功したと示す証拠を見つけるのが得意です。

テスト成功。ビルドの終了コードは 0。ヘルスチェックは 200。ログに ERROR なし。

そして 完了 と言います。

しかし、成功を示すシグナルが、実際の成果まで保証するとは限りません。Prove It は、自分の結論を信じる前に、その結論が間違っている証拠を能動的に探すようエージェントに求めます。

バグ修正、テスト、Pull Request、CI の結果、ログ、デプロイ、そして自信に満ちた「完了」を、そのまま信じる前に検証できます。

動くことを証明しようとするな。動かないことを証明しよう。

Prove It が必要なのは誰?

AI コーディングエージェントに次の作業を任せるなら、Prove It が役立ちます。

エージェントが… Prove It が問うこと
バグを修正する 元のバグはまだ発生し得るか?
テストを作成・更新する 要件が壊れたままでも、このテストは通るか?
Pull Request をレビューする アサーション、型、受け入れ条件が弱められていないか?
CI やログを読む 証拠は完全で、最新で、正しい場所から取得されたものか?
デプロイを確認する 意図したバージョンが本当に全インスタンスで動いているか?
タスク完了を報告する どの観測可能な事実があれば、その結論は誤りになるか?

これは 「AI が作業を終えた」 と 「あなたがそれを信じる」 の間で使うものです。テストの専門家である必要はありません。skill を呼び出し、検証したい主張を渡してください。

30 秒でインストール

Prove It は skills.sh に掲載されています。インストーラーが Claude Code、Codex、Cursor などの対応エージェントを検出します。

npx skills add Pablo-aps/prove-it

その後、直接依頼します。

# Claude Code / Cursor
/prove-it review your last implementation and try to find a case where it still fails

# OpenAI Codex
$prove-it does this CI output actually prove the issue is resolved?

ある主張について「証明して」「検証して」「確認して」「再チェックして」と頼んだとき、skill が自動的に有効になることもあります。

手動インストール

SKILL.md を、エージェント用の prove-it skill ディレクトリへコピーします。

エージェント プロジェクト内の配置先 呼び出し方
Claude Code .claude/skills/prove-it/SKILL.md /prove-it
OpenAI Codex .agents/skills/prove-it/SKILL.md $prove-it
Cursor .cursor/skills/prove-it/SKILL.md または .agents/skills/prove-it/SKILL.md /prove-it

4 つのルール。1 つの判定。

01 — 定義する 02 — 攻撃する
「直ったようだ」を、偽になり得る明確な主張へ変える。スコープと受け入れ条件を固定する。 何がその主張と矛盾するかを考え、決定力の高い安全なチェックから実行する。
03 — 結果を見る 04 — 判定する
終了コード、HTTP 200、緑のヘルスチェックといった代理シグナルではなく、実際の成果を検証する。 証拠とともに PROVEN、FAILED、NOT PROVEN、BLOCKED のいずれかを返す。
CLAIM
All production replicas run abc123 and the migration is applied.

VERDICT
NOT PROVEN

WHY
The deploy job passed, but only four of six replicas are represented.

FALSIFICATION ATTEMPTS
- checked rollback events -> none found
- compared runtime image SHAs -> evidence exists for 4/6 replicas
- checked migration version -> no production schema evidence supplied

NEXT PROOF
1. read the image SHA from every replica
2. read the production migration version through an approved read-only path

判定には明確な意味がある

判定 使用する条件
PROVEN 直接証拠が定義済みのスコープを満たし、意味のある反証の試みでも矛盾が見つからなかった。
FAILED 直接証拠が主張と矛盾している。
NOT PROVEN 実行可能なチェックは行ったが、証拠が間接的、不完全、古い、または狭すぎる。
BLOCKED アクセス、データ、認証情報、ツール、テスト可能性の不足により、必要なチェックを実行できない。

PROVEN のスコープは意図的に限定されています。Prove It は数学的証明、普遍的な正しさ、将来の安全性を主張しません。

高くつく「完了」を見つける

テストが緑               ≠ 元のバグが直った
ビルドが緑               ≠ デプロイが動く
デプロイ成功             ≠ 全レプリカが新バージョン
ヘルスチェック 200       ≠ worker と依存先も正常
HTTP 200                 ≠ 非同期処理が完了
このログにエラーなし     ≠ 関連エラーが起きていない
1 リクエスト成功         ≠ 競合状態が直った
エージェントの自信       ≠ 証拠

さらに、偽装された証明も探します。スキップされたテスト、弱められたアサーション、無視された終了コード、空の catch、ハードコードされた結果、mock で消された対象動作、タイミング障害を再現せずに増やされたタイムアウトなどです。

これらのパターンが常に誤りとは限りません。検証対象の動作を隠す、迂回する、または別のものへすり替える場合に、主張への反証となります。

デプロイ、ログ、非同期処理、支払い競合、肯定的な証明、ブロックされた検証の例は EXAMPLES.md を参照してください。

Vibe Verification(雰囲気検証)

雰囲気検証とは、十分な肯定的シグナルを見たエージェントが確信し、結論が誤りになる可能性を探すのをやめてしまうことです。

雰囲気検証: 「テストは通った。問題なさそう。」
Prove It:   「バグが残ったままテストだけ通るのは、どんな場合か?」

小さく、覚えやすく、技術スタックを問わず有効な変化です。変えるのはテストフレームワークではなく、検証の目的だからです。

プロンプトの演出ではなく、証拠を

このリポジトリには、次の内容を含む再現可能な 12 ケースの benchmark があります。

  • FAILED になるべき、誤解を招く成功シグナル
  • NOT PROVEN になるべき、不完全な証拠
  • BLOCKED になるべき、アクセス不能な証拠
  • PROVEN になるべき、肯定的な対照ケース

Codex CLI 0.147.0 · gpt-5.6-luna · low reasoning · 2026-08-18 を用いた 1 回の方向性確認:

ベースライン Prove It あり
正しい判定 9/12 (75%) 12/12 (100%)
肯定的対照 2/3 (67%) 3/3 (100%)
誤った安心 0/12 0/12
反証を試みた 12/12 12/12

この実行で Prove It は 3 つの判断を変えました。利用不可能と明示された 2 つの証明経路は正しく BLOCKED とされ、証拠が完全でスコープが限定された 1 つのデプロイ主張は、いつまでも未証明とされず PROVEN と判定されました。

各ケースで、モデル、プロンプト素材、出力 schema、推論設定は同一です。処置群で変えたのは、Prove It をインストールして明示的に呼び出したことだけです。24 件の生出力と、benchmark/ の完全な手法を確認できます。

skill の開発中に作成したケースに対し、各セルを 1 回ずつ実行した結果です。この固定ケース群で、このモデルの振る舞いが変化した証拠ではありますが、独立研究、モデルランキング、普遍的な性能主張ではありません。

設計は、言語モデルが確証的な証拠を好むことがあり、反例を求めるプロンプトがその偏りを減らし得るという、より広い知見にも基づいています。Failing to Falsify、Large Language Models Cannot Self-Correct Reasoning Yet、Anthropic の言語モデルにおける迎合性の研究を参照してください。これらは仕組みの動機を示すもので、すべてのモデルやタスクでこの skill が有効だと証明するものではありません。

よくある質問

Prove It とは?

Prove It は、AI コーディングエージェントに反証可能な主張を定義させ、反証を探させ、実際の結果を検証させ、証拠に基づく判定を返させる、小さなオープンソース Agent Skill です。

どの AI コーディングエージェントに対応していますか?

オープンな Agent Skills 仕様に準拠し、Claude Code、OpenAI Codex、Cursor などの互換エージェントで動作します。振る舞いは 1 つの持ち運び可能な SKILL.md に収められています。

テストやコードレビューとの違いは?

テストとレビューは証拠を生み出します。Prove It は、その証拠をエージェントがどう疑い、解釈するかを変えます。どちらも置き換えません。

ソフトウェアが正しいと証明できますか?

いいえ。実際に利用できるチェックと証拠の範囲内で判定を返します。形式的な正しさ、普遍的な安全性、観測していない動作への確実性は主張しません。

Prove It ではないもの

Prove It は意図的に、1 回で読める SKILL.md だけで構成されています。実行時依存、hook、バックグラウンドプロセス、テレメトリ、MCP server、オーケストレーション層はありません。

以下のものではありません。

  • テストフレームワークやセキュリティスキャナー
  • ドメイン固有テスト、可観測性、人間によるレビューの代替
  • 本番環境で破壊的な実験を行う許可
  • AI が任意のソフトウェアの正しさを証明できるという主張

これは振る舞いのガードレールです。主張を定義し、攻撃し、成果を検証し、判定に値する証拠を集める。

意図的に小さく

prove-it/
├── README.md          # 2 分で理解する
├── README.*.md        # 5 言語のガイド
├── EXAMPLES.md        # 6 つの具体例
├── skills/prove-it    # 振る舞いのすべて
├── benchmark/         # 再現可能な証拠
└── LICENSE

この skill はオープンな Agent Skills 仕様に従います。プロジェクトをフレームワークへ膨らませず、中心となる振る舞いをより鋭くするコントリビューションを歓迎します。

AI が修正を書く。Prove It が壊しにいく。

PABLO が作成・メンテナンスしています。

問題を報告 · skill を読む · benchmark を実行