TECH_DOC 生成 Skill(全局)
目标:让读者在不翻代码的情况下理解“项目做什么、如何使用、核心流程、外部依赖(接口/DB/文件)、CI/CD 接入方式与边界”。
适用范围
- 适用于为任意仓库生成/更新
TECH_DOC.md(尤其是 Node.js/TypeScript CLI 工具仓库)。 - 默认输出中文;如用户指定则输出英文。
输入要求(尽量少问)
优先从仓库自洽推导;仅在信息缺失且无法推断时再询问用户:
- 仓库根目录(默认当前工作区)
- 目标读者(默认研发)
- 是否需要覆盖:服务端接口 / 数据库 / CI/CD / 宿主项目接入(默认都覆盖;缺失则标注“未实现/可选/由调用方提供”)
工作流程(必须遵循)
- 扫描仓库结构(最多 3 层)
- 找到入口文件(CLI entry)、核心模块、配置文件与文档(如 README)。
- 读取关键信息源
package.json:name/version/bin/scripts/dependencies/enginesREADME.md(如存在)tsconfig.json(如存在)src/(或等价目录)的入口文件与核心模块(按调用链路补齐)
- 抽取“可执行信息”
- CLI:命令名、参数列表、必填项、默认值、示例命令
- 配置:环境变量、配置文件字段与优先级
- 核心流程:从入口到核心逻辑的 3-7 步链路
- 外部依赖:HTTP 接口、数据库、文件输入输出、Git 信息等
- 生成/更新
TECH_DOC.md
- 章节编号使用中文序号(“一、二、三 …”),风格统一。
- 代码片段只截取关键段落,避免整文件大段粘贴。
- 示例必须可复制(命令/JSON/YAML/HTTP),敏感信息用占位符。
输出结构(TECH_DOC.md 固定模板)
严格按下述结构输出;若某块在仓库不存在,保留标题并写明“未实现/可选/由调用方提供”。
文档标题与简介
- 一级标题:
# 📦 <project-name> <一句话定位> - 简介两行内:明确“做什么/不做什么”,强调边界(例如:不负责构建,只负责读取产物并上传)
一、项目结构
- tree(最多 3 层)
- 关键文件职责说明(入口/核心流程/HTTP/DB/文件/类型等)
二、package.json
- 罗列关键字段并解释用途(bin、scripts、依赖、Node 版本等)
三、核心代码
按“从入口到核心逻辑”的顺序组织(建议 3-6 小节):
- 入口:参数解析与校验、help、错误退出策略
- 类型:核心入参/出参/配置结构
- 主流程:版本获取、产物定位、md5/size、Git 信息、上传、落库(如有)
- 模块边界:HTTP/DB/file 等职责清晰
- 失败场景:参数缺失、文件不存在、上传失败、DB 失败(是否允许跳过/重试)
四、使用方式(宿主项目接入)
- 安装(npm/yarn/pnpm)
- scripts 推荐写法
- 产物准备方式(若工具不负责构建,要明确由谁构建、产物放哪)
- 最小可用命令(按平台/环境给 2-4 条)
五、CI/CD 示例
- 给出仓库当前最贴近的 CI 示例(如 GitHub Actions)
- 说明 secrets/env 注入方式,严禁泄露真实值
- 说明构建与上传顺序,必要时给出重试/失败处理建议
六、目录结构参考
- 给出宿主项目推荐目录结构(bundle 与 assets)
- 明确默认路径与可覆盖方式(如
--bundle-path)
七、服务端接口
- 上传接口:method/path/content-type
- 参数与含义(platform/env/version/md5/fileSize 等)
- 响应体示例与关键字段说明
收尾说明
- 用 1-2 句总结工具边界与版本定位(例如:已移除构建逻辑,只负责读取 bundle 并上传)
写作规范(强约束)
- 不杜撅:仓库未出现的脚本/接口/文件,不写成“已存在”,只能写“建议/可选”
- 不泄露:token、密码、私钥一律用占位符;不要在日志/示例里输出敏感信息
- 可维护:章节结构固定;关键名词可搜索(参数名/环境变量/接口路径必须原样出现)
- 可复制:示例可直接复制粘贴运行(占位符清晰)
可直接复用的提示词(Copy-Paste)
你是技术文档专家。请在仓库根目录生成或更新 TECH_DOC.md,要求:
- 先扫描项目结构并读取关键文件(package.json、README、tsconfig、src 入口与核心模块)。
- 严格按以下章节输出:简介、 一、项目结构 二、package.json 三、核心代码 四、使用方式 五、CI/CD 示例 六、目录结构参考 七、服务端接口、收尾说明。
- 不杜撰仓库不存在的内容;缺失处写“未实现/可选/由调用方提供”。
- 所有示例(命令/JSON/YAML/HTTP)可复制,敏感信息用占位符。