← ClaudeAtlas

save-alllisted

重開機/關機/收工前的「落地同步」收尾檢查。在每個還開著的對話 session 裡各跑一次,把只活在這個對話裡、還沒寫進磁碟的東西全部外部化並驗證真的落地,然後回報「安全可重開 / 還有 X 沒同步」。當使用者說「要重開機了」「save-all」「/save-all」「準備重開」「關機前收尾」「reboot 前」「今天收工」時觸發。⚠️ 本 skill 只做落地+回報,不重開機器。 English triggers: "save-all", "about to reboot", "shutting down", "wrapping up for today", "before restart".
SanHsien/agent-astromech · ★ 0 · AI & Automation · score 62
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」——多層符號連