実装計画を立てました。コードはまだ書いていません。計画ファイルは `<計画ファイル置き場>/add-cheeky-pumpkin.md` です。ExitPlanMode ツールがこの環境では使えなかったため、承認の確認はここで行います。

## 計画の要点

**変更ファイル**
- `taskboard/models.py`: `Task` に `repeat` を追加します（`None | daily | weekly | monthly`）。`to_dict` / `from_dict` も更新します。`repeat` のない既存JSONもそのまま読めます。
- 日付計算: `next_due(due, repeat)` を追加します。daily は +1日、weekly は +7日、monthly は +1か月です。基準は完了日ではなく元の `due` です。
- `taskboard/store.py`:
  - `add` に `repeat` を追加し、`repeat` があるのに `due` がなければ `ValueError` にします。
  - `complete` は、繰り返しタスクなら `title` / `priority` / `tags` / `repeat` を引き継いだ次回分を新しいIDで自動作成します。保存は1回です。
  - すでに `done` のタスクに再度 `done` しても次回分を重複して作りません。
- `taskboard/cli.py`:
  - `add --repeat daily|weekly|monthly` を追加します。`--due` がなければ引数エラー（終了コード2）にします。
  - `done` で次回分ができたら `次回: {id} {due}` を表示します。
- `README.md`: 使用例を追記します。
- 繰り返しでないタスクの動作は変えません。

**テスト追加**
- `next_due` の daily / weekly / monthly、月末、うるう年、年またぎ
- `--repeat` を `--due` なしで指定した場合のエラー
- 遅れて完了しても元の期限が基準になること
- 次回分への各項目の引き継ぎ
- 再 `done` で重複しないこと
- 非繰り返しタスクが従来どおりであること
- 旧JSONの読み込み

## 確認したい点
1. **月次の月末処理**: 1/31 の +1か月は 2/28（うるう年は 2/29）に丸めます。丸めた後はその日が基準になるため、3月は 3/28 になり31日には戻りません。31日を維持したい場合は、元の日を別に保持する仕組みを足します。まずは単純な丸めで進める想定です。
2. **大幅に遅れて完了した場合**: 次回期限が過去になっても、仕様どおり元の期限基準のまま作ります（スキップしません）。
3. **`complete` の戻り値**: 次回分を返すため、`(完了タスク, 次回タスク|None)` の tuple にする案を推奨します。既存テストの修正は最小限で済みます。

この方針でよければ、実装に進みます。1 の月末の扱いを変えたい場合は教えてください。