# 起草任何模块文档前，先 ls + Read 目录所有已有文件

## 触发场景

用户让我"起草 PRD"或"写模块文档"时，目标路径 `docs/modules/<module>/` 可能已经存在前序 session / 别的 AI / 用户自己留下的草稿。如果不先看，直接开聊 + Write，会：

- 跟用户在错误前提下消耗多轮对话（"我们要做什么"已被前序 PRD 定义过）
- 触发"禁止静默决策"（CLAUDE.md 不变量 2）违反风险
- 用户得手动喊停告诉你"已经有一份"

## 本次具体翻车

issue #332 「内部 app 平台」session：

- 我看到 git status 列了 `?? docs/modules/internal-app-platform/`（untracked），就**假设**目录是空的
- 实际目录里 `01-prd.md` 和 `README.md` 都是完整 Draft（前一个 AI session 留下的）
- 跟用户 8 轮决策聊完准备动笔时才 `ls` + `Read`，发现已有 PRD 方向**完全相反**（FFOA 上传 zip + 静态 + sql.js，vs 我们刚定的 Claude Code + MCP + Gitea + Node + Docker）
- 必须停下来让用户决定"推翻 / 保留 / 融合"

## 修正动作

**任何"起草 / 补 / 写"模块级文档的任务**，开局第一步必须执行：

```bash
ls docs/modules/<module>/
```

并对每一个存在的文件 `Read` 一遍。即使：

- git status 显示目录是 untracked（untracked ≠ 空，里面可能有未提交的 draft）
- 用户口头说"我们来开始这个模块"（用户可能忘了已经有草稿）
- 用户说"开新分支了"（新分支可能 cherry-pick 过别人的 draft）

只有当 `ls` 确认目录不存在或确实为空，才能从零开聊。

## 为什么不直观

- "git status untracked" 给人的心智暗示是"全新、没东西"——但 untracked **只代表 git 不追踪**，文件内容可能很丰富
- 模块目录可能在更早的 session 里被 `mkdir -p` 顺手建过，留下 placeholder 文件
- AI session 不共享记忆，前一个 AI 写的草稿对当前 session 来说是黑盒——只能靠 Read

## 适用范围

不限于本项目。任何："Read 目标目录现状成本极低（一两个 tool call），代价是回避一次性偏离用户实际需要"的场景，都该把"先看现状"作为开局动作。
