The methodology ran four times in one arc (GH-160, GH-166, GH-168, GH-170) and re-pinned two pipeline defaults, but it lived as a match-voice script plus discipline carried in issue prose — a fifth run meant re-deriving the discipline again. This skill owns both: the harness and the contract.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add petar-djukic/writing-skills --skill bake-off --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Bake Off?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/petar-djukic-bake-off-writing-skills)More formats (shields.io, HTML) on the badges page.
<!-- Copyright (c) 2026 Petar Djukic. All rights reserved. SPDX-License-Identifier: MIT -->
---
name: bake-off
description: >-
Multi-payload model comparison as a first-class skill: arms through the
real pipeline over real published material, >= 2 payloads before any
verdict, seed-pinned replays, one Pangram framing per table, scores
read together with per-model error forensics, dated results re-run on
pipeline change. Owns the harness (sweep / replicate / bakeoff arms,
any model the shared transport routes) and the report template.
Triggers: bake-off, bakeoff, model comparison, A/B the models, which
model should the stage use, re-pin the default, sweep the arms.
argument-hint: 'bakeoff <draft.md> --out-dir <dir> (see scripts/bakeoff.py)'
---
# Bake-off (multi-payload model comparison)
The methodology ran four times in one arc (GH-160, GH-166, GH-168,
GH-170) and re-pinned two pipeline defaults, but it lived as a
match-voice script plus discipline carried in issue prose — a fifth run
meant re-deriving the discipline again. This skill owns both: the
harness and the contract.
## The method contract
Every rule below has a run that broke without it.
1. **>= 2 payloads, real published material, never toy prompts.**
Single-draft verdicts reversed twice (GH-160 vs GH-166/168). A
verdict from one payload is a note, not a result.
2. **Arms run through the REAL pipeline, not bare prompts.** The prompt
scaffold, the gate, and the retry loop are part of what is being
measured; a bare-prompt arm measures a pipeline nobody runs.
3. **Read scores and per-model error forensics together.** Obedient
models expose YOUR prompt bugs — GH-171's discovery path took
citation survival from 46% to 88% by reading the error log of the
model that followed instructions too well.
4. **Seed-pin every arm** (`COHERE_SEED`, verified bit-identical at
temp 0.9) so any arm replays exactly. Do NOT best-of-N over seeds:
the null measured 5 seeds within 0.003 Pangram — the detector reads
register, not phrasing.
5. **One Pangram framing per table.** Slice / whole / prose-only scores
of the same article measured 0.225 / 0.913 / 1.000 — a table mixing
framings compares nothing. Uploads run under the consent rule
(per-document, or the operator's standing grant, GH-210).
6. **Date every verdict and re-run on pipeline change.** Rankings are
model x pipeline; the GH-194 re-pin overturned a July ranking without
any model changing.
## The harness
`scripts/bakeoff.py` (promoted from `match-voice/scripts/cohere_ab.py`,
GH-205 — the name stopped saying cohere because it drives any model the
shared transport routes):
```bash
# 2 Cohere models x 2 prompt-shape arms over citation/number paragraphs
python3 <skill>/scripts/bakeoff.py sweep <draft.md> [--out results.json]
# the GH-153 disputed passage, repeated
python3 <skill>/scripts/bakeoff.py replicate [--trials 6]
# Cohere models AND the Ollama incumbents over one draft; assembles one
# rewritten draft per model for whole-document register measurement
python3 <skill>/scripts/bakeoff.py bakeoff <draft.md> --out-dir <dir>
```
Scoring is mechanical (`score()`): citation and number multisets,
meta-commentary hits, word counts. Detector and register measurements
run on the assembled per-model drafts with the usual tools.
## Report template
Per payload, then pooled:
| arm | clean | citations kept | numbers kept | detector (one framing) |
|---|---|---|---|---|
followed by a **replicated / reversed** section (which prior verdicts
this run confirms or overturns, by issue number) and a **limits** line
(payload count, arm isolation, sampling depth). Verdicts carry a date.
## Worked example (recorded): the GH-194 re-pin
Two published payloads (loop-engineering, prompts), seed and iterator
isolated on raw articles, prose-only framing throughout:
| arm (seed -> iterator) | loop (base 1.000) | prompts (base 0.913) | mean |
|---|--:|--:|--:|
| pinned: gemma-anchored -> gpt-oss | 1.000 | 0.734 (3 passes) | 0.867 |
| cohere-anchored -> gpt-oss | 0.896 | 0.913 | 0.904 |
| gemma-anchored -> cohere | 1.000 | 0.909 | 0.955 |
| **cohere -> cohere** | **0.802** | **0.735** | **0.768** |
Replicated/reversed: overturned the July gemma->gpt-oss pin (humanize
now carries the Cohere recipe); confirmed the GH-160/166 lesson that the
single-payload verdict would have picked differently. Limits: n=2,
stop-on-upturn sampled once per pass. Dated 2026-08-31. The full run
record and the earlier prompt-shape arms are in
[references/cohere-bakeoff.md](./references/cohere-bakeoff.md).
## Position
A data tool, not a chain stage (GH-208 taxonomy): it measures models so
the chain's defaults can be pinned; it never touches an article anyone
ships. Offline tests: `scripts/test_bakeoff.py`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!