mcpField
P
press

press

github.com/paulnsorensenテスト・品質19656 回インストール6 日前に更新
リポジトリ

press について

Press は Cook が実行する敵対的テストのスキルで、テストが通っても報告された不具合が再現するかを確認します。プロダクションコードは変更せずにテストを追加または実行し、合格を /age に、指摘やカバレッジ不足を Cook に返します。

主な機能

  1. 01承認済みの動作を敵対的ケースで検証
  2. 02敵対的テストのみを追加・実行
  3. 03プロダクションコードを変更しない
  4. 04修正中の同一攻撃を追跡
  5. 05結果を /age または Cook に報告

活用シーン

  1. 01採用した修正が元の問題を防ぐか確認
  2. 02通常の受け入れ確認で見逃す不具合を検出
  3. 03動作に関する主張のテスト不足を特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/paulnsorensen/easy-cheese --skill press

インストール後、Claude Code で/pressを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

wedge.toml
references/
commands.md
gap-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 も参照してください。

フロー

  1. 読み込み — 承認済みの仕様、Cook の引き継ぎ情報、ベースラインブロックを読み込みます。そのファイルが存在する場合は、.cheese/glossary/<slug>.md の標準用語を使用します。
  2. 確認 — テストを追加する前に、受け入れチェックを読みます。
  3. 攻撃 — 敵対的テストのみを追加または実行します。本番パスは変更しないでください。
  4. 分類 — green、finding、coverage_gap、invalid_evidence、production_changed のいずれかを選択します。
  5. 報告 — .cheese/press/<slug>.md に記録します。質問、選択した攻撃、それが主張を脅かす理由、試行内容、証拠、レビューでのフォローアップを含めます。
  6. 引き継ぎ — 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 はこのセクションを参照します。

結果を終端プリアンブルに次のようにマッピングします。

結果statusnext
GREENokage
GREEN、懸念事項の記録ありok-with-concerns: <concern>age
検出結果(攻撃テストで欠陥が明らかになった場合)ok-with-concerns: <defect>cook
coverage_gapok-with-concerns: coverage-gap: <gap>cook
1 回の Cook 実行で 2 回目の coverage_gaphalt: coverage-gapdone
無効な証拠または本番環境の変更(blocked)halt: <reason>done
同じ攻撃で 3 回目の検出結果halt: correction-capdone
GREEN で終わらない 6 回目の Press ラウンドhalt: press-round-limitdone

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。

コメント