文档创建
根据当前对话上下文和文件夹内容编写 Markdown 内容。
README 是面向人类用户的当前状态规范,不是变更日志,不是决策日志,也不是历史记录。切勿记录历史信息或所做的选择,仅记录编写 README 时的当前状态规范。
范围
找到项目中所有的 README.md 文件并逐一更新。 文件夹内容为 README 所在层级及其下属层级(同级和子文件夹),绝不包含上级(父级)内容。 注意子文件夹层级、作用域和有界上下文。不要在不同层级的文档之间泄露概念。每个 README 只覆盖其自身目录层级及以下内容,绝不涉及父级关注点。
如果用户提供了具体的指导或重点领域,在决定文档中应强调的内容时应用该上下文。
收集上下文
切勿直接运行 git。此插件附带的基线脚本涵盖了该技能从 git 中需要的一切。每次从仓库根目录运行命令,并写出脚本的完整路径,因为 shell 变量在命令之间不会持久保存。
从计划开始。它会找到每个 README,在不存在时添加根 README,解析每个 README 的基线,列出自基线以来的变更,并说明每个 README 应如何处理。当用户的指导指定了要关注的目录时,将它们跟在 readme 之后传递。否则不传递任何内容。
bash "${CLAUDE_SKILL_DIR}/../../scripts/doc-baseline.sh" plan readme [<focus-dir>...]
计划会为每个操作打印一个区块。
## update命名一个基线、一个作用域和 README,后跟自该基线以来的提交、差异统计和状态。将 README 更新到最新。变更未影响的 README 保持其内容不变。## new列出需要根据当前代码编写的 README。它们不需要历史记录。## unchanged和## outside the focus列出需要完全保持原样的 README。
head none 表示仓库没有提交。每个 README 都是新的。
对于更新区块,统计其差异中的文件数。超过 20 个时,跳过完整差异,直接读取已更改的文件。20 个或更少时,读取差异。标记为 ?? 的未跟踪文件不会出现在差异中,因此无论如何都需要直接读取它们。作用域可以是区块的作用域或单个文件,因为它是一个 git pathspec。
bash "${CLAUDE_SKILL_DIR}/../../scripts/doc-baseline.sh" diff <sha> <scope>
然后,对于每个需要更新或编写的 README(限定在其目录范围内):
-
读取当前 README(如果存在)
-
在该目录层级及以下探索代码库
-
查看对话历史以获取相关决策、变更或经验教训
-
使用变更和对话上下文来确定哪些部分需要更新。将代码与文档对照,将文档与代码对照。当代码删除了一个函数、标志或模块时,在每个 README 中 grep 搜索其名称,然后重新读取每个匹配项以及每个 README 的概述,以查找对该内容的通俗语言描述。
grep -rn '<dropped name>' <dir>/README.md
切勿在你编写或编辑的文本中包含标记行。finish 会在编写后添加它。当编辑一个已以标记行结尾的 README 时,请保留该行不变。
如果没有发生需要更新 README 的变更,请说明并继续。仍然需要执行 finish。
README.md 大纲
README.md 的章节顺序和内容。每个章节都根据目标项目填写。如果项目某部分没有内容,则省略该章节。
# 标题以及不超过五句话的概述- 可选图片或视频
## 架构- 组件作为项目符号列表,每个都有其目的## 前置条件- 账户、密钥、凭据、工具、运行时、CLI,每个都说明需要的原因## 项目结构- 仅文件夹,不包含文件,每个都有一行说明其目的## 安装- 安装项目的命令## 用法- 运行项目的命令## 测试- 当项目没有测试时省略此节
目标不超过 500 行。对于更长的 README,通过将详细信息移动到所描述代码旁边的嵌套 README 中来拆分。
格式
# 标题
简要概述。不超过五句话。
<!-- 可选的图片或视频亮点 -->
<img src="demo.png" alt="演示" width="800"/>
## 架构
高层组件及其目的
- 组件 - 目的
- 组件 - 目的
## 前置条件
- 前置条件 - 描述和原因(账户、密钥、凭据、工具、运行时、CLI)
## 项目结构
显示文件夹结构。不包含文件。
```text
project/
├── src/
│ ├── component-a/ # 目的 - 参见 src/component-a/README.md
│ └── component-b/ # 目的 - 参见 src/component-b/README.md
├── scripts/ # 目的
└── tests/ # 目的
```
## 安装
```bash
# 项目的安装方式
<install command>
```
## 用法
```bash
# 项目的运行方式
<run command>
```
## 测试
```bash
# 测试的运行方式
<test command>
```
完成
每次运行 finish,包括没有写入任何内容的运行。plan 会在后面留下一个计划文件,只有 finish 会删除它,因此跳过 finish 的运行会为下一次运行留下状态,导致问题。
bash "${CLAUDE_SKILL_DIR}/../../scripts/doc-baseline.sh" finish readme
它会为计划标记为 new 或 update 的每个 README,以及自计划以来创建的每个 README,打上计划所检查的 HEAD 标记。该标记是 README 末尾的一行标记线,一个命名该提交的 HTML 注释。finish 不会改动未变更的 README 和关注范围之外的 README,当仓库没有提交时也不打标记。退出码 4 表示计划中的 README 丢失。编写它并再次运行 finish。
- 切勿直接调用
stamp,也切勿手动编写或编辑标记行。finish 会编写它。 - 标记是元数据。禁止记录历史记录的规则不适用于它。
