feat(hooks-session-start): 月次レビュー起動 reminder (L1) を追加 (WP-12 step 2/3, ADR-062) - #331
Conversation
…, ADR-062) 月次ハーネス ROI レビュー (docs/monthly-harness-roi-review-plan.md) の Phase 2。SessionStart hook に `/monthly-review` skill 起動 reminder を追加する。 - hooks_config.rs: MonthlyReviewReminderConfig (enabled / threshold_days / system_message_enabled) - monthly_review.rs (新 module): last-run staleness の 1 経路。last_run_at 内容 timestamp で判定 (mtime 非依存)、resolve_main_workspace_root で main-root canonical 化 (ADR-045)、SingleLineMessage で systemMessage opt-in (ADR-059)、telemetry id monthly_review_reminder / warn で計装 (ADR-055)。weekly と異なり failed marker 経路なし (設計決定 1)。 - main.rs: append_cwd_nudges から配線、weekly + monthly の systemMessage を combine_system_messages で 1 行合成。50 行ガイドライン遵守で append_review_reminder_nudges に分割。 - hooks-config.toml: enabled=true / threshold_days=28 で dogfood (ADR-039: code default OFF)。 cargo test --workspace / cargo clippy --workspace --all-targets -- -D warnings / pnpm lint:md 全通。
📝 WalkthroughWalkthrough月次レビューリマインダーの設定、last-run状態に基づく発火判定、追加コンテキストとsystemMessageの生成、SessionStartへのweekly併合処理、関連テストと計画ドキュメントを追加しました。 Changes月次レビューリマインダー
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant SessionStart
participant monthly_review
participant LastRunFile
participant HookResponse
SessionStart->>monthly_review: compute monthly reminder
monthly_review->>LastRunFile: read last_run_at
LastRunFile-->>monthly_review: last-run state
monthly_review-->>SessionStart: nudge with context and optional message
SessionStart->>HookResponse: combine weekly and monthly messages
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🤖 PR Monitor 分析 (GitHub Actions バックストップ)
Applicable Findings (Critical / High / Major)該当なし (レビュー未着のため findings 自体が存在しない)。 Applicable Findings (Medium 以下)該当なし。 Filtered (not applicable)該当なし。 Diff 概要 (軽量サマリー)変更ファイル 5件:
diff 内容は PR body に記載の設計 (ADR-062, ADR-039 experimental pattern, ADR-045 main-root canonical化, ADR-059 2層可視化) と整合しており、逸脱は見当たらない。 次のアクション
|
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/hooks-session-start/src/monthly_review.rs (1)
40-138: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoffweekly_review.rs とほぼ同一のロジックが複製されています。
MonthlyLastRunState/MonthlyLastRunFile/last_run_state_from_content/*_staleness_hits/*_staleness_labelはweekly_review.rsの対応関数と実質同一です (異なるのは path 定数と文言のみ)。将来 silent-fresh 系の修正が入ると片側だけ直す事故が起きやすいため、last_run_state(enum + JSON parse + 経過日数導出) を共通 module へ切り出すことを検討してください。今回のスコープ外で構いません。🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/hooks-session-start/src/monthly_review.rs` around lines 40 - 138, 共有の last-run 状態判定ロジックが monthly_review.rs と weekly_review.rs に重複しているため、MonthlyLastRunState、MonthlyLastRunFile、last_run_state_from_content、および staleness 判定・ラベル処理を共通モジュールへ移し、両レビュー処理から再利用してください。各側には path 定数と固有の表示文言だけを残し、既存の Missing、Stale、Unreadable、経過日数の挙動を維持してください。
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@src/hooks-session-start/src/monthly_review.rs`:
- Around line 40-138: 共有の last-run 状態判定ロジックが monthly_review.rs と
weekly_review.rs
に重複しているため、MonthlyLastRunState、MonthlyLastRunFile、last_run_state_from_content、および
staleness 判定・ラベル処理を共通モジュールへ移し、両レビュー処理から再利用してください。各側には path 定数と固有の表示文言だけを残し、既存の
Missing、Stale、Unreadable、経過日数の挙動を維持してください。
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 5e06fef9-e6c3-49e4-ba9f-bc7913bf9e2d
📒 Files selected for processing (5)
.claude/hooks-config.tomldocs/monthly-harness-roi-review-plan.mdsrc/hooks-session-start/src/hooks_config.rssrc/hooks-session-start/src/main.rssrc/hooks-session-start/src/monthly_review.rs
🤖 PR Monitor 分析 (GitHub Actions バックストップ)
Applicable Findings (Critical / High / Major)該当なし。 Applicable Findings (Medium 以下)
Filtered (not applicable)該当なし。 次のアクション
|
月次ハーネス ROI レビュー (docs/monthly-harness-roi-review-plan.md) の Phase 3。L3 skill (/monthly-review、skills repo で別途 commit) に対応する本 repo の docs を整備する。 - ADR-062 新規: 月次ハーネス ROI レビューの背景/設計決定/ユーザー決定事項を正式記録 (試験運用、ADR-039 3 点セット)。cli-telemetry-report (L2) + SessionStart reminder (L1、#331) + /monthly-review skill (L3) の 3 層。 - ADR-055 amendment: WP-12 step 2/3 消化 + 出力先の週次→月次変更。 - ADR-053 / ADR-061 追記: 撤去判定 (4 週間非観測) を月次レビューが連続 2 か月発火 0 で機械 promote。 - CLAUDE.md index に ADR-062 追加。 - todo 整理: todo-summary2.md の順位 307/308/312 削除、todo16.md の WP-12 step2/step3/retention セクション削除、harness-improvement-plan.md の WP-12 状態更新。 docs-only。pnpm lint:md 全通。
月次ハーネス ROI レビュー (docs/monthly-harness-roi-review-plan.md) の Phase 3。L3 skill (/monthly-review、skills repo で別途 commit) に対応する本 repo の docs を整備する。 - ADR-062 新規: 月次ハーネス ROI レビューの背景/設計決定/ユーザー決定事項を正式記録 (試験運用、ADR-039 3 点セット)。cli-telemetry-report (L2) + SessionStart reminder (L1、#331) + /monthly-review skill (L3) の 3 層。 - ADR-055 amendment: WP-12 step 2/3 消化 + 出力先の週次→月次変更。 - ADR-053 / ADR-061 追記: 撤去判定 (4 週間非観測) を月次レビューが連続 2 か月発火 0 で機械 promote。 - CLAUDE.md index に ADR-062 追加。 - todo 整理: todo-summary2.md の順位 307/308/312 削除、todo16.md の WP-12 step2/step3/retention セクション削除、harness-improvement-plan.md の WP-12 状態更新。 docs-only。pnpm lint:md 全通。
月次ハーネス ROI レビュー (docs/monthly-harness-roi-review-plan.md) の Phase 3。L3 skill (/monthly-review、skills repo で別途 commit) に対応する本 repo の docs を整備する。 - ADR-062 新規: 月次ハーネス ROI レビューの背景/設計決定/ユーザー決定事項を正式記録 (試験運用、ADR-039 3 点セット)。cli-telemetry-report (L2) + SessionStart reminder (L1、#331) + /monthly-review skill (L3) の 3 層。 - ADR-055 amendment: WP-12 step 2/3 消化 + 出力先の週次→月次変更。 - ADR-053 / ADR-061 追記: 撤去判定 (4 週間非観測) を月次レビューが連続 2 か月発火 0 で機械 promote。 - CLAUDE.md index に ADR-062 追加。 - todo 整理: todo-summary2.md の順位 307/308/312 削除、todo16.md の WP-12 step2/step3/retention セクション削除、harness-improvement-plan.md の WP-12 状態更新。 docs-only。pnpm lint:md 全通。
概要
月次ハーネス ROI レビュー (
docs/monthly-harness-roi-review-plan.md) の Phase 2 (PR-3 前半): L1 reminder。SessionStart hook に/monthly-reviewskill 起動 reminder を追加する (ADR-062、WP-12 step 2/3、試験運用)。weekly_reviewmodule のパターンを踏襲しつつ、月次向けに failed marker 経路を持たない 構成 (設計決定 1: L2 の月次集計cli-telemetry-reportは決定論 exe で高速なため resume 機構を採らない)。変更内容
hooks_config.rs:MonthlyReviewReminderConfig(enabled/threshold_days/system_message_enabled) を追加しSessionStartConfigに配線。monthly_review.rs(新 module): last-run staleness の 1 経路。設計決定 3 の教訓 (a)〜(d) を適用。.claude/monthly-review-last-run.jsonのlast_run_at内容 timestamp で判定 (mtime 非依存、PastTimeで未来値を Stale 扱い、silent-fresh 防止 / ADR-031 教訓)lib_jj_helpers::resolve_main_workspace_rootで main workspace root に canonical 化 (ADR-045 状態分裂対策)SingleLineMessageで systemMessage opt-in (ADR-059)monthly_review_reminder/ warn で計装 (ADR-055)main.rs:append_cwd_nudgesから配線。weekly + monthly は systemMessage スロットが 1 つのためcombine_system_messagesで 1 行に合成。50 行ガイドライン (順位 48) 遵守でappend_review_reminder_nudgesに分割。.claude/hooks-config.toml:enabled = true/threshold_days = 28/system_message_enabled = trueで dogfood 有効化 (ADR-039: code default は OFF、派生 deploy では section を置かず完全 skip)。docs/monthly-harness-roi-review-plan.md: Phase 2 を「✅ 実装完了」に更新。検証
cargo test --workspace— 全 crate green (hooks-session-start 120 件、うち新規 monthly_review 21 + config parse 2 + combine 3)cargo clippy --workspace --all-targets -- -D warnings— warning なしpnpm lint:md— 0 error補足 / 既知の follow-up
monthly_review.rsはweekly_review.rsと近い構造だが、設計決定 3 の明示に従う意図的な mirror。threshold_daysと weekly のreminder_threshold_daysのフィールド名非対称も設計決定 3 の表記に従ったもの。3 つ目の reminder が生じる場合は共通last_run_stalenesshelper への抽出を検討 (takt simplicity review の non-blocking 指摘、将来拡張)。Phase 3 (L3 skill
/monthly-review+ ADR-062 新規 + ADR-055/053/061 追記) は後続 PR で対応する。Summary by CodeRabbit
新機能
/monthly-reviewの起動を促す補足情報と、ユーザーに表示される通知に対応しました。ドキュメント