mcpField
C
cron-mastery

cron-mastery

github.com/sundial-orgエージェントワークフロー670259 回インストール34 週間前に更新
リポジトリ

cron-mastery について

cron-masteryは、確実なリマインダーや定期タスクが必要なOpenClawエージェント向けの時間管理スキルです。正確なcronと定期的なハートビートを区別し、ジョブの整理やタイムゾーンの扱いも説明します。

主な機能

  1. 01時間要件に応じたcronとハートビートの選択
  2. 02cronによる一回限りのリマインダー設定
  3. 03完了した一回限りのジョブの整理
  4. 04タイムゾーンの記録と確認
  5. 05エージェントのターンをまたぐ起動予約

活用シーン

  1. 01指定時刻のリマインダー設定
  2. 02日次レポートや保守タスクの定期作成
  3. 03完了した一回限りのジョブの削除
  4. 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)としてリストに残ります。リストが雑然としないように、デイリージャニターをインストールします。

設定手順
  1. 現在のジョブを確認する: cron:list(includeDisabled: true)
  2. ジャニターを作成する:
    • 名前: 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 個ある」: すぐにジャニターを手動で実行してください。

コメント