# 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 미해결 이슈를 요약해줘."

```json
{
  "cron": "3 9 * * 1-5",
  "prompt": "나에게 할당된 모든 미해결 GitHub 이슈를 요약하세요.",
  "recurring": true,
  "durable": true
}
```

분 값으로 `0` 대신 `3`을 사용하여 정각 부하 집중을 피합니다. 작업은 7일 후 자동 만료됩니다.

## 참고사항

- **7일 자동 만료**: 반복 작업은 최대 7일 동안 실행된 후 자동으로 삭제됩니다. 더 긴 일정이 필요하면 만료 전에 다시 만드세요.
- **유휴 상태일 때만 실행**: `CronCreate`는 REPL이 다른 쿼리를 처리하지 않을 때만 프롬프트를 대기열에 추가합니다. 실행 시점에 REPL이 바쁘면 현재 쿼리가 완료될 때까지 대기합니다.
- **:00과 :30 분 값 회피**: 대략적인 시간 요청에는 의도적으로 비정각 분 값을 선택하여 시스템 부하를 분산시키세요. 사용자가 정확한 분을 지정할 때만 :00이나 :30을 사용합니다.
- **시간대 변환 불필요**: cron 표현식은 사용자의 로컬 시간대로 직접 해석됩니다. UTC나 다른 시간대로 변환할 필요가 없습니다.
