Use it when
- When the user wants to resume, continue or pick up earlier work or asks what they were working on, or opens a new session with only a greeting in a project whose STATUS.md has session history
Pick another skill
Not for a new project with no history (ab-project-start) or a quick status overview without resuming work (ab-project-status).
ab-project-startScaffolds AGENTS.md, CLAUDE.md, docs/context/ and BACKLOG.md by merging, then fills in conventions, goals and statusab-project-statusWhere the project stands: code state, work in flight, goal progress, top three next actionsName it in your tool
Every tool also picks a skill on its own when your request matches its description. Naming it picks it for sure.
Claude Code
/ab-resume-sessionCodex
$ab-resume-sessionIn Codex's pickerResume SessionPick up where the last session left off
Antigravity
/ab-resume-sessionGrok Build
/ab-resume-sessionPi
/skill:ab-resume-sessionCursor CLI
/ab-resume-sessionHermes
/ab-resume-sessionAmp
use the ab-resume-session skillAsk for it in plain words.
What it does
Reloads what earlier sessions left (the Session Continuity section and the rest of docs/context/STATUS.md, STATE.md, GOALS.md, BACKLOG.md, the latest checkpoints), checks git state and whether HEAD moved since the handoff, then presents an orientation of status, the last session's own pointers and the recorded traps, and asks where to start.
Load Context
Check Git State
Present Orientation
Structure the orientation as status, pointers, traps.
SKILL.md
The instructions the agent follows, from skills/ab-resume-session/SKILL.md.
Resume Session
Reload all session context and present a clear starting point. The resume is done when the user has the Step 3 orientation and a starting point is chosen. Follow these steps in order.
Step 1: Load Context
Read these files, in parallel where you can, and skip any that does not exist:
docs/: read its Session Continuity section first (what was done, what’s remaining, and where to start), then the rest: current project state, in-flight work, known issues.context/ STATUS.md docs/: execution state, the current wave, task progress, blockers.context/ STATE.md docs/: current objectives and priorities.context/ GOALS.md BACKLOG.md: pending items and their priority.
Also check for checkpoint files, and read the newest:
ls docs/context/CHECKPOINT-*.md docs/context/STATE.md 2>/dev/null | sort -r | head -5
Step 2: Check Git State
# Current branch
git branch --show-current
# Any uncommitted changes from last session
git status --short
# Recent commits
git log --oneline -10
# Any stashed work
git stash list
Freshness stamp check, only when docs/ exists and its frontmatter (read in Step 1) has a head: field:
# The stamp must be an ancestor of HEAD before it can anchor a count
git merge-base --is-ancestor <head> HEAD && echo ancestor
# Non-merge commits since the stamped HEAD
git log --oneline --no-merges <head>..HEAD
- Zero or one commit listed: fresh (the one commit is ab-session-wrap’s own wrap commit).
- More than one commit listed: warn “HEAD moved since the handoff” and list the commits.
<head>doesn’t resolve, or is not an ancestor of HEAD (a squash or rebase merge rewrote history; the old sha may still resolve from the branch or reflog): anchor on the last commit that touched the file instead, then re-run the count from there:git log -1 --format=%H -- docs/.context/ STATE.md - STATE.md doesn’t exist, or exists without a
head:field: skip this check; there’s no stamp to compare against.
Step 3: Present Orientation
Structure the orientation as status, pointers, traps.
Status, from Step 2 and STATUS.md:
- Branch: [branch name]
- Build: [as STATUS.md records it]
- Tests: [as STATUS.md records it]
- Uncommitted changes: [list or “clean”]
- Freshness: [fresh / “HEAD moved since the handoff” with the commit list / stamp check skipped, and why]
Pointers: quote the prior session’s own words rather than re-summarizing them, because a summary of a summary drifts:
[Quote the “What was done”, “What’s remaining”, and “Start here” text verbatim from the Session Continuity section of docs/context/STATUS.md.]
Traps: list only the priorities the project files actually record (STATE.md blockers, STATUS.md known issues, GOALS.md at-risk items, BACKLOG.md items flagged urgent). Omit a slot rather than inventing a filler priority; if none of these files name anything, say so instead of listing items by default.
Then ask whether to continue from here or work on something else.
Asking the user. Ask with your question tool if you have one, offering at most three options; otherwise ask in plain text with a numbered list. In a headless or unattended run nobody will answer: take the default named below, say so in your output, and log it in the run state’s decisions if there is a run state.
Options: 1. Continue from the “Start here” step. 2. Work on something else (the user names it). Default when nobody answers: continue from the “Start here” step, or from STATE.md’s first Next Step when there is none; stop after the orientation instead if neither names a step or the freshness check warned that HEAD moved, because the recorded step may already be done.