Agent Skills: White Bear Audit

Use when the user asks to \"check white bear\", \"audit prohibitions\", \"find negative framing\", or invokes /white-bear. Read-only audit: unnecessary competing-target mentions in LLM-facing prose.

UncategorizedID: jongwony/epistemic-protocols/white-bear

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jongwony/epistemic-protocols/tree/HEAD/epistemic-cooperative/skills/white-bear

Skill Files

Browse the full folder contents for white-bear.

Download Skill

Loading file tree…

epistemic-cooperative/skills/white-bear/SKILL.md

Skill Metadata

Name
white-bear
Description
"Use when the user asks to \"check white bear\", \"audit prohibitions\", \"find negative framing\", or invokes /white-bear. Read-only audit: unnecessary competing-target mentions in LLM-facing prose."

White Bear Audit

A semantic audit of LLM-facing prose for the White Bear authoring principle: keep attention on the necessary path — a mention of a competing non-target (a forbidden act, a superseded path, a rejected alternative) earns its place only when it is load-bearing. Read-only — it emits structured findings and writes no fixes. The human author decides which to rewrite, mark as load-bearing, or dismiss.

Purpose

Surface prose that holds the model's attention on an unnecessary competing target, before it ships. Three forms of one failure: prohibition framing names a forbidden act, superseded-path mention names a retired path, negated anchoring names a rejected alternative — each keeps the non-target available as a competing action candidate. This drift survives deterministic structural checks — it is a meaning-level pattern, so a semantic reviewer catches what literal pattern matching cannot.

Inputs

Manual invocation only (interactive /white-bear):

  • The caller passes target file paths or a glob; with no argument, the skill enumerates the in-scope set under the working tree HEAD.
  • Files are read at their working-tree state — the post-edit, pre-commit content the author is about to ship.

Scope

