Cure
Apply selected fixes from an /age report, findings list, or CI failure. Run the project gates and hand a clean result to /plate. Use when the user wants selected findings resolved. Do not use for review, test authoring, or direct publication.
- Skill ID
- paulnsorensen/easy-cheese/cure
- Publisher
- paulnsorensen
- Repository
- easy-cheese
- Installs
- 0
- Files
- 9
- 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/cureInstalls these files- SKILL.md
- phase-contract.yaml
- references/auto-mode.md
- references/commands.md
- references/cure-discipline.md
- references/domain-model-correction.md
- references/post-pr-writeback.md
- references/selection.md
- scripts/cure.pyz
What this skill tells the agent
/cure
Use this skill after /age, failed validation, or a request to fix selected review findings.
Phase entry
Run python3 skills/cure/scripts/cure.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
Accept an /age slug, a pasted findings list, a CI failure summary, or a scoped fix instruction.
After phase entry, /cure <slug> reads .cheese/age/<slug>.md.
Adopt a locked selection from /age or /affinage. The canonical format is in references/selection.md#handoff-from-age. Otherwise, apply the recommended composite from references/selection.md. That file also defines the selection gate conditions.
For an older report that omits finding fields, read references/selection.md § Older report shape.
Optional flags:
--safe— Restore the selection gate and the final publication gate.--open-pr— Permit/plateto publish when no PR exists.--auto— Use automatic mode from/cook --auto. Skip user selection. Require--stake <floor>.--stake <floor>— Set the severity floor for--auto. Acceptblocker,high,medium+, orall. Ignore this flag without--auto.--hard— Pass the metacognitive gate flag to/plate.
Read references/selection.md for selection rules.
Read `harness-portability.md` for portability rules. Slash commands are host renderings, not the control model.
Flow
- Load. Read
handoff_context.source_reportfirst when the handoff supplies it. Confirm that the file exists and belongs to the namedsource_skill. Stop withstatus: halt: unreadable source reportwhen this check fails. Read.cheese/age/<slug>.mdwhen the handoff supplies only a slug. Take the typed path only when the handoff also supplies aCurdPlan. Callvalidate_curd_planon that plan. Stop before dispatch when the plan or its digest is invalid. Do not rebuild a plan from a legacy manifest. Take the report path in every other case. - Select. Adopt a locked selection from
/ageor/affinage. Otherwise, apply the recommended composite. Readreferences/selection.mdfor verbs and gate conditions. Expand a user verb with this command:
python3 skills/cure/scripts/cure.pyz findings parse-selection --report <path> --selection "<verb>"Use the same bundle command when the host only ships the bundle. Render the coder brief per references/selection.md § Coder brief.
- Apply. Fix one logical group at a time. Implement each
recommendation:as the locked decision; rebut only under### Deferred. Confirm each anchor with a fresh bounded read. The report path stops here and continues at step 4. The typed path also invokeseasy_cheese.shared.workflow.curewith the validated plan. Add oneCureDiagnosisBindingfor each selected curd. Create each binding withbind_diagnosis(plan, curd, diagnosis_result). Use only a confirmedDiagnosisResult. Point the binding to the exact plan and curd digest. SetDiagnosisDisposition.CONFIRMED. A plausible but unrelated diagnosis does not unlock Cure.cureresolves eachArtifactRefwithresolve_artifact. It accepts only observation-onlyCurdResultWriterViewoutput. It usesnormalize_agent_outputto finalize oneCurdResultper selected curd. It also finalizes executor failures. - Validate. Run the narrowest test that proves each fix. Then run the relevant project gates. These gates include lint, type checks, and builds. When the handoff has a
baseline:block, use `quality-gates.md`. Identical baseline failures do not block a clean cure or trigger a halt. Fix only new or changed failures. - Taste-test behavioral fixes. Run the fresh-context taste test before you write the handoff slug. Resolve the read-only
reviewer (taste-test)phase agent through `agent-resolution.md`. Requestdefaultminimum power andmediumeffort. Use the Cook review lenses over the cure diff. Reuse the step-2 rendered brief verbatim as the taste test's locked-decision block. Halt when fresh-context isolation is unavailable. Use an inline self-check only under the small-diff cost gate in `tdd-loop.md`. Skip this step for formatting, comments, imports, and logic-free renames. Send areviseverdict into one bounded correction pass. Stop for a human on a Locked-decisionhalt. A nested coder defers the authoritative review to the orchestrator. - Correct the domain model. Correct only terms that the Cook diff touches. Read
references/domain-model-correction.mdfirst. Do not reverse a canonical term that Mold locked. - Hand off for review. Recommend
/age <slug> --scope <touched-path>. Repeat--scopeonce for each touched path. Send the current slug with every Age dispatch. Forward--hardwhen the run has that flag. Do not duplicate the Age review inside Cure. A new Age report can start a new/curerun. - Write the report. Record changes, checks, deferred items, and residual risks. Put the handoff slug at the top of
.cheese/cure/<slug>.md. - Write back the durable facts. Run § Post-PR write-back before publication. Give each written path to
/platefor its artifact inventory. - Hand off for publication. Dispatch
/plateafter a clean cure. Follow## Handoff.
Preferred tools and fallbacks
Route source work through `code-intelligence-routing.md`. Use its fallback when a preferred tool is absent. Stop only when the fallback cannot support a safe fix. Report the precision loss.
Validation
Run the narrowest test that proves each fix. Then run all relevant existing gates. Record why an unavailable gate cannot run. Do not declare readiness while selected findings remain unresolved.
Move a finding to Applied only after its proving test passes. Read references/cure-discipline.md for the Iron Law.
A clean cure has at least one applied fix and all gates pass. It also has no false-premise halt. Identical baseline: failures do not count against green status. Read `quality-gates.md`.
The agent judges the gate values. The CLI maps those values to a readiness verdict:
python3 skills/cure/scripts/cure.pyz gates classify \
--press-status <label> \
[--hard-floor-met] [--has-open-level-1-or-2] [--has-open-level-3] [--has-open-level-4-or-5] [--any-spinning]Use the same bundle command when the host only ships the bundle.
Handoff slug
Write the report to .cheese/cure/<slug>.md. Put this minimum handoff slug at the top:
status: <canonical status field>
next: age | done
artifact: <path of the report that this run consumed>
baseline: none | <recorded baseline block copied from the upstream handoff — see ../cook/references/quality-gates.md>
<one-line orientation: what cure applied or deferred>The handback contract defines the status: grammar. Only next: and the additional keyed lines are specific to this phase. artifact: names the source report that this run consumed. Use handoff_context.source_report for that value, or the resolved .cheese/age/<slug>.md path.
Write the report body to a separate file. Then let the canonical writer create .cheese/cure/<slug>.md once. Pass every optional field that this run has.
python3 skills/cure/scripts/cure.pyz write-handoff-artifact \More from paulnsorensen
Use this skill in a project
Open any RiverX project, search the Skills panel for paulnsorensen/easy-cheese/cure, and install it in one click.
