Initial commit
This commit is contained in:
110
hooks/session-start.sh
Executable file
110
hooks/session-start.sh
Executable file
@@ -0,0 +1,110 @@
|
||||
#!/usr/bin/env bash
|
||||
# Session Start Hook
|
||||
# Provides context about Orchestra Plugin to Claude
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Sync .claude.json settings to settings.local.json (silent mode)
|
||||
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
if [ -f "$PROJECT_ROOT/hooks/sync-claude-settings.sh" ]; then
|
||||
bash "$PROJECT_ROOT/hooks/sync-claude-settings.sh" true 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Initialize/migrate progress tracking system
|
||||
PROGRESS_FILE="$PROJECT_ROOT/.orchestra/cache/progress.json"
|
||||
MIGRATE_SCRIPT="$PROJECT_ROOT/hooks/lib/progress-migrate.sh"
|
||||
|
||||
if [ -f "$MIGRATE_SCRIPT" ]; then
|
||||
# Run migration silently (it handles initialization if file doesn't exist)
|
||||
bash "$MIGRATE_SCRIPT" > /dev/null 2>&1 || true
|
||||
|
||||
# Update session start time if progress.json exists
|
||||
if [ -f "$PROGRESS_FILE" ] && command -v jq &> /dev/null; then
|
||||
# Get timestamp in milliseconds (macOS compatible)
|
||||
if command -v python3 &> /dev/null; then
|
||||
TIMESTAMP=$(python3 -c 'import time; print(int(time.time() * 1000))')
|
||||
elif command -v python &> /dev/null; then
|
||||
TIMESTAMP=$(python -c 'import time; print(int(time.time() * 1000))')
|
||||
else
|
||||
TIMESTAMP=$(($(date +%s) * 1000))
|
||||
fi
|
||||
TEMP_FILE="${PROGRESS_FILE}.session.tmp"
|
||||
jq --argjson timestamp "$TIMESTAMP" \
|
||||
'.metadata.sessionStartTime = $timestamp' \
|
||||
"$PROGRESS_FILE" > "$TEMP_FILE" 2>/dev/null && mv "$TEMP_FILE" "$PROGRESS_FILE" || true
|
||||
fi
|
||||
fi
|
||||
|
||||
# Get language setting from environment
|
||||
LANG="${ORCHESTRA_LANGUAGE:-en}"
|
||||
|
||||
# Create welcome message as context for Claude
|
||||
if [ "$LANG" = "ja" ]; then
|
||||
CONTEXT=$(cat <<'EOF'
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
🎭 ORCHESTRA プラグイン読み込み完了
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
✨ 専門エージェントが待機中です:
|
||||
|
||||
😎 Blake - リリース管理者(デプロイ、リリース)
|
||||
🤓 Eden - ドキュメントリード(技術ライティング)
|
||||
😤 Finn - QA & テスト(テストカバレッジ、検証)
|
||||
🤨 Iris - セキュリティ監査官(認証、シークレット、脆弱性)
|
||||
🤔 Kai - システムアーキテクト(設計判断、ADR)
|
||||
😌 Leo - データベースアーキテクト(スキーマ、マイグレーション)
|
||||
😊 Mina - 統合スペシャリスト(外部API)
|
||||
😄 Nova - UI/UX スペシャリスト(インターフェース、アクセシビリティ)
|
||||
🧐 Riley - 要件明確化担当(曖昧なリクエスト)
|
||||
😐 Skye - コード実装者(明確な仕様)
|
||||
😬 Theo - 運用 & 監視(信頼性、インシデント)
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
重要:ユーザーに挨拶し、Orchestraプラグインが読み込まれたことを伝えてください。
|
||||
利用可能な専門エージェントをリストし、タスクのサポートを提案してください。
|
||||
|
||||
EOF
|
||||
)
|
||||
else
|
||||
CONTEXT=$(cat <<'EOF'
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
🎭 ORCHESTRA PLUGIN LOADED
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
✨ Specialized agents are ready for coordination:
|
||||
|
||||
😎 Blake - Release Manager (deployments, releases)
|
||||
🤓 Eden - Documentation Lead (technical writing)
|
||||
😤 Finn - QA & Testing (test coverage, validation)
|
||||
🤨 Iris - Security Auditor (auth, secrets, vulnerabilities)
|
||||
🤔 Kai - System Architect (design decisions, ADRs)
|
||||
😌 Leo - Database Architect (schema, migrations)
|
||||
😊 Mina - Integration Specialist (external APIs)
|
||||
😄 Nova - UI/UX Specialist (interfaces, accessibility)
|
||||
🧐 Riley - Requirements Clarifier (vague requests)
|
||||
😐 Skye - Code Implementer (well-defined specs)
|
||||
😬 Theo - Ops & Monitoring (reliability, incidents)
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
IMPORTANT: You should greet the user and inform them that Orchestra Plugin has been loaded.
|
||||
List the available specialist agents and encourage them to ask for help with their tasks.
|
||||
|
||||
EOF
|
||||
)
|
||||
fi
|
||||
|
||||
# Output JSON format for Claude's context
|
||||
cat <<EOF
|
||||
{
|
||||
"hookSpecificOutput": {
|
||||
"hookEventName": "SessionStart",
|
||||
"additionalContext": $(echo "$CONTEXT" | jq -Rs .)
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user