cron-mastery について
cron-masteryは、確実なリマインダーや定期タスクが必要なOpenClawエージェント向けの時間管理スキルです。正確なcronと定期的なハートビートを区別し、ジョブの整理やタイムゾーンの扱いも説明します。
主な機能
- 01時間要件に応じたcronとハートビートの選択
- 02cronによる一回限りのリマインダー設定
- 03完了した一回限りのジョブの整理
- 04タイムゾーンの記録と確認
- 05エージェントのターンをまたぐ起動予約
活用シーン
- 01指定時刻のリマインダー設定
- 02日次レポートや保守タスクの定期作成
- 03完了した一回限りのジョブの削除
- 04非同期の待機後にエージェントを再開
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sundial-org/ awesome-openclaw-skills --skill cron-masteryインストール後、Claude Code で/cron-masteryを入力して読み込まれたか確認します。
同梱ファイルreferences/TEMPLATES.md
詳細
Cron を使いこなす
ルールその 1:ハートビートはずれます。Cron は正確です。
このスキルは、OpenClaw で時間を管理するための決定版ガイドです。気軽な確認(ハートビート)と厳密なスケジュール(Cron)を明確に分けることで、「リマインダーを見逃した」という問題を解決します。
基本原則
| システム | 動作 | 最適な用途 | リスク |
|---|---|---|---|
| ハートビート | 「できるときに確認します」(例:30~60 分ごと) | メールの確認、気軽なニュースの要約、優先度の低いポーリング。 | ずれ: ハートビートが 30 分の場合、「10 分後にリマインドして」というタスクは失敗します。 |
| Cron | 「指定した時刻に正確に実行します」 | リマインダー(「5 分後に」)、日次レポート、システムメンテナンス。 | 雑然化: 後で整理が必要な単発ジョブが作成されます。 |
1. 信頼性の高いリマインダーの設定
長い待ち時間(1 分超)には、act:wait や内部ループを絶対に使用しないでください。1 回限りの at スケジュールには、cron:add を使用します。
標準的なリマインダーパターン(JSON)
「X 分後にリマインドして」というタスクには、このペイロード構造を使用します。
{
"name": "Remind: Drink Water",
"schedule": {
"kind": "at",
"atMs": <CURRENT_MS + DELAY_MS>
},
"payload": {
"kind": "agentTurn",
"message": "⏰ Reminder: Drink water!",
"deliver": true
},
"sessionTarget": "isolated",
"wakeMode": "next-heartbeat"
}
注:wakeMode: "next-heartbeat" を指定していても、Cron システムは atMs にイベント注入を強制します。ジョブのペイロード外で即時起動を強制する必要がある場合は、cron:wake ツールで mode: "now" を使用してください。
2. ジャニター(自動クリーンアップ)
1 回限りの Cron ジョブ(kind: at)は実行後に無効になりますが、「ゴースト」(enabled: false、lastStatus: ok)としてリストに残ります。リストが雑然としないように、デイリージャニターをインストールします。
設定手順
- 現在のジョブを確認する:
cron:list(includeDisabled: true) - ジャニターを作成する:
- 名前:
Daily Cron Cleanup - スケジュール: 24 時間ごと(
everyMs: 86400000) - ペイロード: 特定のプロンプトを実行するエージェントのターン。
- 名前:
ジャニターのプロンプト(エージェントのターン)
「24 時間ごとの Cron 一括整理の時間です。無効なものも含め、すべての Cron ジョブを一覧表示してください。
enabled: falseかつlastStatus: ok(完了した 1 回限りのジョブ)のジョブがあれば、リストを整理するために削除してください。有効な定期ジョブは削除しないでください。削除した内容を記録してください。」
3. 参考:タイムゾーンの固定
Cron を正しく動作させるには、エージェントが時刻を把握している必要があります。
- 操作: ユーザーのタイムゾーンを
MEMORY.mdに追加します。 - 例:
Timezone: Cairo (GMT+2) - 確認: ユーザーが「午後 9 時にリマインドして」と言った場合、スケジュールを設定する前に「カイロ時間の午後 9 時ですか?」と確認します。
4. 自己起動ルール(動作)
問題: 「30 秒待ちます」と伝えてターンを終了すると、スリープ状態になります。イベントがないと、自分で起動することはできません。 解決策: ターンをまたいで「待つ」必要がある場合は、必ず Cron ジョブをスケジュールします。
- 1 分未満の待機(対話型): ツールループを開いたままにする場合に限り許可されます(
act:waitを使用)。 - 1 分超の待機(非同期):
wakeMode: "now"で Cron を使用します。
「30 秒後に再確認する」ためのペイロード例:
{
"schedule": { "kind": "at", "atMs": <NOW + 30000> },
"payload": { "kind": "agentTurn", "message": "⏱️ 30s check-in. Report status." },
"wakeMode": "now"
}
トラブルシューティング
- 「リマインダーが実行されなかった」:
cron:listを確認してください。ジョブが存在するのに実行されていない場合は、システムクロックとatMsを確認してください。 - 「古いジョブが 50 個ある」: すぐにジャニターを手動で実行してください。