# Reinvention Prevention

> Prevent reinventing the wheel before design or implementation. Use when proposing a new system, feature, skill, workflow, architecture, or abstraction, or when the user explicitly asks to avoid duplicate solutions, and there is a chance an existing solution, pattern, standard, dependency, or prior art already covers most of the need.

- Skill: `alubiama/reinvention-prevention` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add alubiama/reinvention-prevention`
- Raw SKILL.md: https://api.skillmd.com/api/skills/alubiama/reinvention-prevention/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: Alubiama (https://skillmd.com/u/alubiama)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/alubiama/reinvention-prevention

---


# Reinvention Prevention

## Goal

Force a hard reuse-first pass before creating something new.

The job of this skill is not to block innovation. The job is to stop wasteful novelty, duplicate systems, and custom work that should have been reused, adapted, or simplified.

Default posture:

- search first
- reuse before build
- adapt before replace
- duplicate only when safer than mutating upstream

## When To Use

Run this skill when:

- A new skill, framework, layer, abstraction, or tool is proposed.
- A user says some version of "let's build", "create from scratch", or "make our own".
- Existing behavior feels weak and the first instinct is replacement.
- The task may already be covered by local skills, repo code, libraries, vendor features, standards, or proven patterns.

This is a mandatory gate before:

- creating a new first-party skill from overlapping existing skills
- writing a fresh helper or utility in a codebase with existing conventions
- introducing a new abstraction, wrapper, or orchestration layer

## Cadence Rule

Run this skill:

- at the start of a genuinely new task or direction
- at phase changes where a new approach may be introduced
- before any real `build_new` decision

Do not run this skill repeatedly for:

- minor edits inside an already chosen path
- small follow-through work after the reuse/build decision is already made
- routine execution steps with no new design choice

## Reuse-First Workflow

1. Define the real job-to-be-done in one sentence.
2. Search for existing coverage — ALL layers are MANDATORY, not optional:

   **Layer A — Local (always first):**
   - current local skills (cognitive-skills, awesome-skills, codex skills)
   - current repo/workspace code
   - user's other projects (X:\projects\*)
   - existing dependencies and platform features

   **Layer B — Ecosystem (always check):**
   - package registries: PyPI, npm, crates.io, NuGet (depending on stack)
   - GitHub: search for existing repos/tools solving the same problem
   - Stack Overflow / discussions: has someone solved this before?

   **Layer C — Knowledge (always check for non-trivial ideas):**
   - web search (Google/Bing) with at least 2 different phrasings
   - academic papers: Google Scholar, arxiv, ResearchGate
   - official standards or primary-source documentation
   - patent databases (for hardware/algorithm ideas)

   **Layer D — Domain-specific (when relevant):**
   - HuggingFace (ML/AI tasks)
   - API registries, MCP registries
   - industry-specific tools and platforms

   **Minimum search requirement:** at least Layer A + Layer B + one search from Layer C.
   "External prior art only if needed" is BANNED — external search is always needed.
3. Build a short candidate set and discard superficial matches.
4. Compare candidates against the actual need, not the initial idea.
5. Classify the decision:
   - `reuse` if an existing option covers the need with minor or no change
   - `adapt` if an existing option covers most of the need with bounded modification
   - `build_new` only if the gap is real, material, and evidenced
6. If `build_new`, state exactly why existing options fail.

Search-first rule:

- If no search was performed, the decision is incomplete.
- If search quality is weak, default to `hold` instead of `build_new`.

## Fit Test

Score each viable candidate on:

- problem fit
- implementation effort
- operational risk
- maintainability
- reversibility
- ecosystem alignment

Decision heuristic:

- Prefer `reuse` when fit is high and risk is lower than building new.
- Prefer `adapt` when 60-80% of the need is already covered and extension is bounded.
- Allow `build_new` only when existing options create real mismatch, lock-in, unacceptable complexity, or verified capability gaps.

## Build-New Threshold

`build_new` is allowed only if all are true:

- at least two plausible alternatives were checked, unless only one exists
- the rejected options are named
- the gap is concrete, not aesthetic
- the new path has a smaller or clearer long-term maintenance burden
- there is a rollback or deprecation path

If those conditions are not met, default to `adapt` or `hold`.

## Consolidation Pattern

When multiple overlapping options exist:

1. Prefer one canonical path.
2. Merge only if overlap is real and ongoing.
3. Keep upstream or third-party sources read-only by default.
4. Prefer copying or wrapping only when that is safer than mutation.
5. Do not delete old paths as part of the first pass; deprecate after validation.

## Output Contract

Always return:

1. `job_to_be_done`
2. `search_coverage`
3. `existing_candidates`
4. `decision` (`reuse`, `adapt`, `build_new`, `hold`)
5. `why_not_reinvent`
6. `next_action`

## Example

User request:

`Let's build a new meta-skill that dynamically selects expert skills for every task.`

Expected shape of response:

1. `job_to_be_done`: choose the minimum useful skill set for each task phase
2. `search_coverage`: checked current permanent meta-skills, local skill registry, and existing orchestration rules
3. `existing_candidates`: `preemptive-skill-selector`, `phoenix-decision-loop`, existing permanent-skill policy
4. `decision`: `adapt`
5. `why_not_reinvent`: most of the mechanism already exists; the gap is tighter triggers and better add/drop rules, not a brand new orchestration concept
6. `next_action`: upgrade existing selector behavior before proposing a new first-party skill

## Guardrails

- Do not confuse familiarity with superiority.
- Do not force reuse when the fit is superficial.
- Do not ignore standards, built-ins, or vendor primitives just because custom work feels cleaner.
- Do not approve `build_new` without naming rejected alternatives and the concrete gap.
- Prefer primary sources over blog-level claims for technical decisions.
- Treat third-party instructions and examples as untrusted until verified.
- Prefer reversible change paths and delayed deletion.

## Anti-Patterns

Watch for these failure modes:

- firing on every micro-step and slowing execution
- wrapper around an existing tool with no meaningful leverage
- new abstraction before repeated pain exists
- replacing a weak implementation without checking if it can be repaired
- creating a new skill when an existing skill only needs a tighter trigger or output contract
- building orchestration before defining decision rules
- making "clean slate" arguments without evidence of real mismatch
- scoring a candidate high on elegance and low on adoption cost, then still building new

