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

184
scripts/ai-integration.sh Executable file
View File

@ -0,0 +1,184 @@
#!/bin/bash
# AI統合ヘルパースクリプト
# カラー定義
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m'
# 設定
CLAUDE_LOG_DIR="$HOME/claude-logs"
CHATGPT_LOG_DIR="$HOME/chatgpt-logs"
AI_CONTEXT_DIR="$HOME/.ai-context"
# ディレクトリ作成
mkdir -p "$CLAUDE_LOG_DIR" "$CHATGPT_LOG_DIR" "$AI_CONTEXT_DIR"
# ChatGPTの会話をClaude Codeにインポート
import_chatgpt_conversation() {
local chatgpt_file="$1"
local context_name="${2:-imported-context}"
if [[ ! -f "$chatgpt_file" ]]; then
echo -e "${YELLOW}ファイルが見つかりません: $chatgpt_file${NC}"
return 1
fi
# コンテキストファイルを作成
cat > "$AI_CONTEXT_DIR/$context_name.md" << EOF
# インポートされたChatGPT会話
インポート日時: $(date)
ソースファイル: $chatgpt_file
## 会話内容
$(cat "$chatgpt_file")
## Claude Codeへの指示
この会話の内容を踏まえて、以下の点に注意して作業を進めてください:
1. ChatGPTで議論された設計方針を尊重する
2. 未解決の課題があれば解決する
3. 実装の詳細を具体化する
EOF
echo -e "${GREEN}✓ ChatGPT会話をインポートしました: $AI_CONTEXT_DIR/$context_name.md${NC}"
# Claude Codeを起動
claude "以下のChatGPTとの会話を確認して、実装を進めてください: @$AI_CONTEXT_DIR/$context_name.md"
}
# 複数AIで同じタスクを実行して比較
multi_ai_task() {
local task="$1"
local output_dir="$AI_CONTEXT_DIR/comparisons/$(date +%Y%m%d-%H%M%S)"
mkdir -p "$output_dir"
echo -e "${BLUE}複数AIでタスクを実行中...${NC}"
# Claude Code
echo -e "${GREEN}Claude Code:${NC}"
claude "$task" > "$output_dir/claude_response.md" 2>&1
# 他のAIollama
if command -v ollama &> /dev/null; then
echo -e "${GREEN}Ollama (llama2):${NC}"
echo "$task" | ollama run llama2 > "$output_dir/ollama_response.md" 2>&1
fi
# 結果を統合
cat > "$output_dir/comparison.md" << EOF
# AI比較結果
タスク: $task
実行日時: $(date)
## Claude Code
\`\`\`
$(cat "$output_dir/claude_response.md")
\`\`\`
## その他のAI
$(ls "$output_dir"/*.md | grep -v comparison.md | while read f; do
echo "### $(basename "$f" .md)"
echo '```'
cat "$f"
echo '```'
done)
## 分析
各AIの回答を比較して、最適なアプローチを選択してください。
EOF
echo -e "${GREEN}✓ 比較結果: $output_dir/comparison.md${NC}"
}
# AIコンテキストチェーン前のAIの出力を次のAIの入力に
ai_chain() {
local initial_prompt="$1"
local chain_file="$AI_CONTEXT_DIR/chains/$(date +%Y%m%d-%H%M%S).md"
mkdir -p "$(dirname "$chain_file")"
echo "# AIチェーン実行" > "$chain_file"
echo "開始時刻: $(date)" >> "$chain_file"
echo "初期プロンプト: $initial_prompt" >> "$chain_file"
echo "" >> "$chain_file"
# Step 1: 設計仮想的なChatGPT応答
echo "## Step 1: 設計フェーズ" >> "$chain_file"
echo "ChatGPTに設計を依頼..." >> "$chain_file"
# ここでChatGPT APIを呼ぶか、手動で設計を入力
# Step 2: 実装Claude Code
echo -e "${BLUE}Claude Codeで実装中...${NC}"
echo "## Step 2: 実装フェーズ (Claude Code)" >> "$chain_file"
claude "$initial_prompt を実装してください。前段の設計を参考に。" | tee -a "$chain_file"
echo -e "${GREEN}✓ AIチェーン完了: $chain_file${NC}"
}
# tmuxセッション管理
setup_ai_tmux() {
local session_name="ai-workspace"
# 既存のセッションをチェック
if tmux has-session -t "$session_name" 2>/dev/null; then
echo -e "${YELLOW}既存のセッションにアタッチします${NC}"
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" "$EDITOR"
tmux new-window -t "$session_name" -n "terminal"
tmux new-window -t "$session_name" -n "logs" "tail -f $CLAUDE_LOG_DIR/*.log"
# レイアウト設定
tmux select-window -t "$session_name:claude"
tmux split-window -h -p 30 "watch -n 1 'ls -la $CLAUDE_LOG_DIR | tail -10'"
echo -e "${GREEN}✓ tmuxセッション '$session_name' を作成しました${NC}"
tmux attach -t "$session_name"
}
# ヘルプメッセージ
show_help() {
cat << EOF
AI統合ヘルパー
使用方法:
$(basename "$0") import <chatgpt_file> [context_name] - ChatGPT会話をインポート
$(basename "$0") compare <task> - 複数AIでタスクを実行
$(basename "$0") chain <prompt> - AIチェーン実行
$(basename "$0") tmux - AI作業用tmuxセッション作成
$(basename "$0") help - このヘルプを表示
例:
$(basename "$0") import ~/chatgpt-logs/feature-design.md architecture
$(basename "$0") compare "FizzBuzz問題を解いて"
$(basename "$0") chain "RESTful APIを設計して実装"
$(basename "$0") tmux
EOF
}
# メイン処理
case "$1" in
import)
import_chatgpt_conversation "$2" "$3"
;;
compare)
multi_ai_task "$2"
;;
chain)
ai_chain "$2"
;;
tmux)
setup_ai_tmux
;;
help|--help|-h)
show_help
;;
*)
show_help
exit 1
;;
esac

