save-alllisted
Install: claude install-skill SanHsien/agent-astromech
# /save-all — 收工前的落地收尾
重開機(或單純收工)前,在**每個還開著的對話 session** 裡各跑一次。
## 為什麼需要
- Session 一關,**對話 context 就沒了**。「只活在這個對話裡、還沒寫進檔案的東西」—— 學到的教訓、剛冒出來的待辦、做到一半的工作狀態 —— 全部蒸發。
- 落地 = 把它們外部化成磁碟上的檔案。
- 而且**寫入可能靜默失敗**(工具回「成功」但檔案沒變的情況真實存在)→ **落地後一定要驗證真的寫進磁碟**。這是本 skill 的鐵則,不是可選步驟。
> 🤖 Astromech 時刻:Death Star 圖紙如果只存在 Leia 的腦子裡,Tantive IV 被攔截時就全劇終了。
> 存進 R2、彈射逃生艙 —— 資料落地,故事才能繼續。
## 動作(依序做完、逐項回報)
### 0. 校時,並把時間報成回覆第一行
**⏰ 回覆的第一行固定是** `⏰ <YYYY-MM-DD(週幾)HH:MM> <IANA 時區>` —— 例 `⏰ 2026-03-09(一)10:12 Europe/Berlin`。落地紀錄的時間別憑印象寫;時區也不可省,人與機器不在同一時區時,沒有時區的時間讀不出是哪裡的幾點。
零依賴取法(macOS/Linux/Windows Git Bash 通用,不需 python),順手把**起點**落成檔案 —— 第 5 步要讀它算耗時:
```bash
set -- $(date '+%Y-%m-%d %u %H:%M')
case $2 in 1) w=一;; 2) w=二;; 3) w=三;; 4) w=四;; 5) w=五;; 6) w=六;; 7) w=日;; *) w=;; esac
tz=${TZ:-$(readlink -f /etc/localtime 2>/dev/null || readlink /etc/localtime 2>/dev/null)}
tz=${tz#:}; tz=${tz##*/zoneinfo/}
if [ ! -f "/usr/share/zoneinfo/$tz" ] && [ ! -f "/var/db/timezone/zoneinfo/$tz" ]; then
abbr=$(date +%Z | tr -d '[:space:]'); tz="UTC$(date +%z)${abbr:+($abbr)}(非 IANA 名稱)"
fi
[ -n "$1" ] && [ -n "$w" ] && printf '⏰ %s(%s)%s %s\n' "$1" "$w" "$3" "$tz" || echo '時間取不到完整值'
M=$(mktemp "${TMPDIR:-/tmp}/save-all-XXXXXX") && date +%s > "$M" && echo "起點檔=$M" || echo '起點檔沒建成——第 5 步的耗時寫「未知」'
```
三個地方別省:① 星期用 `%u`(1–7)對照表——`date '+%A'` 給的是 locale 決定的 `Tuesday`/`星期二`,都不是「(二)」。② **一次 `date` 取齊所有欄位**,分開呼叫會在跨午夜時湊出「新日期+舊星期」這種看不出破綻的錯。③ **最後那段驗證是整段的重點**:把切出來的名字拿回時區資料庫對,對不上就退成 `UTC±hhmm`(有 `%Z` 縮寫就一併附上)並標「非 IANA」——多層符號連