with one click
automation-scheduler
建立定期任務(每日晨報、每週回顧)。當使用者需要設定自動化的、定期執行的任務時使用。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
建立定期任務(每日晨報、每週回顧)。當使用者需要設定自動化的、定期執行的任務時使用。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
在使用者要設計網站、Web App 或元件介面時使用。常見觸發像「做 landing page」「設計 dashboard」「規劃 component UI」。輸出可上線介面與設計系統;不取代產品策略或純品牌研究。
在使用者要把模糊想法整理成可開發 spec 時使用。常見觸發像「整理需求成 spec」「補驗收條件」「拆分階段開發計畫」。輸出技術規格、白話規格與可直接貼用於 Codex / Claude Code 的分階段 instructions;不直接代替正式文件發布。
在非程式開發者要用 vibe coding 與 coding agent 協作時使用。常見觸發像「幫我整理開發準則」「定義交付邊界」「規劃驗證方式」。輸出需求表達、邊界與風險控管準則;不直接取代實作。
當使用者要拆解大型、混亂、跨部門、反覆卡關或高不確定性的難題,或明確要求做問題拆解、issue tree、根因與對策分層時使用。先分清楚現象、目標落差、真正問題與根因假設,再判斷問題是範疇型、分析型、動態系統型、研究型或交付型,最後用 issue tree/MECE、WBS、系統思考、驗收標準、依賴排程、資源分派與流動指標,產出可執行的問題拆解報告、工作包、關鍵路徑、並行策略與 PDCA 回饋節奏。
當使用者要替代解法、不同思路、更簡單或更穩定做法時使用。將現有方案重構成結構問題,提出多條可落地方案與最低摩擦解。
當使用者要先做概念對齊、要求先不要執行任務本體、想先把關鍵概念/背景知識/近期重大事件查清楚,或要求「先上網整理背景再開始」時使用。適合「先做 Concept Alignment」「先對齊概念」「先幫我查關鍵概念與背景資料」「先整理定義、脈絡與近期變化」這類請求。會先用第一性原理拆解任務與歧義,立即上網蒐集原始或高可信來源,釐清名詞、單位、幣別、時間範圍、利害關係人與重要事件,最後只輸出 `## Concept Alignment` 下的三段:`### [關鍵概念]定義`、`### 收集背景知識`、`### 重大影響的具體事件`;必要時穿插附來源標註的 Mermaid 圖,但不執行任務本體,也不使用 canvas。
| name | automation-scheduler |
| description | 建立定期任務(每日晨報、每週回顧)。當使用者需要設定自動化的、定期執行的任務時使用。 |
本技能旨在提供一個標準化的方法來建立和管理定期自動化任務,包括每日、每週、每月等各種時間間隔的任務。
與使用者溝通,確定要自動化的任務的具體需求。
需求澄清清單:
定義任務應該執行的具體步驟和邏輯。
任務設計清單:
任務執行邏輯範例:
def daily_morning_report():
"""
每日晨報任務
"""
try:
# 1. 收集資料
data = collect_daily_data()
# 2. 生成報告
report = generate_report(data)
# 3. 發送報告
send_email(report)
# 4. 記錄日誌
log_task_execution("success", "晨報已發送")
except Exception as e:
log_task_execution("error", str(e))
notify_admin(f"晨報任務失敗: {e}")
使用 Cron 表達式或其他排程格式定義任務的執行時間。
Cron 表達式格式:
Cron 表達式由 6 個欄位組成,表示秒、分鐘、小時、日期、月份和星期幾。
秒 分 時 日 月 週
0 0 8 * * * # 每天早上 8:00:00
0 0 8 * * 1-5 # 週一到週五早上 8:00:00
0 0 9,17 * * * # 每天早上 9:00 和下午 5:00
0 0 0 1 * * # 每月 1 日午夜
0 0 0 * * 0 # 每週日午夜
*/15 * * * * * # 每 15 分鐘
Cron 欄位說明:
| 欄位 | 範圍 | 特殊字符 | 說明 |
|---|---|---|---|
| 秒 | 0-59 | , - * / | 任務執行的秒數 |
| 分 | 0-59 | , - * / | 任務執行的分鐘 |
| 時 | 0-23 | , - * / | 任務執行的小時(24 小時制) |
| 日 | 1-31 | , - * / | 任務執行的日期 |
| 月 | 1-12 | , - * / | 任務執行的月份 |
| 週 | 0-6 | , - * / | 任務執行的星期(0=星期日) |
常見的排程範例:
| 需求 | Cron 表達式 |
|---|---|
| 每天早上 8 點 | 0 0 8 * * * |
| 每週一早上 9 點 | 0 0 9 * * 1 |
| 每月 1 日午夜 | 0 0 0 1 * * |
| 每 30 分鐘 | 0 */30 * * * * |
| 工作日每小時 | 0 0 * * * 1-5 |
| 每 5 分鐘 | 0 */5 * * * * |
設定排程任務的各種參數,包括重試策略、超時設定等。
排程配置清單:
配置範例:
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.cron import CronTrigger
scheduler = BackgroundScheduler()
# 新增每日晨報任務
scheduler.add_job(
func=daily_morning_report,
trigger=CronTrigger(hour=8, minute=0, second=0),
id='daily_morning_report',
name='每日晨報',
max_instances=1, # 防止並發執行
misfire_grace_time=300, # 如果錯過,在 5 分鐘內仍然執行
coalesce=True, # 如果多個執行被跳過,只執行一次
replace_existing=True
)
scheduler.start()
為排程任務實施適當的錯誤處理和監控機制。
錯誤處理策略:
監控清單:
錯誤處理範例:
import logging
from datetime import datetime
logger = logging.getLogger(__name__)
def execute_scheduled_task(task_func, task_name, max_retries=3):
"""
執行排程任務,包含重試邏輯
"""
for attempt in range(max_retries):
try:
logger.info(f"開始執行任務: {task_name} (嘗試 {attempt + 1}/{max_retries})")
task_func()
logger.info(f"任務成功完成: {task_name}")
return True
except Exception as e:
logger.error(f"任務執行失敗: {task_name}, 錯誤: {str(e)}")
if attempt < max_retries - 1:
logger.info(f"將在 60 秒後重試...")
time.sleep(60)
else:
notify_admin(f"任務 {task_name} 在 {max_retries} 次嘗試後仍然失敗")
return False
在部署到生產環境前,充分測試排程任務。
測試清單:
測試程式碼範例:
from apscheduler.schedulers.background import BackgroundScheduler
from datetime import datetime, timedelta
# 建立測試排程器
scheduler = BackgroundScheduler()
# 新增一個立即執行的測試任務
scheduler.add_job(
func=daily_morning_report,
trigger='date',
run_date=datetime.now() + timedelta(seconds=5),
id='test_task'
)
scheduler.start()
# 等待任務執行
time.sleep(10)
# 驗證任務是否執行成功
job = scheduler.get_job('test_task')
if job:
print("任務仍在隊列中,可能未執行")
else:
print("任務已執行並移除")
將排程任務部署到生產環境,並進行持續監控。
部署清單:
監控儀表板應包含:
使用 UTC 時區: 在伺服器上使用 UTC 時區,避免時區轉換的複雜性。
冪等性設計: 設計任務使其可以安全地重複執行而不產生不良副作用。
詳細日誌記錄: 記錄任務的開始、結束和任何重要的中間步驟。
監控和警報: 設定監控系統,及時發現和報告任務失敗。
定期審查: 定期審查排程任務的執行情況,優化配置。
文件化: 清晰地文件化每個排程任務的目的、時間表和依賴項。
版本控制: 將排程配置保存在版本控制系統中,便於追蹤變更。