This commit is contained in:
2025-07-05 13:48:50 +09:00
parent 00c9af330b
commit 9758126225
26 changed files with 3134 additions and 0 deletions

239
shell-config/.zshrc_claude Normal file
View File

@ -0,0 +1,239 @@
# Claude Code Enhanced Shell Configuration
# Source this file in your .zshrc: source ~/.zshrc_claude
# 基本的なエイリアス
alias c='claude'
alias cr='claude --resume'
alias ct='claude --thinking'
alias cs='claude --dangerously-skip-permissions'
# AI統合エイリアス
alias ai-import='bash ~/git/claude/scripts/ai-integration.sh import'
alias ai-compare='bash ~/git/claude/scripts/ai-integration.sh compare'
alias ai-chain='bash ~/git/claude/scripts/ai-integration.sh chain'
alias ai-tmux='bash ~/git/claude/scripts/ai-integration.sh tmux'
# MCP関連エイリアス
alias mcp-setup='bash ~/git/claude/mcp/setup-mcp.sh'
alias mcp-test='bash ~/git/claude/mcp/setup-mcp.sh test'
# 便利な関数群
# Claude Codeでファイルを解析
function claude-analyze() {
local file="$1"
if [[ -f "$file" ]]; then
claude "このファイルを解析してください: @$file"
else
echo "ファイルが見つかりません: $file"
fi
}
# Claude Codeでエラーを解決
function claude-debug() {
local error_file="${1:-/tmp/last_error.log}"
if [[ -f "$error_file" ]]; then
claude "このエラーを解決してください: $(cat $error_file)"
else
echo "エラーファイルが見つかりません: $error_file"
fi
}
# Claude Codeでコードレビュー
function claude-review() {
local target="${1:-.}"
if [[ -d "$target" ]]; then
# ディレクトリの場合、変更されたファイルをレビュー
git diff --name-only | head -10 | while read file; do
claude "このファイルの変更をレビューしてください: @$file"
done
elif [[ -f "$target" ]]; then
# ファイルの場合、そのファイルをレビュー
claude "このファイルをレビューしてください: @$target"
else
echo "ターゲットが見つかりません: $target"
fi
}
# Claude Codeでドキュメント生成
function claude-docs() {
local target="${1:-.}"
claude "このプロジェクトのドキュメントを生成してください。プロジェクトの構造: $(tree -L 2 $target)"
}
# Claude Codeでテストケース生成
function claude-test() {
local file="$1"
if [[ -f "$file" ]]; then
claude "このファイルのテストケースを生成してください: @$file"
else
echo "ファイルが見つかりません: $file"
fi
}
# Claude Codeでリファクタリング
function claude-refactor() {
local file="$1"
local instruction="${2:-コードを改善してください}"
if [[ -f "$file" ]]; then
claude "$instruction: @$file"
else
echo "ファイルが見つかりません: $file"
fi
}
# 現在の作業状況をClaude Codeに伝える
function claude-status() {
local status_info=$(cat << EOF
現在の作業状況:
- ディレクトリ: $(pwd)
- ブランチ: $(git branch --show-current 2>/dev/null || echo "Git管理外")
- 変更されたファイル: $(git status --porcelain 2>/dev/null | head -5)
- 最新コミット: $(git log --oneline -1 2>/dev/null)
- プロセス: $(ps aux | grep -E "(vim|tmux|docker)" | head -3)
何かお手伝いできることはありますか?
EOF
)
claude "$status_info"
}
# Claude Codeで環境設定
function claude-env() {
local env_info=$(cat << EOF
現在の環境情報:
- OS: $(uname -s)
- アーキテクチャ: $(uname -m)
- シェル: $SHELL
- ターミナル: $TERM
- エディタ: $EDITOR
- Python: $(python3 --version 2>/dev/null || echo "インストールされていません")
- Node.js: $(node --version 2>/dev/null || echo "インストールされていません")
- Git: $(git --version 2>/dev/null || echo "インストールされていません")
この環境での開発をサポートしてください。
EOF
)
claude "$env_info"
}
# tmux統合
function claude-tmux() {
local session_name="claude-work"
# 既存のセッションをチェック
if tmux has-session -t "$session_name" 2>/dev/null; then
echo "既存のセッションにアタッチします..."
tmux attach -t "$session_name"
return
fi
# 新しいセッションを作成
tmux new-session -d -s "$session_name" -n "claude" "claude --resume"
tmux new-window -t "$session_name" -n "editor"
tmux new-window -t "$session_name" -n "terminal"
tmux new-window -t "$session_name" -n "logs" "tail -f ~/.claude/logs/*.log 2>/dev/null || echo 'ログファイルが見つかりません'"
# レイアウト設定
tmux select-window -t "$session_name:claude"
tmux split-window -h -p 30
tmux send-keys -t "$session_name:claude.1" "echo 'Claude Code作業中...'" Enter
echo "Claude Code作業用セッションを作成しました"
tmux attach -t "$session_name"
}
# vim統合
function claude-vim() {
local file="$1"
if [[ -n "$file" ]]; then
# ファイルが指定された場合、vimで開いてからClaude Codeに送る
vim "$file"
claude "先ほど編集したファイルについて質問があります: @$file"
else
# ファイルが指定されない場合、現在のディレクトリの情報を送る
claude "現在のディレクトリで作業しています: $(pwd)\n$(ls -la)"
fi
}
# 自動エラー捕捉
function claude-exec() {
local cmd="$*"
local error_file="/tmp/claude_error_$(date +%s).log"
echo "実行中: $cmd"
# コマンドを実行し、エラーをキャプチャ
if ! eval "$cmd" 2>"$error_file"; then
echo "エラーが発生しました。Claude Codeに解決を依頼します..."
claude "次のコマンドでエラーが発生しました: $cmd\n\nエラー内容:\n$(cat $error_file)"
rm -f "$error_file"
else
echo "コマンドが正常に完了しました"
rm -f "$error_file"
fi
}
# プロジェクト初期化
function claude-init() {
local project_name="$1"
local project_type="${2:-general}"
if [[ -z "$project_name" ]]; then
echo "使用方法: claude-init <プロジェクト名> [プロジェクトタイプ]"
return 1
fi
mkdir -p "$project_name"
cd "$project_name"
# CLAUDE.mdを作成
cat > CLAUDE.md << EOF
# CLAUDE.md
This file provides guidance to Claude Code when working with this project.
## Project: $project_name
Type: $project_type
Created: $(date)
## Development Guidelines
- Follow best practices for $project_type development
- Maintain consistent code style
- Write comprehensive tests
- Document all public APIs
## Commands
[Add common commands here]
## Architecture
[Add architecture notes here]
EOF
# Git初期化
git init
echo "CLAUDE.md" > .gitignore
echo "*.log" >> .gitignore
echo ".DS_Store" >> .gitignore
# Claude Codeを起動
claude "新しいプロジェクト '$project_name' ($project_type) を初期化しました。開発を開始するのを手伝ってください。"
}
# 補完設定zsh
if [[ -n "$ZSH_VERSION" ]]; then
# カスタム補完
compdef '_files' claude-analyze
compdef '_files' claude-review
compdef '_files' claude-test
compdef '_files' claude-refactor
compdef '_files' claude-vim
fi
# 起動メッセージ
echo "🤖 Claude Code enhanced shell configuration loaded!"
echo "主要コマンド: c, cr, ct, cs, claude-analyze, claude-review, claude-test"
echo "詳細: alias | grep claude"