command-postlisted
Install: claude install-skill HsuanYuLee/polaris
# 指揮官模式 — 圖、下令、交棒、往上請示
多個 session 同時活著的時候,**沒有人知道全貌**。忘記關掉的吃著整台機器;兩個對同一棵樹
動手害彼此重跑;發號施令的那一個不知道別人手上有什麼,於是重複開單。
這支 skill 做四件事:**畫地圖**、**指揮**(一對一派工,或指派幾個 session 互審)、
**交棒**、**問人的時候問得清楚**。
**指揮官是一個角色,不是一個 session。** 狀態全部住在檔案裡——session 登錄、每個 session
自己寫的宣告、單樹的輪次狀態、指揮官日誌。任何讀了那幾份檔的 session 都接得起來,所以換
一個不需要交接會議,只需要照〈四、交棒〉那一節走。
**目錄名與腳本檔名仍然是 `command-post`。** 它是識別字:`POLARIS-ACTOR-IDENTITY` 那一行
指著那條路徑,改名會讓每一張單的 `holders[]` 從下一次寫入起推不出是誰。名字給人讀,路徑
給機器讀,兩者不必是同一個字。
## 一、地圖
```bash
python3 .claude/skills/command-post/scripts/command-post.py
python3 .claude/skills/command-post/scripts/command-post.py --json
```
**它不問任何人。** 答案全部讀得出來——`~/.claude/sessions/{pid}.json` 是完整的登錄,
每一份帶著 `name`、`pid`、`cwd`、`sessionId`、`messagingSocketPath`。逐個問一輪要花掉每個
peer 一輪 context,而那一輪的答案還不一定比它自己剛寫下的話新。
**「它在做什麼」是那個 session 自己寫下的宣告**,不是它 transcript 裡最後一則說的話,
也不從名字、路徑或進程資訊推一句——**推出來的那一句長得跟讀到的一模一樣**,而它會在最需要
真話的時候是錯的。
每個 session 自己寫自己的那一行,只寫自己的:
```bash
python3 .claude/skills/command-post/scripts/command-post.py --declare \
--session-id <自己的 sessionId> \
--line '哪條線' --browser '有/沒有' \
--holding '接的是什麼' --blocked-on '現在卡在哪;沒卡就寫「沒有」' \
--tickets-opened '開了哪幾張單給誰'
```
**`--line` 回答「你是哪條線」**:接手的指揮官看得到有十個 session,看不出哪一個是 review、
哪一個在跑 DP——這一格補的就是那個洞,不另開一份角色表。**`--browser`** 是因為瀏覽器有沒有
授權決定了一條線做得動哪些事,而它不寫下來就只活在某一則訊息裡。五樣缺一就 exit 2;舊的
宣告沒有這兩格照樣讀得出來,那一格會說出是缺。
每一次宣告同時在指揮官日誌落一筆(見〈三〉〈指揮官日誌〉)——「某條線上線了」本身就是
接手的人要知道的事件。
### 為什麼是宣告,不是最後一則話
兩個理由,第二個才是真正的那一個。
一、最後一則話是「它剛好講到哪」,不是「它在做什麼」。
二、**讀不完,而且差的是數量級。** 2026-08-