実装計画を作成し、プランファイルに保存しました（コードは書いていません）。`ExitPlanMode` が使えない環境のため、承認はこのメッセージへの返信でお願いします。

## 計画の要点
- **`models.py`**: `Task` に `repeat` を追加（既定 `None`）。`from_dict` は `d.get("repeat")` で、旧JSONも読めるようにします。
- **`recurrence.py`（新規）**: `next_due(due, repeat)` を追加します。daily は +1日、weekly は +7日、monthly は +1か月です。月次は `calendar.monthrange` で月末日にクランプします（1/31→2/28）。
- **`store.py`**:
  - `add(..., repeat=)` を追加し、`repeat` があって `due` がなければ `ValueError` にします。
  - `complete` で繰り返しタスクなら元の期限日基準で次回タスクを生成します（title、priority、tags、repeat を引き継ぎ）。
  - 二重 `done` で重複生成しないようにします。
  - 非繰り返しタスクの動きは現状どおりです。
- **`cli.py`**:
  - `add --repeat daily|weekly|monthly` を追加し、`--due` なしなら `parser.error`（終了コード2）にします。
  - `done` で次回が生成されたときだけ「次回を作成しました: …」を追加表示します。
- **テスト・README**: `next_due` の境界、Store/CLI の繰り返し挙動、旧JSON互換、非繰り返しの出力不変を追加し、README に使用例を追記します。

## 確認したい点
1. 大幅に遅れて完了した場合、次回期限が過去日になることがあります。仕様どおり元の期限日基準とし、スキップはしない想定です。
2. 月次の月末は翌月末日に丸める想定です。
3. `--repeat` ありで `--due` なしはエラー終了（コード2）とします。

この方針でよければ実装に進みます。