deprecation-and-migration
Gerencia a remoção de funcionalidades antigas e a migração para novas. É útil ao atualizar sistemas ou mudar como algo funciona, garantindo uma transição suave.
O que ela faz
Esta ferramenta ajuda a remover sistemas, APIs ou funcionalidades antigas de um programa de computador. Ela também auxilia na transferência de usuários de uma versão antiga para uma nova, garantindo que a mudança seja feita sem problemas.
Quando usar
- ✓Quando você precisa tirar do ar um sistema antigo e colocar um novo.
- ✓Ao mudar usuários de um serviço antigo para um novo.
- ✓Ao decidir se um código antigo ainda vale a pena ser mantido.
Exemplo do que pedir para a IA
“Como posso remover um sistema antigo e migrar meus usuários para o novo de forma segura?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ela funciona planejando a remoção de códigos que não são mais úteis e guiando a transição dos usuários para alternativas mais novas. Isso envolve anunciar as mudanças, oferecer um caminho claro para a nova versão e, por fim, remover o código antigo.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add addyosmani/agent-skills --skill deprecation-and-migrationOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/deprecation-and-migration/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Depreciação e Migração
Visão Geral
Código é um passivo, não um ativo. Cada linha de código tem um custo contínuo de manutenção — bugs para corrigir, dependências para atualizar, patches de segurança para aplicar e novos engenheiros para integrar. Depreciação é a disciplina de remover código que não se paga mais, e migração é o processo de mover usuários com segurança do antigo para o novo.
A maioria das organizações de engenharia é boa em construir coisas. Poucas são boas em removê-las. Esta habilidade aborda essa lacuna.
Quando Usar
- Substituir um sistema, API ou biblioteca antiga por uma nova
- Desativar um recurso que não é mais necessário
- Consolidar implementações duplicadas
- Remover código morto que ninguém possui, mas do qual todos dependem
- Planejar o ciclo de vida de um novo sistema (o planejamento de depreciação começa no momento do design)
- Decidir se deve manter um sistema legado ou investir em migração
Princípios Fundamentais
Código É um Passivo
Cada linha de código tem um custo contínuo: precisa de testes, documentação, patches de segurança, atualizações de dependência e sobrecarga mental para qualquer pessoa que trabalhe por perto. O valor do código é a funcionalidade que ele fornece, não o código em si. Quando a mesma funcionalidade pode ser fornecida com menos código, menos complexidade ou melhores abstrações — o código antigo deve ir.
A Lei de Hyrum Torna a Remoção Difícil
Com usuários suficientes, todo comportamento observável se torna dependente — incluindo bugs, peculiaridades de tempo e efeitos colaterais não documentados. É por isso que a depreciação requer migração ativa, não apenas um anúncio. Os usuários não podem "simplesmente mudar" quando dependem de comportamentos que a substituição não replica.
O Planejamento de Depreciação Começa no Momento do Design
Ao construir algo novo, pergunte: "Como removeríamos isso em 3 anos?" Sistemas projetados com interfaces limpas, flags de recursos e área de superfície mínima são mais fáceis de depreciar do que sistemas que vazam detalhes de implementação em todos os lugares.
A Decisão de Depreciação
Antes de depreciar qualquer coisa, responda a estas perguntas:
1. Does this system still provide unique value?
→ If yes, maintain it. If no, proceed.
2. How many users/consumers depend on it?
→ Quantify the migration scope.
3. Does a replacement exist?
→ If no, build the replacement first. Don't deprecate without an alternative.
4. What's the migration cost for each consumer?
→ If trivially automated, do it. If manual and high-effort, weigh against maintenance cost.
5. What's the ongoing maintenance cost of NOT deprecating?
→ Security risk, engineer time, opportunity cost of complexity.
Depreciação Obrigatória vs. Consultiva
| Tipo | Quando Usar | Mecanismo |
|---|---|---|
| Consultiva | A migração é opcional, o sistema antigo é estável | Avisos, documentação, incentivos. Os usuários migram em seu próprio cronograma. |
| Obrigatória | O sistema antigo tem problemas de segurança, bloqueia o progresso ou o custo de manutenção é insustentável | Prazo final rígido. O sistema antigo será removido na data X. Fornecer ferramentas de migração. |
O padrão é consultivo. Use obrigatório apenas quando o custo de manutenção ou o risco justificar forçar a migração. A depreciação obrigatória requer o fornecimento de ferramentas de migração, documentação e suporte — você não pode simplesmente anunciar um prazo.
O Processo de Migração
Etapa 1: Construir a Substituição
Não deprecie sem uma alternativa funcional. A substituição deve:
- Cobrir todos os casos de uso críticos do sistema antigo
- Ter documentação e guias de migração
- Ser comprovada em produção (não apenas "teoricamente melhor")
Etapa 2: Anunciar e Documentar
## Deprecation Notice: OldService
**Status:** Deprecated as of 2025-03-01
**Replacement:** NewService (see migration guide below)
**Removal date:** Advisory — no hard deadline yet
**Reason:** OldService requires manual scaling and lacks observability.
NewService handles both automatically.
### Migration Guide
1. Replace `import { client } from 'old-service'` with `import { client } from 'new-service'`
2. Update configuration (see examples below)
3. Run the migration verification script: `npx migrate-check`
Etapa 3: Migrar Incrementalmente
Migre os consumidores um de cada vez, não todos de uma vez. Para cada consumidor:
1. Identify all touchpoints with the deprecated system
2. Update to use the replacement
3. Verify behavior matches (tests, integration checks)
4. Remove references to the old system
5. Confirm no regressions
…
Perguntas frequentes
Por que remover código antigo é importante?
Código antigo custa dinheiro para manter (correções, atualizações, segurança) e pode dificultar a adição de novas funcionalidades. Remover o que não é mais útil libera recursos e simplifica o sistema.
O que é a 'Lei de Hyrum'?
É a ideia de que, com o tempo, até mesmo os erros ou comportamentos inesperados de um sistema antigo podem se tornar algo que as pessoas dependem. Por isso, a remoção exige cuidado e uma migração ativa, não apenas um aviso.
Como faço para remover um sistema sem prejudicar os usuários?
Planeje com antecedência, crie uma alternativa funcional, anuncie claramente as mudanças com um guia de migração, e mova os usuários aos poucos. Só remova o sistema antigo quando tiver certeza de que ninguém mais o está usando.
Detalhes
Descrição original do autor
Manages deprecation and migration. Use when removing old systems, APIs, or features. Use when migrating users from one implementation to another. Use when migrating a database schema in production, such as renaming or dropping a column without downtime (expand/contract). Use when deciding whether to maintain or sunset existing code.
repo: addyosmani/agent-skills
Popularidade
- Estrelas no GitHub
- 107 mil
- Posição no ranking
- #348
- Licença
- MIT
- Atualizada em
- 13/10/2026
Comentários
- …
Mais skills deste repositório
api-and-interface-design
Ajuda a criar APIs e interfaces bem definidas. É útil ao projetar como diferentes partes de um software vão se comunicar.
addyosmani/agent-skills
browser-testing-with-devtools
Ajuda seu agente a testar código diretamente em navegadores reais. É útil para verificar como algo funciona no ambiente onde será usado, encontrando erros e problemas de performance.
addyosmani/agent-skills
ci-cd-and-automation
Ensina seu agente de IA a automatizar tarefas repetitivas e colocar projetos no ar e cuidar da infraestrutura.
addyosmani/agent-skills
code-review-and-quality
Realiza revisões de código detalhadas em várias frentes. É útil antes de juntar novas mudanças para garantir a qualidade e evitar problemas futuros.
addyosmani/agent-skills
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC