| name | trip |
| description | 旅行進度總管:偵測目前進度,告訴使用者下一步該做什麼,並用 AskUserQuestion 引導點擊執行。**這是整套 trip skills 的萬用入口** — 使用者只要記這一個。當使用者說以下任一觸發詞時就執行:『下一步』『接下來』『繼續』『現在要做什麼』『進度怎樣』『進度』『旅行進度』『規劃旅行』『要規劃旅行』『開始規劃』『不知道從哪開始』『trip』『切換行程』『換一個行程』。也接受使用者直接打 `/trip`。不確定要跑哪個 trip-* skill 時也用這個。 |
| user-invocable | true |
/trip — 旅行進度總管
使用與使用者相同的語言回覆(預設繁體中文)。
不知道現在該做什麼?打 /trip 就對了。這個資料夾可能有多個不同行程(1-布達佩斯-2026-04-24/、2-日本-2026-10-03/…),/trip 會:
- 先判斷「目前在規劃哪一個行程」
- 用清楚的人話告訴使用者這個行程的進度、下一步打什麼指令
流程
1. 解析「目前在規劃哪一個行程」(永遠先做這一步)
- 用
Bash ls -1d [0-9]*-*-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/ 2>/dev/null 列出所有行程資料夾(命名規格:{編號}-{地點}-{YYYY-MM-DD})
- 用 Read 嘗試讀
./current-trip(純文字指標檔,內容是當前行程資料夾名)
依下列分支處理:
1a. 指標檔存在、內容有效(指向實際存在的資料夾)
→ 直接採用該資料夾為「當前行程」,進下一步。
1b. 指標檔不存在 / 內容空白 / 指向不存在的資料夾
且有其他現有行程資料夾 → 用 AskUserQuestion 讓使用者選:
- 題目:「要繼續規劃哪一個行程?」
- 選項:列出每個現有資料夾(用「地點 — 開始研究 YYYY-MM-DD」這種白話顯示,不要秀技術術語)
- 多一個選項「🆕 開始規劃新行程」
使用者選完後:
- 選了某個既有行程 → 用 Write 把該資料夾名寫入
./current-trip,進下一步
- 選了「🆕 開始規劃新行程」→ 直接跑
/trip-plan,skill 結束
且沒有任何現有行程資料夾 → 代表這是全新工作區、還沒規劃過任何行程。
靜默執行舊版殘留偵測(不要跟使用者解釋在檢查什麼,見根目錄 CLAUDE.md「內部檢查必須靜默執行」)。用這個精確命令避免誤判:
grep -q '<!-- TRIP_METADATA_START -->' CLAUDE.md 2>/dev/null && echo HAS_MARKER
[ -d research ] && [ -f final-itinerary.md ] && echo HAS_LEGACY_FILES
⚠️ 不要只用 grep TRIP_METADATA_START CLAUDE.md(會誤中文件裡提到這個字串的說明段落)。必須帶 <!-- ... --> HTML 註解形式才是真 marker。
- 上述任一回傳
HAS_MARKER 或 HAS_LEGACY_FILES → 視為有舊版殘留 → 告訴使用者「偵測到舊版格式的旅行檔案放在根目錄,新版改成每個行程一個獨立資料夾。要幫你搬進 1-{舊目的地}-{今日}/ 嗎?」用 AskUserQuestion 問是否要搬遷,答「要」就把舊檔搬進新資料夾並寫指標檔
- 都沒有 → 進下面「還沒開始規劃」流程。不要跟使用者講「我檢查過 X Y Z 都沒有」,靜默跳過
2. 讀取當前行程的進度
令 $TRIP = 步驟 1 解析出來的資料夾名。依序檢查:
| 編號 | 檔案 |
|---|
| A | ./$TRIP/trip-meta.md 存在(表示已跑過 /trip-plan 建立該行程) |
| B | ./traveler-profile.md 存在於根目錄(旅行者畫像,所有行程共用) |
| C | ./$TRIP/research/ 目錄底下任一 .md 檔案(agent 報告) |
| D | ./$TRIP/final-itinerary.md 或 ./$TRIP/overview.md(行程表) |
| E | ./$TRIP/review.md(審查報告) |
| F | ./$TRIP/checklist.md(行前清單) |
3. 讀取行程概要
如果 A 條件成立,讀 ./$TRIP/trip-meta.md,取出「狀態」「行程概要」(目的地、日期、天數、旅伴)。
4. 判定當前進度與下一步
依下表判斷狀態(從上往下,第一個符合的就是答案):
| 條件 | 進度 | 下一步指引 |
|---|
A 條件成立且「狀態」為 aborted | 已放棄 | 告訴使用者「這份規劃先前已放棄。若要重新開始請打 /trip-plan;若要續用就改 ./$TRIP/trip-meta.md 的狀態為 active」 |
| A 條件不成立 | 還沒開始規劃 | 打 /trip-plan 開始規劃這趟旅行 |
| A 條件成立、B 不存在 | 規劃中斷 | 打 /trip-plan 接續完成規劃(畫像還沒存) |
| A 條件成立、B 存在,C 不存在 | 已規劃,未研究 | 打 /trip-research 研究目的地 |
| C 存在,D 不存在 | 已研究,未排程 | 打 /trip-go 排出每日行程 |
| D 存在,E 不存在 | 已排程,未審查 | 打 /trip-review 自動檢查行程錯誤 |
| E 存在,F 不存在 | 已審查,未準備清單 | 打 /trip-pack 生成行前準備清單(建議出發前 1-2 週再跑) |
| 全部存在 | 規劃完成 | 旅途中直接跟我聊(記帳、找替代景點、查資訊都行)。出發前可以再跑一次 /trip-pack 生成最新清單 |
5. 顯示輸出
所有輸出都要以這一行開頭(當前行程已鎖定時)
📍 目前在規劃 **{TRIP 資料夾名}**
例如:📍 目前在規劃 **2-日本-2026-10-03**。
如果步驟 1 是「全新工作區、還沒任何行程」,就不顯示這一行(因為沒有當前行程)。
如果還沒開始規劃(A 條件不成立,或全新工作區)
直接告訴使用者並彈 AskUserQuestion,不要做任何位置檢查、不要警告、不要提 dev repo / template / Use this template 之類概念。
這個資料夾還沒有任何行程,可以從這裡開始規劃 ✨
接著用 AskUserQuestion 問「要現在開始規劃旅行嗎?」選項:
- 「好,開始」(Recommended)— 跑
/trip-plan 開始規劃
- 「先不要」— 暫時不規劃,稍後再來
不要做以下事情(避免守門員語氣):
- 不要檢查當前路徑是不是「家目錄」「Downloads」「Desktop」這類「不適合」的位置 — 信任使用者,他既然在這個資料夾打
/trip 就是有意這樣做
- 不要偵測 README、scripts/、docs/ 之類「程式碼專案」特徵
- 不要提到「Use this template」「dev repo」「開發資料夾」「比較乾淨」這類概念
- 不要建議使用者「先建一個專屬資料夾」 — 他自己會判斷
如果已經有進度
先輸出進度條(不要重複 trip-meta.md 全部內容):
📍 目前在規劃 **{TRIP 資料夾名}**
{目的地} · {日期範圍} · {天數} · {旅伴}
進度:✅ 規劃 · ✅ 研究 · ⏳ 排程 · ⬜ 審查 · ⬜ 行前準備
進度標記說明:
接著依狀態用 AskUserQuestion 詢問是否執行下一步:
| 狀態 | 問題 | Recommended 選項 | 另一選項 |
|---|
| 規劃中斷(B 不存在) | 「要接續完成規劃嗎?」 | 接續(跑 /trip-plan) | 先不要 |
| 已規劃,未研究 | 「要開始研究目的地嗎?」 | 開始研究(跑 /trip-research) | 先不要 |
| 已研究,未排程 | 「要排出每日行程嗎?」 | 排行程(跑 /trip-go) | 先不要 |
| 已排程,未審查 | 「要自動檢查行程錯誤嗎?」 | 檢查(跑 /trip-review) | 先不要 |
| 已審查,未準備清單 | 「要生成行前清單嗎?」 | 生成(跑 /trip-pack) | 出發前 1-2 週再說 |
| 已放棄(aborted) | 「這份規劃先前已放棄,要怎麼處理?」 | 重新開始(跑 /trip-plan) | 改 trip-meta 狀態回 active 續用 |
如果是「規劃完成」狀態(全部存在),不彈 AskUserQuestion,標示全部 ✅ 並補一句:
規劃全部跑完了。旅途中你可以直接跟我聊:
- 「午餐花了 25 歐元」→ 自動記帳
- 「下雨了,原本要去的地方去不了」→ 找替代方案
- 「下午多 2 小時空檔」→ 推薦附近行程
若倉庫有多個行程,在最後附加切換/新增入口
不論當前狀態為何,只要現有行程資料夾 ≥ 2 個(或使用者想開新行程),在 AskUserQuestion 問完下一步後,同一輪對話的文末附一行提示:
想切到其他行程或新增一個行程?跟我說「切換行程」或「新增行程」就好。
使用者下一輪說「切換行程」→ 回到步驟 1 的 1b 分支邏輯讓他選。
使用者下一輪說「新增行程」→ 直接跑 /trip-plan(skill 會處理「建立新資料夾」的分支)。
6. 使用者選了「好」之後
直接呼叫對應的 skill。不要再問一次「確定嗎」。
7. 不要做的事
- 不要在使用者還沒回答 AskUserQuestion 前就執行下一個 skill。
- 不要重複一遍 trip-meta.md 的所有內容。只摘要關鍵資訊(目的地、日期、進度)。
- 不要長篇大論。進度條 + 一個 AskUserQuestion 就好。
- 不要把進度檢查對到根目錄(例如
./research/、./final-itinerary.md)— 這些都要對到 ./$TRIP/...,因為檔案在行程資料夾裡。