pythia-verify について
pythia-verifyは、pythiaでOracleを扱うエージェント向けのワークフロースキルです。完了を報告する前に、当セッションのコマンド出力を確認し、検証済みと未検証の結果を分けます。
主な機能
- 01完了報告前の証拠確認
- 02書き込みコマンドの終了コード確認
- 03無効オブジェクトと基準値の比較
- 04コンパイルとlintの実行
- 05テスト済みと未検証の動作を区別
活用シーン
- 01完了報告前のOracle変更の検証
- 02デプロイ失敗と復元手順の報告
- 03新たな無効オブジェクトの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ thaildhe172591/ pythia --skill pythia-verifyインストール後、Claude Code で/pythia-verifyを入力して読み込まれたか確認します。
詳細
完了を報告する前に検証する
開始時に宣言:「pythia-verify を使用します。報告する前に証拠を確認します。」
**フェーズ:**学習 → 質問 — 稼働中のデータベースから証拠を収集し、そこから分かることと分からないことを報告します
エージェントが書く文のうち、最も大きな損失につながるのは、実際には終わっていない作業について「完了しました」と言うことです。Oracle では、パッケージを作成しても INVALID のままになることがあり、リリースが 12 個中 7 個目の文で止まることもあり、「高速化」したクエリの実行計画が変わらないこともあります。証拠は 3 つのコマンドで確認できます。実行してください。
絶対原則
NO COMPLETION CLAIM WITHOUT EVIDENCE FROM THIS SESSION
証拠とは、最後に変更を加えた後に確認したコマンド出力です。変更前に見た結果を覚えているだけでは証拠になりません。
チェックリスト
- 各書き込みの判定 — 各
apply/deployの終了コードをパイプなしで確認します(| tailは tail の 0 を返します)。autopilot の場合は、pythia autopilot reportで各行を確認します。 - コンパイルできること — 変更したオブジェクトすべてについて
pythia errors <OBJECT>を実行します。出力が空であるか、エラーが一覧表示されます。 - ほかに壊れたものがないこと —
pythia-impactで取得したベースラインとpythia invalidの結果を比較します。ベースラインでは VALID だったのに、現在 INVALID になっているものは、そうでないと証明されるまではあなたの変更が原因です。 - 基準を満たしていること —
pythia lint <files>を実行します。エラーはゼロにし、警告は修正するか、理由を明記します。 - テーブルが文書化されていること —
pythia cols Tが仕様と一致し、pythia comments Tが不足 0 件を示し、pythia stats Tに作成した未インデックスの外部キーが一覧表示されていないことを確認します。 - パフォーマンスに関する主張 — 変更前と変更後で同じ
pythia explainを実行し、数値も確認します(pythia-tuneのレポート形式)。 - 動作 — pythia は匿名ブロックを実行しないため、それだけでは動作を証明できません。何をテストしたか(CI または開発者による utPLSQL、追加された行を示すクエリ)と、何をテストしていないかを伝えます。
報告
Done: PKG_ORDER spec+body, T_ORDER_LINE (+6 comments, 1 index)
Evidence: deploy exit 0 (5/5); errors PKG_ORDER: none; invalid: 1, same
as baseline (X_ALREADY_BROKEN); lint: 0 errors, 1 warning (named)
Decisions: status codes N/C/X (agreed); qty NUMBER(12,3) (agreed)
Assumptions: none
Not verified: behaviour under load; ut_pkg_order not run (no utPLSQL here)
Undo: pythia journal restore <entry> (newest first, per object)
次の 3 つの語は、使う条件が決まっています。完了(すべてのチェックに合格)、不具合あり(終了コード 3 または新たな INVALID — 最初に伝える)、未検証(実行できなかったチェックがある)。不具合ありを「ほぼ完了」と言い換えてはいけません。
危険信号 — こう考えていることに気付いたら中止してください
| 考え | 実際 |
|---|---|
| 「コンパイルできたから、動作する」 | コンパイルで証明できるのは構文だけです。動作を証明するものを伝えるか、未検証だと伝えてください。 |
| 「apply はさっき成功と言っていた」 | それは最後に変更する前のことです。もう一度確認してください。 |
| 「これらの INVALID オブジェクトは、もともと壊れていた」 | それを証明するベースラインを示してください。示せなければ、あなたの変更が原因です。 |
| 「詳細は開発者が確認できる」 | 詳細こそが報告です。コマンドを実行してください。 |
| 「1 つの文は失敗したが、残りは反映された — ほぼ完了」 | それは不具合ありです。取り消し対象の一覧とともに、最初に伝えてください。 |
| 「基準に従ったから lint は省略する」 | それなら lint は 1 秒で済み、そのとおりの結果を示します。 |
このスキルを使わない場合
- 作業の途中、手順の合間 —
pythia-applyが各結果をすでに読み取っています。このスキルは、最終報告の前に通過するゲートです。 - 変更を加えていない純粋な探索 — 検証するものはありません。何を読んだかを伝えてください。
コメント
Markdown 対応