SuperAPI AI 工具集

write-api-docs

编程与开发

查看项目

更新于 10-16 07:59

技能介绍

用途:在 Remix 包中记录公开 API 时使用。目标是记录用户实际可导入的 API,而非 src/lib 中的每个辅助函数;从包导出向外工作,为公开声明添加简洁 JSDoc,并确保通过仓库的 ESLint JSDoc 规则。若记录 API 时发现 TypeScript 契约本身需要修改,应改用 typescript-expert 技能处理类型设计。

工作流:识别包的公开导出;找到支撑这些导出的 src 入口文件;追踪这些入口文件到它们从 src/lib 重新导出的声明;仅对公开声明添加或收紧 JSDoc;酌情运行包类型检查,并始终运行 pnpm run lint。

如何识别公开 API:以包的 package.json 为准。从 package.json exports 开始;每个公开导出应映射到 src/ 下的文件;这些 src/.ts 入口文件通过从 src/lib 重新导出符号来定义公开表面;src/lib 中的声明只有被某个公开 src/.ts 入口文件重新导出时才是公开的。规则:不要假设 src/lib 中所有内容都是公开的;不要仅因在 src/lib 内被导出就记录私有辅助函数;若声明无法从包导出到达,则视为内部,除非用户明确要求。

记录内容:为公开 API 添加 JSDoc 的对象包括导出的函数、类、接口、类型别名,以及作为 API 形状一部分的公开常量。对公开接口:在接口本身添加 JSDoc 块,并为接口的每个属性添加属性级 JSDoc 块,即使名称看似明显。对公开对象形状的类型别名:引入新公开对象形状时优先使用接口;若现有公开类型别名无法合理改为接口,则尽可能详尽记录对象形状。对重载:记录公开重载签名或导出声明,使可调用表面对用户清晰。

JSDoc 风格:保持注释简短、事实性、面向用户;描述 API 做什么,而非内部实现;优先一句简洁摘要,然后按需添加简短的 @param / @returns;不要在 JSDoc 标签中写 TypeScript 类型,ESLint 禁止 JSDoc 类型语法,因为 TypeScript 签名才是唯一来源;JSDoc 中的参数名必须与函数签名完全一致;非 void 函数使用 @returns 并包含真实描述;@param 需包含描述且描述前不加连字符;默认值在注释末尾用括号说明,不要使用 @default 标签;当有助于展示用例或模式时包含 @example 代码块,简单 getter、平凡构造函数或用法自明的 API 可跳过;当增加价值时用 {@link API} 链接相关 Remix API,但不要链接每个相关 API 以免噪音;其他未链接的代码引用(标识符、HTTP 方法、特殊值)使用反引号。

ESLint 期望:相关规则位于 eslint.config.js。对 packages/**/*.{ts,tsx}(排除测试),ESLint 对可调用声明强制 JSDoc,如函数声明、函数表达式、箭头函数、类声明、公开方法。强制细节包括 jsdoc/require-param、jsdoc/require-param-name、jsdoc/require-param-description、jsdoc/require-returns、jsdoc/require-returns-description、jsdoc/no-types、jsdoc/check-param-names、jsdoc/check-types、jsdoc/check-alignment。实际影响:公开函数若有参数需全部记录;若返回值需记录返回值;不要使用 JSDoc 类型注解;保持块格式整洁以满足对齐检查。

审查清单:是否从 package.json exports 开始而非从 src/lib 猜测;所有记录的声明是否确实可从公开 src/*.ts 入口文件到达;所有公开函数和方法是否在需要处有带 @param 和 @returns 的 JSDoc;公开接口和类型别名是否有简洁文档块说明其代表什么;每个公开接口的每个属性是否都有自己的属性级 JSDoc 块;是否避免记录未公开导出的内部辅助函数;pnpm run lint 是否通过。