melodic-software

Scrutinize, don't coast

"Re-anchor adversarial self-scrutiny — stop coasting on your own recent output, re-examine whether it is actually sound (not merely confidently produced) through a fresh-context pass blind to the reasoning that made it, and remediate with the user. Use when: 'scrutinize don't coast', 'wait, stop', 'are you sure about this', 'second-guess this', 'poke holes in what you just did', \"you're steamrolling\", 'push back on yourself', with an optional focus to scope the re-examination, or at conversation start to set the posture."

melodic-software 12 Updated 3w ago

Resources

1
GitHub

Install

npx skillscat add melodic-software/claude-code-plugins/plugins-discipline-skills-scrutinize-dont-coast

Install via the SkillsCat registry.

SKILL.md

Scrutinize, don't coast

A drift corrector for adversarial self-scrutiny. The shared method — re-anchor,
audit the work in flight, correct forward, report, and the tone that firing this
is not an accusation — lives in
`${CLAUDE_PLUGIN_ROOT}/context/re-anchor-audit-correct.md`.
Read it; this file adds only what is specific to adversarial self-scrutiny — and
two deliberate deltas this corrector makes to the shared loop.

The discipline this re-anchors

Every other corrector in this plugin re-anchors a content discipline — research,
incumbency, terseness. This one re-anchors a meta discipline: adversarial
self-scrutiny of your own recent output.
Confidence that the output is sound is
not evidence that it is; fluent, momentum-carried work reads as finished long
before it has been tested. The lens is not "does this conform to discipline X" but
"is this actually right, and would it survive a hostile second look."

Resolve the source of truth per the method doc's ladder: if the consuming project
states a self-scrutiny / verify-before-acting discipline in its own CLAUDE.md or
.claude/rules/, re-anchor THAT. Otherwise re-anchor this portable baseline:

  • Confidence is not correctness. Output that flows smoothly and reads as
    finished has not thereby been tested. Treat "this looks done" as the cue to
    scrutinize, not the verdict.
  • Attack the work, don't defend it. The pass looks actively for what is wrong —
    a wrong assumption, an unstated leap, a case not handled, a claim not backed, a
    requirement quietly dropped — rather than re-reading for reassurance.
  • The producing context is the weakest critic. The reasoning that made a
    mistake plausible is still active, so a hostile look must come from outside it
    (see the fresh-context rule below).
  • A clean pass is a real outcome. Scrutiny that finds the work sound reports
    clean. The duty is to look hard, not to manufacture a fault.

Three deltas to the shared loop

This corrector runs the shared re-anchor / audit / correct-forward loop with three
specific modifications, all flagged here rather than left to diverge silently (the
third is declared in its own section below: the loop's step 2 self-audit runs inside
the fresh-context subagent, not in the producing thread — see "The adversarial pass
runs in a fresh context"):

  1. Stop first. An inserted step between the loop's step 1 and step 2:
    re-anchoring happens on skill load as always, then the current trajectory
    halts before the audit runs. The failure mode
    this addresses is over-confident forward momentum, so the first move is to take
    the foot off the gas — do not push the in-flight action one step further before
    the re-examination has run. No other corrector prepends a stop; this one does,
    because the trigger is "you are moving too fast on this."
  2. Remediate with the user, not autonomously. The shared loop's step 3 (correct forward)
    corrects forward on its own, in-tree, now. Here that step becomes collaborative:
    surface the adversarial findings and work the fixes with the user rather than
    barrelling ahead into an autonomous rewrite. The reason is the same failure mode
    — the remedy for over-confident momentum cannot be more unilateral momentum;
    the user just hit the brakes, so they stay in the loop on what changes. Purely
    mechanical, unambiguous corrections (a typo the pass surfaced) are still fixed
    directly; anything carrying a judgment call is proposed and worked jointly.

The shared method doc's outward-artifact carve-out is unchanged: nothing here files
a PR, issue, or published comment without the user's explicit opt-in.

The adversarial pass runs in a fresh context (mandatory)

The method doc already owns the rule: where your own judgement is the suspected
source of the drift, re-derive in a fresh-context subagent rather than self-checking
in the context that produced it. For every other corrector that is an escalation;
for this one it is the core step — adversarially re-examining output the same
context just produced is exactly the bias that rule targets, so the pass is not
optional here. It must run as a fresh-context (non-fork) subagent, blind to the
reasoning that produced the output: handed the artifact and the requirement, not the
story of how the work was reached, and told to find what is wrong. A fork inherits
the parent conversation and carries the bias forward, so it does not satisfy this.
(That is the Agent tool's fork subagent; a skill's context: fork frontmatter is
the opposite — isolated, no conversation history — the official docs overload the word.)

The findings return to this thread, and remediation proceeds with the user (delta
2): the fresh context supplies the unbiased critique, the user stays in the loop on
the fix.

Optional focus

An optional focus scopes the re-examination — "the migration logic", "the security
assumptions", "the numbers in that table". Given a focus, aim the adversarial pass
at it specifically; given none, target the most recent substantive output. A focus
narrows aim; it never suppresses a serious flaw the pass finds outside it — surface
that too.

Audit — what to look for

This is the brief handed to the fresh-context pass — the questions it is told to
answer from a stance actively trying to break the work. It is the method doc's step
2 (self-audit) run in the fresh context rather than here, so the findings come back
concrete and located, not as a generic mea culpa:

  • an output presented as finished that was never tested against its actual
    requirement;
  • an assumption the work rests on that was never stated or checked;
  • a case, input, or failure mode the work silently does not handle;
  • a claim or number asserted with confidence but not backed;
  • a requirement or constraint that quietly got dropped between the ask and the
    output;
  • a leap where the reasoning skipped a step and momentum carried it past.

Correct each per the two deltas: surface what the pass returns, and work the fix WITH
the user (fixing trivial mechanical items directly).

What this skill does NOT do

  • Not a pre-implementation plan stress-test. Attacking a plan or proposal
    before the work is built is /planning:devils-advocate. This corrector
    re-examines output already produced, reactively, mid-flight — a different point
    on the timeline. Route "poke holes in this plan before we start" to
    devils-advocate; degrade to prose when it is not installed.
  • Not a review checkpoint. A structured review pass between "code works" and
    "code is ready" routes to /review:quality-gate (degrade to prose when it is not
    installed); this corrector is a re-anchor of a discipline, not a review mode.
  • Not a single-axis corrector. It does not own research, incumbency, terseness,
    or any one discipline a sibling owns — it is the general adversarial re-look.
    When a flaw is squarely one axis (an unverified claim), hand that part to the
    sibling that owns it (/discipline:do-your-research) while keeping the general
    scrutiny here.
  • Does not manufacture a fault. A hostile look that finds the work sound reports
    clean; it never invents a flaw to look diligent.

Gotchas

  • Re-reading your own work in the same context and feeling reassured is not the
    adversarial pass — it is the bias the pass exists to defeat. The hostile look has
    to come from the fresh-context subagent, not a second read by the producer.
  • "Stop" means stop the trajectory, not stop the conversation. The point is to
    interrupt momentum long enough to scrutinize, then remediate with the user — not
    to abandon the task.
  • A clean result is not a failure to try. If the fresh pass genuinely finds nothing
    wrong, say so plainly rather than downgrading a non-finding into a vague caveat.