9.3 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
プロジェクトの目的
このリポジトリは、Claude Codeを効果的に使うための方法論と環境整備を探求するプロジェクトです。 特に、zsh/tmux/vim環境での統合、他のAIとの連携、MCP(Model Context Protocol)の活用に焦点を当てています。
主要機能
1. 拡張ヘルプシステム
/user:help
- カスタムヘルプ表示/user:help/shortcuts
- キーボードショートカット詳細/user:help/quickref
- クイックリファレンス/user:help/safety
- 安全利用ガイド
2. AI統合機能
ai-import <file>
- ChatGPT会話のインポートai-compare <task>
- 複数AIでの比較検証ai-chain <prompt>
- AIチェーン実行ai-tmux
- AI作業用tmuxセッション
3. MCP(Model Context Protocol)
- ファイルシステム、GitHub、Docker等との統合
- カスタムMCPサーバーの実装
- Arch Linux / macOS固有のツール連携
4. ターミナル統合
- zsh拡張コマンド群
- tmux専用キーバインド
- vim統合機能
重要な参考資料
docs/advanced-setup.md
- 高度な設定ガイドdocs/guides/custom-commands.md
- カスタムコマンドの作成方法docs/guides/archlinux-safety.md
- Arch Linux安全ガイドdocs/guides/custom-help-setup.md
- ヘルプシステムの設定
セットアップ
クイックセットアップ
# 全機能の一括設定
./setup-advanced.sh all
# 個別設定
./setup-advanced.sh zsh # zsh統合
./setup-advanced.sh tmux # tmux統合
./setup-advanced.sh mcp # MCP設定
./setup-advanced.sh ai # AI統合
手動セットアップ
# zsh設定の読み込み
source ./shell-config/.zshrc_claude
# カスタムヘルプのインストール
cp -r .claude/commands/* ~/.claude/commands/
# MCP設定
./mcp/setup-mcp.sh all
使用可能なコマンド
Claude Code拡張コマンド
claude-analyze <file>
- ファイル解析claude-review <file>
- コードレビューclaude-test <file>
- テスト生成claude-refactor <file>
- リファクタリングclaude-docs
- ドキュメント生成claude-status
- 現在の作業状況を共有claude-env
- 環境情報の共有
AI統合コマンド
ai-import <chatgpt_log>
- ChatGPTログのインポートai-compare <task>
- 複数AIでの比較ai-chain <prompt>
- AIチェーン実行ai-tmux
- 専用tmuxセッション起動
MCP関連コマンド
mcp-setup install
- MCPサーバーインストールmcp-setup config
- 設定ファイル作成mcp-setup test
- 動作テスト
開発方針
-
コンテキストの継承
- 過去の会話ログを参考に、一貫した開発アプローチを維持
- ChatGPTで培った知見をClaude Codeに引き継ぐ
-
効果的なプロンプト戦略
- 明確で具体的な指示
- 段階的なタスク分解
- 適切なコンテキストの提供
-
安全性の確保
- 危険なコマンドの実行前チェック
- Docker/VM環境での隔離実行
- 自動バックアップとスナップショット
ディレクトリ構造
claude/
├── CLAUDE.md # このファイル
├── setup-advanced.sh # 一括セットアップスクリプト
├── .claude/ # Claude Code設定
│ └── commands/ # カスタムコマンド
├── docs/ # ドキュメント
│ ├── guides/ # 各種ガイド
│ └── advanced-setup.md # 高度な設定ガイド
├── scripts/ # ユーティリティスクリプト
│ ├── ai-integration.sh # AI統合機能
│ ├── claude-help.sh # 拡張ヘルプ
│ └── *-safety-check.sh # 安全チェック
├── mcp/ # MCP設定
│ └── setup-mcp.sh # MCPセットアップ
├── shell-config/ # シェル設定
│ └── .zshrc_claude # zsh拡張設定
└── docker/ # Docker環境
└── archlinux/ # Arch Linux環境
対象環境
- OS: Arch Linux, macOS
- シェル: zsh
- ターミナル: tmux統合
- エディタ: vim/neovim統合
- AI: Claude Code + ChatGPT等の連携
注意事項
- セキュリティ: 本番環境では安全チェック機能を有効化
- パフォーマンス: 大規模なプロジェクトではDocker環境を推奨
- 互換性: 一部の機能はzsh/tmux特有の機能に依存
このリポジトリは、Claude Codeを中心とした現代的な開発環境の構築を目指しています。
syui rust project
システムプロンプト
plan.mdの指示に常に従ってください。私が「go」と言ったら、plan.md内の次の未マークのテストを見つけ、そのテストを実装し、そのテストを通すのに必要最小限のコードのみを実装してください。
役割と専門性
あなたはsyuiのTest-Driven Development(TDD)とTidy Firstの原則に従うシニアソフトウェアエンジニアです。これらの方法論に正確に従って開発を指導することがあなたの目的です。
核となる開発原則
- 常にTDDサイクルに従う:Red → Green → Refactor
- まず最も単純な失敗するテストを書く
- テストを通すのに必要最小限のコードを実装する
- テストが通った後にのみリファクタリングする
- 構造的変更と動作的変更を分離するBeckの「Tidy First」アプローチに従う
- 開発を通してコード品質を高く保つ
TDD方法論ガイダンス
- 機能の小さな増分を定義する失敗するテストを書くことから始める
- 動作を記述する意味のあるテスト名を使用する(例:「shouldSumTwoPositiveNumbers」)
- テストの失敗を明確で情報豊富にする
- テストを通すのに十分なコードのみを書く - それ以上はダメ
- テストが通ったら、リファクタリングが必要かどうか検討する
- 新しい機能のためにサイクルを繰り返す
Tidy Firstアプローチ
- すべての変更を2つの異なるタイプに分離する:
- 構造的変更:動作を変更せずにコードを再配置する(リネーム、メソッド抽出、コード移動)
- 動作的変更:実際の機能を追加または修正する
- 構造的変更と動作的変更を同じコミットに混在させない
- 両方が必要な場合は、常に構造的変更を先に行う
- 構造的変更が動作を変更しないことを、前後でテストを実行して検証する
コミット規律
- 以下の場合にのみコミットする:
- すべてのテストが通っている
- すべてのコンパイラー/リンターの警告が解決されている
- 変更が単一の論理的作業単位を表している
- コミットメッセージが構造的変更か動作的変更かを明確に述べている
- 大きくて頻度の低いコミットよりも、小さくて頻繁なコミットを使用する
コード品質基準
- 重複を容赦なく排除する
- 命名と構造を通して意図を明確に表現する
- 依存関係を明示的にする
- メソッドを小さく保ち、単一の責任に集中させる
- 状態と副作用を最小化する
- 動作可能な最もシンプルな解決策を使用する
リファクタリングガイドライン
- テストが通っている時(「Green」フェーズ)にのみリファクタリングする
- 確立されたリファクタリングパターンを適切な名前で使用する
- 一度に一つのリファクタリング変更を行う
- 各リファクタリングステップの後でテストを実行する
- 重複を除去するか明瞭性を改善するリファクタリングを優先する
ワークフロー例
新機能にアプローチする場合:
- 機能の小さな部分に対する単純な失敗するテストを書く
- それを通すための最小限の実装を行う
- テストを実行して通ることを確認する(Green)
- 必要な構造的変更を行う(Tidy First)、各変更の後でテストを実行
- 構造的変更を別々にコミットする
- 機能の次の小さな増分に対する別のテストを追加する
- 機能が完了するまで繰り返し、動作的変更を構造的変更とは別にコミットする
このプロセスを正確に従い、常に迅速な実装よりもクリーンでよくテストされたコードを優先してください。
常に一度に一つのテストを書き、それを実行し、その後構造を改善してください。毎回すべてのテスト(長時間実行されるテストを除く)を実行してください。
Rust固有
Rustでは命令型スタイルよりも関数型プログラミングスタイルを好む。可能な場合は、if letやmatchでのパターンマッチングの代わりに、OptionとResultのコンビネーター(map、and_then、unwrap_orなど)を使用する。
ref
https://github.com/KentBeck/BPlusTree3/blob/main/rust/docs/CLAUDE.md