vault-lintlisted
Install: claude install-skill lllloo/obsidian-memory
# Vault Lint
健檢即整理:掃出的問題**由 agent 自主修補**——機械項照規則修,語意項(矛盾/明確事實錯誤)與 Ingest 同權限,有把握就直接修、需要查證就自己查證再修;`raw/` 維持零寫入(write-once)。只有**真正需要使用者的決策**才寫進待處理清單 `schema/BACKLOG.md`(2026-07-17 使用者拍板,取代原「語意項只報告」制):
**語意層只抓「壞了」、不抓「能更好」**(2026-07-22 使用者拍板):只報矛盾與明確事實錯誤;交叉引用缺口(含單向斷鏈)、過時主張(除非構成矛盾)、措辭一律不報。理由是「能更好」永遠找得到,報了就永遠改不完——判準見 `references/semantic-review.md`。交叉引用改在 ingest 新頁時建立,不靠例行健檢回頭挖。
- 需要使用者才有的資訊(原始記錄、當時意圖)才能核實的項;
- 正解會動到 `raw/` write-once、schema 憲法檔(`CLAUDE.md`/`SYSTEM-DESIGN.md`)或 skill 本身的項;
- 使用者曾表態過方向、再動會推翻其決定的項。
清單放 `schema/`(agent 每輪讀回來約束自身行為的操作狀態),不放 `feeds/`(agent 不讀區)。
**手動與排程共用同一條流程,無模式分支、無參數差異。** 本 skill **不執行任何 git 動作**(不 commit、不 push、不開 PR),因此無人值守時不會卡在需要人拍板的守門上。跑完只留檔案變更;要不要落成 commit/PR 由呼叫端決定——手動時由使用者指示,排程時寫進該排程自己的 prompt,**不由本 skill 代行**。
## 產出
- 待處理清單 + 設定:`schema/BACKLOG.md`(單一持久檔,去重後留未解決項,解決即移除)。**不產快照報告檔,不寫入 `feeds/`。**
`BACKLOG.md` 結構:
- `## 設定` — `semantic_days`、`semantic_page_cap`、`semantic_utc_offset`。
- `## 待你決定` — **只收真正需要使用者的決策項**(判準見上),逐條一行(帶頁面、一句話、首見日)。可自主修的項不進此節——直接修掉。
- `## Agent 已判` — agent 自主判斷**維持現狀/待觸發**的項(反過度工程判斷暫不開頁、動既有 `raw/` 違反 write-once、不值得例行動作等)。這節是**去重錨點**,不是待辦:去重時視為既有項、不重洗回 `待你���定`,只有該項所依據的頁/基礎實際變動才重新評估。注意「修得掉但還沒修」不屬此節——那種當輪就修。
- `## 已婉拒` — 使用者退回的項;每條記所在段落錨,之後不重提。
**沒有心跳/執行狀態區,且無發現時本檔零變更。** 「上次何時跑過」是呼叫端的營運狀態(排程器的執行紀錄),不是 vault 的知識狀態,寫進來只會讓每輪都產生 diff——**安靜的一輪必須安靜到檔案層級**,呼叫端才能靠「有無變更」判斷要不要開 PR。掃描異常(`scan-error`)不靠心跳欄位傳達,改為進 `待你決定`(見主流程第 4 步),它本來就是該讓人看到的「有事」。
**寫入本檔時,頁面引用一律用反引號**(如 `` `wiki/某頁.md` ``)**,不得用 wikilink**——`schema/` 在死連結掃描