In scope (LLM-facing prose where this principle applies):

  • Skill instruction files (*/skills/*/SKILL.md), considered outside formal/definition blocks
  • Agent system-prompt files (*/agents/*.md)
  • Output-style files

Out of scope (positively framed by purpose, or the principle does not apply):

  • Formal-definition blocks within instruction files — regions delimited by ── <NAME> ── headers (FLOW, MORPHISM, TYPES, PHASE TRANSITIONS, and peers). Notation patterns are the content there.
  • Fenced code blocks (``` ... ```) — code is content, and example code attached to a definition is part of that definition.
  • Human-facing documentation (README files, design notes, reference material) — examples serve human comprehension there.
  • Rule-tier and principle-tier prose authored for contributors — such prose admits intentional negative formulations as discriminant signals; a one-pass rewrite would erase calibration signals at intentionally preserved decision points.
  • Session and context substrates outside this audit's surface.

What to evaluate

The principle (stands alone). LLM-facing instructions are followed more reliably when they state only what carries the intended behavior — a positive rationale ("X is Y because Z"), the current path, the affirmed characterization. Naming an unnecessary competing target holds attention on it — the white bear effect: "don't think of a white bear" surfaces the white bear. The human ironic-process effect does not transfer mechanistically to language models; each form carries its own operative ground:

  • Prohibition framing ("do not use W") — weak negation processing: negative injunctions bind behavior less reliably than positive directives. The strongest-evidenced form.
  • Superseded-path mention (a positive mention of a path the same instruction retires in favor of a replacement) — option availability: naming the retired path can keep it available as a competing action candidate. A conservative authoring heuristic rather than an established causal law.
  • Negated anchoring ("X is not A but B" where the rejected alternative A carries no load) — the contrast anchors attention on the rejected alternative; the same discipline is recorded from practice as an editing convention (prefer positive predicates over negated anchoring).

For each in-scope file, consider every prose sentence outside formal blocks and code fences:

A White Bear signal is a sentence in LLM-facing prose that names a competing non-target — a forbidden act, a superseded path, or a rejected alternative — where stating only the intended path preserves the directive's force. The three named forms are working hypotheses, an open list rather than an exhaustive taxonomy; the constitutive test is necessity: a mention whose load-bearing meaning collapses without it stays compliant, and a mention the directive survives without is a finding.

Section-level placement — the principle's force varies by the section's role:

  • Runtime motivational prose — Rules, Phase prose, agent system prompts: prose that directs what the LLM does at execution time. The named non-target becomes the foreground attractor during application, so apply White Bear avoidance at full strength; the rewrite tests below decide whether a mention stays.
  • Diagnostic substrate — Anti-patterns sections, failure-case checklists, audit findings, review-vocabulary lists. The section's role is naming failure modes, superseded paths, or rejected alternatives for detection, so negative or failure-case wording is the content. Treat as compliant by purpose when the section role is visible. Surface a finding only when a rewrite would preserve both directive force and boundary meaning — usually low for human triage rather than high.

Load-bearing boundary mentions (compliant by purpose; surface only as low when the rewrite preference is judgment-dependent): a prohibition or competing-target mention stays when it encodes a genuine safety boundary the model observes, a contract it honors, a verification-by-design constraint, a legacy-input condition, a migration target, or a genuine fallback. A path may be retired for execution while its mention remains necessary to recognize or verify the boundary; removing such a mention would erase the boundary, so it stays.

The rewrite test (constitutive core, all forms): a rewrite is valid when stating only the intended path — the positive restatement, the replacement path, the affirmed characterization — preserves both directive force and boundary meaning. If neither in-place rewrite nor relocation to a diagnostic section preserves both, the original stays. Treat ambiguous cases as severity: low and surface them for human triage.

Superseded-path test (per-form refinement): surface a finding only when all of these hold — the prose is an in-scope runtime directive; the retired path and its replacement serve the same effect at the same decision point; the replacement is complete for the governed case; the mention presents the retired path as an actionable alternative; and removing it preserves directive force, boundary meaning, applicability, and required legacy handling. A mention required for diagnosis, migration, compatibility, fallback, provenance, or input recognition stays — naming the path is its content there.

Negated-anchoring test (per-form refinement): in directive prose, "X is not A but B" is a finding when the rejected alternative is unnecessary — restating as "X is B" preserves the directive's force. The contrast stays when it is load-bearing: a live decision among alternatives, a boundary-bearing comparison, or a discriminant the reader needs to tell adjacent cases apart.

Output

Emit a single JSON object as the final assistant message.

{
  "summary": {
    "files_audited": 0,
    "findings_total": 0,
    "by_severity": {"high": 0, "medium": 0, "low": 0}
  },
  "findings": [
    {
      "file": "<repo-relative path>",
      "line": 0,
      "severity": "high",
      "form": "<prohibition-framing | superseded-path | negated-anchoring | emergent>",
      "excerpt": "<verbatim text from the file — single line or short span>",
      "rationale": "<one sentence: which form this excerpt instantiates, and how stating only the intended path would land>",
      "suggested_rewrite": "<a candidate restatement that preserves directive force>"
    }
  ]
}

Severity calibration:

| Severity | Surface | |----------|---------| | high | Rules sections, Phase prose, agent system prompts — places where a competing-target mention materially shapes downstream LLM behavior | | medium | Distinctions, Composition notes, scope-boundary descriptions in supporting sections | | low | Borderline cases — uncertain replacement, contested necessity, judgment-dependent rewrite preference — where an author may legitimately keep the original |

When zero findings result, emit the JSON object with empty findings array and zero counts. The summary always emits.

Self-application

This SKILL.md is itself LLM-facing prose and so is in scope. The audit may surface findings against the prose above, emitting a suggested_rewrite that preserves directive force like any other finding; the human author decides whether it lands. Findings against this file are first-class — the audit's own definition is subject to the same review as any other in-scope file.

Distinction

| Surface | Mechanism | Failure mode handled | |---------|-----------|---------------------| | Deterministic static checks | Literal pattern matching and structural validation | Structural drift between coupled artifacts; literal pattern leaks | | white-bear | Claude-judge semantic review of LLM-facing prose | Unnecessary competing-target mentions (prohibition framing, superseded-path mention, negated anchoring) that survive structural validity | | zero-shot | Sibling semantic audit | Few-shot anchoring drift |

Deterministic checks run at pre-commit and CI; this semantic audit runs on-demand via its slash command. Each maintains its own confidence curve.

Confidence

An advisory, human-reviewed instrument. Findings are candidates for an author to weigh, not automatic edits; the audit illuminates the decision and leaves the judgment with the author. Promoting any recurring finding pattern into a deterministic check is a separate, evidence-gated step — it waits on a pattern proving stable across varied prose, not on a single audit run.