name: update-docs description: “检查文档和代码规范在更改后是否一致。在修改源代码后、提交前,或当用户要求同步文档时使用。”
当源代码发生变化时,检查公开文档和内部代码规范的一致性。
何时使用
- 修改了具有用户可见行为的源代码后
- 在提交涉及CLI标志、文件格式或默认值的更改之前
- 当用户要求将文档与代码同步时
- 添加或删除命令、子命令或标志后
何时不使用
- 更改纯粹是内部的,不影响文档时(例如,重命名私有变量)
- 仅更改了文档时(没有代码可偏离)
- 当用户明确表示不需要更新文档时
使用示例
/update-docs
/update-docs (在向ctx代理添加--session标志后)
工作流程
- Diff 分支:
git diff main --stat(或相关基准) - 验证 映射是否最新(见下文“自我维护”)
- 映射 已更改的包到受影响的文档(见表格)
- 阅读 每个受影响的文档;标记与新代码矛盾的部分
- 更新 或为用户标记
- 验证:在文档站点中运行
mkdocs build(如果可用)
代码到文档映射表
| 源路径 | 可能受影响的文档 |
|---|---|
cmd/ctx/, internal/cli/ |
docs/cli-reference.md |
internal/config/ |
docs/context-files.md |
internal/context/ |
docs/context-files.md, docs/prompting-guide.md |
internal/drift/ |
docs/context-files.md(漂移部分) |
internal/recall/ |
docs/session-journal.md |
internal/bootstrap/ |
docs/index.md(入门指南) |
internal/claude/, internal/rc/ |
docs/integrations.md |
internal/assets/ |
docs/context-files.md(模板) |
internal/assets/claude/skills/ |
.claude/skills/(实时版本) |
SECURITY.md |
docs/security.md |
.context/ 模式更改 |
docs/context-files.md |
检查内容
- 新的CLI标志/命令:是否在
docs/cli-reference.md中? - 更改的文件格式:
docs/context-files.md是否匹配? - 新的上下文文件:是否已添加到读取顺序文档和
docs/context-files.md中? - 移除的功能:文档中是否仍有引用?
- 更改的默认值:文档中的示例是否使用了旧的默认值?
- 技能模板更改:
.claude/skills/中的实时版本是否与internal/assets/claude/skills/匹配? - 架构漂移:当添加、移除或重命名包,或依赖关系发生变化时,更新
.context/ARCHITECTURE.md(组件映射、依赖关系图和文件布局部分)。ctx drift会扫描 ARCHITECTURE.md 中的死反引号路径引用。
自我维护
此映射表会漂移。在依赖它之前:
ls internal/:是否有任何包不在表中?添加它们。ls docs/*.md:是否有任何文档页面不在表中?映射它们。- 如果更新了表格,请直接编辑此技能文件。
此技能是其自身的第一个测试用例:如果映射表已过时,那么该技能在其职责上已经失败。
内部代码规范
同时检查更改的代码是否遵循项目模式(而非Go默认模式):
Godoc 风格
项目使用显式的 参数/返回 部分,而非标准godoc。
// 良好(项目风格):
// FunctionName 执行X。
//
// 参数:
// - param1: 描述
//
// 返回:
// - 类型: 描述
func FunctionName(param1 string) error
// 不良(标准godoc;代理语料库漂移):
// FunctionName 使用 param1 执行 X。
func FunctionName(param1 string) error
验证godoc注释是否与实际参数和行为匹配。
谓词命名
项目使用 不带 Is/Has/Can 前缀的谓词:
Completed()而非IsCompleted()Empty()而非IsEmpty()Exists()而非DoesExist()
文件组织
公共API在主文件中,私有辅助函数在 独立的逻辑文件 中:
loader.go(公共Load())+process.go(私有)- 非:所有内容都在一个文件中,未导出的函数在底部
魔术字符串
字面量应放在 internal/config/ 中。如果看到硬编码字符串在2个或更多文件中使用,则需要一个常量。在引入新字面量之前,检查 internal/config/ 中是否已有现有常量。
与 ctx drift 的关系
ctx drift 检查 .context/ 文件健康度(死路径、陈旧性)。此技能检查文档与源代码的对齐以及内部规范。它们是互补的。
质量检查清单
在报告结果之前,请验证:
- [ ] 所有更改的包都已映射到其受影响的文档
- [ ] 每个标记的文档部分都已实际阅读(非假设)
- [ ] 如果触及了
internal/assets/,则检查了技能模板/实时漂移 - [ ] 已执行自我维护(映射表是最新的)