Community程式設計與開發github.com

jsahani/already-told-you

從「Already Told You」報告的 D 區選取一個重複性工作,與你協作設定自動化——可能是純技能、技能加應用程式連線(MCP),或是排程執行——所有流程在送出、發布、付款或刪除前,都必須經過一次人工核准。

already-told-you 是什麼?

這個「Already Told You」技能旨在幫助使用者逐步將重複性工作自動化,流程完全透明且由使用者主導。它首先讀取最新的 `findings.json` 報告,從 D 區列出工作項目,讓使用者選擇一個來自動化。接著,它會與使用者確認工作流程(觸發條件 → Claude 執行動作 → 輸出 → 核准點),並根據需求選擇最輕量的自動化方案:純 `skill`(手動觸發)、`skill + MCP`(需要連接外部應用程式)、`schedule (desktop)`(排程在桌面上執行)、`schedule (routine)`(排程在雲端執行)、或是 `schedule (cron)`(透過 macOS launchd 或 Linux cron 執行)。 在建立技能時,它會引用報告 C 區的草稿或重新撰寫 SKILL.md,並透過安裝腳本安裝到指定位置(全域或專案)。任何會送出、發布、付款或刪除的操作,技能都會在最後一步準備好草稿或預覽,然後停下來等待使用者確認;排程執行則只會寫入草稿,絕不自動發送。最後,它會總結節省的時間並說明如何關閉自動化。此技能支援 Claude Code 桌面版、claude.ai 以及 macOS/Linux 環境,涵蓋從本機到雲端的各種自動化場景。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jsahani/already-told-you/tree/HEAD/skills/automate

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Already Told You:自動化一個工作

一次只處理一個工作,使用白話中文,每個步驟都經過使用者確認。在獲得「是」之前,不會在 ~/already-told-you/ 之外建立或修改任何內容。

  1. 挑選工作。 讀取最新的 ~/already-told-you/<YYYY-MM-DD>/findings.json(使用 Glob 搜尋)。若無此檔案,顯示「請先執行 /already-told-you:run」並停止。將 D 區顯示為編號列表:標題、目前每週時數 → 自動化後分鐘數、建議的 how。如果 $ARGUMENTS 中已指定工作名稱,則使用該名稱;否則詢問使用者要處理哪一個。
  2. 確認工作樣貌。 重新敘述該工作為:觸發條件(何時/誰啟動) → Claude 做什麼 → 輸出什麼 → 人工核准點在哪裡。使用下方的選項確認自動化類型;如果使用者偏好其他類型,可以更改。只詢問缺少的資訊(哪個資料夾、哪個應用程式、什麼時間、輸出應該去哪裡)。
  3. 建立技能。 每個自動化都透過一個技能執行。如果報告 C 區已為此工作草擬技能,則從 <report>/skills/<name>/SKILL.md 開始;否則在該處撰寫新的草稿,遵循相同規則(frontmatter 中的 name + description 引用使用者的話語;編號步驟;最後一步 = 核准)。顯示草稿,與使用者一起修改,然後使用捆綁的安裝程式安裝,切勿自行寫入技能資料夾:詢問安裝位置(~/.claude/skills = 所有專案,${CLAUDE_PROJECT_DIR}/.claude/skills = 此專案),執行 python3 ${CLAUDE_PLUGIN_ROOT}/scripts/install_skill.py --check --src <report>/skills/<name> --dest <dest>,獲得同意後再執行 python3 ${CLAUDE_PLUGIN_ROOT}/scripts/install_skill.py --install --src <report>/skills/<name> --dest <dest>(此腳本會請求許可,且除非使用者同意使用 --force,否則絕不覆蓋現有技能)。 核准步驟: 如果該工作會傳送、發布、張貼、付款或刪除,技能會準備好結果並停止。排程執行沒有人可以詢問,因此在排程工作中,技能只會將草稿寫入資料夾(或寫入應用程式內的草稿,例如電子郵件草稿),使用者稍後再核准。絕不讓排程工作執行傳送動作。
  4. 連線/排程 - 只執行所選類型需要的動作:
    • skill + MCP:說出工作需要的應用程式連線。如果尚未連線,告知使用者如何連線(從應用程式說明文件執行 claude mcp add ...,使用 /mcp 檢查,或使用 claude.ai 連接器)。絕不將密碼貼入檔案或對話中;API 金鑰應屬於使用者自己的密碼儲存庫或環境變數。
    • schedule (desktop):提供逐步點擊說明,用於 Claude Code Desktop 應用程式 → Routines → 新增本機任務,包含要貼上的確切提示(/<skill-name> 加上任何細節)、排程時間、專案資料夾以及權限選擇。提醒:此任務只有在應用程式開啟且電腦未休眠時才會執行。
    • schedule (routine):提供要輸入的確切指令,例如 /schedule every Monday at 9am, run /<skill-name> ...,並說明此任務會在雲端使用 GitHub 儲存庫的乾淨副本及連接器執行——不存取本機檔案。
    • schedule (cron) 在 macOS 上:填寫下方的 launchd 範本。使用 command -v claude 找出 claude 的路徑(執行前先詢問)。先將填好的 plist 寫入 ~/already-told-you/automation/<label>.plist 並顯示給使用者。獲得同意後,將其複製到 ~/Library/LaunchAgents/ 並使用 launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/<label>.plist 載入(每個指令都會請求許可)。其中的 --allowedTools 只能列出該工作所需的工具——絕不使用 --dangerously-skip-permissions。在 Linux 上,顯示對應的 crontab 行,讓使用者使用 crontab -e 自行新增。
  5. 試執行一次(如果使用者同意):立即手動執行該技能,並顯示它產生的草稿。
  6. 完成。 總結設定了什麼、核准點在哪裡、節省的時間(報告中的目前每週時數 → 自動化後分鐘數),以及如何關閉自動化。

