1. 基本信息
| 项目 | 内容 |
|---|---|
| 名称 | migrate-to-shoehorn-mattpocock-skills |
| 作者/维护者 | Matt Pocock(同为其配套 npm 包 @total-typescript/shoehorn 的作者) |
| 来源链接 | https://github.com/mattpocock/skills/tree/main/skills/misc/migrate-to-shoehorn |
| 许可证 | MIT(来自 GitHub API) |
| GitHub Stars | 该技能所属合集仓库 240,925 星(GitHub API);此星数为整个 53 个技能共享的合集数据,不代表本技能个体热度 |
| Forks | 20,492(合集仓库整体,GitHub API) |
| 最新版本 | 合集仓库标签 v1.2.3(GitHub API,2026-07-13 该技能补充 Codex 元数据) |
| 安装方式 | npx skills add https://github.com/mattpocock/skills --skill migrate-to-shoehorn |
2. 功能介绍与亮点
migrate-to-shoehorn 是一份把 TypeScript 测试代码里的 as 类型断言迁移到 @total-typescript/shoehorn 工具函数的操作指南。核心能力:
- 两种迁移模式:
as Type→fromPartial()(传入部分字段仍通过类型检查),as unknown as Type→fromAny()(故意传入错误类型用于异常测试) - 完整的前后代码对比:SKILL.md 内含“大对象只关心少数字段”这类真实测试痛点的 before/after 示例,而非抽象说明
- 明确的适用边界:正文首句即声明“仅用于测试代码,绝不用于生产代码”,避免误用
- 固定四步工作流:安装依赖 → 定位
as断言(提供现成的grep命令)→ 替换为fromPartial/fromAny→ 跑类型检查验证
亮点:配套的 @total-typescript/shoehorn npm 包近 30 天下载量达 88.5 万次(npm 公开数据),MIT 许可、612 星,是一个真实活跃维护的开源工具,并非自造的小众依赖;该子技能目录下带有独立的 agents/openai.yaml 文件,是专门适配 Codex 的直接证据。
3. 适用场景
固定分类:工程效率与代码质量
适用于用 TypeScript 编写单元测试、且经常需要构造大型接口的部分/异常测试数据的开发者。典型场景:测试函数只关心入参对象的一两个字段,却因为 TypeScript 类型检查被迫伪造完整对象的全部属性;或需要故意构造类型不匹配的数据来测试错误处理分支。该技能把这类重复性重构工作自动化,适合中大型 TypeScript 代码库的日常测试维护。
4. 跨 Agent 兼容性
- Claude Code:✅ 原生支持。通过通用安装器
npx skills add一条命令安装(注:该技能不在仓库官方/plugin install mattpocock-skills插件主线清单内,需用npx skills单独获取) - Codex:✅ 原生支持。技能目录下带独立
agents/openai.yaml适配文件,为 Codex 定制运行时元数据 - OpenClaw:✅ 支持。该技能使用的
npx skills通用安装器(vercel-labs/skills)官方“Supported Agents”列表明确列出 OpenClaw(专用路径~/.openclaw/skills/) - Hermes Agent:✅ 支持。同一安装器官方列表同时列出 Hermes Agent(专用路径
~/.hermes/skills/)
5. 推荐理由
这是一份内容精准、可复制粘贴即用的 TypeScript 测试重构指南:用真实的 before/after 代码示例讲清楚一个具体痛点的解法,没有冗余内容,且配套工具是作者本人长期维护、下载量巨大的正规开源包。
6. 评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 受欢迎程度 | 8 | 所属合集仓库 240,925 星为 53 个技能共享,不代表本技能个体热度;配套 npm 包 @total-typescript/shoehorn 月下载量 88.5 万次、612 星,是被广泛实际使用的正规开源工具 |
| 可用性 | 8 | 一条命令安装配套 npm 包,文档含完整可复制代码示例;GitHub Issue 标题检索本技能相关关键词零命中,无已知功能缺陷;近 6 个月内该子目录有实质更新 |
| 安全性 | 8 | 涉及真实执行 npm install 与测试文件改写操作,非纯提示词/模板类;权限范围明确(仅安装单一测试期依赖、仅修改测试文件)、无可疑指令、License 清晰、依赖包本身活跃维护 |
安全检查清单:
① Shell 命令:会执行 npm i @total-typescript/shoehorn,权限范围明确(仅安装单一测试用 npm 包)
② 联网外发:无,纯本地文件操作
③ 凭据要求:无需 API key 或任何凭据
④ 可疑指令:SKILL.md 全文未见混淆代码或隐蔽外发指令
⑤ 作者信誉:配套 npm 包由同一作者维护,MIT 开源、612 星、月下载 88.5 万次,无造假迹象
⑥ License:MIT,明确
⑦ 最近维护:技能所属仓库 2026-08-24 仍有提交,配套 npm 包持续有下载增长
综合评分:8.0(三项均值,达标)
7. 跟同类 Skills 相比的优势
| 技能 | 定位 | 与本技能的差异 |
|---|---|---|
| tdd(同合集) | 通用测试驱动开发工作流指导(红-绿-重构循环) | 覆盖测试方法论全流程,但不涉及任何具体的类型断言重构技巧,两者可配合使用而非互相替代 |
| property-based-testing(Trail of Bits) | 基于属性的模糊测试,自动生成边界用例 | 解决“测试用例覆盖不全”的问题,与本技能解决的“手写测试数据类型体操”是完全不同的痛点 |
本技能的差异化在于:它不是通用测试方法论,而是针对 TypeScript 测试代码里一个具体、高频出现的痛点(用 as 断言伪造大对象)给出可直接套用的重构步骤,颗粒度比上述两者都更细、更可操作。
8. 用户评价
该技能目前在第三方平台尚无具名用户评价。
9. 其他补充
配套 npm 包 @total-typescript/shoehorn 由同一作者独立维护发布,与本技能形成“文档指南 + 工具实现”的配套关系;shoehorn 包本身也可脱离本技能被任何 TypeScript 项目直接使用。
10. 安装使用方式
方式一(推荐):
npx skills add https://github.com/mattpocock/skills --skill migrate-to-shoehorn
方式二:直接下载 skills/misc/migrate-to-shoehorn/SKILL.md 放入所用 agent 的 skills 目录。
安装后注意事项:无需重启;触发方式为在对话中提及“shoehorn”、要求“替换测试里的 as 断言”或“传入部分测试数据”,agent 会自动调用该技能并引导执行 npm i @total-typescript/shoehorn 安装步骤。
11. 注意事项
- 仅适用于 TypeScript 项目,且需团队认可引入
@total-typescript/shoehorn这一额外测试期依赖 - 明确不适用于生产代码,误用会绕过 TypeScript 类型检查的保护
- 该技能未被打包进仓库官方
/plugin install mattpocock-skills插件主线清单,需用通用安装器单独获取