---
name: project-map-builder
description: 生成或更新用户指定文件夹的 PROJECT_MAP.md。适用于用户要求目录地图/项目地图/代码仓概览/文件夹级说明/更新已有 PROJECT_MAP.md 的场景。必须先询问要扫描的文件夹范围，禁止默认全仓库扫描；支持单目录或多目录（合并或分别生成）。
---

# 项目目录地图构建器

为指定目录范围生成或增量更新高信噪比的目录说明文档。

## 核心规则

- 必须让用户指定要扫描的文件夹范围，禁止默认全仓库扫描。
- 若范围过大，提醒上下文风险并让用户确认或缩小范围。
- 输出语言必须与用户当前语言一致。
- 文档文件名固定：PROJECT_MAP.md。
- 若输出位置已存在 PROJECT_MAP.md，进入更新模式（仅增量更新）。
- 若不存在，进入主动引导模式（先确认范围再新建）。

## 输出位置规则

- 单目录：将 PROJECT_MAP.md 写在该目录根。
- 多目录：
  - 先询问：生成一个合并文档，还是每个目录各生成一个。
  - 合并：写到项目根目录。
  - 分开：各目录根各写一份 PROJECT_MAP.md。

## 最少需要询问用户的问题

- 要扫描哪些文件夹？
- 如果是多个文件夹：合并成一个文档，还是分别生成多个？
- 若范围大或不明确：是否确认范围？

## 工作流

### A) 主动引导模式（不存在 PROJECT_MAP.md）

1) 确认扫描范围与输出策略。
2) 快速列出指定目录的文件清单。
3) 识别入口与关键文件（如 manifest、主入口、服务线程、UI、配置、存储、测试、文档）。
4) 只打开“关键文件”用于解释职责与关系，避免全量读取。
5) 按结构模板生成 PROJECT_MAP.md。
6) 不确定处必须显式标注（如“假设”“未确认”）。

### B) 更新模式（已存在 PROJECT_MAP.md）

1) 读取既有 PROJECT_MAP.md。
2) 仅重新扫描用户指定的目录范围。
3) 结合“当前对话上下文”与文件清单差异，定位需更新的段落。
4) 只做增量补丁更新，不进行全量重写。
5) 添加“本次更新”小节（日期 + 范围 + 变更点）。

## 扫描规则

- 优先使用快速文件列表命令（如 `rg --files` 或 `Get-ChildItem`）。
- 不要打开所有文件，只读关键文件。
- 如需更深入的细节，先向用户确认要深入的子目录。

## 文档结构模板（PROJECT_MAP.md）

可按需调整，但建议包含：

1) 项目概览（一句话）
2) 作用范围（本次扫描的文件夹列表）
3) 入口与运行链路（简化版）
4) 关键配置与存储键（如适用）
5) 目录与文件说明（按目录层级）
6) 关键模块关系/调用链
7) 风险/遗留/不确定点
8) 本次更新（仅更新模式）

## 多目录输出规则

- 合并文档：在“作用范围”列出每个目录，并为每个目录写独立小节。
- 分开文档：每个目录只描述自身范围，不做跨目录合并。

## 更新模式规则（仅增量）

- 尽量保留已有结构与表述。
- 只修改与新增/删除文件或新上下文相关的部分。
- 除非明确错误，否则不删除旧内容。
- “本次更新”记录日期、范围与变更摘要。

## 安全与清晰性

- 无法确认的行为或规则必须标注为“假设/未确认”。
- 看似遗留的文件应标注为“可能遗留”，除非用户要求，否则不建议删除。

