session-maplisted
Install: claude install-skill HsuanYuLee/polaris
# session-map — 一個 session 拿著地圖,其他的做事
多個 session 同時活著的時候,**沒有人知道全貌**。忘記關掉的吃著整台機器;兩個對同一棵樹
動手害彼此重跑;發號施令的那一個不知道別人手上有什麼,於是重複開單。
這支 skill 做三件事:**畫地圖**、**指揮**、**問人的時候問得清楚**。
## 一、地圖
```bash
python3 .claude/skills/session-map/scripts/session-map.py
python3 .claude/skills/session-map/scripts/session-map.py --json
```
**它不問任何人。** 答案全部讀得出來——`~/.claude/sessions/{pid}.json` 是完整的登錄,
每一份帶著 `name`、`pid`、`cwd`、`sessionId`、`messagingSocketPath`。逐個問一輪要花掉每個
peer 一輪 context,而那一輪的答案還不一定比它自己剛寫下的話新。
**「它在做什麼」是它自己說的話**,從那個 session 的 transcript 讀最後一則它說的話。不從
名字、路徑或進程資訊推一句——**推出來的那一句長得跟讀到的一模一樣**,而它會在最需要真話的
時候是錯的。
**transcript 在哪:`cwd` 把 `/` 和 `.` 都換成 `-`。** 只換 `/` 的話,家目錄帶點的機器
(`hsuanyu.lee` 這種)**一筆都對不到**——而輸出看起來只是「大家都讀不到」,不像壞掉。
### 讀不到的留在地圖上
一列的身分讀得到、而它在做什麼讀不到時,**那一列還在**,並且說出讀不到的是哪一份東西。
它不從清單上消失,也不填一個猜的。至少三種讀不到,各自說各自的話:
| 讀不到什麼 | 地圖上長什麼樣 |
|---|---|
| transcript 檔案不存在 | 指名那個路徑 |
| transcript 在,但裡面沒有它說過的話 | 指名那個路徑,並說出是「沒說話」不是「檔案不見」 |
| 登錄檔本身讀不動、或登錄目錄不存在 | 說出這不是「沒有 session」 |
**一個安靜的第三態,下一次就會被當成查過了。**
### 名字與進程來自同一次查表
每一列同時帶得出「要跟它講話用哪個名字」與「它是這台機器上的哪一個進程」,兩者出自同一份
登錄檔。任何一列缺其中一項,那一列自己說出它缺什麼。
### 不在這台機器上的分開放
登錄裡 `pidDomain` 跟這台機器對不上的那些**單獨列出來**,而且**永遠不是「該關掉」的候選**
——這裡關不掉它們,把它們列成候選等於教人去做一件做不到的事。
## 二、指揮
地圖之上做兩件事,兩件都**只出建議,不出動作**。
### 該關哪些
產出一份清單,每一項帶著憑什麼這樣認為——閒置多久、它最後說的話是不是「做完了」。
**執行關閉的是人。**
**這支 skill 不自己關掉任何 session。** 真的要動手的話(`kill`),它在動手之前停下來等
那個人自己說的話,並把停下來的理由記下來。理由是:關掉一個 session 會丟掉它還沒寫進磁碟的
工作,而那件事沒有復原鍵。
### 誰去做哪一件
這支只回答**哪一個 session 去做**。它不回答一件工作要不要立案、現在該在哪一站、什麼時候停
——那些在 `driving