Claude Skill

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)。

LLM Mart · 0 points · 8 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download simpleeve-eo-skills-eo-doc-manager-e6f1112.zip · 9 KB
Part of simpleeve/eo-skills — 16 skills

Install

skills CLI npx skills add https://github.com/SimpleEve/eo-skills/tree/main/eo-doc-manager
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install simpleeve-eo-skills@llmmart
Git 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,回归纯维护职责)。

路由规则:

  1. 明确命令 → 直接路由
  2. 自然语言 → 按触发词匹配
  3. 无法判断 → 列出可用命令

目录结构(代码侧 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 内部调用。直接调用时:

  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 §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/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.

No comments yet.

Reviews (0)

No reviews yet.

Related