| name | grim:dev:model-quirks |
| description | (grim:dev:model-quirks): (Model Quirks): Apply model-specific prompt mitigations inline (unlabeled) into AGENTS.md, skills, and prompts, and record every applied change in the reverse-index ledger at docs/model-quirks-ledger.yaml so it can be verified, pruned, or undone when models rotate. |
| disable-model-invocation | true |
Model Quirks
Use this skill when a task is about model-specific instructions, prompt quirks, undoing or pruning old model mitigations, or keeping prompts aligned with the currently used model roster.
The System
Every new model does something weird. Mitigations for those quirks are real prompt text — but they should not outlive the model that needed them.
- Applied text lives inline. Mitigations are written directly into
AGENTS.md, skill files, or whatever prompt they belong in, phrased as normal house rules. No model names, no marker comments, no labeled section. The prompt surface reads as one coherent voice.
- The ledger is the reverse index.
docs/model-quirks-ledger.yaml records, per model, the exact text of every applied change and its target file. The exact recorded text is the undo key — never rely on line numbers, which rot.
- Applying and recording are one atomic change. Never add quirk text to a prompt without its ledger entry, and never add a ledger entry without applying the text. Same commit, always.
Ledger Format
One entry per applied change, under a top-level entries: list. Single model id per entry, no aliases. Active and retired entries live in the same file.
entries:
- id: mq-2026-08-22-01
model: gpt-5.4
status: active
applied: 2026-08-22
target: AGENTS.md
kind: insert
anchor: "## Conventions"
text: |
Keep progress updates compact and factual.
before: null
reason: "5.4 narrates every tool call"
Entry rules:
text holds the exact applied text, verbatim — this is the undo key.
- For
kind: edit, before holds the original text; undo restores it.
anchor is a courtesy hint (nearest heading), never the undo key.
- Retired entries keep all fields, flip
status: retired, and add retired: YYYY-MM-DD.
- Keep
reason short; it's the symptom you were mitigating.
Workflow
Applying a mitigation
- Confirm the quirk is a real recurring default worth overriding, not a one-off.
- Write the mitigation inline in the smallest right prompt surface, phrased as a normal unlabeled rule in the file's own voice.
- Add the ledger entry (id, model, target, kind, anchor, exact text, reason) in the same change.
Retiring a model
- For each of the model's active entries, find the entry's
text in its target file and remove it (or restore before for edits).
- If another active model needs the same rule, reassign the entry's
model instead of deleting the text.
- Flip each entry to
status: retired and add retired: YYYY-MM-DD. Retired entries are the archive — future models often revive old quirks, so shop them by reason before writing new mitigations.
Verifying (drift check)
Periodically, or before retiring: confirm each active entry's text still exists verbatim in its target file. If a mitigation was edited in place, update the entry to match or convert it to kind: edit with the right before.
Required Behavior
- No model names or quirk labels in the applied prompt text — the ledger is the only place model attribution lives.
- Exact quoted text is the undo key. Update the ledger whenever applied text is reworded.
- Keep mitigations short, specific, and focused on real default behaviors worth overriding.
- Prefer concrete model quirks over generic writing advice.