eo-doc-manager
管理 eo-doc/ 代码侧文档体系(init / modify / sync):维护 changes/INDEX.md、agent-handbook/ 规范篇与 templates/;`state.enabled` 时cursor 增量再生 state/ 现状篇。所有 eo-doc 下的文档维护操作必须走此 skill。触发:初始化文档 / 修改文档 / 整理文档 / 同步文档 / /eo-doc-manager。NOT FOR:查询与解释文档内容(走 /eo-recall)。
Install
npx skills add https://github.com/SimpleEve/eo-skills/tree/main/eo-doc-manager
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install simpleeve-eo-skills@llmmart
git clone https://github.com/SimpleEve/eo-skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole simpleeve/eo-skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
eo-doc-manager
代码侧文档管理。项目管理侧(roadmap / decisions / lessons / design / docs)由 eo-project-* skill 管。
前置
除 init 外的所有命令必须能找到 .eo-project.json(cwd 或父目录)。同目录存在 .eo-project.local.json 时顶层字段覆盖合并(local 优先)。找不到 → 报错退出,提示运行 /eo-project-init。
init 通常由 /eo-project-init 内部调用;用户直接调用 /eo-doc-manager init 时,若 .eo-project.json 不存在会提示先走 /eo-project-init。
命令路由
| 命令 | 触发词 | 流程 |
|---|---|---|
init |
初始化文档、init docs | 创建 eo-doc/ 最小骨架(changes/ + agent-handbook/INDEX + templates/) |
modify |
修改文档、整理文档 | 维护 changes/INDEX.md / agent-handbook/ 规范篇 / templates/ |
sync |
同步文档、同步 state、重新生成现状文档 | cursor 增量再生 state/ 现状篇(需 state.enabled,流程见下) |
「查文档 / 当时怎么设计的 / 这个逻辑怎么实现的」→ 走
/eo-recall(本 skill 不提供 query,回归纯维护职责)。
路由规则:
- 明确命令 → 直接路由
- 自然语言 → 按触发词匹配
- 无法判断 → 列出可用命令
目录结构(代码侧 eo-doc/)
所有文档存放在项目根目录 eo-doc/ 下(无顶级 INDEX.md;agent 配置注入段中的目录表即一级索引):
eo-doc/
├── changes/ # 必建,change 工件流(子目录由 eo-* 工作流 skill 产出)
│ └── INDEX.md # 项目级 change 时间线
├── agent-handbook/ # 可选,Agent 操作手册(篇目含 INDEX.md)
├── state/ # 可选(`state.enabled` 时由 sync 增量再生维护)
└── templates/ # 必建(空),eo-* 技能扩展点
不处理的历史目录
eo-doc/ 下可能存在的历史目录(doc/、dev/、design/、research/、knowledgebase/):不读取、不重建、不删除,仅供历史查阅;v1 遗留的迁移处理见 eo-skills 仓库的 docs/migration-v1-to-v2.md。
state/ 单独处置:配置 state.enabled: true → 由本 skill sync 维护的活文档层;未启用 → 视同历史目录冻结留存(不删除)。
目录职责
| 目录 | 职责 | 面向 | 核心问题 |
|---|---|---|---|
changes/ |
change 工件流 — 每次变更的 change/review/test 产出 | 都 | "变更进行到哪了?" |
agent-handbook/ |
Agent 操作手册 — 相对固定的操作规范(worktree 协作 / 架构分工 / 目录约定 / UI token 用法 / agent 协作),非 SSOT(代码为准),不挂自动同步 | AI | "操作时按什么规范?" |
state/ |
业务现状活文档 — 模块现状篇(state.enabled 时存在),代码为唯一信源cursor 增量再生,非 SSOT |
都 | "系统现在是什么样?" |
templates/ |
eo-* 技能的扩展点 — 项目类型、工作流定制 | AI | "项目怎么定制?" |
changes/:
- 子目录由 eo-change、eo-implement、eo-review、eo-archive 等技能按约定产出
- 本 skill 负责
changes/INDEX.md的整理与修复(条目对应、孤儿清理、seq 查重)
templates/:
- 不是文档,是 eo-* 技能的扩展点(如项目类型画像
project-profile.md) - 模板可选,不存在时 eo-* 技能使用内置默认行为
- 由项目按需自建,本 skill 只建空目录、不生成模板内容
核心工作流
init — 初始化最小骨架
通常由 /eo-project-init 内部调用。直接调用时:
- 检查
.eo-project.json是否存在;不存在 → 提示先走/eo-project-init并退出 - 读取
.eo-project.json的doc_root(默认eo-doc)作为根 - 创建最小骨架:
<doc_root>/changes/INDEX.md(骨架)<doc_root>/agent-handbook/INDEX.md(骨架;篇目内容由 /eo-project-init 的 handbook 初始化流程按需产出)<doc_root>/templates/(空目录,不自动生成模板文件)
- 注入段刷新(见下方「注入规则」)
modify — 维护 changes/INDEX.md、agent-handbook/ 与 templates/
- changes/INDEX.md 整理:条目与
changes/子目录一一对应(无孤儿、无漏收),状态/摘要列与各 change.md frontmatter 一致;seq 列顺手查重(重号 → created 晚者让号,见 ../eo-shared/conventions.md §2) - agent-handbook/ 篇目维护:按用户输入或 init 扫描结果创建/修改规范篇;内容不从源码生成、不挂自动同步;只写方向性规范,细节判断交运行时
- templates/ 管理:按用户输入创建/修改项目定制模板;模板内容来自用户输入,不从源码生成
- 验证:INDEX 与目录一一对应、交叉引用指向真实存在的文件
sync — cursor 增量再生 state/ 现状篇
前置:合并配置 state.enabled: true;未启用 → 告知该层未开启(可由 /eo-project-init 更新分支开启)并退出。
机制:单游标、单机制——游标文件 eo-doc/.sync-cursor(YAML:last_commit / sync_count / archive_count)记录上次同步到的 commit;每次 sync 只处理 cursor..HEAD 的已提交增量,完成后推进游标到 HEAD。archive 收口与手动调用是同一机制的两个触发点;不提供按 change 定界的 range 同步(range 不动游标会被下次重扫,动游标会跳过区间外交错的直改/其他 change 提交)。
- 读游标:
.sync-cursor不存在 → 首次 sync = 全量生成(全部模块逐篇生成),完成后写游标 = HEAD - 脏变更三选项(检测到工作区脏时按封闭选择协议问):① 只取 cursor..HEAD 增量,不扫脏变更(默认推荐——脏变更提交后自然被下次 sync 覆盖)② 含脏变更一起同步(代码即将定稿时用)③ 全部重扫(等价重新首同步,游标仍推进到 HEAD)
- 算增量:
git diff --name-only <cursor>..HEAD;排除eo-doc/路径(归档元数据等纯文档提交直接跳过,不做影响分析) - 路径映射模块:按
agent-handbook/architecture.md的划分(无该篇则按顶层目录)把变更文件映射到受影响模块集合;映射不到任何模块的路径(根配置等)→ 速报列出并跳过 - 逐受影响模块读码重写
state/<module>.md(未受影响的篇不动):- 篇头:
> 非 SSOT:代码为准,本篇为派生快照|基线 <commit-short-sha>|last_sync <date>|由 /eo-doc-manager sync 生成 - 三节:入口(主要文件/符号)、行为契约(对外可观测行为与规则)、依赖(依赖谁、被谁依赖)
- 篇头:
- 孤儿篇处置:模块已不存在的存量篇 → 列出并请用户确认后删除
- 推进游标:
.sync-cursor写入新 HEAD 并累计sync_count;archive 联动触发的本次另累计archive_count - 一致性抽查:
sync_count每满 5 → 抽查 state ↔ agent-handbook 同源文档是否前后矛盾、篇头与正文是否漂移,只报告不自动改 - 速报:触达 N 篇(模块清单)/ 删除 M 篇 / 游标
<old-sha>..<new-sha>
INDEX.md 规范
见 references/index-templates.md。
注入规则
见 references/claude-injection.md。
验证清单
每次操作后:
-
changes/INDEX.md与changes/子目录一一对应 - 所有交叉引用指向真实存在的文件
维护协议
参考 maintenance.md。
Files (eo-skills)
-
references
-
claude-injection.md 2.6 KB
# CLAUDE.md 注入规则 `eo-doc-manager` 的 `init` 会向项目根目录的 agent 配置文件注入文档体系说明,让 AI 在每次会话启动时知道 `eo-doc/` 的结构。 `eo-project-init` 另外注入 `<!-- eo-project:start -->`(项目管理侧说明)与 `<!-- eo-reply-contract:start -->`(长任务收尾回复契约)两个段落,三者互不干扰。 ## 注入标记 ```markdown <!-- eo-doc:start --> ...(注入内容)... <!-- eo-doc:end --> ``` ## 注入模板 ```markdown <!-- eo-doc:start --> ## eo-doc 文档体系(代码侧) 代码侧文档根目录 `eo-doc/`。 | 目录 | 用途 | 何时读 | |------|------|--------| | [changes/](eo-doc/changes/INDEX.md) | change 工件流(change/review/test) | 查变更进度 | | [agent-handbook/](eo-doc/agent-handbook/INDEX.md) | 项目操作手册(commit/注释/worktree/架构/目录/UI 规范) | 做对应操作前读对应篇;不存在则无此约束 | | [templates/](eo-doc/templates/) | 项目定制模板(eo-* 技能扩展点) | eo-* 技能启动时自动读取 | > **注释纪律(硬入口)**:编辑任何代码前,`eo-doc/agent-handbook/comments.md` 存在则必读并遵循——它约束一切代码改动,含不经 eo 流程的直改。 > 项目管理侧(roadmap / decisions / lessons / 原始 PRD 与设计)见 `.eo-project.json`(同目录如有 `.eo-project.local.json` 则字段覆盖,local 优先)的 `project_root` 字段。 <!-- eo-doc:end --> ``` ## 注入流程 ### 场景 1:CLAUDE.md 不存在 1. 在项目根目录创建 CLAUDE.md 2. 写入: ```markdown # CLAUDE.md 本文档为 AI Agent 提供项目全局上下文。 <!-- eo-doc:start --> ...(注入模板)... <!-- eo-doc:end --> ``` ### 场景 2:CLAUDE.md 存在,无 `<!-- eo-doc:start -->` 标记 1. 读取现有 CLAUDE.md 全文 2. 按封闭选择协议([../../eo-shared/questioning.md](../../eo-shared/questioning.md) §4)问:注入到文件末尾(推荐)or 用户指定位置 3. 默认追加到文件末尾(保持两空行间隔) 4. 添加 `<!-- eo-doc:start -->` / `<!-- eo-doc:end -->` 标记包裹注入内容 ### 场景 3:CLAUDE.md 存在,已有 `<!-- eo-doc:start -->` 标记 1. 定位 `<!-- eo-doc:start -->` 到 `<!-- eo-doc:end -->` 之间的内容 2. **完全替换**为新的注入模板(不做局部 merge) 3. 保留标记外的其他内容不变 ## 验证 注入完成后: - [ ] CLAUDE.md 存在且可读 - [ ] `<!-- eo-doc:start -->` 和 `<!-- eo-doc:end -->` 成对出现 - [ ] 表格渲染正常(列数一致) - [ ] 所有链接指向真实存在的目录/INDEX.md -
index-templates.md 1.4 KB
# INDEX.md 模板 `eo-doc/` 下**无顶级 INDEX.md**(CLAUDE.md 里的目录表即是一级索引);每个子目录各自维护自己的 INDEX.md 作为二级索引。 ## 目录级 INDEX.md ```markdown # [分类名] Index > Last updated: YYYY-MM-DD > Total: N docs | File | Title | Tags | Updated | Summary | |------|-------|------|---------|---------| | [filename.md](filename.md) | 标题 | `tag1` `tag2` | YYYY-MM-DD | 一句摘要 | ``` > `changes/INDEX.md` 使用上面的标准列。 ## 分组式 INDEX(10+ 篇时使用) ```markdown # [分类名] Index > Last updated: YYYY-MM-DD > Total: N docs ## [子分类 A] | File | Title | Tags | Updated | Summary | |------|-------|------|---------|---------| | [file1.md](file1.md) | 标题 | `tag` | YYYY-MM-DD | 摘要 | ## [子分类 B] | File | Title | Tags | Updated | Summary | |------|-------|------|---------|---------| | [file2.md](file2.md) | 标题 | `tag` | YYYY-MM-DD | 摘要 | ## 已归档 | File | Title | Archived | Replacement | |------|-------|----------|-------------| | [old.md](old.md) | 旧版本 | YYYY-MM-DD | [new.md](new.md) | ``` ## 维护规则 - 每次新增/修改/归档文档后,**同步更新受影响目录的 INDEX.md** - 摘要列与文档 frontmatter 的 `summary` 字段保持一致 - 标签列与 frontmatter 的 `tags` 字段保持一致 - 按 `updated` 倒序排列(最近更新的在前) - 单条目约 50 token,整个 INDEX 可一次性扫描 -
maintenance.md 845 B
# 维护协议 ## changes/INDEX.md 整理 1. 列出 `changes/` 下全部子目录,与 INDEX.md 条目比对: - 孤儿条目(指向已删除目录)→ 删除该行 - 漏收目录 → 读其 change.md frontmatter 补行 2. 状态/摘要列与各 change.md frontmatter 保持一致(以 frontmatter 为准) 3. seq 列顺手查重:重号 → created 晚者让号(见 [../../eo-shared/conventions.md](../../eo-shared/conventions.md) §2) 4. 单条目保持约 50 token,整个 INDEX 可一次性扫描 ## templates/ 管理 - 模板由项目按需自建(如项目类型画像 `project-profile.md`),本 skill 不自动生成内容 - 模板内容完全来自用户输入;templates/ 无 INDEX,无需同步索引 ## 验证 - [ ] INDEX 条目与目录一一对应 - [ ] 所有交叉引用指向真实存在的文件 -
mermaid.md 4.4 KB
# Mermaid 图规范(eo-skills 统一约定) 本规范覆盖 eo-skills 体系内所有 mermaid 图的类型选择、样式约定、维护规则。 主要消费方: - `eo-change` — 条件节 §6 流程图(画比说清楚时才画) - `eo-recall` — 回忆问答的按需出图 - `eo-change-review` — change 含 §6 流程图时按本文件 §5 审查清单核对 ## 1. 图类型选择矩阵 | 目标 | 图类型 | 用在哪 | |------|--------|--------| | 用户操作流程、业务决策分支 | `flowchart TD` | change §6、recall 输出 | | 多角色/多系统交互、时序敏感 | `sequenceDiagram` | change §6(涉及跨系统调用) | | 业务状态机、生命周期 | `stateDiagram-v2` | change §6、recall 输出 | | 组件/依赖关系 | `flowchart LR/TB` | recall 输出 | **选型原则**:能用 `flowchart` 表达就不要上 `sequenceDiagram`;用户读图的认知成本低于语法表达力。 ## 2. classDef 规范(change 流程图专用) change.md 的流程图画的是**变更后的完整流程**,不是 diff。但要用 classDef 高亮这次 change 动了哪些节点,方便审查者一眼抓差异。 ### 固定 classDef 定义 每张 change 流程图末尾必须包含这三行(无论有没有用到): ``` classDef new fill:#d4edda,stroke:#28a745,stroke-width:2px classDef changed fill:#fff3cd,stroke:#ffc107,stroke-width:2px classDef extern fill:#e9ecef,stroke:#6c757d,stroke-dasharray:5 5 ``` ### 应用规则 | 场景 | 写法 | |------|------| | 本 change 新增的节点 | `NodeId:::new` | | 本 change 修改了语义/行为的节点 | `NodeId:::changed` | | 依赖的外部模块节点(非本模块内部) | `NodeId:::extern` | | 本 change 删除的节点 | **不画在图里**,在图下方用 `> 移除:<原节点名> —— <原因>` 说明 | ### 归档后的去向 流程图随 change 目录一起归档冻结,**无任何合并动作**;`:::new` / `:::changed` 标注原样保留——它们是该次变更的历史痕迹。 ## 3. 命名规则 - **节点 ID**:英文 kebab / camelCase,短(`validate-input`、`checkStock`),不要中文或空格 - **节点 label**:中文,简洁动词短语(`[验证输入]`、`{库存足够?}`) - **决策节点**:菱形 `{...}`,label 末尾带 `?` - **子图(subgraph)**:仅在一张图 ≥ 15 个节点时才用,用来分组 ## 4. 最小示例 ### 示例 A — 业务状态机(示意:某审核流的领域状态) ```mermaid stateDiagram-v2 [*] --> draft draft --> pending: 提交审核 pending --> approved: 审核通过 pending --> draft: 审核驳回 approved --> archived: 归档 archived --> [*] ``` ### 示例 B — change §6 流程图(带变更高亮) ```mermaid flowchart TD Start([用户发起下单]) --> ValidateUser[校验用户资质] ValidateUser --> CheckStock{库存充足?} CheckStock -->|是| RiskCheck[风控审核] CheckStock -->|否| Fail([下单失败]) RiskCheck --> CreateOrder[创建订单] CreateOrder --> NotifyWMS[[通知 WMS 模块]] NotifyWMS --> Done([完成]) RiskCheck:::new CheckStock:::changed NotifyWMS:::extern classDef new fill:#d4edda,stroke:#28a745,stroke-width:2px classDef changed fill:#fff3cd,stroke:#ffc107,stroke-width:2px classDef extern fill:#e9ecef,stroke:#6c757d,stroke-dasharray:5 5 ``` > 移除:原"人工审核"节点 —— 由新增的"风控审核"自动节点替代。 ### 示例 C — 项目级模块依赖图 ```mermaid flowchart TB subgraph 业务层 order[订单] inventory[库存] end subgraph 基础层 user[用户] config[配置] end order --> inventory order --> user inventory --> config ``` ## 5. 审查清单(给 review 类 skill) | 检查项 | 严重度 | |--------|--------| | change 满足 §6 触发条件(状态机/多角色交互)却未画图 | P2 | | 图与代码实现不一致(节点/分支/状态对不上) | P1 | | change 流程图有明显变更点却缺 `:::new` / `:::changed` 标注 | P2 | | 节点 ID 含中文或空格(违反命名规则) | P3 | | 图类型选错(如用 sequenceDiagram 画纯流程) | P3 | ## 6. 什么时候可以不画 - 纯配置调整、纯文案/样式变更 - 单一能力点新增且不涉及流程分支 - 用文字一句能说清的线性流程 满足 change 模板 §6 触发条件(状态机、多角色交互等「画比说清楚」的场景)才画,其余默认不画。
-
-
SKILL.md 8 KB
--- name: eo-doc-manager description: 管理 eo-doc/ 代码侧文档体系(init / modify / sync):维护 changes/INDEX.md、agent-handbook/ 规范篇与 templates/;`state.enabled` 时cursor 增量再生 state/ 现状篇。所有 eo-doc 下的文档维护操作必须走此 skill。触发:初始化文档 / 修改文档 / 整理文档 / 同步文档 / /eo-doc-manager。NOT FOR:查询与解释文档内容(走 /eo-recall)。 --- # eo-doc-manager **代码侧**文档管理。项目管理侧(roadmap / decisions / lessons / design / docs)由 `eo-project-*` skill 管。 ## 前置 除 `init` 外的所有命令必须能找到 `.eo-project.json`(cwd 或父目录)。同目录存在 `.eo-project.local.json` 时顶层字段覆盖合并(local 优先)。找不到 → 报错退出,提示运行 `/eo-project-init`。 `init` 通常由 `/eo-project-init` 内部调用;用户直接调用 `/eo-doc-manager init` 时,若 `.eo-project.json` 不存在会提示先走 `/eo-project-init`。 ## 命令路由 | 命令 | 触发词 | 流程 | |------|--------|------| | `init` | 初始化文档、init docs | 创建 eo-doc/ 最小骨架(changes/ + agent-handbook/INDEX + templates/) | | `modify` | 修改文档、整理文档 | 维护 changes/INDEX.md / agent-handbook/ 规范篇 / templates/ | | `sync` | 同步文档、同步 state、重新生成现状文档 | cursor 增量再生 `state/` 现状篇(需 `state.enabled`,流程见下) | > 「查文档 / 当时怎么设计的 / 这个逻辑怎么实现的」→ 走 `/eo-recall`(本 skill 不提供 query,回归纯维护职责)。 **路由规则**: 1. 明确命令 → 直接路由 2. 自然语言 → 按触发词匹配 3. 无法判断 → 列出可用命令 ## 目录结构(代码侧 `eo-doc/`) 所有文档存放在项目根目录 `eo-doc/` 下(**无顶级 INDEX.md**;agent 配置注入段中的目录表即一级索引): ```text eo-doc/ ├── changes/ # 必建,change 工件流(子目录由 eo-* 工作流 skill 产出) │ └── INDEX.md # 项目级 change 时间线 ├── agent-handbook/ # 可选,Agent 操作手册(篇目含 INDEX.md) ├── state/ # 可选(`state.enabled` 时由 sync 增量再生维护) └── templates/ # 必建(空),eo-* 技能扩展点 ``` ### 不处理的历史目录 `eo-doc/` 下可能存在的历史目录(`doc/`、`dev/`、`design/`、`research/`、`knowledgebase/`):**不读取、不重建、不删除**,仅供历史查阅;v1 遗留的迁移处理见 eo-skills 仓库的 docs/migration-v1-to-v2.md。 `state/` 单独处置:配置 `state.enabled: true` → 由本 skill `sync` 维护的活文档层;未启用 → 视同历史目录冻结留存(不删除)。 ## 目录职责 | 目录 | 职责 | 面向 | 核心问题 | |------|------|------|----------| | `changes/` | change 工件流 — 每次变更的 change/review/test 产出 | 都 | "变更**进行**到哪了?" | | `agent-handbook/` | Agent 操作手册 — 相对固定的操作规范(worktree 协作 / 架构分工 / 目录约定 / UI token 用法 / agent 协作),非 SSOT(代码为准),不挂自动同步 | AI | "操作时按什么**规范**?" | | `state/` | 业务现状活文档 — 模块现状篇(`state.enabled` 时存在),代码为唯一信源cursor 增量再生,非 SSOT | 都 | "系统**现在**是什么样?" | | `templates/` | eo-* 技能的扩展点 — 项目类型、工作流定制 | AI | "项目**怎么**定制?" | **changes/**: - 子目录由 eo-change、eo-implement、eo-review、eo-archive 等技能按约定产出 - 本 skill 负责 `changes/INDEX.md` 的整理与修复(条目对应、孤儿清理、seq 查重) **templates/**: - 不是文档,是 eo-* 技能的扩展点(如项目类型画像 `project-profile.md`) - 模板可选,不存在时 eo-* 技能使用内置默认行为 - 由项目按需自建,本 skill 只建空目录、不生成模板内容 ## 核心工作流 ### init — 初始化最小骨架 通常由 `/eo-project-init` 内部调用。直接调用时: 1. 检查 `.eo-project.json` 是否存在;不存在 → 提示先走 `/eo-project-init` 并退出 2. 读取 `.eo-project.json` 的 `doc_root`(默认 `eo-doc`)作为根 3. 创建最小骨架: - `<doc_root>/changes/INDEX.md`(骨架) - `<doc_root>/agent-handbook/INDEX.md`(骨架;篇目内容由 /eo-project-init 的 handbook 初始化流程按需产出) - `<doc_root>/templates/`(空目录,不自动生成模板文件) 4. 注入段刷新(见下方「注入规则」) ### modify — 维护 changes/INDEX.md、agent-handbook/ 与 templates/ 1. **changes/INDEX.md 整理**:条目与 `changes/` 子目录一一对应(无孤儿、无漏收),状态/摘要列与各 change.md frontmatter 一致;seq 列顺手查重(重号 → created 晚者让号,见 [../eo-shared/conventions.md](../eo-shared/conventions.md) §2) 2. **agent-handbook/ 篇目维护**:按用户输入或 init 扫描结果创建/修改规范篇;内容不从源码生成、不挂自动同步;只写方向性规范,细节判断交运行时 3. **templates/ 管理**:按用户输入创建/修改项目定制模板;模板内容来自用户输入,不从源码生成 4. **验证**:INDEX 与目录一一对应、交叉引用指向真实存在的文件 ### sync — cursor 增量再生 state/ 现状篇 前置:合并配置 `state.enabled: true`;未启用 → 告知该层未开启(可由 `/eo-project-init` 更新分支开启)并退出。 **机制**:单游标、单机制——游标文件 `eo-doc/.sync-cursor`(YAML:`last_commit` / `sync_count` / `archive_count`)记录上次同步到的 commit;每次 sync 只处理 `cursor..HEAD` 的已提交增量,完成后推进游标到 HEAD。archive 收口与手动调用是**同一机制的两个触发点**;不提供按 change 定界的 range 同步(range 不动游标会被下次重扫,动游标会跳过区间外交错的直改/其他 change 提交)。 1. **读游标**:`.sync-cursor` 不存在 → 首次 sync = 全量生成(全部模块逐篇生成),完成后写游标 = HEAD 2. **脏变更三选项**(检测到工作区脏时按封闭选择协议问):① 只取 cursor..HEAD 增量,不扫脏变更(默认推荐——脏变更提交后自然被下次 sync 覆盖)② 含脏变更一起同步(代码即将定稿时用)③ 全部重扫(等价重新首同步,游标仍推进到 HEAD) 3. **算增量**:`git diff --name-only <cursor>..HEAD`;**排除 `eo-doc/` 路径**(归档元数据等纯文档提交直接跳过,不做影响分析) 4. **路径映射模块**:按 `agent-handbook/architecture.md` 的划分(无该篇则按顶层目录)把变更文件映射到受影响模块集合;映射不到任何模块的路径(根配置等)→ 速报列出并跳过 5. **逐受影响模块读码重写** `state/<module>.md`(未受影响的篇不动): - 篇头:`> 非 SSOT:代码为准,本篇为派生快照|基线 <commit-short-sha>|last_sync <date>|由 /eo-doc-manager sync 生成` - 三节:**入口**(主要文件/符号)、**行为契约**(对外可观测行为与规则)、**依赖**(依赖谁、被谁依赖) 6. **孤儿篇处置**:模块已不存在的存量篇 → 列出并请用户确认后删除 7. **推进游标**:`.sync-cursor` 写入新 HEAD 并累计 `sync_count`;archive 联动触发的本次另累计 `archive_count` 8. **一致性抽查**:`sync_count` 每满 5 → 抽查 state ↔ agent-handbook 同源文档是否前后矛盾、篇头与正文是否漂移,只报告不自动改 9. **速报**:触达 N 篇(模块清单)/ 删除 M 篇 / 游标 `<old-sha>..<new-sha>` ## INDEX.md 规范 见 [references/index-templates.md](references/index-templates.md)。 ## 注入规则 见 [references/claude-injection.md](references/claude-injection.md)。 ## 验证清单 每次操作后: - [ ] `changes/INDEX.md` 与 `changes/` 子目录一一对应 - [ ] 所有交叉引用指向真实存在的文件 ## 维护协议 参考 [maintenance.md](references/maintenance.md)。
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.