# 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 або будь-який інший пояс.
