skills/refactor-break-bw-compat/SKILL.md
Refactor by removing backward compatibility and legacy layers. Use when modernizing APIs, cleaning up migration debt, removing compat shims, or eliminating stale feature flags.
npx skillsauth add outlinedriven/odin-codex-plugin refactor-break-bw-compatInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Compatibility layers are coupling debt with interest. Every compat shim is a decision deferred, not a decision avoided. Break cleanly, break once, break with evidence.
Before breaking anything, find and catalog:
@deprecated / #[deprecated] / warnings.warn markers — especially ones without removal versionsif version >= X, feature flags, #[cfg(feature = "legacy")])oneof with legacy fields)| Signal | Break | Do NOT Break | |--------|-------|--------------| | Zero external consumers | Yes | — | | Single internal consumer, you own it | Yes | — | | Well-tested, high coverage | Yes | — | | Clear new path exists | Yes | — | | External/public API with unknown consumers | — | Not without migration plan | | No tests covering the boundary | — | Write tests first, then break | | Multiple consumers, unclear ownership | — | Map consumers first | | Compat layer under active use by migration-in-progress | — | Finish migration first |
ast-grep, rg, or equivalent — not guesswork.| Gate | Condition |
|------|-----------|
| Blast radius mapped | Every consumer of old API identified and listed |
| Tests green pre-removal | Existing tests pass before any deletion begins |
| Zero references post-removal | ast-grep / rg for old API names returns zero hits |
| No dead imports/deps | No unused imports, packages, or type declarations remain |
| Code | Meaning | |------|---------| | 0 | Clean break — old API fully removed, all consumers migrated, tests pass | | 1 | Partial — old references remain in code, docs, or config | | 2 | Tests broken — removal caused test failures not yet resolved | | 3 | External consumers found — need migration plan before proceeding |
testing
ODIN's compress-operations dispatcher under the Compressor/Extender role. Invoke on "tidy", "clean up", "tidy this file/memory/workspace/git/docs", or when active context (current file, diff, stack, memory directory) has structural rot to resolve before touching behavior. Detects target domain from context and routes to the sibling skill. Requires explicit target or clear active-context signal — do not invoke speculatively.
development
Cross-domain taste skill — apply distinctive judgment to any artifact (prose, code, design, decisions) instead of converging to AI defaults. Two modes — `audit` (judge work against the two-sided charter and portable anchors) and `anchor` (load register before producing). Auto-detects by phrasing; override via `/taste audit | anchor`. Trigger on "is this slop?", "overkill?", "elegant?", "taste-test this".
tools
One-shot bootstrap of strict-mode tooling per ecosystem plus per-task GOALS.md scaffolding so an agentic loop can self-verify. Writes typechecker/linter/schema-validator config for TS (strict + noUncheckedIndexedAccess + exactOptionalPropertyTypes), Python (Pyright strict, Ruff strict), Rust (Clippy deny-correctness), Go (golangci-lint with staticcheck), OCaml (dune --release); establishes `.agent-tasks/<id>/GOALS.md` per-task convention distinct from project-stable AGENTS.md. C++/Java/Kotlin and framework specifics (Spring Boot, Nest, React-strict) are out of scope. Trigger on new project bootstrap, agentic-task setup, "make this self-verifying", "set the loop's goal", "scaffold goals for this issue". Pairs with `llm-self-loop` runtime.
tools
Install git pre-commit hooks via the project's hook tool — Husky+lint-staged (JS), pre-commit (Python/OCaml), lefthook (Go), cargo-husky (Rust). Use when the user wants commit-time formatting, linting, type-checking, or test gates. Detects ecosystem first.