mcpField
T
typescript-review

typescript-review

github.com/metabase测试与质量49.9k2.3k 次安装今天更新
代码仓库

关于 typescript-review

typescript-review 是用于审查 TypeScript 和 JavaScript 代码变更的技能。它优先检查项目编码规则,尤其阻止新增或修改代码中的显式、隐式 `any`,并检查测试、无障碍性、性能和安全等问题。

主要功能

  1. 01优先遵循 typescript-write 规则
  2. 02阻止新增显式或隐式 `any`
  3. 03检查差异、测试和辅助文件
  4. 04检查无障碍性、性能与安全
  5. 05评估包体积、分析事件和公开 API

适用场景

  1. 01审查 TypeScript 或 JavaScript 拉取请求
  2. 02查找违反项目编码规则的代码
  3. 03评估测试声明和未验证检查
  4. 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。

阅读完整差异和新增文件,包括测试和辅助代码。对于测试,请检查其设置、操作和断言是否验证了所声称的行为。指出违规时,请引用适用规则和文件/行号。未运行或未覆盖本次变更的检查应标记为未经验证,而不是通过。自动化检查通过并不能证明符合指南。

按以下优先级顺序审查:

  1. 违反 typescript-write 规定的问题——禁止使用 any、收紧类型、类型建模、函数签名、null/undefined 处理、命名、结构和注释。优先级最高;违反禁止使用 any 的规则时应阻断。结合上下文应用条件性指导:说明不受支持的类型保证或具体的可读性问题,而不是将每项偏好都当成一概禁止的规则。
  2. 是否符合 frontend/AGENTS.md。
  3. 可读性和可维护性。
  4. 测试覆盖是否恰当。对于内部且类型明确的调用方,不要仅因类型系统已排除的输入而要求测试。外部 API 数据、反序列化值、存储数据和 JavaScript 调用方可能违反类型注解:应在这些边界测试运行时验证和非平凡假设。类型不能替代行为、安全或数据完整性测试。

容易遗漏的方面——弥补审查盲点

这些问题在团队审查中很少出现,因此本技能应主动提出。它们属于额外关注项——应提出,但优先级低于违反 typescript-write 的问题:

  • 无障碍性。 交互元素需要支持键盘操作、管理焦点并具备无障碍名称。指出缺少 aria-label/aria-labelledby、非语义化的点击目标、没有焦点陷阱的模态框、没有标签的纯图标按钮,以及未关联标签的表单输入。
  • 性能。 指出扩展性差且未做记忆化的部分;传递给已记忆化子组件的内联对象/数组字面量;渐进式加载时每批数据都会触发的 effect;以及新增到高频路径中的依赖项。
  • 安全性。 评估新增、移动或以其他方式编辑的代码中潜在的安全问题。
  • 包体积。 指出新增的大型依赖、从图标或工具库进行默认导入,以及在路由加载时导入的重型模块。
  • 分析事件。 面向用户的流程应发送跟踪事件。如果 PR 新增了流程(按钮、模态框、导航),却没有跟踪事件,请询问是否需要添加。
  • 公共 API 表面(嵌入式 SDK)。使用者应能调用公共签名,并能命名需要导入的类型。应有意导出这些类型,并记录公共行为,包括为弃用的 API 添加 @deprecated;被引用的结构类型不一定需要单独命名导出。

评论

支持 Markdown