memory-hygienelisted
Install: claude install-skill HsuanYuLee/polaris
# Memory Hygiene
`memory-hygiene` 是 manual memory tiering:檢查 Hot / Warm / Cold,產生 demotion
candidate,並在使用者確認後搬移 memory files 與更新 index。
## Contract
這是 memory maintenance skill,不是一般 task planning。Scan / dry-run 只讀;apply 會寫
workspace memory,因此必須先有本 session 的 dry-run 結果與使用者明確確認。
## Mode Routing
| User says | Mode | Reference |
|---|---|---|
| `/memory-hygiene`, `memory-hygiene`, default | scan | `memory-hygiene-scan-flow.md` |
| `dry-run`, `full report`, `看看所有分類` | dry-run | `memory-hygiene-scan-flow.md` |
| `apply`, `搬檔`, `執行`, `migrate` | apply | `memory-hygiene-apply-flow.md` |
| `retire`, `退休`, `清掉做完的`, `過期的 memory` | retire | 見〈退休〉 |
## 退休:記進度的 memory,在它記的工作收斂之後就走
```bash
python3 .claude/skills/memory-hygiene/scripts/memory-hygiene-tiering.py retire \
--memory-dir {memory_dir} # 預覽,什麼都不動
python3 .claude/skills/memory-hygiene/scripts/memory-hygiene-tiering.py retire \
--memory-dir {memory_dir} --execute # 真的搬
```
**分層不是退休。** Hot → Warm 只是換一個資料夾躺著,索引還是指得到它。退休問的是另一
個問題:這份東西記的工作還活著嗎。`type: project` 記的是「現在做到哪」,那件工作收斂之後
它就不再是任何人的下一步了。
判定的依據是**那張單自己的狀態**(`{單}/.spine/loop-state.json` 的 `status`),不是誰記得
要來清——這一層已經有兩個手動退休到一半就停下來的資料夾。單號從 `snapshot_of` 或檔名取,
**不掃內文**:一份 handoff 會順帶提到十幾張單,拿內文去判會把還在用的錨點記錄,判成某張
早就收斂的單的殘骸。
四件事不退休,而且每一種都會被數出來印在報告上:`type` 不是 `project` 的、`pinned: true`
的(那是人的判斷,機械規則不得蓋過它)、單還在進行的、以及**找不到那張單容器的**。最後
那一種特別重要:把查不到當成做完了,退休掉的就是還在用的東西。
退休 = 搬進 `archive/` 並從索引上拿掉,**不刪檔**。搬的時候會一併把指向它的連結、以及
它自己的相對連結重新算過——換了目錄,相對路徑的起點就換了,兩邊都會變成死指標。
## Referenc