obsidian-vault-organizelisted
Install: claude install-skill Linearl/reasonix_skill_repo
# Obsidian Vault 整理与链接安全操作
在 Obsidian 仓库(vault)里移动、重命名、归档、清理文件时,保证所有链接(双向引用)不失效。本技能提供**确定性流程**:盘点 → 规划 → 执行移动 → 重写引用 → 断链校验归零 → 清理。
## 核心事实(决定一切操作方式)
1. **Obsidian 只在应用内操作(`fileManager.renameFile`,即界面里拖动/重命名)时才会自动重写全库链接**。
2. **外部移动(shell `mv`、脚本、agent 的文件工具、同步软件)不会被自动维护**:Obsidian 的 watcher 能检测到变化(文件树刷新、`vault.on('rename')` 事件),但只是"感知",不会重写任何链接——该断的链照样断。
3. 因此:**任何经 agent/脚本���行的移动,都必须显式重写引用并校验**,不得依赖 Obsidian 的 watcher。
4. 删除没有自动修复:删除前必须查反向引用(谁链接了它),删除后同步清理引用或改为归档。
5. 破坏性操作遵守安全规范:删除前先 `ls`/`find` 确认清单,批量删除走回收(trash)语义,禁止多目标 `rm -rf` 混用。
## 链接类型清单(扫描与重写必须全覆盖)
| 类型 | 语法示例 | 说明 |
|---|---|---|
| wikilink | `[[Note]]` | 目标不带扩展名 |
| wikilink 别名 | `[[Note\|显示名]]` | 只改目标部分,保留 `\|别名` |
| wikilink 锚点 | `[[Note#标题]]`、`[[Note#^blockid]]` | 只改 `#` 前的路径部分 |
| 嵌入 | `![[Note]]`、`![[img.png]]`、`![[pdf.pdf]]` | 带扩展名的附件按原样匹配路径 |
| markdown 链接 | `[文本](path.md)`、`[文本](../sub/c.md)` | 可能是 vault 绝对(`/` 开头)或相对当前文件的路径;可能有 `%20` 编码 |
| canvas 引用 | `"file": "old.md"`、`"link": "[[old]]"` | `.canvas` 是 JSON |
| properties/frontmatter | `link: "[[old]]"` 或 `link: old.md` | 普通文本扫描即覆盖 |
## 工作流
### Step 1 盘点
- 定位 vault 根:包含 `.obsidian/` 的目录。只操作 vault 内的文件。
- 读 `.obsidian/app.json` 了解链接设置:`newLinkFormat`(`shortest`/`absolute`/`relative`)与 `useMarkdownLinks`——决定新链接的写法风格,尽量沿用原风格。
- 收集全 vault 文件清单(跳过 `.obsidian/`、`.git/`、`.trash/`)。
### Step 2 规划
- 列出移动/重命名清单(旧路径 → 新路径),一次只执行一个明确目标。
- 对每个目标先查反链:grep `[[旧名]]`、旧路径、旧路径的 basename(Obsidian 按文件名解析时,改文件名会打中所有 vault 内引用)。
- 文件夹移动时,所有子路径的链接都受影响��前缀替换)。
### St