BMAD-METHOD/bmad-core/tasks/shard-doc.md

188 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 由 BMAD™ Core 驱动 -->
# 文档分片任务
## 目的
- 根据二级章节将一个大文档分割成多个小文档
- 创建一个文件夹结构来组织分片后的文档
- 保持所有内容的完整性包括代码块、图表和markdown格式
## 主要方法使用markdown-tree自动进行
[[LLM: 首先,检查{root}/core-config.yaml中的markdownExploder是否设置为true。如果是则尝试运行命令`md-tree explode {input file} {output path}`。
如果命令成功,请通知用户文档已成功分片并停止 - 不要再继续。
如果命令失败特别是出现命令未找到或不可用的错误请通知用户“markdownExploder设置已启用但md-tree命令不可用。请
1. 使用以下命令全局安装@kayvan/markdown-tree-parser`npm install -g @kayvan/markdown-tree-parser`
2. 或者在{root}/core-config.yaml中将markdownExploder设置为false
**重要提示:在此处停止 - 在采取上述操作之一之前,不要继续手动分片。**
如果markdownExploder设置为false请通知用户“markdownExploder设置当前为false。为了获得更好的性能和可靠性您应该
1. 在{root}/core-config.yaml中将markdownExploder设置为true
2. 使用以下命令全局安装@kayvan/markdown-tree-parser`npm install -g @kayvan/markdown-tree-parser`
我现在将继续手动分片过程。”
然后仅在markdownExploder为false时才继续下面的手动方法。]]
### 安装和使用
1. **全局安装**
```bash
npm install -g @kayvan/markdown-tree-parser
```
2. **使用explode命令**
```bash
# 对于PRD
md-tree explode docs/prd.md docs/prd
# 对于架构
md-tree explode docs/architecture.md docs/architecture
# 对于任何文档
md-tree explode [source-document] [destination-folder]
```
3. **它的作用**
- 按二级章节自动分割文档
- 创建正确命名的文件
- 适当地调整标题级别
- 处理所有带有代码块和特殊markdown的边缘情况
如果用户已安装@kayvan/markdown-tree-parser请使用它并跳过下面的手动过程。
---
## 手动方法(如果@kayvan/markdown-tree-parser不可用或用户指示使用手动方法
### 任务说明
1. 识别文档和目标位置
- 确定要分片的文档(用户提供的路径)
- 在`docs/`下创建一个与文档同名的新文件夹(不带扩展名)
- 示例:`docs/prd.md` → 创建文件夹 `docs/prd/`
2. 解析和提取章节
关键的代理分片规则:
1. 读取整个文档内容
2. 识别所有二级章节(## 标题)
3. 对于每个二级章节:
- 提取章节标题和直到下一个二级章节的所有内容
- 包括所有子章节、代码块、图表、列表、表格等。
- 要特别小心:
- 围栏代码块(``` - 确保捕获完整的块,包括闭合的反引号,并考虑到实际上是围栏部分示例一部分的潜在误导性二级标题
- Mermaid图表 - 保留完整的图表语法
- 嵌套的markdown元素
- 可能在代码块中包含##的多行内容
关键使用能够理解markdown上下文的正确解析。代码块内的##不是章节标题。]]
### 3. 创建单个文件
对于每个提取的章节:
1. **生成文件名**:将章节标题转换为小写短横线格式
- 删除特殊字符
- 用短横线替换空格
- 示例:“## Tech Stack” → `tech-stack.md`
2. **调整标题级别**
- 在分片的新文档中,二级标题变为一级(# 而不是 ##
- 所有子章节级别减1
```txt
- ### → ##
- #### → ###
- ##### → ####
- 等等。
```
3. **写入内容**:将调整后的内容保存到新文件中
### 4. 创建索引文件
在分片文件夹中创建一个`index.md`文件,该文件:
1. 包含原始的一级标题和第一个二级章节之前的任何内容
2. 列出所有带有链接的分片文件:
```markdown
# 原始文档标题
[原始引言内容,如果有的话]
## 章节
- [章节名称 1](./section-name-1.md)
- [章节名称 2](./section-name-2.md)
- [章节名称 3](./section-name-3.md)
...
```
### 5. 保留特殊内容
1. **代码块**:必须捕获完整的块,包括:
```language
内容
```
2. **Mermaid图表**:保留完整的语法:
```mermaid
graph TD
...
```
3. **表格**保持正确的markdown表格格式
4. **列表**:保留缩进和嵌套
5. **内联代码**:保留反引号
6. **链接和引用**保持所有markdown链接的完整性
7. **模板标记**:如果文档包含{{占位符}},请完全保留
### 6. 验证
分片后:
1. 验证所有章节都已提取
2. 检查没有内容丢失
3. 确保标题级别已正确调整
4. 确认所有文件都已成功创建
### 7. 报告结果
提供摘要:
```text
文档分片成功:
- 来源:[原始文档路径]
- 目的地docs/[文件夹名称]/
- 创建的文件:[数量]
- 章节:
- section-name-1.md“章节标题1”
- section-name-2.md“章节标题2”
...
```
## 重要说明
- 切勿修改实际内容,只调整标题级别
- 保留所有格式,包括重要的空白
- 处理包含##符号的代码块等边缘情况
- 确保分片是可逆的(可以从分片中重建原始文件)