diff --git a/.changeset/negation-failure-mode.md b/.changeset/negation-failure-mode.md new file mode 100644 index 0000000..a33ed93 --- /dev/null +++ b/.changeset/negation-failure-mode.md @@ -0,0 +1,5 @@ +--- +"mattpocock-skills": minor +--- + +Add two adjacent Steering failure modes to **`writing-great-skills`**, both about how language you think of as "off" still steers the agent. **Negation** — the _elephant_ — is steering by prohibition: naming what _not_ to do drags the forbidden behaviour into context and makes it _more_ available, not less (_don't think of an elephant_), so the cure is to prompt the **positive**. **Negative Space** — the void — is blindness to the steering done by what you leave _out_: every decision a skill declines is delegated to the agent's priors rather than left neutral, so the cure is to read a draft for its silences and decide each omission deliberately (fill it, or leave it open as a real **branch**). Kept as two entries, not one — they carry different diagnostics and different cures — each a full `GLOSSARY.md` entry plus a `SKILL.md` failure-mode bullet, matching how every other failure mode is carried. diff --git a/skills/productivity/writing-great-skills/GLOSSARY.md b/skills/productivity/writing-great-skills/GLOSSARY.md index 969c699..0269ca8 100644 --- a/skills/productivity/writing-great-skills/GLOSSARY.md +++ b/skills/productivity/writing-great-skills/GLOSSARY.md @@ -158,6 +158,12 @@ _Failure mode._ Ending the current step before it is genuinely done, because the _Avoid_: premature closure, the rush, rushing, shortcutting +### Negation + +_Failure mode._ Steering by prohibition — telling the agent what _not_ to do — which drags the forbidden behaviour into context and makes it _more_ available, not less. _Don't think of an elephant_, and the elephant is all there is; _never write verbose comments_, and verbosity is the pattern the agent has just read. The negation is a weak modifier the strongly-activated concept overruns, so the ban half-reads as an instruction to do the thing. Its **leading word** is the _elephant_: whatever a prohibition names into the frame. Cure: prompt the **positive** — describe the target behaviour ("write one-line comments") so the banned one is never spoken. A prohibition earns its place only as a hard guardrail on a behaviour you cannot phrase positively; even then, pair it with the positive target so attention lands on what to do. + +_Avoid_: ironic rebound, don't-prompting, the pink elephant + ## Pruning Keeping a skill lean — each remedy paired with the failure it cures. diff --git a/skills/productivity/writing-great-skills/SKILL.md b/skills/productivity/writing-great-skills/SKILL.md index 61abad4..82abd0d 100644 --- a/skills/productivity/writing-great-skills/SKILL.md +++ b/skills/productivity/writing-great-skills/SKILL.md @@ -80,3 +80,4 @@ Use these to diagnose issues the user may be having with the skill. - **Sediment** — stale layers that settle because adding feels safe and removing feels risky. The default fate of any skill without a pruning discipline. - **Sprawl** — a skill simply too long, even when every line is live and unique. Hurts readability and maintainability and wastes tokens. The cure is the ladder: disclose **reference** behind pointers, and split by **branch** or sequence so each path carries only what it needs. - **No-op** — a line the model already obeys by default, so you pay load to say nothing. The test: does it change behaviour versus the default? A weak leading word (_be thorough_ when the agent is already thorough-ish) is a no-op; the fix is a stronger word (_relentless_), not a different technique. +- **Negation** — steering by prohibition backfires: _don't think of an elephant_ names the elephant and makes it more available, not less. Prompt the **positive** — state the target behaviour so the banned one is never spoken; keep a prohibition only as a hard guardrail you can't phrase positively, and even then pair it with what to do instead.