deprecation
Retire code, endpoints, fields, flags and dependencies safely, and migrate data without downtime using expand/contract.
Skill by pabloleonalcaide
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/pabloleonalcaide-deprecation
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/deprecation
What's inside
- Skill name
deprecation- Description
- Retire code, endpoints, fields, flags and dependencies safely, and migrate data without downtime using expand/contract. Use when removing or renaming a field, column, endpoint, event, feature flag or module, when code is suspected dead, when migrating consumers from an old interface to a new one, or when the user says "deprecate", "remove", "sunset", "clean up dead code". Execution core of the /develop deprecation branch.
- License
- MIT
- Instructions
- 66 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Deprecation and migration
Code is a liability: every line has a maintenance cost and an attack surface. Removing it is an
achievement — but only once you've **proven** nothing depends on it.
## When NOT to use
- Behavior-preserving restructuring with the same public surface — that is a refactor.
- Language or type-system migrations with no change in behavior — mechanical migration.
- Dependency vulnerability bumps.
## Process
1. **Find every consumer.** Grep across the whole repository for every spelling of the name
(camelCase, snake_case, string literals, dynamic keys) and every source extension in play;
check other repositories, configs, scheduled jobs, analytics/data pipelines and external
clients. Record the evidence (`file:line` or "0 hits for <pattern>").
2. **Decide the kind of deprecation.**
- **Advisory** (default): mark deprecated, document the replacement, stop new usage, let
consumers migrate.
- **Compulsory**: a removal date the consumers must meet. Requires an owner and a plan for
each known consumer.
**Churn rule:** whoever owns the thing being removed migrates its consumers (or funds it) —
don't push the cost onto them.
3. **Pick the migration pattern.**
- **Strangler** — route traffic gradually from old to new behind one entry point.
- **Adapter** — keep the old interface as a thin shim over the new implementation.
- **Feature flag** — switch per tenant/percentage, with an owner and an expiry date.
4. **Persisted data: expand/contract**, each step its own deployable change:
1. **Expand** — add the new field/column/collection; old code ignores it.
2. **Dual-write** — write both old and new; read old.
3. **Backfill** — migrate existing records (idempotent, resumable, batched); verify counts.
4. **Switch reads** — read new; keep writing both for a rollback window.
5. **Contract** — stop writing old, then drop it, after the window and once consumers are at 0.
Notify downstream data consumers at step 1 and step 5.
5. **Remove zombie code** only with step 1's evidence at zero consumers. Delete the code, its
tests, config, flags and docs together; mention the evidence in the PR.
## Common Rationalizations
| Rationalization | Reality |
|---|---|
| "Nobody calls it, I checked the obvious file" | One grep in one extension is not evidence. Callers hide in other file types, strings and other repos. |
| "Rename the column in one migration, it's quicker" | Every running instance with the old code breaks mid-deploy. Expand/contract. |
| "We'll backfill later" | Reads switch, old records come back empty. Backfill before switching reads. |
| "Leave the flag, it doesn't hurt" | Every stale flag doubles the paths to test and reason about. Flags get an expiry. |
| "It might be useful someday" | That's what version control is for. |
## Red Flags
- A field/column dropped in the same change that stops writing it.
- A backfill that is not idempotent or can't resume after a crash.
- "Dead code" removed without a recorded consumer search.
- Shared or externally consumed artefacts (translations, public events, API fields) deleted by
a code change instead of their owning process.
- A feature flag with no owner or expiry.
## Verification
- [ ] Consumer search recorded with patterns and results
- [ ] Each expand/contract step is its own deployable change, in order
- [ ] Backfill verified (counts before/after) and re-runnable
- [ ] Downstream data consumers notified (expand and contract)
- [ ] Removed code's tests, config, flags and docs removed with itFrom pabloleonalcaide/development-skills, MIT.
More from pabloleonalcaide/development-skills
- 0.592score
develop
pabloleonalcaide
Orchestrates any non-trivial development or analysis task end-to-end — discovery, alignment, blueprint, registration, implementation and delivery.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
disk-cleanup
pabloleonalcaide
Reclaim local disk space safely on a development machine — leftover git worktrees, Docker leftovers from integration tests (Testcontainers containers, orphan…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
api-design
pabloleonalcaide
Design stable public interfaces — HTTP endpoints, event payloads, module boundaries, SDK-style ports — and make retried operations safe with idempotency keys.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
observability
pabloleonalcaide
Instrument code so production behavior is visible and diagnosable — structured logs with correlation ids, metrics, traces, symptom-based alerts and minimal…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
security-hardening
pabloleonalcaide
Threat-model a change and harden it before it ships — trust boundaries, authn/authz, input validation, secrets, SSRF, destructive operations, rate limits and…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
setup
pabloleonalcaide
Sets up an `## Agent skills` block in AGENTS.md/CLAUDE.md and `docs/agents/` so the engineering skills know this repo's issue tracker (GitHub by default, or…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
create-pr
pabloleonalcaide
Commit the current branch, push it, and open a pull request.
SkillAFreshness: A★ 1Claude Code +9 - 0.567score
diagnose
pabloleonalcaide
Disciplined diagnosis loop for hard bugs and performance regressions.
SkillAFreshness: A★ 1Claude Code +9 - 0.562score
receiving-code-review
pabloleonalcaide
Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires…
SkillAFreshness: A★ 1Claude Code +9 - 0.562score
grilling
pabloleonalcaide
Grill the user relentlessly about a plan or design until shared understanding — interview one decision at a time, no code until confirmed.
SkillAFreshness: A★ 1Claude Code +9 - 0.562score
tdd
pabloleonalcaide
Test-driven development with red-green-refactor loop.
SkillAFreshness: A★ 1Claude Code +9 - 0.562score
write-a-skill
pabloleonalcaide
Create new agent skills with proper structure, progressive disclosure, and bundled resources.
SkillAFreshness: A★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 7, 2026 (22 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from pabloleonalcaide
- 0.592score
develop
pabloleonalcaide
Orchestrates any non-trivial development or analysis task end-to-end — discovery, alignment, blueprint, registration, implementation and delivery.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
disk-cleanup
pabloleonalcaide
Reclaim local disk space safely on a development machine — leftover git worktrees, Docker leftovers from integration tests (Testcontainers containers, orphan…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
api-design
pabloleonalcaide
Design stable public interfaces — HTTP endpoints, event payloads, module boundaries, SDK-style ports — and make retried operations safe with idempotency keys.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
observability
pabloleonalcaide
Instrument code so production behavior is visible and diagnosable — structured logs with correlation ids, metrics, traces, symptom-based alerts and minimal…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
security-hardening
pabloleonalcaide
Threat-model a change and harden it before it ships — trust boundaries, authn/authz, input validation, secrets, SSRF, destructive operations, rate limits and…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
setup
pabloleonalcaide
Sets up an `## Agent skills` block in AGENTS.md/CLAUDE.md and `docs/agents/` so the engineering skills know this repo's issue tracker (GitHub by default, or…
SkillAFreshness: A★ 1Claude Code +9
Cite this page
deprecation skill. Agent Mart. https://agentmart.dev/skills/pabloleonalcaide-deprecation (last updated 2026-10-24)