自動化選項(依據 code.claude.com/docs,2026 年 10 月版本——僅使用這些選項)

選擇最能完整完成工作且最輕量的選項。how 欄位的值可以是:skill、skill + MCP、schedule (desktop)、schedule (routine)、schedule (cron)。

  1. skill - 每次執行的工作流程都相同,由使用者手動啟動。安裝在 ~/.claude/skills/<name>/(所有專案)或 <project>/.claude/skills/<name>/(單一專案)的技能,將原本需要花 15 分鐘說明和引導的過程,簡化為一個 /<name> 指令。報告 C 區通常也會為此草擬技能。
  2. skill + MCP - 工作流程需要另一個應用程式(電子郵件、日曆、Notion、Slack、資料庫……)。技能透過 MCP 伺服器呼叫該應用程式。使用者使用 claude mcp add ... 或 /mcp 來連線,或使用 claude.ai 連接器。只有當歷史記錄顯示使用者有使用特定應用程式時,才指定它。
  3. schedule (desktop) - 需要定時執行且需要本機檔案。Claude Code Desktop 應用程式中的桌面排程任務(Routines 頁面 → 新增本機任務)會在指定的時間和頻率啟動新的工作階段。在使用者的機器上執行,只有在應用程式開啟且電腦未休眠時才會執行;權限為每個任務分別設定。
  4. schedule (routine) - 需要定時執行但不需要本機檔案(它可以在 GitHub 儲存庫或透過連接器運作)。Routines 在 Anthropic 的雲端執行,即使筆電關閉也能運作;在 Claude Code 中使用 /schedule 建立(例如 /schedule every Monday at 9am, ...),或在 claude.ai/code/routines 建立。研究預覽版,適用於 Pro/Max/Team/Enterprise 方案,最小間隔為一小時。
  5. schedule (cron) - 在沒有 Desktop 應用程式時的備用方案:macOS 的 launchd(或 cron)在設定的時間以無頭模式執行 claude -p "/<skill-name>",且 --allowedTools 只列出該工作所需的工具。

不適合重複性工作的選項:/loop 和 session cron 任務只會在 Claude Code 工作階段開啟時執行,且七天後過期。

每個自動化的核准規則: 任何會傳送、發布、付款或刪除的操作,都必須在人工核准步驟前停止(執行工作會準備草稿或預覽;使用者說「是」之後才會送出)。


launchd 範本(macOS 上的 schedule (cron))

填寫所有 {{...}} 並儲存為 <label>.plist:

  • {{label}} - 例如 com.already-told-you.weekly-client-update
  • {{claude}} - command -v claude 輸出的絕對路徑
  • {{skill}} - 已安裝的技能名稱
  • {{tools}} - 僅列出該工作需要的工具,例如 Read,Write(~/drafts/**),Bash(git log *)
  • {{project}} - 該工作使用的專案資料夾絕對路徑
  • {{weekday}} / {{hour}} / {{minute}} - 0 = 星期日;小時 0-23
  • {{home}} - 使用者的家目錄完整路徑(launchd 不會展開 ~)

檔案的第一行必須是 XML 宣告,接著是 Apple plist DOCTYPE 行(PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"),然後是:

<plist version="1.0">
<dict>
  <key>Label</key><string>{{label}}</string>
  <key>WorkingDirectory</key><string>{{project}}</string>
  <key>ProgramArguments</key>
  <array>
    <string>{{claude}}</string>
    <string>-p</string>
    <string>/{{skill}} (scheduled run: prepare drafts only, never send, publish, pay or delete)</string>
    <string>--allowedTools</string>
    <string>{{tools}}</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Weekday</key><integer>{{weekday}}</integer>
    <key>Hour</key><integer>{{hour}}</integer>
    <key>Minute</key><integer>{{minute}}</integer>
  </dict>
  <key>StandardOutPath</key><string>{{home}}/already-told-you/automation/{{label}}.log</string>
  <key>StandardErrorPath</key><string>{{home}}/already-told-you/automation/{{label}}.log</string>
</dict>
</plist>

在顯示給使用者之前,使用 plutil -lint <file> 檢查完成的檔案。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相關技能