| name | format-json |
| description | 将 Markdown 代码块中未格式化的 JSON 格式化为标准的美化 JSON。何时使用:当用户需要美化 .md 文件中的 JSON 数据或要求格式化 JSON 代码块时。 |
Format JSON in Markdown
功能概述
本 Skill 用于扫描 Markdown 文件中的代码块,自动将其中未格式化(压缩成一行)的 JSON 数据转换为标准缩进格式(2 空格),使其易于人类阅读。支持 ```、```json 等任意语言标识的代码块;只要代码块内容能被 JSON.parse() 成功解析,就会自动美化,解析失败则保持原样不变。
环境说明
- 本 Skill 的脚本
format-json.js 与 SKILL.md 位于同一目录。
- 下文以
<skill-dir> 指代该目录(即 skill 的安装目录)。
执行步骤
| 步骤 | 动作 | 命令/操作 |
|---|
| 1 | 获取目标文件 | 确定用户指定的 .md 文件路径;如未指定,询问用户 |
| 2 | 运行格式化脚本 | 执行 node <skill-dir>/format-json.js <文件路径> |
| 3 | 确认执行结果 | 检查控制台是否输出 "JSON 格式化完成" |
| 4 | 向用户反馈 | 报告格式化完成,并展示变更后的 JSON 代码块 |
决策逻辑
| 条件 | 执行动作 |
|---|
用户指定了 .md 文件路径 | 直接运行脚本 |
| 用户未指定文件路径 | 询问用户需要格式化的 .md 文件路径 |
| 脚本执行失败 | 按【脚本说明】手动执行格式化步骤 |
脚本说明
本 skill 目录下附带脚本 format-json.js,逻辑如下:
- 读取目标
.md 文件内容。
- 正则匹配所有代码块:
(```(?:\w+)?\n)([\s\S]*?)(\n```)。
- 对每个代码块内容执行
trim(),去除前后空白字符(包括空行)。
- 尝试
JSON.parse() 解析。
- 成功:替换为
JSON.stringify(parsed, null, 2)。
- 失败:保留原样。
- 将结果写回原文件。
错误处理
| 错误场景 | 处理方式 |
|---|
| 文件不存在 | 检查路径是否正确,提示用户提供正确的 .md 文件路径 |
| 脚本执行失败 | 检查 Node.js 环境;如环境问题则按【脚本说明】手动执行 |
| 未找到可格式化的 JSON | 向用户说明文件中不存在可被 JSON.parse() 解析的代码块 |
示例
Before
```json
{ "users": [{ "name": "Alice", "age": 30 }], "count": 1 }
```
After
```json
{
"users": [
{
"name": "Alice",
"age": 30
}
],
"count": 1
}
```