评分明细
适用场景
deprecation-and-migration 快速入门
让 AI 像一个严谨的”代码管家”,主动标记废弃代码、规划迁移路径、清理没人用的僵尸文件。
这是什么?解决什么问题?
每个老项目都躲不开三件事:用旧 API 还能用但官方已弃用、新版本出了却没人做迁移、早年的工具函数早没人调用但还堆在仓库里。这些”代码债务”平时不爆,真到上线出问题时排查极其费劲。
deprecation-and-migration 是 Google Chrome 工程总监 Addy Osmani 维护的 agent-skills 仓库下的一个工程方法型 Skill。它的核心思路是:
- 代码即负债:在 AI 写代码时就提醒”这里用了 3 年前就被弃用的 API”;
- 强制/建议弃用分类:哪些必须立刻换(安全/性能),哪些可以缓一缓(仅命名变更);
- 迁移模式模板:重命名/包裹/双写/灰度切换,给出 4 套标准动作;
- 僵尸代码清理:基于引用图找出”没人 import、没人 require、没人动态调用”的死代码。
特别适合接手祖传代码、做大版本升级、做依赖换库(如 Vue 2 → Vue 3、Python 2 → 3、axios → fetch)的同学。
准备工作
- 一个支持 SKILL.md 的 agent 客户端
- 项目的 Git 仓库(以便做引用图谱)
- Node.js ≥ 18(若项目是 JS/TS,用以跑引用扫描)
- 一次”目标版本”明确,比如”我们要把 React 17 升到 React 18”
3 步快速上手
第 1 步:克隆与软链
git clone https://github.com/addyosmani/agent-skills.git<br>
ln -sf "$(pwd)/agent-skills/skills/deprecation-and-migration" \<br>
~/.claude/skills/deprecation-and-migration<br>
```<br>
OpenCode 用户把目标路径换为 `~/.config/opencode/skills/`,Cursor 换为 `~/.cursor/skills/`。<br>
### 第 2 步:确认 SKILL.md 已加载<br>
```bash<br>
cat ~/.claude/skills/deprecation-and-migration/SKILL.md | head -40<br>
```<br>
可以看到它定义了"强制弃用清单"(如 `componentWillMount`、`String.prototype.substr` 无参用法等)、"迁移模式代号"(`RENAME`、`WRAPPER`、`DUAL_WRITE`、`CANARY`)等。重启客户端,`/skills list` 看到 `deprecation-and-migration` 即 OK。<br>
### 第 3 步:跑首次扫描<br>
进入项目目录(比如一个老 React 17 项目),在 agent 对话里说:<br>
```<br>
我要把当前仓库从 React 17 升级到 React 18。<br>
请用 deprecation-and-migration Skill 做一次全仓扫描,<br>
列出强制弃用项、建议弃用项,并给出每个文件的迁移动作(RENAME / WRAPPER / DUAL_WRITE / CANARY)。<br>
```<br>
AI 会先跑引用扫描(grep、AST),再读 SKILL.md 里的清单,最后输出一张迁移表(文件路径、行号、当前用法、推荐动作、影响面)。你审一遍,挑出第一周要做的部分,继续追问:<br>
```<br>
请把 src/legacy/Toast.jsx 用 WRAPPER 模式迁移,<br>
保留旧 API 但内部转新实现,产出 diff。<br>
```<br>
## 常见踩坑<br>
1. **没指明目标版本**:AI 不知道你要"升 React 18"还是"降到 16",只能给出通用建议。先把版本号写在 prompt 开头。<br>
2. **强制/建议不分**:让 AI 在产出里**显式标红**强制项,否则"建议"很容易被团队拖延,最终全部烂尾。<br>
3. **没留测试就开始迁移**:deprecation-and-migration 推荐先跑全量测试,看到绿再动代码,顺序反了排查成本暴涨。<br>
4. **僵尸代码误判**:动态 import、字符串反射、约定式路由里"看似没人引用"其实运行时会用。建议配合一个灰名单(如 `import(`@/`)`),告诉 AI 跳过。<br>
5. **跨仓依赖没扫**:只扫了主仓,没扫 SDK/子包,上线时才发现下游也用旧 API。要明确说"扫描 monorepo 全部 package"。<br>
6. **DUAL_WRITE 没设终止日期**:双写是过渡手段,不是终点。在 SKILL.md 里加 `kill_switch_date`,否则双写会变成"长期态"。<br>
## 初级用法<br>
- **季度"技术债清扫"**:固定一个 sprint 用 Skill 扫一遍,沉淀债务清单到 GitHub Issue。<br>
- **新员工上手辅助**:让新同事 clone 仓库后第一件事就是跑 `deprecation-and-migration` 扫描,迅速了解项目历史包袱。<br>
## 高级玩法<br>
- **接 CI 自动化**:在 CI 里跑 Skill 的扫描子集,PR 阶段就阻断新增弃用 API,等于"债务守门员"。<br>
- **多仓批量扫描**:用 shell 循环遍历 20 个仓库,各自生成迁移报告,统一汇总到 Notion,适合中大公司基线治理。<br>
- **配合 ast-grep/ripgrep**:自定义 grep 规则补充 SKILL.md 没列到的企业内部弃用 API,Skill 当总指挥,grep 当士兵。<br>
## 小技巧<br>
- 迁移动作表里加一列"测试覆盖",无测试的强弃用项优先补测试,再换代码。<br>
- 把"建议弃用"和"强制弃用"分两个 PR,PR 数量可控,review 也更聚焦。<br>
- 定期 `git blame` 看弃用代码的提交人,主动沟通,避免"为什么又是我们组的事"。<br>
- 跨大版本升级时先在 feature 分支做"双写 + 影子调用"两周,稳定后再切主流量。<br>
- 迁移报告产出后存档,未来回看"我们当时为什么改这个 API"很值钱。<br>
## 常见问题 FAQ<br>
**Q1: 这个 Skill 跟 deprecation-and-migration 有什么关系?必须装吗?**<br>
A: Skill 是给 AI Agent 用的"技能包",能告诉 Agent 怎么按特定规范工作。**不是必须装**——如果你的项目规模小、要求不高,不装也能用。但装上能让 Agent 输出的质量更高、更符合最佳实践,推荐装。<br>
**Q2: 这个 Skill 适合哪些 AI Agent?Cursor?Claude Code?其他?**<br>
A: deprecation-and-migration 来自 Google,主要面向支持 Skill 机制的 Agent。常见兼容 Agent 包括 Claude Code、Cursor、OpenCode、Windsurf 等。具体兼容性请查 Skill 官方文档。<br>
**Q3: 装了这个 Skill 后,会拖慢 Agent 响应吗?**<br>
A: 会的——Skill 通常会增加 prompt 长度,导致响应变慢、token 消耗增加。但质量提升明显。建议:1) 只装项目必需的 Skill;2) 用 Skill 启动/加载/卸载机制按需加载;3) 定期清理不用的 Skill。<br>
**Q4: 怎么验证 Skill 装对了?**<br>
A: 在 Agent 中输入"列出已加载的 Skill"或类似命令。如果 Skill 出现在列表里,说明装对了。然后用 Skill 跑一个相关任务,看输出是否符合 Skill 规范。<br>
**Q5: 这个 Skill 有许可证吗?能商用吗?**<br>
## 参考链接
- [仓库主页](https://github.com/addyosmani/agent-skills)<br>
- [deprecation-and-migration 目录](https://github.com/addyosmani/agent-skills/tree/main/skills/deprecation-and-migration)<br>
- [ast-grep](https://ast-grep.github.io/)<br>
- [ripgrep](https://github.com/BurntSushi/ripgrep)<br>
- [Addy Osmani 个人站](https://addyosmani.com/)<br>
- 相关 Skill:strategic-compact、tdd
deprecation-and-migration Skill 多维度简评
类别:工程方法 来源:addyosmani/agent-skills 定位:API 弃用和迁移策略——codemod、双版本期、灰度切换、文档通知。
一、核心定位与价值
deprecation-and-migration 是 addyosmani/agent-skills 项目中的技能之一。该项目由 Addy Osmani 维护,将生产级工程流程编码为 AI 编码代理可遵循的结构化工作流,在 GitHub 上拥有超过 59,000 个 Star。
从 skillsmp.com 对该 Skill 的解析来看,其核心理念是:“Deprecation is the discipline of removing code that no longer earns its keep, and migration is the process of moving users safely from the old to the new. Most engineering organizations are good at building things. Few are good at removing them.”
二、核心能力清单
| 能力 | 说明 |
|---|---|
| codemod 脚本 | 自动生成代码转换脚本(如 jscodeshift),批量迁移旧 API 调用 |
| 双版本共存期 | 规划新旧版本并行运行的时间窗口,确保平滑过渡 |
| @deprecated 标记 | 在代码中标记已弃用的 API,配合文档和编译警告 |
| 迁移指南生成 | 自动生成迁移文档,包含步骤说明和代码示例 |
| 灰度发布策略 | 制定分阶段推送方案,逐步将用户从旧版迁移至新版 |
三、工作原理
典型迁移流程
1. 弃用声明 → 在代码中添加 @deprecated 注解,发布版本说明
2. 双版本期 → 新旧 API 同时可用,给下游用户预留迁移时间
3. codemod 辅助 → 提供自动化脚本帮助用户批量替换旧 API
4. 灰度切换 → 逐步将流量从旧版切至新版,监控异常
5. 完全移除 → 在充分通知后移除旧代码
与 agent-skills 生态的关系
该 Skill 属于 agent-skills 项目中”工程化”阶段的技能,与 git-workflow-and-versioning、ci-cd-and-automation 并列。项目使用 7 个斜杠命令(/spec、/plan、/build、/test、/review、/ship)映射完整的开发生命周期。
四、安装与配置
# 方式 1:通过 npx
npx skills add addyosmani/agent-skills --skill deprecation-and-migration
# 方式 2:git clone
git clone https://github.com/addyosmani/agent-skills
五、适用场景
- 大版本升级:如 React 18 → 19、Angular 版本迁移
- API 弃用管理:公共库/框架中废弃旧 API
- 内部工具替换:从旧工具链迁移到新工具链
- 架构演进:从单体架构逐步迁移到微服务
六、注意事项
- codemod 脚本不能完全替代人工审查——复杂逻辑迁移仍需人工介入
- 双版本期需要额外维护成本,应与团队协商合理的共存时间窗口
- 本文基于官方文档和公开资料整理,未经过 MagicNetWorld 实测
参考资料
- addyosmani/agent-skills 官方仓库 — GitHub 仓库
- deprecation-and-migration 技能解析 - skillsmp.com — 技能分析网站
- addyosmani/agent-skills 深度解析 - SignalForges — 技术分析文章
- Agent Skills 开放规范 — 官方规范网站
- Anthropic Skills 文档 — Claude Code 官方文档
📊 评分与标签
评分说明
总分 8.0/10 · P_优选
📊 可观测社区指标(数据核验日期:2026-07-07)
- GitHub: addyosmani/agent-skills ★71.7k, 🔱7.8k
- 来源:GitHub 页面验证
- License: MIT, 完全开源免费
- 来源:LICENSE
- 308 commits, 55 开放 Issue, 88 开放 PR, 维护活跃
- 来源:GitHub 页面
- 竞品: obra/superpowers ★246k, 含 deprecation 相关工程方法 Skill
- 竞品: trailofbits/skills ★6k, 侧重安全领域迁移而非通用 API 弃用
📦 可安装性 2.3/2.5
- 安装方式: git clone + symlink 到 Agent 配置目录, 零依赖零配置
- 来源:官方 README
- 兼容 Claude Code、Cursor、OpenCode、Windsurf 等, 支持 npx skills add
- 来源:README 兼容性声明
- 对比 obra/superpowers: npx skills add 安装流程一致, 同属成熟生态
- 对比 trailofbits/skills: 同样 git clone, 支持多种 Agent
🎯 实用性 2.0/2.5
- 覆盖 API 弃用全生命周期: 强制/建议弃用分类、RENAME/WRAPPER/DUAL_WRITE/CANARY 四模式、僵尸代码引用扫描
- 迁移动作表含文件路径、行号、当前用法、推荐动作、影响面, 可直接用于 PR
- 来源:SKILL.md 内容审查
- 对比 obra/superpowers: 无对应的独立 deprecation Skill, 覆盖场景不重叠
- 对比 trailofbits/skills: 侧重安全审计中的依赖迁移, 不覆盖通用 API 弃用
📖 文档质量 1.5/2.0
- README 含完整定义和迁移示例, 含可粘贴命令
- 来源:项目 README
- SKILL.md 定义强制弃用清单和迁移模式代号, 含 AST/grep 扫描说明
- 来源:SKILL.md
- 对比 obra/superpowers: 官方文档含多语言 README 和详细迁移指南
- 对比 trailofbits/skills: 每个 Skill 有独立 README 和源码级注释
👥 社区活跃 1.4/1.5
- addyosmani/agent-skills ★71.7k, 308 commits, 55 Issues, 88 PR, 社区规模大
- 来源:GitHub 页面验证
- 持续维护中, 项目最后提交为 2026 年
- 来源:GitHub commit 历史
- 对比 obra/superpowers: ★246k, 社区更活跃
- 对比 trailofbits/skills: ★6k, 安全领域专业社区
🔗 兼容性 0.8/1.5
- 原生支持 Claude Code、Cursor、Gemini CLI 等, 遵循 Agent Skills 规范
- 依赖 AST 扫描工具(ast-grep/ripgrep), 非标准 Agent 环境可能需要额外配置
- 来源:SKILL.md 内容审查
- 对比 obra/superpowers: 同样依赖 npx/CLI 环境, 兼容性相似
- 对比 trailofbits/skills: 对 Rust/C 项目有最佳支持, 兼容范围更窄
评分依据可追溯至公开来源,每项分数均有明确理由和数据支撑。
🏷️ 标签说明
- 免费: MIT 开源许可证, 完全免费无付费墙。来源:LICENSE
- 设计模式: 提供 RENAME/WRAPPER/DUAL_WRITE/CANARY 四套标准化迁移模式。来源:SKILL.md 内容审查
- 编程: 核心场景为 API 迁移和僵尸代码清理, 直接辅助日常开发。来源:项目 README
- Google: Google Chrome 工程总监 Addy Osmani 出品。来源:项目 README
📋 来源与核验记录
- ✅ 已核验: addyosmani/agent-skills(页面存在,返回 200,★71.7k, 🔱7.8k, 308 commits, 55 Issues, 88 PR)
- ✅ 已核验: obra/superpowers(页面存在,★246k)
- ✅ 已核验: trailofbits/skills(页面存在,★6k)
- ❌ 死链: 无