# 创建清单列表的要求

请根据我提供的清单文件信息，创建一份「速记清单」可读取的清单列表。该列表是一个 `catalog.json` 目录文件，集中列出各 Markdown 清单的名称、语言和文件链接。

## 我会补充的信息

- 清单文件：每份清单的文件名或稳定标识、显示名称、语言、Markdown 文件地址。
- 托管位置：目录文件最终发布的地址，以及文件相对目录的位置。
- 目录名称：可选，用于描述这组清单。

如果还没有提供清单文件信息，请先询问；使用相对路径而托管位置不明确时，请询问目录与文件的相对关系。只收录我提供或已核实存在的文件；需要先创建文件时，先与我确认文件内容和地址。

## 交付内容

输出一个 UTF-8 编码的 `catalog.json` 文件。正文是可以直接解析的 JSON 对象，使用双引号、标准 JSON 数值和数组，格式化缩进为两个空格。如支持文件附件，提供可下载文件，否则直接输出 JSON 原文。

## 目录结构

根对象包含以下字段：

- `version`：整数，当前填写 `1`。
- `name`：可选，清单列表的描述性名称。
- `items`：必填数组，每项对应一个 Markdown 清单文件。

当前应用以添加地址的域名自动命名清单源，重名时追加 `_2`、`_3` 等后缀；根对象的 `name` 用于说明目录，不决定应用中的清单源名称。

## 每个清单条目的字段

- `id`：必填，非空字符串。推荐小写英文、数字和连字符，例如 `git-basics`。同一源、同一语言内唯一，后续更新时保持稳定。直接使用业务标识，例如 `git-basics`。
- `mdUrl`：必填，直接返回 Markdown 正文的 HTTP(S) 地址，或相对于 `catalog.json` 地址的文件路径。推荐以 `.md` 或 `.markdown` 结尾。链接目标应是文件正文。
- `lang`：推荐填写 `zh` 或 `en`，分别在中文或英文界面显示。省略时表示这份内容适用于两种界面。不同语言版本可共享同一个 `id`，并分别填写各自的 `lang` 和 `mdUrl`。
- `name`：推荐填写，简短的清单显示名称，例如“Git 常用命令”。
- `title`：可选，简短说明；缺省时应用使用 `name` 或 `id` 兜底。
- `icon`：可选，可直接读取的 HTTP(S) 图片地址，或相对于目录文件的图片路径。
- `sectionCount`、`cardCount`：可选，真实统计得到的非负整数。未知时省略，由应用使用默认值。

## 链接与去重规则

1. 每个条目描述一个可读取的清单文件，`items` 中至少包含一个完整条目。
2. 发布后的目录与文件都应可通过 HTTP(S) 直接读取，返回对应的 JSON 或 Markdown 正文。
3. 相对路径以目录文件所在位置解析。例如目录位于 `https://example.com/lists/catalog.json` 时，`mds/zh/git.md` 指向 `https://example.com/lists/mds/zh/git.md`，而 `/mds/zh/git.md` 指向站点根目录。
4. 将本地文件发布后的地址写入目录。需要登录的网页、仓库预览页面等，应转换为实际可读的文件正文链接。
5. 同一语言内按稳定 `id` 去重，并合并同一文件的重复条目。不同语言的文件分别保留；省略 `lang` 的条目也应与中英文条目保持标识唯一。
6. 清单展示名称与文件标识分开管理；更新显示名称时保留 `id`，以便应用继续识别收藏和缓存。

## 格式示例

以下示例中的文件路径需替换为实际文件。它们相对于 `catalog.json` 所在位置解析。

```json
{
  "version": 1,
  "name": "开发工具清单",
  "items": [
    {
      "id": "git-basics",
      "lang": "zh",
      "name": "Git 常用命令",
      "title": "工作区、提交与历史记录",
      "mdUrl": "mds/zh/git-basics.md"
    },
    {
      "id": "git-basics",
      "lang": "en",
      "name": "Git Basics",
      "title": "Working tree, commits and history",
      "mdUrl": "mds/en/git-basics.md"
    }
  ]
}
```

## 输出前自检

确认 JSON 可解析、根对象包含 `items`、每项具有非空 `id` 和 `mdUrl`、语言标记正确、标识唯一、相对链接解析到预期位置。具备联网工具时逐一验证目录和文件地址实际返回正确正文；仅在实际请求成功后声称链接“已验证”。

用户将文件发布后，在应用“设置 → 清单源 → 添加清单源”中填写 `catalog.json` 的完整地址即可。该文件只负责索引清单；各清单正文保存在对应的 Markdown 文件中。
