deprecation-and-migration
Code-as-liability mindset, compulsory vs advisory deprecation, migration patterns, zombie code removal. Use when removing old systems, migrating users, or sunsetting features.
What this skill does
# Deprecation and Migration ## Overview Treat code as a liability that must justify its existence. Deprecate deliberately, migrate incrementally, and remove dead code systematically. Every line of code you remove is a line you never have to maintain again. ## When to Use - Removing old APIs or features - Migrating users from one system to another - Cleaning up unused code - Replacing deprecated dependencies ## Deprecation Types ### Advisory Deprecation - Mark as deprecated in documentation and type annotations - Log warnings when the deprecated path is used - Provide a clear migration path - Set a timeline for removal ### Compulsory Deprecation - Add runtime warnings that cannot be silenced - Set a hard removal date - Communicate the timeline to all affected teams - Provide automated migration tools if possible ## Migration Patterns ### Strangler Fig Build the new system alongside the old: 1. Route new traffic to the new system 2. Migrate existing traffic incrementally 3. Remove the old system once all traffic has migrated ### Parallel Run Run both systems simultaneously: 1. Send traffic to both systems 2. Compare outputs for consistency 3. Switch over once confidence is established 4. Remove the old system ### Feature Flag Cutover Use feature flags to control migration: 1. Deploy the new system behind a flag 2. Enable for internal users first 3. Enable for a percentage of external users 4. Enable for all users 5. Remove the flag and old code ## Zombie Code Removal Identify and remove code that is no longer used: - Search for unreachable exports - Check for unreferenced files - Look for dependencies that are imported but never called - Remove with confidence when tests cover the remaining paths ## Process ### Step 1: Identify What to Deprecate - Audit usage of the old system - Identify all dependents - Assess migration complexity ### Step 2: Communicate the Plan - Document the deprecation timeline - Provide migration guides - Announce through appropriate channels ### Step 3: Implement Migration Path - Add deprecation warnings - Provide migration tools or scripts - Update documentation ### Step 4: Remove the Old System - Verify all consumers have migrated - Remove the deprecated code - Clean up related configuration and documentation ## Common Rationalizations | Rationalization | Reality | |---|---| | "Old code does not hurt anything" | Dead code increases cognitive load, maintenance burden, and binary size. | | "Someone might be using this" | Usage audits and deprecation windows address this. Ship it or remove it. | | "Migration is too disruptive" | Gradual migration patterns minimize disruption. Sudden breakage maximizes it. | ## Verification - [ ] Deprecation timeline is documented and communicated - [ ] Migration path is clear and tested - [ ] All consumers have migrated before removal - [ ] Old code, configuration, and documentation are removed ## Anti-Rationalization Table | Excuse | Counter | |--------|---------| | "Old code doesn't hurt anything" | Dead code increases cognitive load, maintenance burden, and binary size. | | "Someone might be using this" | Usage audits and deprecation windows address this. Ship it or remove it. | | "Migration is too disruptive" | Gradual migration patterns minimize disruption. Sudden breakage maximizes it. | | "I'll deprecate it but never remove it" | Deprecation without removal is just documentation. The goal is removal. | | "The migration tool is too much work" | Manual migration is slower and more error-prone. Automate where possible. |
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.