# CronCreate

Планирует постановку промпта в очередь на будущий момент времени — однократно или по расписанию. Использует стандартный 5-польный формат cron в локальном часовом поясе пользователя, без необходимости конвертации часовых поясов.

## Когда использовать

- **Одноразовые напоминания**: Когда пользователь хочет получить напоминание в конкретное время ("напомни мне завтра в 15:00"). При `recurring: false` задача автоматически удаляется после выполнения.
- **Повторяющиеся расписания**: Когда что-то должно происходить регулярно ("каждый будний день в 9:00", "каждые 30 минут"). Значение по умолчанию `recurring: true` покрывает этот случай.
- **Автономные агентские циклы**: Для построения рабочих процессов, которые самостоятельно перезапускаются по расписанию — например, ежедневные дайджесты или периодические проверки состояния.
- **Постоянные задачи**: Когда расписание должно сохраняться после перезапуска сессии. При передаче `durable: true` задача записывается в `.claude/scheduled_tasks.json`.
- **Приблизительное время**: Когда пользователь говорит "около 9:00" или "каждый час", следует выбрать смещённое значение минуты (например, `57 8 * * *` или `7 * * * *`), чтобы избежать массового срабатывания на :00 или :30.

## Параметры

- `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: одноразовое напоминание

Пользователь говорит: "Напомни мне завтра в 14:30 отправить еженедельный отчёт." Предположим, что завтра — 21 апреля:

```json
{
  "cron": "30 14 21 4 *",
  "prompt": "Напоминание: отправь еженедельный отчёт прямо сейчас.",
  "recurring": false,
  "durable": true
}
```

`recurring: false` гарантирует автоматическое удаление задачи после выполнения. `durable: true` сохраняет её при любом перезапуске до наступления этого времени.

### Пример 2: повторяющаяся утренняя задача по будням

Пользователь говорит: "Каждое утро в рабочие дни обобщай мои открытые задачи на GitHub."

```json
{
  "cron": "3 9 * * 1-5",
  "prompt": "Обобщи все открытые задачи на GitHub, назначенные на меня.",
  "recurring": true,
  "durable": true
}
```

Минута `3` вместо `0` позволяет избежать пика нагрузки в ровный час. Задача автоматически истекает через 7 дней.

## Примечания

- **Автоматическое истечение через 7 дней**: Повторяющиеся задачи автоматически удаляются максимум через 7 дней. Если нужно более долгое расписание, пересоздайте задачу до истечения срока.
- **Срабатывание только в режиме ожидания**: `CronCreate` помещает промпт в очередь только тогда, когда REPL не обрабатывает другой запрос. Если REPL занят в момент срабатывания, промпт ждёт завершения текущего запроса.
- **Избегайте минут :00 и :30**: При приблизительных временных запросах намеренно выбирайте смещённые значения минут для распределения нагрузки. Используйте :00/:30 только тогда, когда пользователь указывает эту точную минуту.
- **Конвертация часового пояса не нужна**: Cron-выражение интерпретируется непосредственно в локальном часовом поясе пользователя. Нет необходимости переводить в UTC или любой другой пояс.
