recalllisted
Install: claude install-skill mistakenot/auto-stack
# Context Recall
Reconstruct the development story from contextual commit history and present it as a natural briefing.
## Argument Detection
Check how `recall` was invoked:
- **No arguments** — run the default mode (full branch/session briefing below).
- **Bare word** (e.g. `recall auth`) — treat as a scope query. Jump to **Scope Query**.
- **`word(word)` pattern** (e.g. `recall rejected(auth)`) — treat as an action+scope query. Jump to **Action+Scope Query**.
---
## Default Mode (no arguments)
### Step 1: Detect Branch State
Determine the working state:
```bash
CURRENT_BRANCH=$(git branch --show-current)
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo "main")
# Find the actual parent branch, not just the repo default.
# Try upstream tracking branch first (fast path).
BASE_BRANCH=$(git rev-parse --abbrev-ref @{upstream} 2>/dev/null | sed 's|^origin/||')
# If no upstream, find the nearest local branch by commit distance.
if [ -z "$BASE_BRANCH" ]; then
BASE_BRANCH=$(git for-each-ref --format='%(refname:short)' refs/heads/ | while read branch; do
[ "$branch" = "$CURRENT_BRANCH" ] && continue
echo "$(git log --oneline "$branch..$CURRENT_BRANCH" 2>/dev/null | wc -l | tr -d ' ') $branch"
done | sort -n | head -1 | awk '{print $2}')
fi
# Final fallback to default branch.
BASE_BRANCH=${BASE_BRANCH:-$DEFAULT_BRANCH}
UNSTAGED=$(git diff --stat)
STAGED=$(git diff --cached --stat)
BRANC