Skip to content

fix: move hooks to settings.json for default availability - #401

Merged
keito4 merged 1 commit into
mainfrom
fix/move-hooks-to-default-settings
Feb 2, 2026
Merged

fix: move hooks to settings.json for default availability#401
keito4 merged 1 commit into
mainfrom
fix/move-hooks-to-default-settings

Conversation

@keito4

@keito4 keito4 commented Feb 2, 2026

Copy link
Copy Markdown
Owner

Summary

  • DevContainerイメージでhooksがデフォルトで有効にならない問題を修正
  • claude-settings.json (→ ~/.claude/settings.json) にhooks設定を移動
  • claude-settings.local.json からhooks設定を削除

Why

hooksが settings.local.json にのみ設定されていたため、プロジェクト固有の .claude/settings.local.json が存在する場合、イメージのhooks設定が上書きされて無効になっていた。

What

ファイル 変更
.devcontainer/claude-settings.json hooks設定を追加
.devcontainer/claude-settings.local.json hooks設定を削除

How

settings.json はベース設定として読み込まれるため、プロジェクト側に独自の settings.local.json があっても、hooksが適用される。

Test plan

  • 新しいプロジェクトでDevContainerを起動し、hooksが動作することを確認
  • git commit --no-verify がブロックされることを確認
  • Quality Gatesが git commit / git push 前に実行されることを確認

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Added pre- and post-tool execution hooks to development container configuration to support automated quality checks and CI/CD integration.
    • Removed corresponding hooks from local development settings to allow standard tool behavior.

✏️ Tip: You can customize this high-level summary in your review settings.

hooksをsettings.local.jsonからsettings.jsonに移動し、
DevContainerイメージを使用するすべてのプロジェクトで
デフォルトでhooksが有効になるよう修正。

- claude-settings.json: hooks設定を追加
- claude-settings.local.json: hooks設定を削除

これにより、プロジェクト固有の.claude/settings.local.jsonが
存在する場合でも、~/.claude/settings.jsonのhooksが
ベース設定として適用される。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Feb 2, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This PR adds a new hooks configuration section to the main Claude settings file while removing the equivalent hooks from the local settings file. The hooks configure pre- and post-tool-use behaviors through Python scripts.

Changes

Cohort / File(s) Summary
Claude Settings Hooks Configuration
.devcontainer/claude-settings.json
Added comprehensive hooks configuration with PreToolUse (block_git_no_verify.py, pre_git_quality_gates.py, pre_exit_plan_ai_review.py) and PostToolUse (post_git_push_ci.py, post_pr_ai_review.py) handlers for Bash and ExitPlanMode contexts.
Local Settings Cleanup
.devcontainer/claude-settings.local.json
Removed duplicate hooks configuration from local settings, consolidating hook definitions to the base settings file.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

size/M

Poem

🐰 Hop, hop, the hooks now align,
From local to settings, a cleaner design,
Pre and post tools dance in their place,
Git gates and reviews at a perfect pace!
Configuration consolidated with grace.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: moving hooks configuration from local settings to default settings for availability.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/move-hooks-to-default-settings

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@claude

claude Bot commented Feb 2, 2026

Copy link
Copy Markdown
Contributor

PR Review: Fix hooks configuration architecture

🎯 Overall Assessment

このPRは重要な構成管理の問題を修正しています。hooks設定を settings.local.json から settings.json に移動することで、DevContainerイメージを使用する全プロジェクトでhooksがデフォルトで有効になるようにしています。

✅ 良い点

  1. 問題認識が正確

    • 設定の優先順位(settings.local.json > settings.json)を理解した適切な修正
    • プロジェクト固有の設定によってベース設定が上書きされる問題を解決
  2. 変更範囲が最小限

    • 設定の移動のみで、機能的な変更なし
    • リスクが低く、レビューしやすい
  3. PR説明が詳細

    • Why/What/Howが明確に記載
    • テストプランも含まれている

🔍 潜在的な問題・考慮事項

