# CronCreate

プロンプトを将来の指定した時刻にキューへ追加し、実行を予約するツールです。一回限りの実行と繰り返し実行の両方に対応しています。ユーザーのローカルタイムゾーンに基づく標準 5 フィールドの cron 式を使用するため、タイムゾーン変換は不要です。

## 使用タイミング

- **一度限りのリマインダー**: ユーザーが特定の時刻に通知を希望する場合（「明日の午後 3 時に教えて」など）。`recurring: false` に設定することで、実行後に自動削除されます。
- **繰り返しスケジュール**: ユーザーが定期的な実行を希望する場合（「平日の毎朝 9 時」「30 分ごと」など）。デフォルトの `recurring: true` を使用します。
- **自律エージェントループ**: 日次ダイジェストや定期ステータスチェックのように、自己トリガーするワークフローを構築する場合。
- **永続化タスク**: セッション再起動後もスケジュールを維持する必要がある場合。`durable: true` を渡すことで `.claude/scheduled_tasks.json` に保存されます。
- **おおよその時刻リクエスト**: ユーザーが「9 時頃」や「毎時」と言う場合、`:00` や `:30` を避け、オフミニット値（例: `57 8 * * *` や `7 * * * *`）を選んでシステム負荷を分散させます。

## パラメータ

- `cron`（string、必須）: ユーザーのローカルタイムゾーン基準の 5 フィールド cron 式。フォーマットは `分 時 日 月 曜日` です。例: `"0 9 * * 1-5"` は月曜日〜金曜日の午前 9:00 を意味します。
- `prompt`（string、必須）: cron が発火した際にキューへ追加するプロンプトテキスト。予約時刻に REPL へ送信される正確なメッセージです。
- `recurring`（boolean、任意、デフォルト `true`）: `true` の場合、一致する cron 周期ごとに実行され、7 日後に自動期限切れになります。`false` の場合、一度だけ実行されて自動削除されます — 一回限りのリマインダーに使用します。
- `durable`（boolean、任意、デフォルト `false`）: `false` の場合、スケジュールはメモリ上のみに存在し、セッション終了時に消えます。`true` の場合、`.claude/scheduled_tasks.json` に永続化され、再起動後も有効です。

## 例

### 例 1: 一度限りのリマインダー

ユーザーの発言:「明日の午後 2 時 30 分に週次レポートを送るよう知らせて。」明日が 4 月 21 日の場合:

```json
{
  "cron": "30 14 21 4 *",
  "prompt": "リマインダー: 今すぐ週次レポートを送信してください。",
  "recurring": false,
  "durable": true
}
```

`recurring: false` により発火後に自動削除されます。`durable: true` により再起動前も保持されます。

### 例 2: 繰り返し平日朝タスク

ユーザーの発言:「平日の毎朝、自分の GitHub 未解決 Issue を要約して。」

```json
{
  "cron": "3 9 * * 1-5",
  "prompt": "自分にアサインされたすべての GitHub 未解決 Issue を要約してください。",
  "recurring": true,
  "durable": true
}
```

分に `0` ではなく `3` を使い、正時の負荷集中を回避します。このタスクは 7 日後に自動期限切れになります。

## 注意事項

- **7 日間の自動期限切れ**: 繰り返しタスクは最大 7 日間実行された後、自動削除されます。より長い期間が必要な場合は、期限切れ前に再作成してください。
- **アイドル時のみ発火**: `CronCreate` は REPL が他のクエリを処理していないときのみプロンプトをキューに追加します。発火時に REPL が処理中の場合、現在のクエリが完了するまで待機します。
- **:00 と :30 の回避**: おおよその時刻リクエストに対しては、意図的にオフミニット値を選択してシステム負荷を分散させてください。ユーザーが正確な分を指定した場合のみ :00 や :30 を使用します。
- **タイムゾーン変換不要**: cron 式はユーザーのローカルタイムゾーンで直接解釈されます。UTC や他のタイムゾーンへの変換は不要です。
