Reuse or replace
A drift corrector for anti-fragmentation discipline: one way to do a thing,
not two. When an established way already exists, new work reuses it or openly
replaces it. It does not add a silent second way beside it. The 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 reusing or replacing an
established way rather than splitting into a parallel one.
The discipline this re-anchors
When a codebase, structure, or process already has an established way of
doing something, new work must not silently stand up a second, parallel
way beside it. Two coexisting ways of doing the same thing is fragmentation
It splits the reader's model, doubles the surface that drifts, and taxes
every future change with a "which one?" decision. Resolve the source of truth
per the method doc's ladder: if the consuming project states a
consistency / one-way rule in its own CLAUDE.md / .claude/rules/, re-anchor
THAT. Otherwise re-anchor this portable baseline.
Facing an established way, new work has exactly two honest options. The
two this skill is named for:
- Reuse it. Follow the established way, so the codebase keeps one way.
- Replace it. Openly argue the established way should change, then, if it
should. migrate the old uses to the new way and record the decision.
Replacement converges the codebase on the new single way.
The sin is neither of those: it is leaving the established way in place and
quietly adding a divergent way alongside it, so both now exist. That silent
second way is what this skill exists to catch.
Misconstrual guard. This is NOT "always conform" (mandatory)
Reusing is not blind conformity, and this skill never demands straight
obedience to the incumbent way. Replacing the established way is a
first-class, encouraged move, not a deviation to be suppressed. The
established way should be replaced when:
- evidence backs an improvement. Research or measurement shows a better
way (route the evidence-gathering to
/discipline:do-your-research, invoked via the
Skill tool);
- its rationale is missing. Nobody can say why it is done this way ("I
don't know, it just is");
- it rests on incumbency only. "we've always done it this way" is the
sole support;
- it is stale or outdated. Newer developments may have superseded it;
a challenge on this ground requires fresh research, not recall.
When you replace, do it in the open and carry it through: migrate the old uses.
When you reuse, reuse because the way holds up, not merely because it is there;
that interrogation is /discipline:reason-dont-recite's axis (below).
The burden rule. Divergence is priced by blast radius
Replacing the established way (or otherwise diverging from it) is allowed, but
it carries a burden: a stated rationale, recorded proportional to the
divergence's blast radius.
- Durable or architectural divergence, a new structural pattern, a
different error-handling model, a second workflow. Records its rationale
where durable decisions live: the repo's ADR or docs convention.
- Small, local divergence records it where the change is reviewed: the
PR description or the commit message.
- No recorded reason at all is the finding. An unexplained second way is
fragmentation whether or not it is defensible on its merits, the burden is
to say why, not merely to be right.
Scope, the unlintable "approach" level
This skill owns consistency of how work is done where judgement, not a
tool, decides it: code idioms and shapes, module and file structure, naming
shapes, error-handling and logging approaches, API and interface conventions,
documentation formats, and process or workflow choices.
Mechanical style is out of scope. Indentation, quote style, import
order, line length, and everything a formatter or linter settles
deterministically belong to those tools, not to a judgement corrector. This
skill fires at the level a linter cannot reach: the approach, not the
whitespace.
Distinct axes, the two skills this must not be confused with
Firing this cleanly requires keeping it apart from two siblings; the
boundaries are deliberate, not incidental.
/discipline:reason-dont-recite (evaluation-side). That skill
interrogates inherited content. Is this existing convention actually
justified, or coasting on precedent? This skill is production-side:
when creating new work, reuse the established way unless you state a
reason to replace it. They meet at the challenge: when this skill's audit
finds you want to replace the established way, the question "is the
established way even right?" is reason-dont-recite's, and the evidence for a
better way is /discipline:do-your-research's. Reuse-or-replace governs the
second way; those govern the justification.
/discipline:pick-for-the-problem (carve-out. Does NOT overlap). That
skill governs selecting a tool, library, framework, or dependency to fit
the problem, and names incumbency as a selection sin. This skill
never governs that selection. Consistency of idioms, structure, and
process is reuse-or-replace; choosing what tool or dependency to adopt is
pick-for-the-problem, where matching the incumbent choice can be exactly
the wrong reflex. Do not apply this skill to a build-vs-buy or
which-library decision. Route it there.
Audit. What to look for
Name concrete, located findings (per the method doc's step 2, self-audit):
- a new pattern, idiom, or structure standing beside an existing one that
already solves the same thing, with no stated reason for the second way;
- a divergent error-handling, logging, naming, or interface approach
introduced where the codebase already has an established one;
- a second workflow, process, or document format added alongside the
established one rather than reusing or replacing it;
- a divergence whose blast radius is durable/architectural but whose
rationale was never recorded in the repo's ADR/docs convention;
- a small local divergence with no rationale in its PR or commit;
- an established way reused only because it is there, where its rationale
is missing, incumbency-only, or stale, a challenge that was owed and
skipped (route to
/discipline:reason-dont-recite /
/discipline:do-your-research, invoked via the Skill tool).
Correct each forward now: reuse the established way for the new work; or,
where replacement is warranted, record the rationale at the blast-radius-
appropriate level AND, if the established way is genuinely superseded, migrate the existing uses and retire it rather than leaving both. Never settle
for the silent second way.
What this skill does NOT do
- Does not mandate conformity. A well-grounded replacement that supersedes
the established way and migrates its uses is a correct outcome, not a
violation; the duty is to keep one way, not to freeze the incumbent one.
- Does not police mechanical style. Formatting and lint-settled choices
belong to the linter/formatter; this skill audits the unlintable approach
level only.
- Does not govern tool or dependency selection. That is
/discipline:pick-for-the-problem; incumbency there is a selection sin, not
a consistency target.
- Does not fabricate a finding. New work that already reuses the
established way, or replaces it with a recorded reason, audits clean; say so.
Gotchas
- The tell is two ways where one would do, not divergence itself. A
single replacement that openly superseded the old way (uses migrated,
decision recorded) kept the codebase on one way; it is the goal, not the
finding. The finding is the old way and the new way both left standing.
- "Be consistent" read as "never replace" inverts the skill. Blind trust in
the status quo is the failure mode on the other side; the misconstrual
guard exists because straight conformity is not the goal. One way is.
- A recorded reason is the burden, not correctness. An unexplained second way
is a finding even if it would have been defensible; the fix is to state the
rationale (and keep one way), not to argue the divergence was fine.
1---2name: reuse-or-replace3description: Re-anchor the anti-fragmentation discipline that when an established way of doing something already exists, an idiom, structure, naming shape, doc format, or process, new work REUSES it or openly REPLACES it (migrate the old uses, record the decision); never a silent second, parallel way alongside. Then audit the work in flight for unexplained divergence from an established way. Replacing is first-class when evidence backs it, the sin is the SILENT second way, not divergence itself. Use when: 'reuse or replace', 'we already have a way of doing this', 'don't invent a second way', 'keep it one way', 'follow the existing pattern or replace it', 'be consistent', 'you added a parallel way', 'this diverges from how we do it elsewhere', or at conversation start on work that extends an established codebase, structure, or process.4---56# Reuse or replace78A drift corrector for anti-fragmentation discipline: one way to do a thing,9not two. When an established way already exists, new work reuses it or openly10replaces it. It does not add a silent second way beside it. The method, re-anchor, audit the work in flight, correct forward, report, and the tone11that firing this is not an accusation, lives in12[`${CLAUDE_PLUGIN_ROOT}/context/re-anchor-audit-correct.md`](../../context/re-anchor-audit-correct.md).13Read it; this file adds only what is specific to reusing or replacing an14established way rather than splitting into a parallel one.1516## The discipline this re-anchors1718When a codebase, structure, or process already has an **established way** of19doing something, new work must not silently stand up a **second, parallel20way** beside it. Two coexisting ways of doing the same thing is fragmentation21It splits the reader's model, doubles the surface that drifts, and taxes22every future change with a "which one?" decision. Resolve the source of truth23per the method doc's ladder: if the consuming project states a24consistency / one-way rule in its own `CLAUDE.md` / `.claude/rules/`, re-anchor25THAT. Otherwise re-anchor this portable baseline.2627Facing an established way, new work has exactly **two honest options**. The28two this skill is named for:2930- **Reuse it.** Follow the established way, so the codebase keeps one way.31- **Replace it.** Openly argue the established way should change, then, if it32 should. *migrate* the old uses to the new way and *record* the decision.33 Replacement converges the codebase on the new single way.3435The **sin is neither of those**: it is leaving the established way in place and36quietly adding a divergent way alongside it, so both now exist. That silent37second way is what this skill exists to catch.3839### Misconstrual guard. This is NOT "always conform" (mandatory)4041Reusing is **not** blind conformity, and this skill never demands straight42obedience to the incumbent way. Replacing the established way is a43**first-class, encouraged** move, not a deviation to be suppressed. The44established way *should* be replaced when:4546- **evidence backs an improvement**. Research or measurement shows a better47 way (route the evidence-gathering to `/discipline:do-your-research`, invoked via the48 Skill tool);49- **its rationale is missing**. Nobody can say why it is done this way ("I50 don't know, it just is");51- **it rests on incumbency only**. "we've always done it this way" is the52 sole support;53- **it is stale or outdated**. Newer developments may have superseded it;54 a challenge on this ground requires *fresh* research, not recall.5556When you replace, do it in the open and carry it through: migrate the old uses.57When you reuse, reuse because the way holds up, not merely because it is there;58that interrogation is `/discipline:reason-dont-recite`'s axis (below).5960### The burden rule. Divergence is priced by blast radius6162Replacing the established way (or otherwise diverging from it) is allowed, but63it carries a burden: a **stated rationale**, recorded proportional to the64divergence's blast radius.6566- **Durable or architectural** divergence, a new structural pattern, a67 different error-handling model, a second workflow. Records its rationale68 where durable decisions live: the repo's ADR or docs convention.69- **Small, local** divergence records it where the change is reviewed: the70 PR description or the commit message.71- **No recorded reason at all** is the finding. An unexplained second way is72 fragmentation whether or not it is defensible on its merits, the burden is73 to say *why*, not merely to be right.7475## Scope, the unlintable "approach" level7677This skill owns consistency of **how work is done** where judgement, not a78tool, decides it: code idioms and shapes, module and file structure, naming79shapes, error-handling and logging approaches, API and interface conventions,80documentation formats, and process or workflow choices.8182**Mechanical style is out of scope**. Indentation, quote style, import83order, line length, and everything a formatter or linter settles84deterministically belong to those tools, not to a judgement corrector. This85skill fires at the level a linter cannot reach: the *approach*, not the86whitespace.8788## Distinct axes, the two skills this must not be confused with8990Firing this cleanly requires keeping it apart from two siblings; the91boundaries are deliberate, not incidental.9293- **`/discipline:reason-dont-recite` (evaluation-side).** That skill94 interrogates *inherited* content. Is this existing convention actually95 justified, or coasting on precedent? This skill is **production-side**:96 when *creating new work*, reuse the established way unless you state a97 reason to replace it. They meet at the challenge: when this skill's audit98 finds you *want* to replace the established way, the question "is the99 established way even right?" is reason-dont-recite's, and the evidence for a100 better way is `/discipline:do-your-research`'s. Reuse-or-replace governs the101 *second way*; those govern the *justification*.102- **`/discipline:pick-for-the-problem` (carve-out. Does NOT overlap).** That103 skill governs selecting a tool, library, framework, or dependency to fit104 the problem, and names incumbency as a *selection sin*. This skill105 **never governs that selection.** Consistency of idioms, structure, and106 process is reuse-or-replace; choosing *what tool or dependency to adopt* is107 pick-for-the-problem, where matching the incumbent choice can be exactly108 the wrong reflex. Do not apply this skill to a build-vs-buy or109 which-library decision. Route it there.110111## Audit. What to look for112113Name concrete, located findings (per the method doc's step 2, self-audit):114115- a new pattern, idiom, or structure standing beside an existing one that116 already solves the same thing, with no stated reason for the second way;117- a divergent error-handling, logging, naming, or interface approach118 introduced where the codebase already has an established one;119- a second workflow, process, or document format added alongside the120 established one rather than reusing or replacing it;121- a divergence whose blast radius is durable/architectural but whose122 rationale was never recorded in the repo's ADR/docs convention;123- a small local divergence with no rationale in its PR or commit;124- an established way reused only because it is there, where its rationale125 is missing, incumbency-only, or stale, a challenge that was owed and126 skipped (route to `/discipline:reason-dont-recite` /127 `/discipline:do-your-research`, invoked via the Skill tool).128129Correct each forward now: reuse the established way for the new work; or,130where replacement is warranted, record the rationale at the blast-radius-131appropriate level AND, if the established way is genuinely superseded, migrate the existing uses and retire it rather than leaving both. Never settle132for the silent second way.133134## What this skill does NOT do135136- **Does not mandate conformity.** A well-grounded replacement that supersedes137 the established way and migrates its uses is a correct outcome, not a138 violation; the duty is to keep one way, not to freeze the incumbent one.139- **Does not police mechanical style.** Formatting and lint-settled choices140 belong to the linter/formatter; this skill audits the unlintable approach141 level only.142- **Does not govern tool or dependency selection.** That is143 `/discipline:pick-for-the-problem`; incumbency there is a selection sin, not144 a consistency target.145- **Does not fabricate a finding.** New work that already reuses the146 established way, or replaces it with a recorded reason, audits clean; say so.147148## Gotchas149150- The tell is **two ways where one would do**, not divergence itself. A151 single replacement that openly superseded the old way (uses migrated,152 decision recorded) kept the codebase on one way; it is the goal, not the153 finding. The finding is the old way and the new way both left standing.154- "Be consistent" read as "never replace" inverts the skill. Blind trust in155 the status quo is the failure mode on the *other* side; the misconstrual156 guard exists because straight conformity is not the goal. One way is.157- A recorded reason is the burden, not correctness. An unexplained second way158 is a finding even if it would have been defensible; the fix is to state the159 rationale (and keep one way), not to argue the divergence was fine.