1. 設定の重複可能性

現在の変更により、両方のファイルに同じhooks設定が存在する可能性があります:

確認が必要:

  • 既存プロジェクトで settings.local.json に独自のhooks設定がある場合、settings.json の設定と競合または重複する可能性
  • 両方に同じhooks設定がある場合、hooksが二重に実行される可能性

推奨対応:

// プロジェクト側の settings.local.json で hooks を上書きしたい場合の例
{
  "hooks": {
    "PreToolUse": [
      // プロジェクト固有の設定のみを記載
      // settings.json の設定は自動的にマージされる
    ]
  }
}

2. マージ動作の明確化

Claude Code Settings の設定ファイルのマージ動作について、以下を確認・ドキュメント化することを推奨:

  • settings.jsonsettings.local.jsonhooks フィールドはマージされるのか、それとも上書きされるのか?
  • マージされる場合、重複するhooksは除外されるのか?

3. 既存プロジェクトへの影響

リスク:

  • この変更がdevcontainerイメージに含まれた後、既存プロジェクトが新しいイメージを使用すると、意図せずhooksが有効化される可能性
  • プロジェクトによっては Quality Gates がまだ通らない状態かもしれない

推奨対応:

  • CHANGELOG または Migration Guide を作成し、既存プロジェクトへの影響を明記
  • 既存プロジェクトでhooksを無効化する方法をドキュメント化
// 既存プロジェクトでhooksを無効化する場合の例
// .claude/settings.local.json
{
  "hooks": {
    "PreToolUse": [],
    "PostToolUse": []
  }
}

4. Test Plan の実行確認

PR説明のTest Planはまだ未チェック状態です:

  • 新しいプロジェクトでDevContainerを起動し、hooksが動作することを確認
  • `git commit --no-verify` がブロックされることを確認
  • Quality Gatesが `git commit` / `git push` 前に実行されることを確認

これらのテストを実施し、結果をPRに記載することを推奨します。

🔒 セキュリティ考慮事項

  • Hooks自体にセキュリティ上の問題は見当たりません
  • ただし、security-credential-scan が常に実行されることで、セキュリティが向上します ✅

📊 コード品質

  • JSON構文: ✅ 正しい
  • インデント: ✅ 一貫性あり
  • 設定の配置: ✅ 適切(ファイル末尾の hooks フィールド)

🎯 推奨アクション

必須:

  1. Test Planを実行し、結果を確認
  2. 設定のマージ動作を確認・ドキュメント化

推奨:

  1. 既存プロジェクトへの影響をドキュメント化(CHANGELOG等)
  2. .claude/hooks/README.md を更新し、設定場所の変更を反映
  3. Migration Guideを作成(既存プロジェクトでhooksを無効化する方法など)

📝 提案: README.md の更新例

.claude/hooks/README.md の「Hooksの設定方法」セクションを更新することを推奨:

## Hooksの設定方法

### DevContainer環境(推奨)

DevContainerイメージ (ghcr.io/keito4/config-base) を使用する場合、hooksはデフォルトで有効です。
追加の設定は不要です。

### プロジェクト固有のhooksを追加する場合

\`.claude/settings.local.json\` にプロジェクト固有の設定を追加できます。
ベース設定(settings.json)の内容とマージされます。

### hooksを無効化する場合

プロジェクトでhooksを無効化したい場合は、\`.claude/settings.local.json\` に以下を追加:

\`\`\`json
{
  "hooks": {
    "PreToolUse": [],
    "PostToolUse": []
  }
}
\`\`\`

総評

承認推奨 (条件付き)

構造的な問題解決として正しい方向性です。ただし、以下を確認してからマージすることを推奨:

  1. Test Planの実行と結果確認
  2. 既存プロジェクトへの影響の評価とドキュメント化

Good work! 🚀

@keito4
keito4 merged commit 7138c6e into main Feb 2, 2026
14 checks passed
@github-actions

github-actions Bot commented Feb 2, 2026

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 1.61.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

released リリース済み

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant