跳转到正文
报告库
用途分类 / 数据分析

Migrate To Shoehorn Skill 安全审计

作者说它能做什么(原文)

Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.

第三方安全检查结论

发现安全风险

已检查文件
2
发现的风险
2
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。未发现风险
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 2 项风险
中风险

仅供测试的包会按默认方式安装为常规依赖

原文依据:4 处
发现了什么

说明称 shoehorn 只能用于测试,但安装命令是 `npm i @total-typescript/shoehorn`,没有使用开发依赖标志。npm 的常规行为会把它记录为生产依赖,并修改依赖清单和锁文件。

为什么需要注意

项目可能把仅测试使用的包纳入生产安装或部署依赖,扩大依赖面并增加构建、审计和维护负担。

该技能明确规定 shoehorn 只能用于测试,却两次要求使用不带开发依赖标志的 `npm i`。在 npm 的通常配置下,这会把测试工具加入常规 dependencies,并改动项目的依赖清单和锁文件;安装步骤实际执行时才会产生影响。用户可要求作者改为开发依赖安装,并在执行前确认将修改哪些文件。

SKILL.md:12来自说明文档打开原文件
**Test code only.** Never use shoehorn in production code.
查看另外 3 个位置
SKILL.md:20来自说明文档打开原文件
## Install```bashnpm i @total-typescript/shoehorn```
SKILL.md:112来自说明文档打开原文件
2. **Install and migrate**:   - [ ] Install: `npm i @total-typescript/shoehorn`   - [ ] Find test files with `as` assertions: `grep -r " as [A-Z]" --include="*.test.ts" --include="*.spec.ts"`   - [ ] Replace `as Type` with `fromPartial()`
SKILL.md:22来自说明文档打开原文件
```bashnpm i @total-typescript/shoehorn```
中风险

批量替换规则可能放宽不应放宽的测试数据,并且未要求运行测试

原文依据:3 处
发现了什么

工作流先用文本模式查找断言,随后笼统要求把 `as Type` 和双重断言全部替换成允许部分或任意数据的函数。最终验证仅要求类型检查,没有要求运行受影响的测试。

为什么需要注意

如果匹配到并非部分夹具或错误路径测试的断言,迁移后可能不再强制完整、正确的测试数据;类型检查仍可通过,而运行时行为或测试有效性可能改变。

搜索范围限于测试文件,这是合理边界;但后续规则笼统要求替换匹配到的两类断言,没有要求逐处确认断言用途。`fromPartial()`允许不完整数据,`fromAny()`允许故意错误的数据,因此误分类可能削弱测试夹具的静态检查。工作流最后只要求类型检查,未明确运行受影响测试。用户可要求逐项审查替换并同时运行相关测试。

SKILL.md:101来自说明文档打开原文件
| --------------- | -------------------------------------------------- || `fromPartial()` | Pass partial data that still type-checks           || `fromAny()`     | Pass intentionally wrong data (keeps autocomplete) || `fromExact()`   | Force full object (swap with fromPartial later)    |
查看另外 2 个位置
SKILL.md:114来自说明文档打开原文件
   - [ ] Install: `npm i @total-typescript/shoehorn`   - [ ] Find test files with `as` assertions: `grep -r " as [A-Z]" --include="*.test.ts" --include="*.spec.ts"`   - [ ] Replace `as Type` with `fromPartial()`   - [ ] Replace `as unknown as Type` with `fromAny()`   - [ ] Add imports from `@total-typescript/shoehorn`   - [ ] Run type check to verify
SKILL.md:99来自说明文档打开原文件
| Function        | Use case                                           || --------------- | -------------------------------------------------- || `fromPartial()` | Pass partial data that still type-checks           || `fromAny()`     | Pass intentionally wrong data (keeps autocomplete) || `fromExact()`   | Force full object (swap with fromPartial later)    |
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

5 个说明模块

该 Skill 声称仅用于测试代码,并明确禁止在生产代码中使用 shoehorn。

查看原文
SKILL.md:10来自说明文档打开原文件
`shoehorn` lets you pass partial data in tests while keeping TypeScript happy. It replaces `as` assertions with type-safe alternatives.**Test code only.** Never use shoehorn in production code.

工作流会搜索测试文件中的类型断言,将普通断言改为 `fromPartial()`,将双重断言改为 `fromAny()`,然后添加导入。

查看原文
SKILL.md:114来自说明文档打开原文件
   - [ ] Install: `npm i @total-typescript/shoehorn`   - [ ] Find test files with `as` assertions: `grep -r " as [A-Z]" --include="*.test.ts" --include="*.spec.ts"`   - [ ] Replace `as Type` with `fromPartial()`   - [ ] Replace `as unknown as Type` with `fromAny()`   - [ ] Add imports from `@total-typescript/shoehorn`   - [ ] Run type check to verify

`fromAny()` 被指定用于故意传入错误类型的数据,因此它有意绕过正常的测试数据类型约束。

查看原文
SKILL.md:99来自说明文档打开原文件
| Function        | Use case                                           || --------------- | -------------------------------------------------- || `fromPartial()` | Pass partial data that still type-checks           || `fromAny()`     | Pass intentionally wrong data (keeps autocomplete) || `fromExact()`   | Force full object (swap with fromPartial later)    |
从这里开始 · 工作说明SKILL.md
migrate-to-shoehorn
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。
文件与检查记录2 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文
  • agents/openai.yaml已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明
  • agents/openai.yaml配套文件

代码和说明中提到的操作

运行命令
SKILL.md:22来自说明文档打开原文件
```bashnpm i @total-typescript/shoehorn
读取了多少行
123
文件校验值(用于核对版本)
c5035b69dd4239efae28019447363b4772b0feb8c703b10ba9ee7b4def8c96a2