# PushNotification

從目前的 Claude Code 工作階段傳送桌面通知。如果已連接遠端控制，也會同步推送到使用者的手機，將其注意力從當前所在的地方拉回工作階段。

## 使用時機

- 使用者可能已離開終端機，而一項耗時較長的任務已完成
- 建置、測試或部署已完成，結果已可供檢視
- 工作進行到需要使用者輸入才能繼續的決策點
- 發生了你無法自主解決的錯誤或阻塞
- 使用者明確要求在特定任務或條件達成時通知他們

## 何時不應使用

不要在任務執行過程中發送例行進度更新通知，也不要在回覆使用者剛提問、顯然仍在等待回覆的問題時發送通知。短任務完成時不要通知——若使用者剛提交並正在等待，通知毫無價值，反而會削弱對後續通知的信任。強烈建議預設不發送。

## 參數

- `message`（字串，必填）：通知內文。請保持在 200 個字元以內；行動裝置作業系統會截斷過長的字串。以使用者會採取行動的內容開頭："build failed: 2 auth tests" 比 "task complete" 更有用。
- `status`（字串，必填）：固定設為 `"proactive"`。這是固定標記，不可更改。

## 範例

### 範例 1：長時間分析完成後傳送通知

使用者請求了一次全倉庫依賴審計，執行耗時數分鐘，使用者已離開。報告就緒後：

```
message: "依賴審計完成：lodash、axios、jsonwebtoken 中發現 3 個高危 CVE。報告見 audit-report.txt"
status: "proactive"
```

### 範例 2：自主工作過程中標記決策點

在多步驟重構中，發現兩個模組的介面存在衝突，無法在沒有設計決策的情況下合併：

```
message: "重構已暫停：AuthService 與 UserService 的 token 介面衝突，需要您的決策後才能繼續。"
status: "proactive"
```

## 注意事項

- 預設**不發送**。無論使用者正在做什麼，通知都會打斷他們。應將其視為一種成本，必須由資訊的價值來證明其合理性。
- 以可採取行動的內容開頭。前幾個字應告訴使用者發生了什麼，以及他們需要做什麼——而非籠統的狀態標籤。
- 將 `message` 保持在 200 個字元以內。行動裝置作業系統會截斷過長字串，可能切掉末尾最重要的部分。
- 若結果顯示推送因未連接遠端控制而未發送，這是預期行為。無需重試或後續處理；桌面通知仍會在本地觸發。
- 避免濫發通知。若頻繁為瑣事發送通知，使用者會開始忽略它們。請將此工具保留給使用者極可能已離開、且確實需要立即得知結果的時刻。
