$npx -y skills add Soul-Brews-Studio/arra-oracle-skills-cli --skill recapSession orientation and awareness — retro summaries, handoffs, git state, focus. Use when starting a session, after /jump, lost your place, switching context, or when user asks "now", "where are we", "what are we doing", "status", "recap". Do NOT trigger for "standup" or "morning
| 1 | # /recap — Session Orientation & Awareness |
| 2 | |
| 3 | **Goal**: Orient yourself fast. Rich context by default. Mid-session awareness with `--now`. |
| 4 | |
| 5 | ## Usage |
| 6 | |
| 7 | ``` |
| 8 | /recap # Rich: retro summary, handoff, tracks, git |
| 9 | /recap --quick # Minimal: git + focus only, no file reads |
| 10 | /recap --now # Mid-session: timeline + jumps from AI memory |
| 11 | /recap --now deep # Mid-session: + handoff + tracks + connections |
| 12 | ``` |
| 13 | |
| 14 | --- |
| 15 | |
| 16 | ## DEFAULT MODE (Rich) |
| 17 | |
| 18 | **Run the rich script, then add suggestions:** |
| 19 | |
| 20 | ```bash |
| 21 | bun ~/.claude/skills/recap/recap-rich.ts |
| 22 | ``` |
| 23 | |
| 24 | Script reads retro summaries, handoff content, tracks, git state. Then LLM adds: |
| 25 | - **What's next?** (2-3 options based on context) |
| 26 | |
| 27 | ### Step 1.5: Detect INCUBATED_BY (#229) |
| 28 | |
| 29 | The recap-rich.ts script auto-detects `.claude/INCUBATED_BY` breadcrumbs. If present, shows: |
| 30 | |
| 31 | ``` |
| 32 | ## ⚠️ INCUBATED REPO |
| 33 | oracle: mawui-oracle |
| 34 | date: 2026-04-13 |
| 35 | source: https://github.com/... |
| 36 | ``` |
| 37 | |
| 38 | This tells the oracle: "You are in a repo tracked by another oracle. Check the breadcrumb for context." |
| 39 | |
| 40 | ### Step 2: Git context |
| 41 | |
| 42 | ```bash |
| 43 | git status --short |
| 44 | git log --oneline -1 |
| 45 | ``` |
| 46 | |
| 47 | Check what's appropriate from git status: |
| 48 | - **Uncommitted changes?** → show them, suggest commit or stash |
| 49 | - **On a branch (not main)?** → `git log main..HEAD --oneline` to see branch work |
| 50 | - **Branch ahead of remote?** → suggest push or PR |
| 51 | - **Clean on main?** → just show last commit, move on |
| 52 | |
| 53 | Only read what matters — don't dump 10 commits if status is clean. |
| 54 | |
| 55 | ### Step 3: Read latest ψ/ brain files |
| 56 | |
| 57 | Sort all ψ/ files by modification time, read the most recent: |
| 58 | |
| 59 | ```bash |
| 60 | find ψ/ -name '*.md' -not -name 'CLAUDE.md' -not -name 'README.md' -not -name '.gitkeep' 2>/dev/null | xargs ls -t 2>/dev/null | head -5 |
| 61 | ``` |
| 62 | |
| 63 | Read those top 5 files. This recovers the same context `/compact` restores — handoffs, retros, learnings, drafts, whatever was touched last. |
| 64 | |
| 65 | ### Step 4: Dig last session |
| 66 | |
| 67 | ```bash |
| 68 | ORACLE_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd) |
| 69 | ENCODED_PWD=$(echo "$ORACLE_ROOT" | sed 's|^/|-|; s|[/.]|-|g') |
| 70 | PROJECT_BASE=$(ls -d "$HOME/.claude/projects/${ENCODED_PWD}" 2>/dev/null | head -1) |
| 71 | export PROJECT_DIRS="$PROJECT_BASE" |
| 72 | |
| 73 | # Strip -wt* suffix to find parent project dir |
| 74 | PARENT_ENCODED=$(echo "$ENCODED_PWD" | sed 's/-wt-[^/]*$//') |
| 75 | if [ "$PARENT_ENCODED" != "$ENCODED_PWD" ]; then |
| 76 | PARENT_BASE=$(ls -d "$HOME/.claude/projects/${PARENT_ENCODED}" 2>/dev/null | head -1) |
| 77 | [ -n "$PARENT_BASE" ] && export PROJECT_DIRS="$PROJECT_DIRS:$PARENT_BASE" |
| 78 | fi |
| 79 | |
| 80 | # nullglob-safe worktree scan (both parent and self) |
| 81 | for base in "$PROJECT_BASE" "$PARENT_BASE"; do |
| 82 | [ -z "$base" ] && continue |
| 83 | for wt in "$base"-wt-*(N); do # (N) = zsh nullglob qualifier |
| 84 | [ -d "$wt" ] && export PROJECT_DIRS="$PROJECT_DIRS:$wt" |
| 85 | done |
| 86 | done |
| 87 | |
| 88 | python3 ~/.claude/skills/dig/scripts/dig.py 1 |
| 89 | ``` |
| 90 | |
| 91 | Include in recap: |
| 92 | ``` |
| 93 | 📡 Last session: HH:MM–HH:MM (Xm, N msgs) — [topic] |
| 94 | ``` |
| 95 | |
| 96 | Need more? `/dig 5` or `/dig --timeline`. |
| 97 | |
| 98 | **Total**: 1 bash call + LLM analysis |
| 99 | |
| 100 | --- |
| 101 | |
| 102 | ## QUICK MODE (`/recap --quick`) |
| 103 | |
| 104 | **Minimal, no content reads:** |
| 105 | |
| 106 | ```bash |
| 107 | bun ~/.claude/skills/recap/recap.ts |
| 108 | ``` |
| 109 | |
| 110 | Script outputs git status + focus state (~0.1s). Then LLM adds: |
| 111 | - **What's next?** (2-3 options based on git state) |
| 112 | |
| 113 | --- |
| 114 | |
| 115 | ## "What's next?" Rules |
| 116 | |
| 117 | | If you see... | Suggest... | |
| 118 | |---------------|------------| |
| 119 | | Handoff exists | Continue from handoff | |
| 120 | | Untracked files | Commit them | |
| 121 | | Focus = completed | Pick from tracks or start fresh | |
| 122 | | Branch ahead | Push or create PR | |
| 123 | | Streak active | Keep momentum going | |
| 124 | |
| 125 | --- |
| 126 | |
| 127 | ## Hard Rules |
| 128 | |
| 129 | 1. **ONE bash call** — never multiple parallel calls (adds latency) |
| 130 | 2. **No subagents** — everything in main agent |
| 131 | 3. **Ask, don't suggest** — "What next?" not "You should..." |
| 132 | 4. **Verify pending before reporting** — see "Verify Before Reporting" section below. This is NON-NEGOTIABLE. |
| 133 | 5. **Print absolute paths** — when referencing vault files, render the resolved `$ROOT/ψ/...` path (starts with `/`). Bare `ψ/...` is not clickable. See CONVENTIONS.md. |
| 134 | |
| 135 | --- |
| 136 | |
| 137 | ## Verify Before Reporting (MANDATORY) |
| 138 | |
| 139 | Handoffs, retros, and memory files are **point-in-time claims**, not live state. Between the previous session ending and this one starting, work may have been done, PRs may have merged, files may have been copied. **Echoing a stale pending list as if it were current is a lie by omission** — the human ends up chasing items that are already done. |
| 140 | |
| 141 | ### The rule |
| 142 | |
| 143 | Before outputting any "Pending" table or "Next action" suggestion, you MUST verify each claimed pending item against current reality: |
| 144 | |
| 145 | | Claim type | How to verify | |
| 146 | |---|---| |
| 147 | | "Copy file X to path Y" |