$npx -y skills add mrtooher/fable-mode --skill execution-guardrailsAlways-on operational guardrails, model-independent. Apply on EVERY task and EVERY model (Opus, Sonnet, Haiku, and any future tier) whether or not fable-mode's staged loop is running. Three rules: (1) verify-before-flag — never raise a warning about a problem that hasn't been con
| 1 | # Execution Guardrails |
| 2 | |
| 3 | Three rules extracted from fable-mode's operational section so they apply everywhere, |
| 4 | not only inside the staged loop. A frontier model doesn't need a stage map for a simple |
| 5 | task, but it still needs these — they encode the user's preferences, and no model ships |
| 6 | knowing them. |
| 7 | |
| 8 | ## 1. Verify before flag |
| 9 | |
| 10 | Before flagging any problem — verify it actually exists. Grep, diff, run it, or check |
| 11 | the source directly. Never report a problem that hasn't been confirmed present. |
| 12 | |
| 13 | An unverified flag — a warning raised because evidence wasn't *found*, rather than |
| 14 | because a fault was *found* — is itself an error. It manufactures doubt where none is |
| 15 | warranted and sends the user chasing ghosts. Absence of evidence is not the finding. |
| 16 | Confirm, then flag. |
| 17 | |
| 18 | The known failure this rule exists to stop: run a web search on something from the |
| 19 | user's firsthand world, find thin or no results, and convert that silence into a warning |
| 20 | against the user's own sourcing. Web silence is never grounds for a warning. For facts |
| 21 | about the user's own world, conversation history outranks the web (see the |
| 22 | source-of-truth skill). |
| 23 | |
| 24 | A capability flag follows the same standard. "This may be beyond me" must name what was |
| 25 | attempted and where it failed — not a vague appeal to difficulty. |
| 26 | |
| 27 | ## 2. Warning threshold |
| 28 | |
| 29 | Across any run, minor concerns accumulate that aren't worth halting on individually. |
| 30 | Keep a running count. At the threshold — **default three, tunable if the user sets a |
| 31 | different number** — stop and surface all of them to the user at once before continuing. |
| 32 | |
| 33 | Rationale: three small things pointing the same direction usually mean one real problem |
| 34 | worth a decision. Below threshold, keep working; a drip of trivial caveats is noise. |
| 35 | At threshold, batch them — one interruption with full context beats three fragmentary |
| 36 | ones. |
| 37 | |
| 38 | A concern that independently meets the verify-before-flag bar and is material on its own |
| 39 | does not wait for the threshold. The threshold governs minor concerns only. |
| 40 | |
| 41 | ## 3. Find-and-replace safety |
| 42 | |
| 43 | When editing files with sed (or any substring replace), always anchor on word boundaries |
| 44 | to avoid corrupting compound words — a bare `edge` replace will mangle `Ledger` into |
| 45 | garbage. Use `\bword\b`, not bare `word`. |
| 46 | |
| 47 | After any sed pass on a file, grep for glued or malformed compound words before |
| 48 | presenting the result. A replace that silently corrupts neighboring tokens is the most |
| 49 | common self-inflicted error in file edits. The check is cheap; the silent corruption is |
| 50 | not. |
| 51 | |
| 52 | Preferred order of tools: targeted string-replace on a unique anchor > word-boundary |
| 53 | sed > bare sed (never). If the string to replace isn't unique in the file, widen the |
| 54 | anchor until it is — do not replace-all and hope. |
| 55 | |
| 56 | ## Relationship to fable-mode |
| 57 | |
| 58 | fable-mode's staged loop is optional and gated on task size. These guardrails are not |
| 59 | optional and not gated. When fable-mode runs, its step 4 (self-critique) and all file |
| 60 | edits inherit these rules. When fable-mode doesn't run, these rules apply anyway. In v3 |
| 61 | the per-model runners route to frontmatter-defined agents (`agents/*.md`) whose system |
| 62 | prompts carry these rules inline, because spawned agents cannot see this skill. |