毕业设计技术文档生成
把"一个毕业设计题目"变成"一套能直接指导编码的技术文档",并用《全局登记表》保证跨文档不失配。
所有产物写入项目根的 docs/:流程产物用 00-共识确认单 / 00-全局登记表 / 99-交叉校验报告 / README,正式文档用 01–08。
0. 输出编号
| 编号 | 文件 | 类型 |
|---|---|---|
| 00 | 00-共识确认单.md | 流程产物(阶段 0) |
| 00 | 00-全局登记表.md | 共享事实源 |
| 01–08 | 01-… 到 08-… | 正式文档;04 带 04-init.sql,07 是 N 份任务卡 |
| 99 | 99-交叉校验报告.md | 流程产物(阶段 2) |
| — | README.md | 使用说明(阶段 3) |
| — | docs/ai/ | AI 编码套件(输出画像 = AI 编码 / 两者) |
两个 00 是同一编号段,靠文件名区分;99 和 README.md 不属于 8 份正式文档。xcheck.py 只打印结果,99 由你根据输出整理。
1. 先判断入口
| 入口 | 触发迹象 | 做法 |
|---|---|---|
| A 全流程 | 只给了题目 / 没给题目 / 说"从零开始" | 阶段 0(先确认)→ 1 → 2 |
| B 单份 | 说"再写第 X 份""重写 API 文档" | 读登记表与上游 → 只做该份 → 即时校验 |
| C 只校验 | 说"查一下文档有没有矛盾" | 跑 scripts/xcheck.py → 出报告 |
入口无法从上下文判断时,问一句再动手。不要因为走了 A 就重做已有的 B。
入口 A 同样受第 3 节闸门约束:先确认共识,再生成正式文档。
入口 B 先看 docs/00-全局登记表.md 与目标文档的上游。登记表不存在时,先按模板建骨架并让用户确认命名;上游不存在时,先补上游或明确以用户提供的材料为准,不得凭空写下游。00-共识确认单.md 不存在时必须补一页最小共识(项目理解 / 范围 / 技术路线 / 裁剪记录),不能省;不重复走入口 A 的完整开场,只有范围或技术路线变化时才需要用户重新确认。
2. 铁律
- 单一事实源:表名、字段名、枚举值、错误码、接口路径、角色名一律以
docs/00-全局登记表.md为准。冲突时先改登记表,再回改文档,不得各写一套。 - 不臆造:版本号、库的 API、政策与规范必须实查,并注明来源与日期;查不到写"待核实"。宁可留白,不许编。
- 不越界:只写该份骨架内的内容。骨架可按项目裁剪,裁剪结果写进
docs/00-共识确认单.md第 5 节;未说定的部分不增不减。 - 可判定:不写"合理""适当""视情况"。验收必须给出可执行命令或可核对数字。
- 编号与文件名固定,改名或合并一律禁止。
- 不留思考残留:输出前删除疑问句、自问自答、括号里的自我讨论。
- 进展靠文件:结论必须落盘,只存在于对话里的等于没交付。
- 产物位置固定:所有产物写入项目根
docs/,AI 编码套件在docs/ai/。只有CLAUDE.md/AGENTS.md、.env.example、Makefile的根副本例外。
3. 问答节流
入口 A 的硬闸门:在生成整套 01–08 前,没有用户对 00-共识确认单 的显式回复,不得继续。即使题目信息看似完整,也要先按第 4 节分轮提问并给出默认假设,等用户确认;模型不能自行假定确认。
入口 B 补单份、入口 C 只校验不受此闸门限制;但入口 B 若改变了范围或技术路线,仍要先确认。
- 进入阶段 1 之后,只有答案会改变结构、范围或技术选型时才再提问;否则直接采用默认值,并在该份开头写"默认假设(可推翻)",让用户一眼看到可以改什么。
- 当前运行环境无法中途等待用户回答时,只输出
00-共识确认单与问题清单并停止,不要继续写正式文档。 - 只有用户明确说"不用问,按默认写",才允许跳过闸门;把这句话记进共识确认单。
- 提问用选项式:每题 2–3 项,首项为推荐并给一句理由,允许回答"你决定"。
- 用户连续两次只回"继续",视为接受默认,不再逐题确认。
- 在
00-共识确认单已给出之后,用户回复"继续/按默认"视为确认;在此之前不算。
4. 阶段 0:接收
读用户提供的一切:题目、已有资料、学校表格(任务书 / 开题报告 / 选题申请表)。学校表格的进度表与工作量要求是最高权威,工期以它为准。
4.1 开场:先介绍,再要题目
入口 A 且用户还没有给出题目时,第一轮只做三件事:
- 用 2–3 句说明技能产出:8 份文档、全局登记表、交叉校验脚本。不要罗列全部目录,不要宣传。
- 只问一个问题:你的毕业设计题目是什么?有学校任务书或开题报告就直接贴过来。
- 停下等回答。不要同时问技术栈、功能规模或前后端形态。
参考开场(按用户语境改写,不要逐字照读):
这个技能会把你的毕业设计题目整理成 8 份能直接指导编码的技术文档,包括需求、技术栈、架构、数据库、API、通用规范、模块提示词和环境配置,并用一份全局登记表和校验脚本保证前后不打架。先告诉我:你的毕业设计题目是什么?有任务书或开题报告的话,直接贴过来。
用户已经给出题目时,用一句话复述确认,跳过 4.1,直接进入 4.2。用户直接贴了任务书或开题报告时,先从材料里提取,只问材料里没有、且会改变结构或选型的问题。
4.2 分轮问答
按顺序做:
- 复述对题目的理解(一段话,不吹捧)。
- 分轮提问,一次 1–3 题,拿到回答再问下一组;题目之外的关键问题总数 ≤5。第一组覆盖输出画像(AI 编码 / 论文答辩 / 两者)、技术栈倾向与功能规模;第二组覆盖前后端形态、AI 编码工具、是否要前端、已有参考、最想攻克的技术点。用户说"你决定"就采用默认值,不要重复问。
- 产出
docs/00-共识确认单.md(规范references/doc-00-consensus.md,模板assets/templates/consensus-confirmation.md):项目理解、输出画像(AI 编码 / 论文答辩 / 两者)、范围与工期匹配(明确做与明确不做)、技术路线(首选+备选+代价)、文档清单(按编号,模块提示词标 N 份;00-全局登记表、99、README 为流程产物)、骨架裁剪记录、待确认点。 - 用户确认后,按
assets/templates/registry.md建立docs/00-全局登记表.md骨架(维护规则见references/registry.md),再进阶段 1。
只有题目也能开工,但只能做到 00-共识确认单 与问题清单;缺的字段当"待定",靠提问补齐,不要索要填空。用户确认后才进入阶段 1。
5. 阶段 1:逐份生成
一次只做一份。每份走六步:
0. 标注「本份依据:{上游文件}」与「读者:导师 / 操作者 / 编码 AI」
1. 判断有无真分歧 → 有则提问,无则直接写默认假设
2. 生成前先给「输出骨架 + 1 条样例条目」作为格式锚点
3. 生成
4. 即时校验(第 6 节)
5. 更新《全局登记表》:三处同步 + 本轮新增术语
6. 交付摘要三行:本份产出 / 关键决策 / 未决项
只读当前这份对应的 reference,不要预读其余七份——它们会在生成过程中污染本份口径。
| 编号 | 文件名 | 生成规范 | 读者 |
|---|---|---|---|
| 01 | 01-需求文档.md | references/doc-01-prd.md | 导师 / 自己 |
| 02 | 02-技术栈版本清单.md | references/doc-02-stack.md | 自己 / 编码 AI |
| 03 | 03-项目架构设计.md | references/doc-03-arch.md | 编码 AI |
| 04 | 04-数据设计.md + 04-init.sql | references/doc-04-data.md | 编码 AI |
| 05 | 05-API接口文档.md | references/doc-05-api.md | 编码 AI / 前端 |
| 06 | 06-通用规范.md | references/doc-06-conventions.md | 编码 AI |
| 07 | 07-模块提示词/07-0X-{模块}.md(N 份) | references/doc-07-modules.md | 编码 AI |
| 08 | 08-环境配置说明.md | references/doc-08-env.md | 操作者 |
模块任务卡直接复制 assets/templates/task-card.md 改写,不要每次重新设计版式。
5.1 文档依赖矩阵
| 文档 | 直接上游 | 下游消费者 | |---|---|---| | 01 需求 | 学校表格 / 题目 | 02 03 04 05 07 | | 02 技术栈 | 01 | 03 06 08 | | 03 架构 | 01 02 | 04 05 06 07 08 | | 04 数据 | 01 03 | 05 06 07 08 | | 05 API | 01 03 04 | 06 07 08 | | 06 通用规范 | 03 04 05 | 07 08 | | 07 模块提示词 | 03 04 05 06 | — | | 08 环境 | 02 04 | — |
入口 B 只读目标文档的上游列;阶段 2 的覆盖链也按这张表核对。生成任何一份前先确认它的上游存在;上游缺失时先补上游,或在共识单里记为裁剪并说明依据。下游文档不得凭空生成。
5.2 模块批次
07 按 03 的依赖图排序:被依赖的模块先做。每批次内每份仍单独交付、单独校验,不要一次投喂全部模块。
5.3 会话恢复
跨会话续做时,先读登记表的「文档清单与状态」「变更记录」,取第一个未完成项继续,不要凭记忆判断进度。若文件实际状态与登记表不一致,先修登记表,再写下一步。
5.4 资产速查
| 资产 | 用途 |
|---|---|
| assets/templates/consensus-confirmation.md | 00 共识确认单 |
| assets/templates/registry.md | 00 全局登记表 |
| assets/templates/task-card.md | 07 模块任务卡(含"覆盖接口:"行) |
| assets/templates/usage-readme.md | docs/README.md |
| scripts/xcheck.py | 交叉校验 |
| scripts/regression.py | 改 skill 后的自测回归(开发期) |
| scripts/package_skill.py | 发布包校验与打包(开发期;最小发布包不包含) |
| assets/fixture/ | 回归样例(仅开发仓库;最小发布包不包含) |
| references/ai-coding-kit.md | AI 编码套件规范(docs/ai/) |
| assets/templates/ai-entry.md 等 | AI 套件模板:入口、清单、OpenAPI、错误码、种子、环境、验收、前端 |
5.5 AI 编码套件(输出画像 = AI 编码 或 两者)
在 04/05/06/07 稳定后生成 docs/ai/,规范见 references/ai-coding-kit.md:
| 文件 | 来源 | 用途 |
|---|---|---|
| AI-CODING.md | 03/04/05/06/07/08 | AI 入口;复制到项目根 CLAUDE.md 或 AGENTS.md |
| project.yaml | 03/07/08 | 栈、命令、模块、文件所有权、依赖 |
| openapi.yaml | 05 | 机器可读接口契约 |
| errors.py | 06 | 错误码枚举 |
| seed.sql | 04 | 演示/测试数据 |
| env.example | 08 | 环境变量;复制为根 .env.example |
| Makefile | 08 | install / dev / test / lint / xcheck |
| acceptance/07-0X-*.yaml | 07 | 每模块验收用例 |
| tests/acceptance/test_*.py | 07 | 可直接运行的 pytest |
| frontend-spec.md | 03/05/07 | 有前端时的页面/组件/API client/UI 验收 |
规则:
docs/ai/不属于 8 份正式文档,不要把它算进“8 份”。- 套件里的路径、字段、错误码必须与 00/04/05/06/07 完全一致;不一致时先改契约。
- 每个模块至少一份 acceptance;正常、权限、状态、边界四类都要有。
- 契约没稳定前不要生成套件,否则会把错误固化进去。
6. 即时校验(每份交付前必做)
对照上游只问三件事:
- 本份出现的每个命名,是否已在登记表且写法一致?
- 本份是否与任一上游文档矛盾(功能、字段、接口、版本)?
- 本份是否覆盖了它承接的上游条目,有没有漏项?
发现冲突就停下来:说明冲突点,给两个修正方案(改上游 / 改本份),等用户选择后再继续。不要自行二选一并顺手改掉别的文档。
改本 skill 本身之后,先跑 python scripts/regression.py(正向样例 + 全部反向变体,自动判定),确认改动没有破坏校验流程,再用于真实项目。
7. 登记表
模板 assets/templates/registry.md,结构与维护规则见 references/registry.md。三条硬性要求:三处同步(文件头、文档清单状态表、变更记录)、新增命名先登记后引用、被否掉的选型进"已否决项"表并在相关文档回指。文件头的"当前版本"或"版本"必须与变更记录中版本号最大的一行一致。
8. 阶段 2:交叉校验
执行 python scripts/xcheck.py <docs 目录>,把机器比对结果和人工判断一起写进 docs/99-交叉校验报告.md。报告结构见 references/crosscheck.md。
机器能查的一律不靠人眼:表名双向、表.字段、错误码三处一致、接口路径一致、数量描述加总自洽、枚举值与登记表一致、正文表名反查、接口编号是否都被任务卡认领、登记表版本与变更记录一致。发现问题先问用户,再修正。 脚本标 SKIP 的项照抄进报告,不许改写成通过。
文档完整性用 python scripts/xcheck.py <docs 目录> --require-all(入口 A):缺 01–08、04-init.sql 或 07 卡片即报;入口 B/C 不加该参数,报告里列出缺失/裁剪。
AI 编码画像还要检查 docs/ai/:OpenAPI 路径与 05 一致、errors.py 与 06 一致、project.yaml 模块与 07 卡片一致、每个模块有 acceptance 文件。xcheck.py 第 12 项会做这些检查。
9. 阶段 3:交付
- 使用说明写入
docs/README.md,模板见assets/templates/usage-readme.md,必须写实四类内容:阅读顺序(逐条说明为什么先读)、每份文档用途(文件名 → 回答什么问题 → 何时必读)、冲突仲裁规则、可直接复制的指令模板。模板的 8 节已覆盖这四类,可按项目合并,不可缺项。 - AI 编码画像:把
docs/ai/AI-CODING.md复制为项目根CLAUDE.md或AGENTS.md;docs/ai/env.example复制为.env.example;docs/ai/Makefile复制到项目根。 - "遗留问题"写三类:未验证项、有意偏离及理由、只能到编码期才能确认的事项。
- 不复述交叉校验报告的问题清单。
10. 不要做的事
- 一口气生成多份文档。
- 把校验结论、进度、决策只写在对话里。
- 自造未登记的字段、错误码、接口路径、角色名。
- 选"最新版"却不核对运行环境兼容性与维护状态。
- 把"待核实"悄悄改写成确定值。
- 在单份任务里顺手重构别的文档。
- 不要在未获共识确认前生成正式文档。
- 不要把
assets/fixture/的示例项目当成用户的项目。 - 不要在 04/05/06/07 未稳定时生成
docs/ai/。 - 不要让
docs/ai/与登记表各写一套契约。
微信扫一扫