View File

@ -0,0 +1,54 @@
#!/bin/bash
# Arch Linux用のClaude Code安全チェックスクリプト
COMMAND="$1"
# Arch Linux特有の危険なコマンド
ARCH_DANGEROUS=(
"pacman -Rdd" # 依存関係無視の削除
"pacman -Syu --noconfirm" # 確認なしのシステム更新
"rm -rf /boot" # ブートローダー削除
"rm -rf /etc/pacman" # pacman設定削除
"makepkg --asroot" # rootでのパッケージビルド
"yaourt" # 非推奨のAURヘルパー
)
# 警告が必要なコマンド
ARCH_WARNING=(
"pacman -Syu"
"pacman -R"
"systemctl disable"
"systemctl mask"
"mkinitcpio"
"grub-mkconfig"
)
# 基本的な危険コマンドチェック
source "$(dirname "$0")/safe-command-check.sh" 2>/dev/null || true
# Arch特有のチェック
for pattern in "${ARCH_DANGEROUS[@]}"; do
if [[ "$COMMAND" =~ $pattern ]]; then
echo "❌ Arch Linuxで危険なコマンド: $COMMAND"
exit 1
fi
done
for pattern in "${ARCH_WARNING[@]}"; do
if [[ "$COMMAND" =~ $pattern ]]; then
echo "⚠️ システムに影響するコマンド: $COMMAND"
echo "実行前にスナップショットの作成を推奨します"
read -p "続行しますか? (yes/no): " confirm
if [[ "$confirm" != "yes" ]]; then
exit 1
fi
fi
done
# AURヘルパーの使用をチェック
if [[ "$COMMAND" =~ (yay|paru|aurman) ]]; then
echo "📦 AURヘルパーを使用: $COMMAND"
echo "AURパッケージは信頼できるか確認してください"
fi
exit 0

184
scripts/claude-help.sh Executable file
View File

