Claude Code統合ツールシステム - フック・規約管理CLI
Project description
claude-nagger
Claude Codeに「必要な時だけ」規約を読ませるフックツール
解決する問題
Claude Codeで中〜大規模プロジェクトを扱う際、以下の問題が発生します:
| 問題 | 説明 |
|---|---|
| コンテキスト肥大化 | 全規約をCLAUDE.mdに書くとトークン消費が膨大 |
| 規約の忘却 | コンテキスト圧縮(compacting)により規約が「忘れられる」 |
| 無関係な情報 | モデル編集時にCSS規約は不要、逆も然り |
解決策
EditツールでCSS編集 → CSS規約のみ注入
Editツールでモデル編集 → モデル規約のみ注入
CLAUDE.mdでは実現できない「PreToolUseフックによる条件付き規約注入」を提供します。
クイックスタート
1. インストール
# uvx(推奨・インストール不要で実行)
uvx claude-nagger install-hooks
# または pip
pip install claude-nagger
claude-nagger install-hooks
# ソースから直接インストール(開発用)
git clone https://github.com/HollySizzle/claude-nagger.git
cd claude-nagger
./scripts/install-dev.sh # インストール&フック設定
uv tool update-shell # PATHに追加(初回のみ、シェル再起動要)
2. 動作確認
# dry-runで生成内容を確認
claude-nagger install-hooks --dry-run
3. 設定カスタマイズ
生成された .claude-nagger/ 内のYAMLファイルを編集して、プロジェクト固有の規約を設定します。
生成されるファイル構造
your-project/
├── .claude-nagger/
│ ├── config.yaml # メイン設定(セッション管理等)
│ ├── file_conventions.yaml # ファイル編集時の規約
│ └── command_conventions.yaml # コマンド実行時の規約
└── .claude/
└── settings.json # ← claude-naggerが自動設定
設定ファイル詳細
config.yaml(メイン設定)
セッション開始時のメッセージやコンテキスト管理を設定します。
# セッション開始時設定
session_startup:
enabled: true
messages:
first_time:
title: "プロジェクトセットアップ"
main_text: |
プロジェクトの規約を確認してください
severity: "block" # block: 確認必須, warn: 警告のみ
# コンテキスト管理設定(トークン数に応じたリマインダー)
context_management:
reminder_thresholds:
light_warning: 30000 # 軽い警告
medium_warning: 60000 # 中程度の警告
critical_warning: 100000 # 重要な警告
# デバッグ設定
debug:
enable_logging: false
file_conventions.yaml(ファイル編集規約)
特定のファイルパターンに対して適用される規約を定義します。
rules:
# CSS編集時の規約
- name: "CSS編集規約"
patterns:
- "**/*.css"
- "**/*.scss"
severity: "warn"
token_threshold: 30000
message: |
## CSS規約
- BEM命名規則を使用
- !important は禁止
- ネストは3階層まで
# モデル編集時の規約
- name: "モデル編集規約"
patterns:
- "**/models/**/*.py"
- "**/entities/**/*.py"
severity: "block"
token_threshold: 35000
message: |
## モデル規約
- フィールド名はsnake_case
- 必ずdocstringを記載
- バリデーションを実装
# View層編集時の規約
- name: "View層編集規約"
patterns:
- "**/views/**/*.erb"
- "**/templates/**/*.html"
severity: "warn"
message: |
## View規約
- XSS対策を徹底
- ロジックはヘルパーに委譲
command_conventions.yaml(コマンド実行規約)
危険なコマンドや確認が必要なコマンドに対して適用される規約を定義します。
rules:
# Git操作規約
- name: "Git操作規約"
patterns:
- "git push*"
- "git commit*"
severity: "warn"
token_threshold: 25000
message: |
## Git規約
- コミットメッセージは日本語で記載
- プッシュ前にテストを実行
# 本番環境操作規約
- name: "本番環境操作規約"
patterns:
- "*production*"
- "*deploy*"
severity: "block"
message: |
## 本番環境操作
- 必ず承認を得てから実行
- バックアップを確認
ユースケース例
Rails プロジェクト
# file_conventions.yaml
rules:
- name: "コントローラ規約"
patterns: ["**/controllers/**/*.rb"]
message: |
- before_actionでの認証確認
- Strong Parametersの使用必須
- name: "マイグレーション規約"
patterns: ["**/migrate/*.rb"]
severity: "block"
message: |
- 必ずロールバック可能にする
- 大量データ更新時はバッチ処理
React プロジェクト
# file_conventions.yaml
rules:
- name: "コンポーネント規約"
patterns: ["**/components/**/*.tsx"]
message: |
- Propsの型定義必須
- useCallbackでメモ化検討
- name: "フック規約"
patterns: ["**/hooks/**/*.ts"]
message: |
- カスタムフックは use* で命名
- 依存配列を正確に記述
Python プロジェクト
# file_conventions.yaml
rules:
- name: "API規約"
patterns: ["**/api/**/*.py", "**/routes/**/*.py"]
message: |
- 入力バリデーション必須
- エラーハンドリングを実装
- name: "テスト規約"
patterns: ["**/tests/**/*.py"]
message: |
- Arrange-Act-Assertパターン
- モックは最小限に
動作原理
┌─────────────────────────────────────────────────────────┐
│ Claude Code │
│ │
│ ユーザー: "このCSSを修正して" │
│ ↓ │
│ Claude: Edit ツール呼び出し (*.css) │
│ ↓ │
│ ┌─────────────────────────────────────┐ │
│ │ PreToolUse Hook (claude-nagger) │ │
│ │ │ │
│ │ 1. パターン照合: "**/*.css" ✓ │ │
│ │ 2. 対応する規約を読み込み │ │
│ │ 3. 規約をコンテキストに注入 │ │
│ └─────────────────────────────────────┘ │
│ ↓ │
│ Claude: 規約を参照しながらCSS編集 │
└─────────────────────────────────────────────────────────┘
コマンド一覧
# フックのインストール(.claude/settings.jsonに設定追加)
claude-nagger install-hooks
# dry-run(実際には変更しない)
claude-nagger install-hooks --dry-run
# 強制上書き(既存ファイルも再生成)
claude-nagger install-hooks --force
# バージョン表示
claude-nagger --version
# 環境診断(トラブルシュート用)
claude-nagger diagnose
なぜCLAUDE.mdだけでは不十分か
| アプローチ | コンテキスト消費 | 規約遵守率 | 柔軟性 |
|---|---|---|---|
| 全規約をCLAUDE.mdに記載 | 高 (常時) | 低 (忘却) | 低 |
| claude-nagger | 低 (必要時のみ) | 高 | 高 |
要件
- Python 3.10以上
- Claude Code CLI
ライセンス
MIT License - 詳細は LICENSE を参照
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file claude_nagger-1.1.0.tar.gz.
File metadata
- Download URL: claude_nagger-1.1.0.tar.gz
- Upload date:
- Size: 78.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
498eea5718687ebd91828a86c77dc2dc971951b11d767f2b178b463b5fb005ae
|
|
| MD5 |
feead1f6ea6903e3ebbf1f7b22ec57ec
|
|
| BLAKE2b-256 |
1049e24fcbd2e3a1b243b66ec9105be9a4d68699711f5bd1b1d1d4e724979ea5
|
Provenance
The following attestation bundles were made for claude_nagger-1.1.0.tar.gz:
Publisher:
publish.yml on hollySizzle/claude-nagger
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claude_nagger-1.1.0.tar.gz -
Subject digest:
498eea5718687ebd91828a86c77dc2dc971951b11d767f2b178b463b5fb005ae - Sigstore transparency entry: 793544946
- Sigstore integration time:
-
Permalink:
hollySizzle/claude-nagger@db88bcacc014c7145e99ff6e0ec70d0a1752e1b4 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/hollySizzle
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@db88bcacc014c7145e99ff6e0ec70d0a1752e1b4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file claude_nagger-1.1.0-py3-none-any.whl.
File metadata
- Download URL: claude_nagger-1.1.0-py3-none-any.whl
- Upload date:
- Size: 51.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b4aab397b473eb0e57dc8b049230a1b603c7447327d9d54ce874362acc3dca0
|
|
| MD5 |
8ab199c300a248459014eef664230c4b
|
|
| BLAKE2b-256 |
01258195ce111e2187dcc5b9ffb8de84dadc91e085a65b0ca677825eadff457f
|
Provenance
The following attestation bundles were made for claude_nagger-1.1.0-py3-none-any.whl:
Publisher:
publish.yml on hollySizzle/claude-nagger
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claude_nagger-1.1.0-py3-none-any.whl -
Subject digest:
2b4aab397b473eb0e57dc8b049230a1b603c7447327d9d54ce874362acc3dca0 - Sigstore transparency entry: 793544991
- Sigstore integration time:
-
Permalink:
hollySizzle/claude-nagger@db88bcacc014c7145e99ff6e0ec70d0a1752e1b4 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/hollySizzle
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@db88bcacc014c7145e99ff6e0ec70d0a1752e1b4 -
Trigger Event:
release
-
Statement type: