写作与公文
用 indexion 从模板、文档注释和分包 README…
当需要脚手架化、生成、规划、组装或校验项目 README(含分包 README 与根 README)时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用 indexion 从模板、文档注释和特定
解决思路
- 先检查 `git diff` / `ls -la`,确认是否存在 `README.md` 符号链接、`doc.json`(根目录或 `.indexion/readme/` 下)以及 `.indexion.toml`,以判断 README 是手工维护、构建组装还是混合模式。
- 仅在全新项目上运行 `indexion doc init <project-dir>` 初始化,生成 `.indexion/readme/template.md` 和 `.indexion/readme/doc.json`;若项目已有 `doc.json` 或指向它的 `.indexion.toml`,跳过此步。
- 编辑 `doc.json` 配置:设置 `$schema`、`version`、`spec`、`output`(format/filename)、`packages` 数组(每项含 `path`、`title`、`include_in_root`、`sections`)以及 `root.output` 和 `root.sections`。
- 在 `root.sections` 中使用三种类型:`static`(原样引入 markdown 文件)、`toc`(插入目录标题)、`packages`(按 glob 过滤引入 packages 条目)。
- 运行 `indexion doc readme --per-package src/ cmd/` 为尚无 README 的包生成 `README.md`(非覆盖式,已存在的会被保留)。
- 生成单包 README 到 stdout:`indexion doc readme src/kgf/lexer/`;输出到文件:`indexion doc readme -o=README.md src/kgf/lexer/`。
- 注意 `doc readme --template=<t> <paths...>` 会遍历路径并自动为缺失的包创建 README(即使没加 `--per-package`);在宽路径上运行后要 grep `git status` 清理意外创建的文件。
- 手工编写每个分包 README 的 Overview / Usage / Options / Examples 段落(自动生成的骨架仅含从 `///` 文档注释提取的 API 列表)。
- 创建 `docs/intro.md`、`docs/installation.md` 等静态文件,供 `root.sections` 引用。
- 可选:运行 `indexion plan readme --template=docs/templates/readme.md --plans-dir=.indexion/plans src/` 生成逐段写作任务,供人工或 LLM 辅助撰写。
- 组装 README:优先用配置驱动 `indexion doc readme --config=doc.json`;或用模板驱动 `indexion doc readme --template=docs/templates/readme.md -o=README.md cmd/`(支持 `{{include:…}}` 和 `{{packages}}` 占位符)。
- 在 `.indexion.toml` 中配置 `[doc] config_path = "doc.json"` 可免去 `--config=`;`per_package = true` 使 `doc readme <path>` 默认启用 `--per-package`;显式 `--config=…` 始终优先。
- 模板占位符:`{{include:path}}` 展开为文件内容(相对项目根)、`{{packages}}` 展开为所有发现的包(受 CLI `--include` / `--exclude` 过滤)、`{{module_doc}}` 仅展开模块级文档。
- 重新生成或手工编辑根 README 后,用 `plan drift` 校验变更是否纯增量:先 `git show HEAD:README.md > /tmp/README.before.md`,再 `indexion plan drift --top=20 /tmp/README.before.md README.md`。
- 解读 drift 输出:`Drift terms in /tmp/README.before.md (missing on the other side): (none)` 表示无删除;`README.md` 侧缺失项应恰好是你有意新增的词汇;小幅增量改动时 `Cosine similarity` 接近 1.0。
- CI 集成:`indexion plan drift --vocab-threshold=0.05 /tmp/README.before.md README.md`,当 cosine_distance > 0.05 时退出码为 1,可防止意外的大规模重写。
- 同一 drift 流程也适用于翻译版 README 对(如 `README.md` ↔ `README-ja.md`),因为词汇子分词委托给 `kgfs/natural/` 中的自然语言 KGF,跨语言 drift 检测原生可用。
- 注意已知限制:`doc readme --config` 在根中输出 `{ "type": "packages" }` 时不会内联展开每个 packageEntry 的 `sections`,只生成带空描述的包链接表格;因此新命令需在 `doc.json` 加条目、写分包 README 之外,还要手工把富文本段落编辑进组装后的 README,并用 `plan drift` 确认只增不减。
- 若项目已签入的根 README 含丰富的逐命令 Overview / Usage 段落,说明它们是手工维护的;用 `doc readme --config -o=/tmp/regen.md` 与签入版对比,diff 很大即表示 README 主要靠手工维护。
适用边界 · 注意事项
- 项目没有 `doc.json`、`.indexion.toml` 或相关约定,README 完全手工维护且不打算引入 indexion 工具链时。
- 只想评估现有文档质量而非构建 README 时(应改用 `indexion-documentation`)。
- 无法运行 indexion CLI 或不允许在仓库中生成/修改文件(如只读环境)时。