@ -0,0 +1,184 @@
#!/bin/bash
# Claude Code拡張ヘルプコマンド
# カラー定義
BLUE='\033[0;34m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'
# ヘルプカテゴリを表示
show_category() {
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}$1${NC}"
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
}
# メインヘルプ関数
claude_help() {
clear
echo -e "${CYAN}🤖 Claude Code 拡張ヘルプ${NC}\n"
show_category "📝 テキスト入力ショートカット"
cat << 'EOF'
^A (Ctrl+A) ・・・行頭に移動
^E (Ctrl+E) ・・・行末に移動
^B (Ctrl+B) ・・・1文字前に戻る
^F (Ctrl+F) ・・・1文字後に進む
^W (Ctrl+W) ・・・単語単位で削除
^K (Ctrl+K) ・・・カーソル位置から行末まで削除
^U (Ctrl+U) ・・・カーソル位置から行頭まで削除
^J (Ctrl+J) ・・・改行Enter代替
^R (Ctrl+R) ・・・履歴検索
EOF
show_category "🎮 Claude Code特有の操作"
cat << 'EOF'
ESC×1 ・・・入力中のテキストを全消去
ESC×2 ・・・前のメッセージに戻る
\ + Enter ・・・複数行入力(確実に動作)
Tab ・・・オートコンプリート
↑/↓ ・・・コマンド履歴
EOF
show_category "🚀 起動オプション"
cat << 'EOF'
claude --resume ・・・前回のセッションを復元
claude --dangerously-skip-permissions ・・・許可確認をスキップ(危険)
claude --thinking ・・・思考プロセスを表示
claude --model MODEL_NAME ・・・特定のモデルを使用
claude IMAGE.png ・・・画像を含めて起動
EOF
show_category "💭 思考モード"
cat << 'EOF'
think ・・・標準的な思考モード
think hard ・・・より深い思考モード
ultrathink ・・・最も深い思考モード(時間がかかる)
EOF
show_category "📚 公式ドキュメント"
cat << 'EOF'
概要 : https://docs.anthropic.com/en/docs/claude-code/overview
クイックスタート: https://docs.anthropic.com/en/docs/claude-code/quickstart
メモリ管理 : https://docs.anthropic.com/en/docs/claude-code/memory
ワークフロー: https://docs.anthropic.com/en/docs/claude-code/common-workflows
設定 : https://docs.anthropic.com/en/docs/claude-code/settings
トラブルシューティング: https://docs.anthropic.com/en/docs/claude-code/troubleshooting
EOF
show_category "🛠️ スラッシュコマンド"
cat << 'EOF'
/help ・・・ヘルプを表示
/clear ・・・会話をクリア
/init ・・・CLAUDE.mdを生成
/web ・・・Web検索を有効化
/exit ・・・セッションを終了
EOF
show_category "⚡ Tips"
cat << 'EOF'
• 画像はクリップボードから直接ペースト可能
• #で始まるメッセージはCLAUDE.mdに追加される
• ~/.claude/settings.jsonで詳細設定が可能
• ~/.claude/CLAUDE.mdでグローバル設定を記述
EOF
echo -e "${YELLOW}詳細は 'claude-help [カテゴリ]' で確認できます${NC}"
echo -e "${YELLOW}カテゴリ: shortcuts, options, thinking, docs, slash, tips${NC}"
}
# カテゴリ別ヘルプ
case "$1" in
"shortcuts"|"s")
show_category "📝 テキスト入力ショートカット詳細"
cat << 'EOF'
基本移動:
^A (Ctrl+A) - カーソルを行頭に移動
^E (Ctrl+E) - カーソルを行末に移動
^B (Ctrl+B) - 1文字左へ移動
^F (Ctrl+F) - 1文字右へ移動
単語移動:
Alt+B - 1単語左へ移動
Alt+F - 1単語右へ移動
削除・編集:
^W (Ctrl+W) - 単語単位で後方削除
^K (Ctrl+K) - カーソル位置から行末まで削除
^U (Ctrl+U) - カーソル位置から行頭まで削除
^D (Ctrl+D) - カーソル位置の文字を削除
^Y (Ctrl+Y) - 最後に削除したテキストを貼り付け
履歴・検索:
^R (Ctrl+R) - インクリメンタル履歴検索
^G (Ctrl+G) - 履歴検索をキャンセル
↑/↓ - コマンド履歴を順番に表示
EOF
;;
"options"|"o")
show_category "🚀 起動オプション詳細"
cat << 'EOF'
セッション管理:
--resume 前回のセッションを復元
--dangerously-skip-permissions 許可確認をスキップ(注意)
思考モード:
--thinking 思考プロセスを表示
モデル選択:
--model claude-3-opus-20240229 特定のモデルを使用
設定:
--settings path/to/settings.json カスタム設定ファイルを使用
その他:
claude IMAGE.png 画像を含めて起動
claude "質問内容" 直接質問を投げる
EOF
;;
"docs"|"d")
show_category "📚 公式ドキュメントリンク"
cat << 'EOF'
基本:
概要: https://docs.anthropic.com/en/docs/claude-code/overview
クイックスタート: https://docs.anthropic.com/en/docs/claude-code/quickstart
機能:
メモリ管理: https://docs.anthropic.com/en/docs/claude-code/memory
ワークフロー: https://docs.anthropic.com/en/docs/claude-code/common-workflows
IDE統合: https://docs.anthropic.com/en/docs/claude-code/ide-integrations
MCP: https://docs.anthropic.com/en/docs/claude-code/mcp
設定・管理:
設定: https://docs.anthropic.com/en/docs/claude-code/settings
フック: https://docs.anthropic.com/en/docs/claude-code/hooks
セキュリティ: https://docs.anthropic.com/en/docs/claude-code/security
トラブルシューティング:
トラブルシューティング: https://docs.anthropic.com/en/docs/claude-code/troubleshooting
その他:
GitHub Issues: https://github.com/anthropics/claude-code/issues
EOF
;;
"")
claude_help
;;
*)
echo "不明なカテゴリ: $1"
echo "利用可能: shortcuts, options, thinking, docs, slash, tips"
;;
esac

