返回顶部
t

ts-interface-miner

一个专门用于分析 TypeScript (.ts/.tsx) 文件的智能助手。它能够根据用户提供的关键词(功能描述、函数名、API 路径),精准定位相关接口定义。该技能深度解析代码结构与注释(JSDoc/单行注释),提取请求方法、路径、参数细节、响应结构及状态码,最终生成结构清晰、信息完整的 Markdown 表格文档。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.1.0
安全检测
已通过
258
下载量
0
收藏
概述
安装方式
版本历史

ts-interface-miner

# SKILL: ts-api-miner ## 1. 技能概述 (Overview) **名称**: `ts-api-miner` **描述**: 一个专门用于分析 TypeScript (`.ts`/`.tsx`) 文件的智能助手。它能够根据用户提供的关键词(功能描述、函数名、API路径),精准定位相关接口定义。该技能深度解析代码结构与注释(JSDoc/单行注释),提取请求方法、路径、参数细节、响应结构及状态码,最终生成结构清晰、信息完整的**Markdown 表格文档**。 **核心特点**: - 🎯 **多维搜索**: 支持通过功能描述、函数名称、URL 路径三种方式定位接口。 - 📝 **注释优先**: 优先提取 JSDoc (`@param`, `@returns`, `@description`) 和行内注释作为字段说明;若注释与类型定义冲突,以注释为准并标记警告。 - 🔗 **类型追踪**: 自动展开引用的 Interface/Type,递归提取嵌套类型的注释信息。 - 📊 **标准化输出**: 强制使用 Markdown 表格展示请求参数与响应信息,便于阅读和复制。 ## 2. 触发条件 (Trigger Conditions) 当用户输入满足以下任一场景时,激活此技能: 1. 用户提供了一段 TypeScript 代码片段或文件路径,并要求“查找接口”、“生成文档”或“分析 API"。 2. 用户提供了关键词(如 `"登录"`, `getUserInfo`, `/api/order`),要求寻找相关接口详情。 3. 用户询问特定功能的请求参数、响应结构或状态码。 ## 3. 工作流程 (Workflow) ### 步骤 1: 定位与上下文识别 (Locate & Context) - **扫描**: 在提供的代码上下文中搜索关键词。 - 匹配 URL 字符串 (e.g., `'/api/v1/user'`)。 - 匹配函数/常量名 (e.g., `fetchUserInfo`)。 - 匹配注释中的功能描述 (e.g., `// 获取用户详细信息`)。 - **锁定**: 确定目标函数体及其调用的 HTTP 客户端方法 (axios, fetch, request 等)。 ### 步骤 2: 深度解析与提取 (Parse & Extract) - **基础信息**: 提取 `Method` (GET/POST...), `Path`, `Source Location`。 - **请求参数提取**: - **Query/Path Params**: 从 URL 模板或配置对象中提取。 - **Body**: 识别 POST/PUT/PATCH 请求的数据载荷。 - **类型展开**: 如果参数类型是自定义 Interface (如 `LoginReq`),深入其定义提取字段列表。 - **注释融合策略 (关键)**: 1. 检查函数上方的 JSDoc `/** ... */`。 2. 检查参数旁的 `@param name - description`。 3. 检查字段定义旁的行内注释 `// ...`。 4. **规则**: 若 TS 类型为 `optional (?)` 但注释注明“必填”,则在输出中标记为 `✅ (注释强调)` 并添加警告图标 ⚠️。 - **响应信息提取**: - 分析返回类型的泛型 (e.g., `Promise<ApiResponse<T>>`)。 - 提取 `@returns` 或 `@throws` 中的状态码和错误描述。 - 若无显式状态码定义,根据 HTTP 规范推断常见状态 (200, 400, 500) 并结合注释补充说明。 ### 步骤 3: 格式化输出 (Format Output) - 将提取的数据填入预定义的 **Markdown 表格模板**。 - 附带关键代码片段以供参考。 - 若存在信息缺失(如无注释),明确标注“暂无文档说明”。 ## 4. 输出规范 (Output Schema) 所有输出必须严格遵循以下 Markdown 结构。每个匹配的接口生成一个独立板块。 ### 模板结构 ```markdown ### 🔍 接口分析:[接口功能简述] | 属性分类 | 详细信息 | | :--- | :--- | | **🏷️ 接口名称** | `[函数名/标识符]` | | **📝 功能描述** | [来自 JSDoc @description 或首行注释] | | **🔗 请求路径** | `[完整路径,动态参数用 :id 表示]` | | **⚡ 请求方法** | `[GET/POST/PUT/DELETE/PATCH]` | | **📂 源文件位置** | `[文件名]:[行号]` (若已知) | #### 📥 请求参数 (Request) | 参数位置 | 字段名 | 类型 | 必填 | 默认值 | 说明 (来自注释) | | :--- | :--- | :--- | :---: | :---: | :--- | | [Body/Query/Header/Path] | `[key]` | `[type]` | [✅/❌] | `[value]` | [详细描述,若无则填"暂无说明"] | | ... | ... | ... | ... | ... | ... | #### 📤 响应信息 (Response) | 状态码 | 含义 | 响应体结构摘要 | 说明 (来自注释) | | :---: | :--- | :--- | :--- | | **[Code]** | [Text] | `{ key: type, ... }` | [成功/失败的具体描述] | | ... | ... | ... | ... | #### 💡 关键代码片段 // [相关代码片段,包含函数定义及关键调用] ``` ## 5. 处理规则与约束 (Rules & Constraints) 1. **注释权威性**: - 必须优先展示注释中的业务含义。 - 如果代码类型是 `string` 但注释说是 "ISO8601 时间格式",说明列必须写明 "ISO8601 时间格式"。 2. **类型展开**: - 禁止直接输出 `data: CreateUserDTO` 而不解释内容。必须展开 `CreateUserDTO` 的内部字段到表格中。 - 对于泛型 (如 `List<Item>`),需简要说明 `Item` 的核心结构。 3. **不确定性处理**: - 如果无法确定请求方法(代码未显式指定),根据 URL 动词习惯推断,并在方法后标注 `(推断)`。 - 如果找不到任何注释,说明列统一填写 `⚪ 暂无文档说明`。 4. **冲突标记**: - 当代码逻辑(如可选参数 `?`)与注释描述(如“此项必填”)不一致时,在“必填”列显示 `⚠️ 冲突`,并在说明列解释差异。 5. **语言一致性**: - 输出的文档语言应与用户提问语言或代码注释主要语言保持一致(通常为中文)。 ## 6. 示例 (Examples) ### 用户输入 > **文件内容**: > ```typescript > /** > * 更新用户个人资料 > * @param userId - 用户唯一标识,必填 > * @param bio - 个人简介,可选,最大 200 字 > */ > export async function updateUserProfile(userId: string, bio?: string) { > return api.put(`/users/${userId}`, { bio }); > } > ``` > **指令**: 分析 `updateUserProfile` 接口。 ### 技能输出 ### 🔍 接口分析:更新用户个人资料 | 属性分类 | 详细信息 | |:-------------|:--------------------| | **🏷️ 接口名称** | `updateUserProfile` | | **📝 功能描述** | 更新用户个人资料 | | **🔗 请求路径** | `/users/:userId` | | **⚡ 请求方法** | `PUT` | | **📂 源文件位置** | 当前文件 | #### 📥 请求参数 (Request) | 参数位置 | 字段名 | 类型 | 必填 | 默认值 | 说明 (来自注释) | |:---------|:---------|:---------|:--:|:-----------:|:-----------------| | **Path** | `userId` | `string` | ✅ | - | 用户唯一标识,必填 | | **Body** | `bio` | `string` | ❌ | `undefined` | 个人简介,可选,最大 200 字 | #### 📤 响应信息 (Response) | 状态码 | 含义 | 响应体结构摘要 | 说明 (来自注释) | |:-------:|:----------|:-----------------------|:-----------| | **200** | OK | `{ success: boolean }` | 更新成功 (推断) | | **404** | Not Found | - | 用户不存在 (推断) | #### 💡 关键代码片段 ```typescript /** * 更新用户个人资料 * @param userId - 用户唯一标识,必填 * @param bio - 个人简介,可选,最大 200 字 */ export async function updateUserProfile(userId: string, bio?: string) { return api.put(`/users/${userId}`, {bio}); } ``` ## 7. 异常处理 (Error Handling) - **无匹配结果**: 如果未在代码中找到任何与关键词相关的接口,回复:“未在提供的代码中找到与关键词 '[关键词]' 相关的接口定义。请检查关键词拼写或提供更多上下文。” - **代码不完整**: 如果类型定义引用了外部文件但未提供,回复:“检测到类型 `[TypeName]` 引用自外部文件,无法展开详细结构。仅显示基础类型信息。”

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 ts-interface-miner-1776278241 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 ts-interface-miner-1776278241 技能

通过命令行安装

skillhub install ts-interface-miner-1776278241

下载 Zip 包

⬇ 下载 ts-interface-miner v0.1.0

文件大小: 4.29 KB | 发布时间: 2026-4-16 18:37

v0.1.0 最新 2026-4-16 18:37
Initial release of ts-interface-miner — a TypeScript interface/API analyzer and Markdown doc generator.
- Supports multi-dimensional search by feature, function name, or API path.
- Deeply parses TypeScript code and comments (JSDoc/in-line) to extract method, path, params, response, and HTTP status codes.
- Recursively expands type/interface definitions with comment merging and conflict alerts.
- Outputs all findings in a standardized, well-structured Markdown table format for easy reading and copy-paste.
- Includes error handling for missing documentation, incomplete code, or unresolved type references.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部