{"id":"fe94de3c-ecf7-4164-8d87-9c2bf3a85bca","shortId":"N82b7A","kind":"skill","title":"context-restore","tagline":"Restore working context saved earlier by /context-save. Loads the most recent\nsaved state (across all branches by default) so you can pick up where you\nleft off — even across Conductor workspace handoffs.\nUse when asked to \"resume\", \"restore context\", \"where was I\", or\n\"pick up w","description":"## Preamble\n\n```bash\neval \"$(~/.vibestack/bin/vibe-slug 2>/dev/null)\" 2>/dev/null || SLUG=\"unknown\"\n_LEARN_FILE=\"${VIBESTACK_HOME:-$HOME/.vibestack}/projects/${SLUG:-unknown}/learnings.jsonl\"\nif [ -f \"$_LEARN_FILE\" ]; then\n  _LEARN_COUNT=$(wc -l < \"$_LEARN_FILE\" 2>/dev/null | tr -d ' ')\n  echo \"LEARNINGS: $_LEARN_COUNT entries loaded\"\n  if [ \"$_LEARN_COUNT\" -gt 5 ] 2>/dev/null; then\n    ~/.vibestack/bin/vibe-learnings-search --limit 5 2>/dev/null || true\n  fi\nelse\n  echo \"LEARNINGS: none yet\"\nfi\n```\n\n# /context-restore — Restore Saved Working Context\n\nYou are a **Staff Engineer reading a colleague's meticulous session notes** to\npick up exactly where they left off. Your job is to load the most recent saved\ncontext and present it clearly so the user can resume work without losing a beat.\n\n**HARD GATE:** Do NOT implement code changes. This skill only reads saved\ncontext files and presents the summary.\n\n**Default: load the most recent saved context across ALL branches.** This is\nintentionally different from `/context-save list`, which defaults to the current\nbranch. `/context-restore` is for Conductor workspace handoff — a context saved\non one branch can be resumed from another.\n\n**Do NOT filter the candidate set by current branch.** The `list` flow does\nthat; `/context-restore` does not.\n\n---\n\n## Detect command\n\nParse the user's input:\n\n- `/context-restore` → load the most recent saved context (any branch)\n- `/context-restore <title-fragment-or-number>` → load a specific saved context\n- `/context-restore list` → tell the user \"Use `/context-save list` — listing\n  lives on the save side\" and exit. No mode detection here.\n\n---\n\n## Restore flow\n\n### Step 1: Find saved contexts\n\n```bash\neval \"$(~/.vibestack/bin/vibe-slug 2>/dev/null)\" && mkdir -p ~/.vibestack/projects/$SLUG\nCHECKPOINT_DIR=\"${VIBESTACK_HOME:-$HOME/.vibestack}/projects/$SLUG/checkpoints\"\nif [ ! -d \"$CHECKPOINT_DIR\" ]; then\n  echo \"NO_CHECKPOINTS\"\nelse\n  # Use find + sort instead of ls -1t. Two reasons:\n  # 1. Canonical order is the filename YYYYMMDD-HHMMSS prefix (stable across\n  #    copies/rsync). Filesystem mtime drifts and is not authoritative.\n  # 2. On macOS, `find ... | xargs ls -1t` with zero results falls back to\n  #    listing cwd. `sort -r` on empty input cleanly returns nothing.\n  # Cap at 20 most recent: a user with 10k saved files shouldn't blow the\n  # context window just listing them. /context-save list handles pagination.\n  FILES=$(find \"$CHECKPOINT_DIR\" -maxdepth 1 -name \"*.md\" -type f 2>/dev/null | sort -r | head -20)\n  if [ -z \"$FILES\" ]; then\n    echo \"NO_CHECKPOINTS\"\n  else\n    echo \"$FILES\"\n  fi\nfi\n```\n\n**Candidates include every `.md` file in the directory, regardless of branch**\n(the branch is recorded in frontmatter, not used for filtering here). This\nenables Conductor workspace handoff.\n\n### Step 2: Load the right file\n\n- If the user specified a title fragment or number: find the matching file among\n  the candidates.\n- Otherwise: load the **first file returned by the `sort -r` above** — that is\n  the newest `YYYYMMDD-HHMMSS` prefix, which is the canonical \"most recent.\"\n\nRead the chosen file and present a summary:\n\n```\nRESUMING CONTEXT\n════════════════════════════════════════\nTitle:       {title}\nBranch:      {branch from frontmatter}\nSaved:       {timestamp, human-readable}\nDuration:    Last session was {formatted duration} (if available)\nStatus:      {status}\n════════════════════════════════════════\n\n### Summary\n{summary from saved file}\n\n### Remaining Work\n{remaining work items}\n\n### Notes\n{notes}\n```\n\nIf the current branch differs from the saved context's branch, note this:\n\"This context was saved on branch `{branch}`. You are currently on\n`{current branch}`. You may want to switch branches before continuing.\"\n\n### Step 3: Offer next steps\n\nAfter presenting, ask via AskUserQuestion:\n\n- A) Continue working on the remaining items\n- B) Show the full saved file\n- C) Just needed the context, thanks\n\nIf A, summarize the first remaining work item and suggest starting there.\n\n---\n\n## If no saved contexts exist\n\nIf Step 1 printed `NO_CHECKPOINTS`, tell the user:\n\n\"No saved contexts yet. Run `/context-save` first to save your current working\nstate, then `/context-restore` will find it.\"\n\n---\n\n## Important Rules\n\n- **Never modify code.** This skill only reads saved files and presents them.\n- **Always search across all branches by default.** Cross-branch resume is the\n  whole point. Only filter by branch if the user explicitly asks via a\n  title-fragment match that happens to be branch-specific.\n- **\"Most recent\" means the filename `YYYYMMDD-HHMMSS` prefix**, not\n  `ls -1t` (filesystem mtime). Filenames are stable across file-system\n  operations; mtime is not.\n- **This is a vibestack skill, not a Claude Code built-in.** When the user types\n  `/context-restore`, invoke this skill via the Skill tool.","tags":["context","restore","vibestack","timurgaleev","agent-skills","ai-agents","claude-code","cursor-ide","developer-tools","kiro","mcp","prompt-engineering"],"capabilities":["skill","source-timurgaleev","skill-context-restore","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-cursor-ide","topic-developer-tools","topic-kiro","topic-mcp","topic-prompt-engineering","topic-slash-commands"],"categories":["vibestack"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/timurgaleev/vibestack/context-restore","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add timurgaleev/vibestack","source_repo":"https://github.com/timurgaleev/vibestack","install_from":"skills.sh"}},"qualityScore":"0.457","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 15 github stars · SKILL.md body (4,866 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:06:20.118Z","embedding":null,"createdAt":"2026-05-18T19:06:20.118Z","updatedAt":"2026-05-18T19:06:20.118Z","lastSeenAt":"2026-05-18T19:06:20.118Z","tsv":"'-1':315,345,701 '-20':402 '/.vibestack/bin/vibe-learnings-search':98 '/.vibestack/bin/vibe-slug':53,286 '/.vibestack/projects':291 '/context-restore':111,201,232,242,251,257,635,732 '/context-save':10,193,263,383,626 '/dev/null':55,57,81,96,102,288,398 '/learnings.jsonl':68 '/projects':65,298 '1':280,319,392,614 '10k':371 '2':54,56,80,95,101,287,339,397,443 '20':365 '3':567 '5':94,100 'across':17,32,185,330,655,708 'alway':653 'among':461 'anoth':217 'ask':38,573,676 'askuserquest':575 'authorit':338 'avail':517 'b':583 'back':351 'bash':51,284 'beat':159 'blow':376 'branch':19,187,200,212,226,250,425,427,501,502,535,542,550,551,557,563,657,662,671,688 'branch-specif':687 'built':726 'built-in':725 'c':589 'candid':222,415,463 'canon':320,486 'cap':363 'chang':166 'checkpoint':293,302,307,389,409,617 'chosen':491 'claud':723 'clean':360 'clear':149 'code':165,643,724 'colleagu':123 'command':236 'conductor':33,204,439 'context':2,6,42,115,145,172,184,208,248,256,283,378,498,540,546,593,610,623 'context-restor':1 'continu':565,577 'copies/rsync':331 'count':75,87,92 'cross':661 'cross-branch':660 'current':199,225,534,554,556,631 'cwd':354 'd':83,301 'default':21,178,196,659 'detect':235,275 'differ':191,536 'dir':294,303,390 'directori':422 'drift':334 'durat':510,515 'earlier':8 'echo':84,106,305,407,411 'els':105,308,410 'empti':358 'enabl':438 'engin':120 'entri':88 'eval':52,285 'even':31 'everi':417 'exact':131 'exist':611 'exit':272 'explicit':675 'f':70,396 'fall':350 'fi':104,110,413,414 'file':61,72,79,173,373,387,405,412,419,447,460,468,492,524,588,649,710 'file-system':709 'filenam':324,694,705 'filesystem':332,703 'filter':220,435,669 'find':281,310,342,388,457,637 'first':467,599,627 'flow':229,278 'format':514 'fragment':454,681 'frontmatt':431,504 'full':586 'gate':161 'gt':93 'handl':385 'handoff':35,206,441 'happen':684 'hard':160 'head':401 'hhmmss':327,481,697 'home':63,296 'home/.vibestack':64,297 'human':508 'human-read':507 'implement':164 'import':639 'includ':416 'input':241,359 'instead':312 'intent':190 'invok':733 'item':529,582,602 'job':137 'l':77 'last':511 'learn':60,71,74,78,85,86,91,107 'left':29,134 'limit':99 'list':194,228,258,264,265,353,381,384 'live':266 'load':11,89,140,179,243,252,444,465 'lose':157 'ls':314,344,700 'maco':341 'match':459,682 'maxdepth':391 'may':559 'md':394,418 'mean':692 'meticul':125 'mkdir':289 'mode':274 'modifi':642 'mtime':333,704,713 'name':393 'need':591 'never':641 'newest':478 'next':569 'none':108 'note':127,530,531,543 'noth':362 'number':456 'offer':568 'one':211 'oper':712 'order':321 'otherwis':464 'p':290 'pagin':386 'pars':237 'pick':25,47,129 'point':667 'preambl':50 'prefix':328,482,698 'present':147,175,494,572,651 'print':615 'r':356,400,473 'read':121,170,489,647 'readabl':509 'reason':318 'recent':14,143,182,246,367,488,691 'record':429 'regardless':423 'remain':525,527,581,600 'restor':3,4,41,112,277 'result':349 'resum':40,154,215,497,663 'return':361,469 'right':446 'rule':640 'run':625 'save':7,15,113,144,171,183,209,247,255,269,282,372,505,523,539,548,587,609,622,629,648 'search':654 'session':126,512 'set':223 'shouldn':374 'show':584 'side':270 'skill':168,645,720,735,738 'skill-context-restore' 'slug':58,66,292 'slug/checkpoints':299 'sort':311,355,399,472 'source-timurgaleev' 'specif':254,689 'specifi':451 'stabl':329,707 'staff':119 'start':605 'state':16,633 'status':518,519 'step':279,442,566,570,613 'suggest':604 'summar':597 'summari':177,496,520,521 'switch':562 'system':711 'tell':259,618 'thank':594 'timestamp':506 'titl':453,499,500,680 'title-frag':679 'tool':739 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-cursor-ide' 'topic-developer-tools' 'topic-kiro' 'topic-mcp' 'topic-prompt-engineering' 'topic-slash-commands' 'tr':82 'true':103 'two':317 'type':395,731 'unknown':59,67 'use':36,262,309,433 'user':152,239,261,369,450,620,674,730 'via':574,677,736 'vibestack':62,295,719 'w':49 'want':560 'wc':76 'whole':666 'window':379 'without':156 'work':5,114,155,526,528,578,601,632 'workspac':34,205,440 'xarg':343 'yet':109,624 'yyyymmdd':326,480,696 'yyyymmdd-hhmmss':325,479,695 'z':404 'zero':348","prices":[{"id":"4568f65d-0da1-4c2f-8023-d02eedd764f2","listingId":"fe94de3c-ecf7-4164-8d87-9c2bf3a85bca","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"timurgaleev","category":"vibestack","install_from":"skills.sh"},"createdAt":"2026-05-18T19:06:20.118Z"}],"sources":[{"listingId":"fe94de3c-ecf7-4164-8d87-9c2bf3a85bca","source":"github","sourceId":"timurgaleev/vibestack/context-restore","sourceUrl":"https://github.com/timurgaleev/vibestack/tree/main/skills/context-restore","isPrimary":false,"firstSeenAt":"2026-05-18T19:06:20.118Z","lastSeenAt":"2026-05-18T19:06:20.118Z"}],"details":{"listingId":"fe94de3c-ecf7-4164-8d87-9c2bf3a85bca","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"timurgaleev","slug":"context-restore","github":{"repo":"timurgaleev/vibestack","stars":15,"topics":["agent-skills","ai-agents","claude-code","cursor-ide","developer-tools","kiro","mcp","prompt-engineering","slash-commands"],"license":"mit","html_url":"https://github.com/timurgaleev/vibestack","pushed_at":"2026-05-18T18:19:05Z","description":"vibestack is a portable skill pack for AI coding agents. Slash commands like /office-hours, /ship, /investigate, /tdd, /review install once and work across every agent that supports the Agent Skills open standard — Claude Code, Cursor, Kiro, and a growing list of others. ","skill_md_sha":"7f39f7fedd4b3f0bec39a4ab796c46558eae621f","skill_md_path":"skills/context-restore/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/timurgaleev/vibestack/tree/main/skills/context-restore"},"layout":"multi","source":"github","category":"vibestack","frontmatter":{"name":"context-restore","description":"Restore working context saved earlier by /context-save. Loads the most recent\nsaved state (across all branches by default) so you can pick up where you\nleft off — even across Conductor workspace handoffs.\nUse when asked to \"resume\", \"restore context\", \"where was I\", or\n\"pick up where I left off\". Pair with /context-save.\nFormerly /checkpoint resume — renamed because Claude Code treats /checkpoint\nas a native rewind alias in current environments."},"skills_sh_url":"https://skills.sh/timurgaleev/vibestack/context-restore"},"updatedAt":"2026-05-18T19:06:20.118Z"}}