View File

@ -0,0 +1,139 @@
#!/bin/zsh
# Claude Code用のzsh関数集
# 拡張ヘルプ関数
function claude-help() {
local script_path="${0:a:h}/claude-help.sh"
# スクリプトが見つからない場合のフォールバック
if [[ ! -f "$script_path" ]]; then
script_path="$HOME/git/claude/scripts/claude-help.sh"
fi
if [[ -f "$script_path" ]]; then
bash "$script_path" "$@"
else
echo "Error: claude-help.sh not found"
echo "Expected location: $script_path"
fi
}
# クイックリファレンス(従来の関数を改良)
function claude-readme() {
# カラー定義
local BLUE='\033[0;34m'
local GREEN='\033[0;32m'
local YELLOW='\033[1;33m'
local NC='\033[0m'
echo -e "${GREEN}Claude Code クイックリファレンス${NC}"
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo '
ショートカット:
^A/^E ・・・行頭/行末に移動
^B/^F ・・・1文字前/後に移動
^W ・・・単語削除(高速)
^J ・・・改行Enter代替
Claude特有:
ESC×1 ・・・入力を全消去
ESC×2 ・・・前のメッセージに戻る
\ + Enter ・・・複数行入力
よく使うコマンド:
claude --resume ・・・セッション復元
claude --dangerously-skip-permissions ・・・許可スキップ
think / think hard / ultrathink ・・・思考モード
'
echo -e "${YELLOW}詳細は 'claude-help' で確認${NC}"
}
# Claude Codeセッションの管理
function claude-session() {
case "$1" in
"save")
# 現在のセッションIDを保存
echo "Session saved (use 'claude --resume' to restore)"
;;
"list")
# 利用可能なセッションをリスト
ls -la ~/.claude/sessions/ 2>/dev/null || echo "No sessions found"
;;
*)
echo "Usage: claude-session [save|list]"
;;
esac
}
# Claude Code用の安全チェック付き実行
function claude-safe() {
local hooks_dir="$HOME/git/claude/scripts"
# 安全チェックスクリプトを設定
export CLAUDE_BEFORE_BASH="$hooks_dir/claude-arch-safety-check.sh"
# Claude Codeを起動
claude "$@"
# 環境変数をクリア
unset CLAUDE_BEFORE_BASH
}
# プロジェクト固有のCLAUDE.mdを編集
function claude-edit-config() {
local config_file="CLAUDE.md"
if [[ ! -f "$config_file" ]]; then
echo "Creating new CLAUDE.md..."
cat > "$config_file" << 'EOF'
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
[プロジェクトの概要をここに記載]
## Commands
[よく使うコマンドをここに記載]
## Architecture
[アーキテクチャの説明をここに記載]
EOF
fi
${EDITOR:-vim} "$config_file"
}
# Claude Codeのドキュメントを開く
function claude-docs() {
local topic="${1:-overview}"
local base_url="https://docs.anthropic.com/en/docs/claude-code"
case "$topic" in
"shortcuts"|"keys")
open "$base_url/interactive-mode" 2>/dev/null || xdg-open "$base_url/interactive-mode"
;;
"settings")
open "$base_url/settings" 2>/dev/null || xdg-open "$base_url/settings"
;;
"memory")
open "$base_url/memory" 2>/dev/null || xdg-open "$base_url/memory"
;;
*)
open "$base_url/$topic" 2>/dev/null || xdg-open "$base_url/$topic"
;;
esac
}
# エイリアス定義
alias ch='claude-help'
alias cr='claude-readme'
alias cs='claude-safe'
alias ce='claude-edit-config'
alias cd-docs='claude-docs'
# 初回実行時のメッセージ
if [[ -z "$CLAUDE_ZSH_LOADED" ]]; then
export CLAUDE_ZSH_LOADED=1
echo "Claude Code helper functions loaded. Type 'claude-help' for more info."
fi

