| name | sortspec-generator |
| description | 为 Obsidian 文件夹生成 sortspec.md 排序配置文件。
触发场景:
- 用户说"生成 sortspec"、"创建排序配置"、"为某文件夹生成 sortspec"
- 用户想要自定义 Obsidian 文件列表排序
- 用户提到 Custom Sort 插件配置
- 用户整理 Obsidian 笔记文件夹时需要排序
即使没有明确说"sortspec",只要涉及文件夹排序配置,也应使用此 skill。
|
Sortspec Generator
为 Obsidian 文件夹生成 sortspec.md 排序配置文件。
输入规格
接受以下两种输入形式:
- 完整路径:
/Users/xxx/Notes/linux
- 文件夹名称:
linux、Git 文件夹(需在当前工作目录下查找)
解析优先级:
- 用户直接给出的绝对路径
- 用户给出的相对路径(相对于当前工作目录)
- 用户提到的文件夹名称(在当前目录下模糊匹配)
边界条件处理
错误场景与输出模板
| 场景 | 输出模板 |
|---|
| 文件夹路径不存在 | ❌ 未找到目标文件夹:{路径}。请确认路径是否正确。 |
| 文件夹中没有 .md 文件 | ⚠️ 文件夹 "{文件夹名}" 中没有可排序的 .md 文件。 |
| 只有 1 个 .md 文件 | ℹ️ 文件夹中仅有一个笔记文件,无需生成排序配置。 |
| 已存在 sortspec.md | 📋 检测到已有 sortspec.md,以下是建议的新排序配置:【预览内容】\n\n是否覆盖?请确认后我将写入文件。 |
执行约束
IF 文件夹不存在 → 输出错误模板 → 停止
IF 文件夹内 .md 文件数 = 0 → 输出警告模板 → 停止
IF 文件夹内 .md 文件数 = 1 → 输出信息模板 → 停止
IF 已存在 sortspec.md → 输出预览 → 等待用户确认 → 确认后写入
ELSE → 输出预览 → 等待用户确认 → 确认后写入
默认行为:无论是否已存在 sortspec.md,都先生成预览内容展示给用户,等待确认后再写入文件。
工作流程
步骤 1:定位并扫描文件夹
使用 Glob 扫描目标文件夹下的所有 .md 文件:
- 排除
sortspec.md 本身
- 排除
assets/ 文件夹
- 排除以
. 开头的隐藏文件
步骤 2:分析文件内容
对每个文件,按以下硬性规则识别类型:
文件类型判定规则(按优先级从高到低匹配)
| 优先级 | 类型 | 判定条件(任一匹配即生效) |
|---|
| 1 | MOC/索引 | 文件名含 MOC / 索引 / 目录 / Index / index(不区分大小写) |
| 2 | MOC/索引(备选) | 正文前 80 行中 wikilink 数量 ≥ 5 |
| 3 | 入门/安装 | 标题/文件名含 安装 / 入门 / 教程 / 配置指南 / 快速开始 / Getting Started |
| 4 | 基础概念 | 标题/文件名含 基础 / 概念 / 原理 / 是什么 / 简介 / Introduction |
| 5 | 进阶/高级 | 标题/文件名含 进阶 / 高级 / 深入 / 优化 / 最佳实践 / Advanced |
| 6 | 故障排查 | 标题/文件名含 问题 / 排查 / 错误 / 解决 / FAQ / Troubleshooting |
| 7 | 其他 | 未匹配以上任何规则 |
冲突解决
- 同时命中"入门"和"MOC" → 优先判为 MOC
- 同时命中"基础"和"进阶" → 按文件名关键词出现顺序,先出现者优先
- 同时命中多个同优先级规则 → 按字母顺序排序
步骤 3:确定排序顺序
按以下优先级排列:
1. MOC/索引文件(置顶)
2. 入门/安装/教程类
3. 基础概念类
4. 进阶/高级类
5. 故障排查/问题解决类
6. 其他文件(按字母排序)
同类文件排序规则:
- 有明确依赖关系的:被依赖的在前(如"安装"在"配置"前)
- 无依赖关系的:按文件名字母顺序
步骤 4:生成 sortspec.md
标准模板(参考 /Users/zhqznc/Documents/项目/Git/sortspec.md):
---
sorting-spec: |
文件名1
文件名2
文件名3
---
格式要求:
- 文件名不带 .md 后缀
- 每个文件名单独一行,缩进 2 个空格
- 禁止使用 Custom Sort 的规则占位语法(如 default、a-z 等)
- 只允许显式列出文件名,每行一个
- 末尾的三个短横线必须保留
步骤 5:输出与写入
- 先输出预览:展示生成的 sortspec.md 内容
- 检查是否已存在 sortspec.md
完整示例
场景 1:正常生成
用户输入:
为 /Users/xxx/Notes/linux 文件夹生成 sortspec
输出:
📋 已扫描 /Users/xxx/Notes/linux,发现 9 个笔记文件。
生成的 sortspec.md:
---
sorting-spec: |
linux MOC
Ubuntu Server 安装教程
Ubuntu Server SSH 配置指南
Linux换源
linux磁盘相关的知识
linux的LVM管理
linux的文件权限
linux如何修改网络信息
Ubuntu curl SSL连接问题排查
---
✅ 已写入 /Users/xxx/Notes/linux/sortspec.md
场景 2:已有 sortspec.md
用户输入:
给 linux 文件夹重新生成 sortspec
输出:
📋 检测到 /Users/xxx/Notes/linux/sortspec.md 已存在。
建议的新排序配置:
---
sorting-spec: |
linux MOC
Ubuntu Server 安装教程
...
---
是否覆盖现有文件?请回复"是"或"确认"继续。
场景 3:文件夹不存在
用户输入:
为 /Users/xxx/Notes/nonexistent 生成 sortspec
输出:
❌ 未找到目标文件夹:/Users/xxx/Notes/nonexistent
请确认路径是否正确,或提供有效的文件夹名称。
场景 4:没有 md 文件
用户输入:
为 assets 文件夹生成 sortspec
输出:
⚠️ 文件夹 "assets" 中没有可排序的 .md 文件。
判定规则速查表
| 类型 | 关键词(标题/文件名,不区分大小写) |
|---|
| MOC/索引 | MOC、索引、目录、Index |
| 入门/安装 | 安装、入门、教程、配置指南、快速开始、Getting Started |
| 基础概念 | 基础、概念、原理、是什么、简介、Introduction |
| 进阶/高级 | 进阶、高级、深入、优化、最佳实践、Advanced |
| 故障排查 | 问题、排查、错误、解决、FAQ、Troubleshooting |
注意事项
- 保持配置简洁,不添加注释或额外说明
- MOC 判定优先级最高,确保索引文件始终置顶
- 无法识别类型的文件放入"其他"类别,按字母排序