491a45dd43
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
52 lines
1.3 KiB
Bash
52 lines
1.3 KiB
Bash
#!/bin/bash
|
|
# Injects dynamic project context at session start.
|
|
# Used as a SessionStart hook.
|
|
|
|
CONTEXT=""
|
|
|
|
# Current branch (or detached HEAD)
|
|
BRANCH=$(git branch --show-current 2>/dev/null)
|
|
if [ -n "$BRANCH" ]; then
|
|
CONTEXT="Branch: $BRANCH"
|
|
elif git rev-parse --git-dir >/dev/null 2>&1; then
|
|
SHORT_SHA=$(git rev-parse --short HEAD 2>/dev/null)
|
|
CONTEXT="HEAD: detached at $SHORT_SHA"
|
|
fi
|
|
|
|
# Last commit
|
|
LAST_COMMIT=$(git log --oneline -1 2>/dev/null)
|
|
if [ -n "$LAST_COMMIT" ]; then
|
|
CONTEXT="$CONTEXT | Last commit: $LAST_COMMIT"
|
|
fi
|
|
|
|
# Uncommitted changes count
|
|
CHANGES=$(git status --porcelain 2>/dev/null | wc -l | tr -d ' ')
|
|
if [ "$CHANGES" -gt 0 ] 2>/dev/null; then
|
|
CONTEXT="$CONTEXT | Uncommitted changes: $CHANGES files"
|
|
fi
|
|
|
|
# Staged changes indicator
|
|
if ! git diff --cached --quiet 2>/dev/null; then
|
|
CONTEXT="$CONTEXT | Staged: yes"
|
|
fi
|
|
|
|
# Stash count
|
|
STASH_COUNT=$(git stash list 2>/dev/null | wc -l | tr -d ' ')
|
|
if [ "$STASH_COUNT" -gt 0 ] 2>/dev/null; then
|
|
CONTEXT="$CONTEXT | Stashes: $STASH_COUNT"
|
|
fi
|
|
|
|
# Active PR on current branch (if gh CLI is available)
|
|
if command -v gh >/dev/null 2>&1; then
|
|
PR_INFO=$(gh pr view --json number,title,state --jq '"PR #\(.number): \(.title) (\(.state))"' 2>/dev/null)
|
|
if [ -n "$PR_INFO" ]; then
|
|
CONTEXT="$CONTEXT | $PR_INFO"
|
|
fi
|
|
fi
|
|
|
|
if [ -n "$CONTEXT" ]; then
|
|
echo "$CONTEXT"
|
|
fi
|
|
|
|
exit 0
|