press について
Press は Cook が実行する敵対的テストのスキルで、テストが通っても報告された不具合が再現するかを確認します。プロダクションコードは変更せずにテストを追加または実行し、合格を /age に、指摘やカバレッジ不足を Cook に返します。
主な機能
- 01承認済みの動作を敵対的ケースで検証
- 02敵対的テストのみを追加・実行
- 03プロダクションコードを変更しない
- 04修正中の同一攻撃を追跡
- 05結果を /age または Cook に報告
活用シーン
- 01採用した修正が元の問題を防ぐか確認
- 02通常の受け入れ確認で見逃す不具合を検出
- 03動作に関する主張のテスト不足を特定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ paulnsorensen/ easy-cheese --skill pressインストール後、Claude Code で/pressを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
wedge.tomlreferences/commands.mdgap-analysis.md詳細
/press
Press は、Cook が Press ループ内で実行する敵対的チェックです。/press <slug> を手動で再実行することもできます。GREEN の判定を /age に、検出事項または coverage_gap を Cook に報告します。
Press は本番コードを編集しません。実装と最初の受け入れテストは Cook が担当します。Press は承認済みの契約に対して検証を行い、露呈した欠陥をそれぞれ報告します。
フェーズ開始
python3 skills/press/scripts/press.pyz wheypoint-resolve --ref <slug> を実行します。
authoritative の場合はレコードを使用し、working_context を最初の一括 tilth_read とします。
not-found の場合はコンテキストなしで続行し、legacy の場合はそのソースと slug を表示してから続行します。
gated、ambiguous、error の場合は停止し、ペイロードを表示します。
参考情報として示される stale-commit と grounded-path-missing の検出結果を表示します。
その record.revision_id を <base> として保持します(§ ベースリビジョン)。
入力
動作に関する作業では、Cook がテイストテストの後に Press を自動で実行するため、呼び出しは不要です。 手動で再実行する場合、Press は次の呼び出しを受け付け、GREEN の場合は Age に引き継ぎます。
/press <slug> [--auto] [--hard] [--open-pr]
フェーズ開始後、Press は Cook からの引き継ぎ内容として .cheese/cook/<slug>.md を読み込みます。
--auto は自律チェーンを選択します。## 自動モード を参照してください。
--hard は任意の最終ゲートを要求します。Press はこのフラグを Age に渡します。
--open-pr は公開許可を指定します。このフラグを指定できるのはユーザーだけです。Press はこのフラグを Age に渡します。Press が追加することはありません。
Press は Cook の durable_flags: の値を変更せず保持します。Press は Cook の taste_test: の値を無視します。
敵対的ループ
次の質問を一つだけ行います。「すべてのテストに合格した状態でも、ユーザーの元の苦情が再発する可能性はありますか?」
関連する誤った成功を招く攻撃を一つだけ選び、四つすべてを選ばないでください。質問、攻撃、およびそれが主張を脅かす理由を記録します。受け入れチェックがそのケースを拒否することを確認します。
references/gap-analysis.md に、攻撃と証拠の手順が記載されています。
Press は最初のカバレッジを書きません。それがない場合、Press は coverage_gap を報告します。
Cook が修正するたびに、同じ攻撃とテストダイジェストを使って同じ攻撃を再実行します。
証拠が無効な場合、または本番ツリーに変更があった場合は、実行を停止します。上限は結果の表に定義されています。
Press にグローバルな dispatch: /cook アクションはありません。
ベースラインを考慮したゲート
Press は、プロジェクトのゲートに対してベースラインを考慮した準備状態を保持します。Cook の baseline: 行は一つの成果物を指定します。その成果物には確定済みの状態が記録されています。
baseline: のパスから成果物を読み込みます。テストと署名が成果物と一致する失敗は、再度問題として報告しないでください。新規または変更された失敗は、そのルートをブロックします。
../cook/references/quality-gates.md を参照してください。また、references/gap-analysis.md も参照してください。
フロー
- 読み込み — 承認済みの仕様、Cook の引き継ぎ情報、ベースラインブロックを読み込みます。そのファイルが存在する場合は、
.cheese/glossary/<slug>.mdの標準用語を使用します。 - 確認 — テストを追加する前に、受け入れチェックを読みます。
- 攻撃 — 敵対的テストのみを追加または実行します。本番パスは変更しないでください。
- 分類 —
green、finding、coverage_gap、invalid_evidence、production_changedのいずれかを選択します。 - 報告 —
.cheese/press/<slug>.mdに記録します。質問、選択した攻撃、それが主張を脅かす理由、試行内容、証拠、レビューでのフォローアップを含めます。 - 引き継ぎ — GREEN は
/ageに送ります。finding またはcoverage_gapは Cook に送ります。
ソースを変更する場合は、code-intelligence-routing.md を使用します。
移植性については、../cheese/references/harness-portability.md を使用します。
このリファレンスでは、スラッシュコマンドはホスト側の表示形式であり、制御モデルではないと説明しています。
Press では、準備状況の値を 1 つ報告します。ready for /age は status: ok および next: age に対応付けます。
follow-up recommended は status: ok-with-concerns: <concern> および next: age に対応付けます。このステータスは、レビューでのフォローアップも記録する GREEN 判定に使用します。記録された各懸念事項は Age が担当します。
finding は status: ok-with-concerns: <defect> および next: cook に対応付けます。
coverage_gap は status: ok-with-concerns: coverage-gap: <gap> および next: cook に対応付けます。
blocked は status: halt: <reason> および next: done に対応付けます。blocked は、証拠が無効であるか、本番環境に変更が加えられたことを意味します。
自動モード
--auto は同じ敵対的ループを実行します。また、ユーザーに確認せずに次のフェーズを選択します。
ready for /age または follow-up recommended の後に /age <slug> --auto を実行します。ユーザーが --hard を指定した場合は追加します。ユーザーが --open-pr を指定した場合は追加します。
blocked、halt: correction-cap、または halt: coverage-gap の後は停止します。Age を実行しないでください。
呼び出し元が no-chain 指示を指定した場合は、それに従います。Press の引き継ぎ情報を書いて停止します。別のフェーズを開始しないでください。Cook の fan パスがこの指示を担当します。以前は廃止済みの /ultracook オーケストレーターが担当していました。ソース名ではなく、指示そのものを確認してください。../cook/references/auto-mode.md を参照してください。
出力
Press の結果ごとに .cheese/press/<slug>.md を書き込みます。
python3 skills/press/scripts/press.pyz write-handoff-artifact を使ってファイルを書き込み、1 つ以上の --grounded <path[#start-end]> 引数を指定します。標準のプリアンブルを使用します。
python3 skills/press/scripts/press.pyz write-handoff-artifact \
--slug <slug> --status <status> --phase press --next <next> [--base <base>] \
--artifact .cheese/cook/<slug>.md --orientation "<one-line orientation>" \
--durable-flags "<preserved Cook value>" --baseline "<baseline artifact path>" \
--grounded <path[#start-end]> --body-file <body-path>
status: <canonical status field>
next: age | cook | done
artifact: .cheese/cook/<slug>.md
durable_flags: <preserved Cook value>
baseline: none | <baseline artifact path>
<one-line orientation>
ハンドバック契約で status: の文法を定義します。プリアンブルにほかのキーは指定できません。Press の値はすべてレポート本文に記載します。
artifact: には、Cook が記録したレポートを指定します。この行に攻撃の証拠を記載しないでください。
baseline: には、Cook が記録した唯一のアーティファクトを指定します。../cook/references/quality-gates.md を参照してください。
プリアンブルの下に、次のセクションを記載します。
## Attempts— 試行ごとに 1 行記載します。試行番号と結果を記載してください。## Evidence— 検出結果について、攻撃の安定した識別情報、テストダイジェスト、失敗したテストを記載します。## Review follow-ups— 契約外の懸念事項をそれぞれ記載します。実行で懸念事項が記録されなかった場合はnoneと記載します。Age はこのセクションを参照します。
結果を終端プリアンブルに次のようにマッピングします。
| 結果 | status | next |
|---|---|---|
| GREEN | ok | age |
| GREEN、懸念事項の記録あり | ok-with-concerns: <concern> | age |
| 検出結果(攻撃テストで欠陥が明らかになった場合) | ok-with-concerns: <defect> | cook |
coverage_gap | ok-with-concerns: coverage-gap: <gap> | cook |
1 回の Cook 実行で 2 回目の coverage_gap | halt: coverage-gap | done |
無効な証拠または本番環境の変更(blocked) | halt: <reason> | done |
| 同じ攻撃で 3 回目の検出結果 | halt: correction-cap | done |
| GREEN で終わらない 6 回目の Press ラウンド | halt: press-round-limit | done |
next: done は終端です。次のフェーズは開始されません。
next: cook のハンドオフは、検出結果または coverage_gap に対する Cook の修正(correction = true)です。その後 Press は同じ攻撃を再生または再実行します。
ラウンド数は Cook が数えます。Cook はディスパッチでラウンド番号と攻撃の識別情報を渡します。Press が halt: correction-cap または halt: coverage-gap を出力するのは、そのラウンド番号に基づく場合のみです。手動で /press <slug> を実行した場合は、.cheese/press/<slug>.md から過去のラウンドを読み取ります。6 ラウンドの press-round-limit を含む上限については、references/gap-analysis.md に記載されています。
ハンドオフ
パイプライン: culture → mold → cook (⇄ press) → age → cure → plate
Cook から Press がディスパッチされた場合、ハンドオフを Cook に戻して終了します。
手動で GREEN の再実行をした後は、共通のハンドオフゲートを使用します。レビューは /age <slug> で開始します。
検出結果または coverage_gap の後は、失敗したテストまたはギャップをレポートに明記して Cook に引き継ぎます。
呼び出し元から指定された場合は、--hard、--auto、--open-pr を /age に引き継ぎます。--open-pr を追加してはいけません。
ルール
- 本番コード、本番フィクスチャ、本番アダプターを編集してはいけません。
- 再生の間に攻撃を変更してはいけません。
- 契約外の動作を実装依頼として扱ってはいけません。
## Review follow-upsに記録します。GREEN で合格した場合は、実行結果をok-with-concernsとして報告します。 - ベースラインを考慮した準備状況を維持します。
規律
Press では証拠を最優先します。検証されていない失敗は検出結果ではありません。
各ハンドオフの判断の前に結果を明記します。攻撃のダイジェストを明記します。値が 1 つでも欠けている場合は停止します。推測してはいけません。
生成されたバンドルのコマンド一覧:references/commands.md。