src/skills/recap/SKILL.md
Session 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 check" (use /standup), or session mining "dig", "past sessions" (use /dig).
npx skillsauth add Soul-Brews-Studio/oracle-skills-cli recapInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Goal: Orient yourself fast. Rich context by default. Mid-session awareness with --now.
/recap # Rich: retro summary, handoff, tracks, git
/recap --quick # Minimal: git + focus only, no file reads
/recap --now # Mid-session: timeline + jumps from AI memory
/recap --now deep # Mid-session: + handoff + tracks + connections
Run the rich script, then add suggestions:
bun ~/.claude/skills/recap/recap-rich.ts
Script reads retro summaries, handoff content, tracks, git state. Then LLM adds:
The recap-rich.ts script auto-detects .claude/INCUBATED_BY breadcrumbs. If present, shows:
## ⚠️ INCUBATED REPO
oracle: mawui-oracle
date: 2026-04-13
source: https://github.com/...
This tells the oracle: "You are in a repo tracked by another oracle. Check the breadcrumb for context."
git status --short
git log --oneline -1
Check what's appropriate from git status:
git log main..HEAD --oneline to see branch workOnly read what matters — don't dump 10 commits if status is clean.
Sort all ψ/ files by modification time, read the most recent:
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
Read those top 5 files. This recovers the same context /compact restores — handoffs, retros, learnings, drafts, whatever was touched last.
ORACLE_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
ENCODED_PWD=$(echo "$ORACLE_ROOT" | sed 's|^/|-|; s|[/.]|-|g')
PROJECT_BASE=$(ls -d "$HOME/.claude/projects/${ENCODED_PWD}" 2>/dev/null | head -1)
export PROJECT_DIRS="$PROJECT_BASE"
# Strip -wt* suffix to find parent project dir
PARENT_ENCODED=$(echo "$ENCODED_PWD" | sed 's/-wt-[^/]*$//')
if [ "$PARENT_ENCODED" != "$ENCODED_PWD" ]; then
PARENT_BASE=$(ls -d "$HOME/.claude/projects/${PARENT_ENCODED}" 2>/dev/null | head -1)
[ -n "$PARENT_BASE" ] && export PROJECT_DIRS="$PROJECT_DIRS:$PARENT_BASE"
fi
# nullglob-safe worktree scan (both parent and self)
for base in "$PROJECT_BASE" "$PARENT_BASE"; do
[ -z "$base" ] && continue
for wt in "$base"-wt-*(N); do # (N) = zsh nullglob qualifier
[ -d "$wt" ] && export PROJECT_DIRS="$PROJECT_DIRS:$wt"
done
done
python3 ~/.claude/skills/dig/scripts/dig.py 1
Include in recap:
📡 Last session: HH:MM–HH:MM (Xm, N msgs) — [topic]
Need more? /dig 5 or /dig --timeline.
Total: 1 bash call + LLM analysis
/recap --quick)Minimal, no content reads:
bun ~/.claude/skills/recap/recap.ts
Script outputs git status + focus state (~0.1s). Then LLM adds:
| If you see... | Suggest... | |---------------|------------| | Handoff exists | Continue from handoff | | Untracked files | Commit them | | Focus = completed | Pick from tracks or start fresh | | Branch ahead | Push or create PR | | Streak active | Keep momentum going |
$ROOT/ψ/... path (starts with /). Bare ψ/... is not clickable. See CONVENTIONS.md.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.
Before outputting any "Pending" table or "Next action" suggestion, you MUST verify each claimed pending item against current reality:
| Claim type | How to verify |
|---|---|
| "Copy file X to path Y" | ls path/Y — is it already there? |
| "PR #N open/merged" | gh pr view N --json state |
| "Branch X needs push" | git log origin/X..X — any commits? |
| "Apply pattern P to file F" | grep for the pattern in F |
| "Issue #N pending" | gh issue view N --json state |
| "Migration ready to run" | check migrations table or list |
⚠️ unverified in the table, do not assert stateIf the handoff pending list and reality diverge (>1 item stale), show the correction explicitly so the human sees the drift:
| Item | Handoff said | Reality |
|------|--------------|---------|
| Copy cache/ to maw-ui | pending | DONE (Apr 20 04:16) |
| PR #4 merge | open | MERGED |
Patterns over intentions — the code is the truth, the handoff is an intention. Always verify.
/recap --now)Mid-session awareness from AI memory — no file reading needed. Use when user asks "where are we", "now", "status", "what are we doing".
AI reconstructs session timeline from conversation memory:
## This Session
| Time | Duration | Topic | Jump |
|------|----------|-------|------|
| HH:MM | ~Xm | First topic | - |
| HH:MM | ~Xm | Second topic | spark |
| HH:MM | ongoing | **Now**: Current | complete |
**Noticed**:
- [Pattern - energy/mode]
- [Jump pattern: sparks vs escapes vs completions]
**Status**:
- Energy: [level]
- Loose ends: [unfinished]
- Parked: [topics we'll return to]
**My Read**: [1-2 sentences]
---
**Next?**
| Icon | Type | Meaning | |------|------|---------| | spark | New idea, exciting | | complete | Finished, moving on | | return | Coming back to parked | | park | Intentional pause | | escape | Avoiding difficulty |
Healthy session: Mostly sparks and completes Warning sign: Too many escapes = avoidance pattern
/recap --now deep)Same as --now but adds bigger picture context.
1. Current session from AI memory
2. Read latest handoff: ls -t ψ/inbox/handoff/*.md | head -1
3. Git status: git status --short
4. Tracks: cat ψ/inbox/tracks/INDEX.md 2>/dev/null
Before outputting, run verification checks against each pending item (see "Verify Before Reporting" above). Batch checks in parallel:
gh pr list --state all for PR claimsls path/to/file for "copy X" claimsgrep for "apply pattern" claimsIf any diverge from the handoff, show the correction table.
Everything from --now, plus:
### Bigger Picture
**Came from**: [Last session/handoff summary - 1 line]
**Working on**: [Current thread/goal]
**Thread**: [Larger pattern this connects to]
### Pending
| Priority | Item | Source |
|----------|------|--------|
| Now | [Current task] | This session |
| Soon | [Next up] | Tracks/discussion |
| Later | [Backlog] | GitHub/tracks |
### Connections
**Pattern**: [What pattern emerged]
**Learning**: [Key insight from session]
**Oracle**: [Related past pattern, if any]
**My Read**: [2-3 sentences - deeper reflection]
**Next action?**
The recap scripts (recap.ts and recap-rich.ts) auto-detect and display the current session:
📡 Session: 74c32f34 | arra-oracle-skills-cli | 2h 15m
Detection: scans ~/.claude/projects/[encoded-pwd]/*.jsonl for the most recent session file, extracts short ID and elapsed time from first timestamp.
If session detection fails, skip silently — it's informational only.
If CLAUDE.md contains demographics from /awaken wizard v2, include in recap output:
**Oracle**: [name] ([pronouns]) | **Human**: [name] ([pronouns]) | **Language**: [pref]
Add this as one line after the timestamp in any mode. If demographics not present, skip silently.
Look for fields in CLAUDE.md: Human Pronouns, Oracle Pronouns, Language, Team, Experience.
Philosophy: Detect reality. Surface blockers. Offer direction. "Not just the clock. The map."
Version: 8.0 (Merged where-we-are into --now mode) Updated: 2026-02-10
testing
Cut a beta pre-release — bump CalVer with --beta, PR to beta branch, CI auto-tags + publishes to npm @beta. Use when user says 'release beta', 'cut beta', '/release-beta', or wants to publish a beta version for pre-release testing.
testing
Cut an alpha pre-release — bump CalVer, PR to alpha branch, CI auto-tags + publishes to npm @alpha. Use when user says 'release alpha', 'cut alpha', '/release-alpha', or wants to publish an alpha version.
tools
Talk to another oracle via maw federation. Uses fleet machine names (white, mba, clinic-nat, oracle-world, phaith). Auto-signs with current oracle's [host:handle] from CLAUDE.md. Global — works from any oracle repo.
development
Log information for future reference. Use when user says "fyi", "remember this", "note that", "for your info".