CC端到端开发skill:强调项目知识库的同步更新

前言:这篇文章介绍 fully-coding 如何处理项目知识库。重点不是“生成更多文档”,而是让代码实现、服务设计、错误码、功能实现概览和菜单迭代文档保持一致。

本博文对应的代码仓库见:(Github)[https://github.com/seedily/claude-coding-skills]

背景

很多项目的技术文档会慢慢失效。原因通常不是没人写文档,而是代码变更和文档变更没有绑定。

常见问题包括:

  • 新增接口后服务设计文档没更新。
  • 新增错误码后错误码文档没登记。
  • 功能实现文档越建越多,最后没人知道哪个是最新的。
  • 后台菜单、路由、权限入口变了,但菜单迭代表没有同步。
  • 开发方案和最终代码出现偏差,文档仍停留在方案阶段。

fully-coding 把知识库同步放进 Step 8,并在 Step 9 做一致性自检。这样文档不是开发完成后的可选动作,而是交付流程的一部分。

这体现的是 SDD(Specification-Driven Development,规范驱动开发)的思想:规范是第一性产物,代码只是其中一个落地结果。需求、设计、错误码、接口、菜单入口和测试结论都需要以规范化文档存在,后续自动化流程才能稳定读取、判断和继续推进。

project-config.md 统一配置知识库

fully-coding 不把知识库路径写死,而是集中在 project-config.md 中配置。

关键配置包括:

knowledge_dir: "_knowledge"
output_dir: ".dev-log"

requirement_doc: "3.量化交易资讯项目-需求.md"
error_code_doc: "5.服务详细设计(错误码段位分配).md"
tech_design_glob: "4.技术方案-*.md"
service_design_glob: "5.服务详细设计-*.md"
feature_impl_glob: "6.功能实现-*.md"
feature_impl_template: "6.功能实现(模版).md"
feature_impl_overview: "6.功能实现(概览).md"
feature_impl_menu_iteration: "6.功能实现(菜单功能迭代).md"
menu_client_apps: ["admin-biz-web", "member-biz-web", "APP"]

这种配置方式的好处是:

  • Skill 可以迁移到其他项目。
  • 文档命名规则集中维护。
  • 角色文件和规则文件只引用 {{config.*}},不写死项目路径。
  • fully-codingfully-coding-batch 共享同一份配置。

功能实现文档的复用优先原则

fully-coding6.功能实现-*.md 的生成机制做了专门约束。

Step 4 生成开发方案前,架构师必须先读取:

_knowledge/6.功能实现(概览).md

然后将本次功能与概览表中的字段匹配:

  • 功能名称。
  • 所属模块 / 领域。
  • 实现文档路径。
  • 关联菜单 / 入口。

如果已经存在同名、相近或同一菜单 / 核心功能下的实现文档,优先复用该文档,并在后续步骤中追加或修订功能描述。

只有两种情况才新建文档:

  1. 概览表和既有 6.功能实现-*.md 都找不到可承载本次功能的文档。
  2. 本次功能非常核心且开发量大,继续追加到既有文档会导致职责混杂或文档过长。

这条规则解决的是知识库碎片化问题。

新建功能实现文档的命名规范

如果确实需要新建功能实现文档,必须参考:

_knowledge/6.功能实现(模版).md

并使用统一命名:

6.功能实现-[管理web|会员web|会员app]-[一级菜单|核心功能]-[二级菜单].md

例如:

6.功能实现-管理web-系统管理-角色管理.md
6.功能实现-会员web-智能助手.md
6.功能实现-核心功能-数据采集与质量治理.md

无二级菜单时,可以使用能准确表达入口或能力的核心功能名作为最后一段。非前端入口的后端核心能力,则按主要使用端选择端标识;无法归属时,需要在 codingLog.md 记录判断依据。

功能实现文档必须包含什么

新建或更新功能实现文档时,不能只写几句说明。Step 4 要求文档至少覆盖:

  • 功能概述。
  • 时序图 / 流程图。
  • 接口设计:URL、方法、入参、出参、错误码。
  • 数据模型:表、字段、Redis Key。
  • 核心逻辑步骤。
  • 异常处理。

如果涉及写操作,还要说明幂等性、并发和异常边界。

这让功能实现文档不只是“功能说明”,而是可以指导开发和评审的设计文档。

从交接角度看,它还承担了“下一步输入”的职责。开发者可以基于它实现代码,Reviewer 可以基于它检查偏差,Step 8 可以基于它反向同步知识库。文档写得越规范,自动化流程越容易判断当前步骤是否完成。

Step 8 的反向同步

Step 4 写的是方案,Step 5 写的是代码。到了 Step 8,架构师要对比最终代码和方案,并反向更新知识库。

Step 8 的更新范围包括:

变更类型 必须更新
新增或修改功能实现文档 对应 6.功能实现-*.md + 6.功能实现(概览).md
修改功能状态、范围、接口、涉及服务 功能实现文档 + 概览文档
新增菜单、页面、路由、权限入口 6.功能实现(菜单功能迭代).md
新增错误码或领域枚举 错误码文档 + 对应功能实现文档
服务接口、依赖关系或调用方式变化 服务设计文档 + 对应功能实现文档

这就是 fully-coding 的文档同步触发矩阵。

错误码同步

项目使用错误码格式:

[L][CC][SS][D]

Step 4 设计错误码时,优先使用错误码文档中已有的 [L][CC] 枚举,并使用当前系统的 SSD 段位。

如果需要新增错误码,Step 4 先记录:

新增 [L][CC] = 取值 / 含义 / 使用场景

Step 5 实现时记录实际使用情况。Step 8 再反向更新错误码文档。

这样做可以避免代码里新增了错误码,但公共错误码文档没有登记。

菜单功能迭代同步

如果本轮改动涉及任一客户端的菜单、页面、路由、权限或导航入口,就必须更新:

_knowledge/6.功能实现(菜单功能迭代).md

这个文档不展开接口和领域模型细节,而是维护入口级索引。它至少应该记录:

菜单/页面名称 路由/入口 关联功能实现文档 权限点/角色 状态 变更说明 最近更新时间

它的作用是回答一个很现实的问题:

这个页面、菜单或权限入口,对应的功能实现文档在哪里?

Step 9 的一致性自检

Step 9 不修改代码,只做自检、必要文档补充和建议记录。

它会检查:

  • Step 5 代码变更与 Step 8 文档更新是否匹配。
  • 新增或修改 6.功能实现-*.md 时,功能实现概览是否同步。
  • 新增功能实现文档前,是否先检索概览并确认没有可复用文档。
  • 新文档命名是否符合规范。
  • 菜单、页面、路由、权限入口变更时,菜单功能迭代表是否同步。
  • 概览表中的实现文档路径是否真实存在。
  • 功能实现文档引用的接口和错误码是否与代码、服务设计、错误码文档一致。

如果遗漏可以自动补充,则记录到 Step 8 的“代码与文档偏差说明”;如果变更量较大,则写入 suggestion.md。

一次完整同步的流程

flowchart TD A[Step 4 读取功能实现概览] --> B{已有可复用文档?} B -->|有| C[复用并追加/修订既有功能文档] B -->|无或核心大功能| D[按模板新建功能实现文档] C --> E[Step 5 按方案实现代码] D --> E E --> F[Step 8 对比最终代码与方案] F --> G[更新服务设计 / 错误码 / 功能实现文档] G --> H[同步功能实现概览] G --> I[必要时同步菜单功能迭代] H --> J[Step 9 一致性自检] I --> J J --> K[生成 suggestion.md 并标记 completed]

和普通文档维护的区别

普通文档维护通常依赖开发者自觉。fully-coding 则把文档维护变成流程契约。

它要求文档在每个关键步骤都具备明确结构,而不是最后补一段总结。这样每个步骤的产物都能交接给后续步骤,也能在长周期任务中被恢复进程重新读取。

区别在于:

维度 普通维护 fully-coding
何时更新 开发者记得时 Step 8 强制检查
是否复用既有文档 靠人工判断 Step 4 必须先查概览
错误码是否同步 容易遗漏 Step 4/5 记录,Step 8 更新
菜单入口是否同步 容易遗漏 命中触发矩阵必须更新
文档路径是否有效 靠人工检查 Step 9 自检

总结

fully-coding 的知识库同步机制,核心不是多写文档,而是减少文档漂移。

它通过几条规则实现:

  1. project-config.md 统一知识库路径和文档名。
  2. Step 4 先查功能实现概览,优先复用既有文档。
  3. 只有缺失或核心大功能时才新建功能实现文档。
  4. 新文档必须参考模板并遵循命名规范。
  5. Step 8 根据最终代码反向同步服务设计、错误码、功能实现、概览和菜单迭代。
  6. Step 9 做一致性自检。

这些规则让文档成为可交接、可验证的规范,而不只是项目资料。它们也是 fully-coding 能够进一步自动化、并支撑超长周期编程的基础。

这套机制让 fully-coding 不只是写代码的工具,而是把代码、设计和知识库一起交付的工具。

posted @ 2026-06-23 19:30  鱼007  阅读(14)  评论(0)    收藏  举报