核心原则
- 只填内容,不改结构:文档的章节标题必须严格来自模板,禁止新增、合并、拆分、重命名任何标题
- 上下文驱动:从用户提供的 UI 图片、API 文档、需求描述等上下文中提取信息填入模板,不编造内容
- 默认功能模板:未明确指定模板类型时,使用「前端功能技术文档模板」
- 缺失即留空:上下文中没有的信息不推测、不补全,保留占位符或留空
- 精简聚焦:文档只记录关键决策、页面状态流转和业务规则,不罗列代码细节。代码是最终真相,文档解释"为什么这样设计"和"状态怎么流转"
- 技术文档视角:学习小结说明概念、职责、流程、接口和边界,不按现有代码逐行翻译或机械罗列目录。
触发条件
- 用户要求编写前端技术方案、实现方案、开发文档
- 用户要求编写技术难点方案、架构设计、重构方案
- 用户要求编写项目 README、项目说明文档
- 用户提供了需求描述、UI 截图、API 文档并要求整理成文档
- 用户要求补全或完善已有的技术文档
- 用户要求生成学习笔记、学习小结或技术知识总结
- 用户明确调用
/writing-doc命令 - 用户说 "sync docs" / "同步文档" → 触发「页面功能总结模板」
不适用
- 纯组件 API 文档(props/events 说明)→ 直接写组件目录下的 index.md
- 会议纪要、非技术文案
- 已有完整文档只需微小修改(直接改对应段落)
sync docs 流程
当 sync docs 触发时,执行以下流程:
- 读取待同步列表:读取
docs/pages/.doc-sync-commits,获取所有待同步的 commit hash - 逐个获取 diff:对每个 hash 执行
git show --stat <hash>和git show <hash>获取变更信息 - 匹配受影响文档:根据变更文件路径,判断
docs/design/和docs/prod/中哪些文档需要更新:src/pages/<page>/**→docs/design/<对应设计文档>和docs/prod/<对应生产文档>src/components/**→ 引用该组件的页面对应的文档src/services/**→ 相关功能模块的文档src/constants/**→ 相关业务领域的文档src/types/**→ 相关全局类型的文档
- 编写文档:使用「页面功能总结模板」更新受影响文档
- 列出变更方案:向用户展示本次变更影响哪些文档、建议如何更新
- 等待确认后执行:用户确认后逐个更新文档
- 清空 hash 列表:所有文档同步完成后,将
docs/pages/.doc-sync-commits恢复为空(仅保留注释头)
若 hash 已被垃圾回收,对应的 hash 行跳过并标注 "hash not found",警告用户该 commit 可能已被 rebase 或清理。
模板选择
| 场景 | 模板文件 | 触发关键词 | 输出路径 |
|---|---|---|---|
| 单个功能模块的技术方案(默认) | references/前端功能技术文档模板.md |
技术方案、实现方案、开发文档、功能文档 | docs/design/{模块名}/ |
| 通用技术方案(技术难点导向) | references/前端通用技术方案文档模板.md |
技术难点、方案选型、架构设计、重构方案 | docs/technology/ |
| 整个项目的技术文档 | references/前端项目技术文档模板.md |
项目文档、项目级、整体方案 | 项目根目录 docs/ |
| 页面功能总结(开发完成后持续维护) | references/页面功能总结模板.md |
页面总结、sync docs、同步文档 | docs/pages/{page-path}/index.md |
| 学习小结 | references/学习小结模版.md |
学习笔记、学习小结、知识总结 | 用户指定的 Markdown 文件 |
| 项目 README(面向使用者) | references/前端README文档模板.md |
README、项目说明、快速开始 | 项目根目录 README.md |
| 项目 AGENTS.md(AI 协作规则) | references/agent/agent.md(拼装指引) |
AGENTS.md、AI 协作规则、agent 规范 | 项目根目录 AGENTS.md |
模板选择逻辑
- 用户说 sync docs / 同步文档 → 强制使用「页面功能总结模板」
- 用户提到 方案选型、候选方案对比、技术难点 → 使用「通用技术方案模板」
- 用户要写 README、项目说明、快速开始 → 使用「README 模板」
- 用户要写 项目级文档、整体方案 → 使用「项目技术文档模板」
- 用户要写 学习笔记、学习小结、知识总结 → 使用「学习小结模板」
- 用户要生成 AGENTS.md / AI 协作规则 / agent 规范 → 使用「AGENTS.md 拼装指引」
- 其余情况(需求驱动的功能文档)→ 默认使用「功能技术文档模板」
学习小结规则
学习小结严格使用 references/学习小结模版.md,保留以下四个固定章节:
- 概念
- 使用场景
- API 说明
- 示例
标题层级以文档主题标题为基准:用户指定起始级别时,以用户指定级别为准;未指定时,主题标题使用二级标题。其他标题按层级逐级下移一级:固定章节和自定义章节使用主题标题的下一级,API、示例等子标题再下移一级。
在固定章节之后,可按主题需要增加 0~3 个与主题直接相关的自定义章节,不得为了凑结构强行添加。不默认添加“设计与验证”章节。
学习小结必须从技术文档视角组织内容:
- 解释能力边界、组件职责、输入输出、流程和约束
- 示例用于说明通用用法,不逐行复述用户现有代码
- 不根据代码文件数量、目录结构或变量名称扩展章节
- 除模板允许的标题外,不新增其他级别标题;保留主题标题、章节标题和子标题之间的层级关系
- 上下文不足时保留
{xxx}占位符,不虚构实现细节
AGENTS.md 生成流程
当用户要求生成 AGENTS.md 时,执行以下流程:
- 读取拼装指引:读取
references/agent/agent.md,获取技术栈识别矩阵和拼接顺序 - 检测技术栈:读取目标项目的
package.json,按矩阵检测依赖,确定所需模块清单 - 分三大章节拼接:
# 一、AI 行为规则→ 读取ai-behavior/目录下的模块# 二、项目编写规范→ 读取coding-standards/目录下的模块# 三、项目测试规范→ 读取testing-standards/目录下的模块
- 按序拼接:每个模块文件前追加
##二级标题,模块内容直接拼接 - 输出 AGENTS.md:写入项目根目录
AGENTS.md
模块文件之间零交叉引用,
cat即可直接拼接。每个模块文件自带一个##级标题作为章节入口。
流程
- 读取模板:根据场景读取对应的模板文件,提取全部章节标题作为允许清单
- 收集上下文:从用户消息中识别所有可用信息源(UI 图片、API 文档、需求文本、现有代码)
- 信息映射:将上下文信息对号入座到模板的对应章节中
- 生成文档:按模板结构输出完整文档,只填充有据可查的内容
- 标注来源:对每个关键决策或数据,标注信息来源(如「来自 API 文档」「来自 UI 截图」)
章节标题允许清单
不在此处硬编码。 每次执行时从选中的模板文件动态提取各级标题作为允许清单,严格按模板中的顺序和层级,禁止增删改。
模板中用
{占位符}标记的位置是可替换内容,不是标题。子章节(### / #### 级别)同样必须来自模板,不得新增。
红线
- 禁止新增任何级别的标题:无论 ## / ### / ####,只允许使用模板中已有的标题。即使你觉得「加个新小节更清晰」,也不允许
- 禁止合并相邻章节:例如不允许把「风险评估与应对」和「工作量评估」合并为「风险与工作量」
- 禁止拆分已有章节:例如不允许把「需求概述」拆成「业务需求」和「技术需求」
- 禁止重命名标题:即使只是措辞微调(如「非功能性需求」改成「非功能需求」),也不允许
- 禁止为了凑内容而虚构:没有上下文支撑的章节保留模板原始占位符
常见借口与反击
| 借口 | 反击 |
|---|---|
| "这个需求比较特殊,需要额外的章节" | 在已有章节内用段落和列表表达特殊性,不要新增标题 |
| "模板缺少 XX 章节,加上更完整" | 模板的完整性由模板维护者负责,本次执行只填内容不改结构 |
| "我合并了两个章节,内容更紧凑" | 合并标题就是改结构,保持原样分别填写 |
| "我只是微调了标题措辞,意思一样" | 逐字一致才是遵守,微调也是违规 |
| "这个章节内容太少,可以合并" | 内容少就留少,不能因此改结构 |
信息映射规则
| 上下文来源 | 映射目标章节 |
|---|---|
| 需求描述文本 | 需求概述 → 背景 / 需求和任务 |
| UI 截图 / Figma | 核心功能模块 → 页面架构 / 交互规则 / 字段说明 |
| API 文档(swagger 等) | 接口与数据定义 → API 接口规划 / 字段说明 / Mock 数据模板 |
| 现有代码结构 | 架构设计 → 目录结构 |
| 业务流程说明 | 核心功能模块 → 流程图和数据流 |
| 技术约束说明 | 非功能性需求 / 核心技术设计 |
| 已知风险 | 风险评估与应对 |
| 技术痛点 / 现有实现问题 | 方案概述 → 背景与问题 |
| 候选方案对比 / 选型结论 | 方案选型 |
项目 package.json / 现有目录结构 |
项目概述 → 技术栈、快速启动、目录结构 |
输出规范
- 文件格式:Markdown
- 语言:中文
- 代码块标注语言类型(tsx / less / typescript 等)
- 表格对齐,不留多余空行
- 占位符
{xxx}在有信息时替换为实际内容,无信息时保留原样 - ASCII 页面布局图用等宽字符绘制,标注区域名称
- 流程图用文字箭头链或 Mermaid 语法
文件路径规范
- 页面文档路径必须镜像
src/pages/的目录结构:src/pages/<page-path>/index.tsx→docs/pages/<page-path>/index.md - 例:
src/pages/event-rectification/detail/index.tsx→docs/pages/event-rectification/detail/index.md - 例:
src/pages/home/index.tsx→docs/pages/home/index.md