#!/bin/bash # Send notifications on events # Hook: PostToolUse (matcher: Bash) — run after bash commands; filter for git push in script logic # Note: Claude Code has no native PostPush event. To trigger on git push, check the bash command # string for "git push" using a matcher or conditional logic within this script. REPO_NAME=$(basename $(git rev-parse --show-toplevel 2>/dev/null) 2>/dev/null) COMMIT_MSG=$(git log -1 --pretty=%B 2>/dev/null) AUTHOR=$(git log -1 --pretty=%an 2>/dev/null) BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) echo "📢 Sending notification to team..." # Slack webhook example (replace with your webhook URL) SLACK_WEBHOOK="${SLACK_WEBHOOK_URL:-}" if [ -n "$SLACK_WEBHOOK" ]; then curl -X POST "$SLACK_WEBHOOK" \ -H 'Content-Type: application/json' \ -d "{ \"text\": \"New push to *$REPO_NAME*\", \"attachments\": [{ \"color\": \"good\", \"fields\": [ {\"title\": \"Branch\", \"value\": \"$BRANCH\", \"short\": true}, {\"title\": \"Author\", \"value\": \"$AUTHOR\", \"short\": true}, {\"title\": \"Commit\", \"value\": \"$COMMIT_MSG\"} ] }] }" \ --silent --output /dev/null echo "✅ Slack notification sent" fi # Discord webhook example (replace with your webhook URL) DISCORD_WEBHOOK="${DISCORD_WEBHOOK_URL:-}" if [ -n "$DISCORD_WEBHOOK" ]; then curl -X POST "$DISCORD_WEBHOOK" \ -H 'Content-Type: application/json' \ -d "{ \"content\": \"**New push to $REPO_NAME**\", \"embeds\": [{ \"title\": \"$COMMIT_MSG\", \"color\": 3066993, \"fields\": [ {\"name\": \"Branch\", \"value\": \"$BRANCH\", \"inline\": true}, {\"name\": \"Author\", \"value\": \"$AUTHOR\", \"inline\": true} ] }] }" \ --silent --output /dev/null echo "✅ Discord notification sent" fi # Email notification example EMAIL_TO="${TEAM_EMAIL:-}" if [ -n "$EMAIL_TO" ]; then echo "New push to $REPO_NAME by $AUTHOR" | \ mail -s "Git Push: $BRANCH" "$EMAIL_TO" echo "✅ Email notification sent" fi exit 0