关于 typescript-review
typescript-review 是用于审查 TypeScript 和 JavaScript 代码变更的技能。它优先检查项目编码规则,尤其阻止新增或修改代码中的显式、隐式 `any`,并检查测试、无障碍性、性能和安全等问题。
主要功能
- 01优先遵循 typescript-write 规则
- 02阻止新增显式或隐式 `any`
- 03检查差异、测试和辅助文件
- 04检查无障碍性、性能与安全
- 05评估包体积、分析事件和公开 API
适用场景
- 01审查 TypeScript 或 JavaScript 拉取请求
- 02查找违反项目编码规则的代码
- 03评估测试声明和未验证检查
- 04检查无障碍性与安全风险
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ metabase/ metabase --skill typescript-review安装后在 Claude Code 中输入/typescript-review确认已加载。
详细介绍
TypeScript/JavaScript 代码审查技能
@./../_shared/typescript-commands.md @./../_shared/react-redux-patterns.md
主要关注点
首要标准:typescript-write 技能。 请先加载它——它与 frontend/AGENTS.md 和 docs/developers-guide/frontend.md 一起,定义了本审查所执行的编写规则。
遵循 typescript-write 是审查中优先级最高的维度:任何违反其规定的问题都应排在其他所有问题之前。将其禁止使用 any 的硬性规则(新增、移动或以其他方式编辑的代码中,不得出现显式 或 隐式的 any)视为阻断项。如有可用的 TypeScript LSP 工具,请用它检查推断类型;否则依靠类型检查和 lint。
阅读完整差异和新增文件,包括测试和辅助代码。对于测试,请检查其设置、操作和断言是否验证了所声称的行为。指出违规时,请引用适用规则和文件/行号。未运行或未覆盖本次变更的检查应标记为未经验证,而不是通过。自动化检查通过并不能证明符合指南。
按以下优先级顺序审查:
- 违反
typescript-write规定的问题——禁止使用any、收紧类型、类型建模、函数签名、null/undefined 处理、命名、结构和注释。优先级最高;违反禁止使用any的规则时应阻断。结合上下文应用条件性指导:说明不受支持的类型保证或具体的可读性问题,而不是将每项偏好都当成一概禁止的规则。 - 是否符合
frontend/AGENTS.md。 - 可读性和可维护性。
- 测试覆盖是否恰当。对于内部且类型明确的调用方,不要仅因类型系统已排除的输入而要求测试。外部 API 数据、反序列化值、存储数据和 JavaScript 调用方可能违反类型注解:应在这些边界测试运行时验证和非平凡假设。类型不能替代行为、安全或数据完整性测试。
容易遗漏的方面——弥补审查盲点
这些问题在团队审查中很少出现,因此本技能应主动提出。它们属于额外关注项——应提出,但优先级低于违反 typescript-write 的问题:
- 无障碍性。 交互元素需要支持键盘操作、管理焦点并具备无障碍名称。指出缺少
aria-label/aria-labelledby、非语义化的点击目标、没有焦点陷阱的模态框、没有标签的纯图标按钮,以及未关联标签的表单输入。 - 性能。 指出扩展性差且未做记忆化的部分;传递给已记忆化子组件的内联对象/数组字面量;渐进式加载时每批数据都会触发的 effect;以及新增到高频路径中的依赖项。
- 安全性。 评估新增、移动或以其他方式编辑的代码中潜在的安全问题。
- 包体积。 指出新增的大型依赖、从图标或工具库进行默认导入,以及在路由加载时导入的重型模块。
- 分析事件。 面向用户的流程应发送跟踪事件。如果 PR 新增了流程(按钮、模态框、导航),却没有跟踪事件,请询问是否需要添加。
- 公共 API 表面(嵌入式 SDK)。使用者应能调用公共签名,并能命名需要导入的类型。应有意导出这些类型,并记录公共行为,包括为弃用的 API 添加
@deprecated;被引用的结构类型不一定需要单独命名导出。
评论
支持 Markdown