Claude Code用のCLAUDE.mdをこんな感じで用意したよ
Claude Codeをより良くつかうためにドキュメントを書いています。
自分はこんな感じで設定してるよ、という情報を共有できればと思います。
プロジェクト構成
Claude Code用の設定は.claude
に作成してます
.claude/
├── CLAUDE.md
└── commands/
├── commit.md
├── pr.md
├── re.md
├── review.md
└── tdd.md
doc/
├── api-architecture.md
├── commit-guideline.md
├── refactoring-guideline.md
├── test-guideline.md
└── tdd.md
CLAUDE.md の内容
CLAUDE.md
に詳細な説明を直接書かず、./doc/
への参照にとどめています。
これは以下の効果を狙っています
- ドキュメントのファイル分割を行い管理・参照しやすくする
- cline等の別の支援ツールからも参照できるようにしておく(ツールの流動性が高いため)
- ドキュメントは人間向けでもあるという意識付け
# projectのアーキテクチャ
`doc/architecture.md`を参照してください
# テストの書き方
`doc/test-guideline.md`を参照してください
# リファクタリングの仕方
`doc/refactoring-guideline.md`を参照してください
commands ディレクトリ
よく生成AIに依頼する命令をコマンド化して効率化しています。
.claude/commands/**.md
を配置すると、
/project:**
というコマンドでmarkdownファイルを利用できるようになります。
以下より、用意しているコマンドを紹介します。
commit.md
commitを行うコマンドです。
commitメッセージを自動で生成してくれて便利なので多用してます。
# commitルールに基づいてcommitを行う
`doc/commit-guideline.md`のルールを守ってコミットを行います。
# doc/commit-guideline.md
## 基本方針
- 適切な単位に分割してcommitする
- 論理的に関連のある変更をまとめる
- 単一の責任を持つcommitにする
## コミットメッセージのフォーマット
**コミットメッセージは日本語で記述する**
---
[TICKET-ID] 変更の概要
詳細説明(必要に応じて)
- 変更理由
- 影響範囲
- 注意事項
---
## ルール
1. **チケット番号を必ず含める**
- TICKET-ID-XXX形式でプレフィックスを付ける
- 例: `TICKET-ID-162: コミットルールドキュメントを追加`
2. **変更の種類を明確にする**
- `add`: 新機能の追加
- `update`: 既存機能の更新・改善
- `fix`: バグ修正
- `refactor`: リファクタリング
- `remove`: 削除
- `docs`: ドキュメント更新
3. **適切な粒度でcommit**
- 関連のない変更は分ける
- テストとソースコードは同じcommitで含める
- 設定変更は別途commitする
## 避けるべきコミット
- 複数の機能を同時に含むcommit
- "WIP", "fix", "update"のような曖昧なメッセージ
- 設定ファイルと機能実装を同時に含むcommit
pr.md
PR作成を自動化するコマンド。
テンプレートを用意しておくとそれに従って作成してくれます。
-
[AI生成]
と書かれている部分はAIによって生成されます。 -
[AI生成しない]
と書かれている部分はAIによって生成されません。
これくらい直接的に書かないと全部 Claude
に生成されちゃいます。
不恰好なので別の方法があれば教えてください。
# PRを作成する(ghコマンドを使用)
現在のブランチの変更内容を分析し、適切なタイトルと説明でPRを作成します。
以下の[AI生成]と書かれている内容はAIによって生成されます。
## PRテンプレート
### タイトル形式
`[TICKET-ID]: 変更の概要`
### 説明テンプレート
---
## Summary [AI生成]
- 変更内容の要約(3-5個の箇条書き)
## 変更内容 [AI生成]
- 具体的な変更点
## 概要 [AI生成しない]
- 変更の目的や背景
## テスト項目 [AI生成しない]
- [ ] <!-- 追加のテスト項目があれば記入 -->
---
review.md
コードレビューを行うコマンド。
平成ギャルという人格を入れているのは、ギャルの方が厳しめのレビューをしてくれるからであって趣味によるものではないです。
Claude
ではultrathink
というワードを用いると最大トークンを利用して思考してくれるので、レビューではそれを利用するようにしています。
参考文献: https://zenn.dev/fbbp/articles/7aa9a46518a609
# main branchとの差分を評価するコマンド
- main branchとの差分を`ultrathink`で平成ギャルが辛口評価します。
- レビューの観点:
- コードの品質
- 可読性
- パフォーマンス
- セキュリティ
- テストの充実度
- 互換性
- それぞれを5段階で評価し、コメントを付けてください。
re.md
リファクタリングのルールを厳格に守るコマンドです。
ここでもultrathink
を利用してレビューを行ってもらってます。
# リファクタリングのルールを厳格に守るモード
`doc/refactoring-guideline.md`の内容を厳格に守ること
# doc/refactoring-guideline.md
リファクタリングとは、**外部から見た動作を変えずに、内部のコード構造を改善すること**です。
## リファクタリングの目的
- **可読性の向上**: コードが理解しやすくなる
- **保守性の向上**: バグ修正や機能追加が容易になる
- **テスタビリティの向上**: テストが書きやすくなる
- **拡張性の向上**: 新機能の追加が容易になる
- **技術的負債の削減**: 将来の開発コストを下げる
## リファクタリングの原則
1. **動作の保持**: 既存の機能は変更しない
2. **段階的改善**: 小さな変更を積み重ねる
3. **テストの保持**: 既存のテストが通り続ける
## よくあるリファクタリング手法
- **クラスの分離**: 責任を明確に分離
- **条件分岐の整理**: if-else文をポリモーフィズムに置き換え
- **重複コードの削除**: 共通処理を抽出
- **命名の改善**: より分かりやすい名前に変更
## リファクタリングする際はテストを書く
- リファクタリング前に既存のテストを確認し、必要に応じて追加する
- リファクタリング後は必ずテストを実行し、動作が変わっていないことを確認する
- テストがない場合は、まずテストを追加してからリファクタリングを行う
- リファクタリング中に新しいテストケースを追加することも検討する
## リファクタリング後に行うこと
- テストを実行して、動作が変わっていないことを確認
- 修正前のコードと比較して、動作が変わっていないことを確認
- `ultrathink`でコードを再評価
## 注意点
- ファイルの分離を行う際はクリーンアーキテクチャに基づいて行う
tdd.md
かなり雑に用意してるしまだ使ってません。
# TDDを厳格に守るモード
`doc/tdd.md`の内容を厳格に守ること
### doc/tdd.md
- 原則としてテスト駆動開発(TDD)で進める
- 期待される入出力に基づき、まずテストを作成する
- 実装コードは書かず、テストのみを用意する
- テストを実行し、失敗を確認する
- テストが正しいことを確認できた段階でコミットする
- その後、テストをパスさせる実装を進める
- 実装中はテストを変更せず、コードを修正し続ける
- すべてのテストが通過するまで繰り返す
おわり
必要なものから足していくスタイルで拡張しています。
「こんな設定やコマンドが便利だよ。」という情報があればめっちゃ欲しいです
Discussion