Press
Run the tests-only adversarial gate after `/cook`. Route bounded corrective Cook continuations. Use this skill when the user says "press the changes", "harden this", "press before /age", or "/press". Do not edit production code. Do not dispatch a global Cook repair from Press.
- Skill ID
- paulnsorensen/easy-cheese/press
- Publisher
- paulnsorensen
- Repository
- easy-cheese
- Installs
- 0
- Files
- 6
- License
- MIT
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
paulnsorensen/easy-cheese/pressInstalls these files- SKILL.md
- phase-contract.yaml
- references/commands.md
- references/gap-analysis.md
- references/telemetry.md
- scripts/press.pyz
What this skill tells the agent
/press
Press is the tests-only adversarial gate after /cook. Its skill contract is:
press(spec_ref)
-> Continue("press-corrective-cook")
| Dispatch("/age")
| Stop(reason)Press never owns first coverage. Press never edits production code. Cook owns the implementation. Press attacks the approved contract and preserves failure evidence for a bounded Cook repair.
Phase entry
Run python3 skills/press/scripts/press.pyz wheypoint-resolve --ref <slug>. authoritative uses the record; its working_context is the first batched tilth_read. not-found proceeds cold; legacy shows its source and slug, then proceeds. gated, ambiguous, and error stop and show the payload. Show advisory stale-commit and grounded-path-missing findings.
Inputs
Press accepts this invocation:
/press <slug> [--auto] [--hard] [--open-pr]After phase entry, Press reads .cheese/cook/<slug>.md for the Cook handoff.
--auto selects the autonomous chain. See ## Auto mode.
--hard requests the optional final gate. Press forwards this flag to Age.
--open-pr is publication permission. Only the user supplies it. Press forwards this flag to Age. Press never adds it.
Press preserves the Cook durable_flags: value without change. Press ignores the Cook taste_test: value.
Packaged commands
Run this command for boundary routing:
python3 skills/press/scripts/press.pyz press-route \
.cheese/press/<slug>.attempt-N.route.jsonThe request contains only outcome and repair_cycles:
{
"outcome": "green",
"repair_cycles": 0
}Set outcome to green, in_contract_red, invalid_evidence, or production_changed.
Set repair_cycles to the number of completed corrective Cook continuations. Use 0 for the first attempt.
Use the command JSON action as the authority. Stop if the bundle does not exist.
Use separate append-only artifact names for each Press attempt. Use the same <slug> for all three attempts. Never reuse an attempt number.
Use these paths:
- Attack candidate:
.cheese/press/candidates/<slug>.attempt-N.json - Route request:
.cheese/press/<slug>.attempt-N.route.json - Telemetry request:
.cheese/press/<slug>.attempt-N.telemetry-request.json - Telemetry record:
.cheese/press/<slug>.attempt-N.telemetry.json
A third in-contract RED returns Stop("third-red"). Do not create attempt-4 paths. Do not overwrite an earlier path.
Execution telemetry
Run this command after routing:
python3 skills/press/scripts/press.pyz press-telemetry \
.cheese/press/<slug>.attempt-N.telemetry-request.jsonThe request carries only what the attempt observed. Run press-route for the attempt first: the command reads outcome and repair_cycles from that route request.
Save the output at .cheese/press/<slug>.attempt-N.telemetry.json. The record contains these values:
- Attempt outcome
- Retry count
- Tool errors for each phase
- Purpose for each delegated agent
- Class for each changed file
Telemetry never controls the route. See `references/telemetry.md`.
Adversarial loop
- Attack — Add or run only tests, fixtures, and test-only harness support. Use the approved seam and witness. Keep the attack identity and test digest stable.
- Classify — Use
in_contract_redfor an in-contract failure. Usegreenfor a clean pass. Useproduction_changedwhen the attempt changed production paths. Useinvalid_evidencewhen you cannot verify the evidence. - Repair — Route
in_contract_redwith the completed corrective count. Counts 0 and 1 returnContinue("press-corrective-cook"). Count 2 returnsStop("third-red"). - Replay — Replay the same attack after the corrective Cook returns. Use the same attack and test digest. Then classify the result again.
- Terminate — Return
Dispatch("/age")only after GREEN.
Invalid evidence returns a stop. A production tree change also returns a stop. These outcomes never return a continuation.
Press has no global dispatch: /cook action. Press owns the corrective Cook Continue action.
Baseline-aware gates
Press preserves baseline-aware readiness for project gates. The Cook baseline: line names one artifact. That artifact holds the settled state.
Read the artifact through the baseline: path. Do not re-flag a failure when its test and signature match the artifact. New or changed failures block the route.
See `../cook/references/quality-gates.md`. Also see `references/gap-analysis.md`.
Flow
- Read — Load the approved spec, Cook handoff, and baseline block. Use canonical terms from
.cheese/glossary/<slug>.mdwhen that file exists. - Attack — Add or run only adversarial tests. Do not add first-coverage tests. Do not change production paths.
- Classify — Select
green,in_contract_red,invalid_evidence, orproduction_changedfrom the adversarial run. - Continue or stop — Run
python3 skills/press/scripts/press.pyz press-routewithoutcomeandrepair_cycles. OnlyContinue,Dispatch, andStopaction shapes are public. - Report — Write
.cheese/press/<slug>.mdat a terminal result. Include the attempts, evidence, and review follow-ups. - Hand off — Send only a GREEN
Dispatch("/age")to the global Age route.
Use `code-intelligence-routing.md` for source changes.
Use `../cheese/references/harness-portability.md` for portability. The reference states that slash commands are host renderings, not the control model.
Press reports one readiness value. Map ready for /age to status: ok and next: age.
Map follow-up recommended to status: ok-with-concerns: <concern> and next: age. Use this status for a GREEN pass that also records a review follow-up. Age owns each recorded concern.
Map blocked to status: gated: <decision> and next: done. Stop after that status.
Auto mode
--auto runs the same adversarial loop. It also selects the next phase without a user prompt.
Dispatch /age <slug> --auto after ready for /age or follow-up recommended. Add --hard when the user supplied it. Add --open-pr when the user supplied it.
Stop after blocked. Do not dispatch Age.
Honor the no-chain directive when the caller supplies it. Write the Press handoff and stop. Do not start another phase. Cook's fan pathway owns this directive. The retired /ultracook orchestrator previously owned it. Test for the directive itself. Do not test for the source name. See `../cook/references/auto-mode.md`.
Output
Write .cheese/press/<slug>.md only at a terminal Press result. A corrective Continue stays inside the Press phase. It writes no durable handoff.
Write the file with python3 skills/press/scripts/press.pyz write-handoff-artifact; include one or more --grounded <path[#start-end]> arguments. Use the canonical preamble:
python3 skills/press/scripts/press.pyz write-handoff-artifact \
--slug <slug> --status <status> --phase press --next <next> \
--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 | done
artifact: .cheese/cook/<slug>.md
durable_flags: <preserved Cook value>
baseline: none | <baseline artifact path>
<one-line orientation>The handback contract defines the status: grammar. The preamble accepts no other keys. Put every Press value in the report body.
artifact: names the consumed Cook report. Do not put attack evidence on this line.
More from paulnsorensen
Use this skill in a project
Open any RiverX project, search the Skills panel for paulnsorensen/easy-cheese/press, and install it in one click.