47
scripts/safe-command-check.sh Executable file
View File

@ -0,0 +1,47 @@
#!/bin/bash
# Claude Code用の安全なコマンドチェッカー
COMMAND="$1"
# 危険なコマンドパターン
DANGEROUS_PATTERNS=(
"rm -rf /"
"rm -rf ~"
":(){ :|:& };:" # Fork bomb
"> /dev/sda"
"dd if=/dev/zero"
"mkfs"
"format"
)
# 確認が必要なコマンド
CONFIRM_PATTERNS=(
"sudo"
"rm -rf"
"git push --force"
"npm publish"
"pip install"
)
# 危険なコマンドをチェック
for pattern in "${DANGEROUS_PATTERNS[@]}"; do
if [[ "$COMMAND" =~ $pattern ]]; then
echo "❌ 危険なコマンドを検出しました: $COMMAND"
echo "このコマンドは実行できません。"
exit 1
fi
done
# 確認が必要なコマンドをチェック
for pattern in "${CONFIRM_PATTERNS[@]}"; do
if [[ "$COMMAND" =~ $pattern ]]; then
echo "⚠️ 確認が必要なコマンド: $COMMAND"
read -p "本当に実行しますか? (yes/no): " confirm
if [[ "$confirm" != "yes" ]]; then
echo "コマンドをキャンセルしました。"
exit 1
fi
fi
done
echo "✅ コマンドは安全です: $COMMAND"

57
scripts/setup-help.sh Executable file
View File

@ -0,0 +1,57 @@
#!/bin/bash
# Claude Code カスタムヘルプのセットアップスクリプト
set -e
# カラー定義
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
echo -e "${GREEN}Claude Code カスタムヘルプをセットアップします${NC}"
# スクリプトディレクトリの確認
SCRIPT_DIR="$HOME/git/claude/scripts"
if [[ ! -d "$SCRIPT_DIR" ]]; then
echo -e "${YELLOW}スクリプトディレクトリを作成します...${NC}"
mkdir -p "$SCRIPT_DIR"
fi
# 実行権限の付与
echo -e "${GREEN}実行権限を設定中...${NC}"
chmod +x "$SCRIPT_DIR"/*.sh 2>/dev/null || true
# .zshrcへの追加確認
ZSHRC="$HOME/.zshrc"
SOURCE_LINE="source \"\$HOME/git/claude/scripts/claude-zsh-functions.sh\""
if grep -q "claude-zsh-functions.sh" "$ZSHRC" 2>/dev/null; then
echo -e "${YELLOW}既に.zshrcに設定があります${NC}"
else
echo -e "${GREEN}.zshrcに設定を追加しますか${NC}"
read -p "続行しますか? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "" >> "$ZSHRC"
echo "# Claude Code Helper Functions" >> "$ZSHRC"
echo "$SOURCE_LINE" >> "$ZSHRC"
echo -e "${GREEN}✓ .zshrcに追加しました${NC}"
else
echo -e "${YELLOW}手動で以下を.zshrcに追加してください:${NC}"
echo "$SOURCE_LINE"
fi
fi
# テスト実行
echo -e "\n${GREEN}セットアップ完了!${NC}"
echo -e "${YELLOW}以下のコマンドでテストしてください:${NC}"
echo " source ~/.zshrc"
echo " claude-help"
echo ""
echo -e "${GREEN}利用可能なコマンド:${NC}"
echo " claude-help - 拡張ヘルプ表示"
echo " ch - claude-helpの短縮形"
echo " cr - クイックリファレンス"
echo " cs - 安全モードで起動"
echo " claude-docs - 公式ドキュメントを開く"