Resume work from a handoff document with context analysis and validation. This skill should be used when the user says "resume handoff", "resume from handoff", "/resume_handoff", "/resume-handoff", "pick up where I left off", "continue from handoff", "load handoff", or provides a handoff document path (including @path syntax) or ticket number to resume from.
Resume work from a handoff document through an interactive process. Handoffs contain critical context, learnings, and next steps from previous work sessions that need to be understood and continued.
Handle two input modes based on what the user provides:
If the path to a handoff document was provided:
/resume_handoff path/to/handoff.md find everything uncommitted, or /resume_handoff path.md @output/docs/ to fill in missing information). @directory references in supplementary args mean: read all files in that directory and incorporate their content alongside the handoff resumption. Treat everything after the path as supplementary instructions to execute alongside the handoff resumption. If supplementary instructions conflict with or override handoff action items (e.g., handoff says "consider deleting X" but user says "build X instead"), the supplementary instructions represent the user's current authoritative intent and take precedence.thoughts/shared/plans or thoughts/shared/research directly in the main context (not via sub-agent), since they provide core decision context. Path trap: use the repo-relative path thoughts/shared/plans/... (resolves via the symlink in the repo). Do NOT use ~/thoughts/shared/plans/... — that maps to a nearly-empty separate directory and will return "file does not exist." If the repo-relative path fails, use the fully-resolved path /Users/nick.yebra/thoughts/repos/regal/shared/plans/....Complete handoffs: If the handoff has status: complete, this means the prior session wrapped up cleanly, NOT that the entire project is done, and NOT that claimed changes were actually written. The git diff check is mandatory even for complete handoffs. Read any linked plan documents to check for remaining work. ALWAYS present the full analysis and wait for user approval before taking any action, regardless of handoff status.
If no parameters provided, respond with:
I'll help you resume work from a handoff document. Let me find the available handoffs.
Which handoff would you like to resume from?
Tip: You can invoke this directly with a handoff path: `/resume-handoff thoughts/shared/handoffs/YYYY-MM-DD_HH-MM-SS_description.md`
Then wait for the user's input.
Read handoff document completely:
Read artifact files directly.: Read all artifacts and critical files mentioned in the handoff:
Use direct Read calls (not sub-agents) since handoffs typically reference well-defined file paths.
Large files: If a Read call fails with "file content exceeds maximum allowed tokens," use grep -n "keyword" <file> to find relevant sections, then re-read with offset and limit parameters targeting those line ranges. Do NOT read the entire file — extract only what the handoff task requires.
Verify claimed changes. Run git branch --show-current and compare against the handoff's branch field. If they differ, flag the discrepancy in your analysis summary — the work may be on a different branch than the handoff recorded. Then run git diff HEAD -- <file> on each file listed under "Recent changes" to confirm the changes exist. Important: for brand-new files (created, not modified), git diff HEAD returns empty because they're untracked — this does NOT mean unimplemented. Follow up with git status -- <file> or ls <file> to confirm new files exist. Only treat an empty diff as "unimplemented" for claimed modifications to existing files. Also run git diff --stat HEAD to check for modifications NOT listed in the handoff — flag any unexpected changed files in your analysis summary. External files: Some files (e.g., MEMORY.md at ~/.claude/projects/) live outside the git repo. Before running git diff, check if the path is under the repo root. For external files, use test -f <path> && echo exists || echo missing or Read the file directly instead of git commands. Automated checks: If the handoff mentions automated checks or verification scripts (e.g., "13 automated checks pass"), run them to confirm the handoff's claims independently.
Present comprehensive analysis:
I've analyzed the handoff from [date] by [researcher]. Here's the current situation:
**Original Tasks:**
- [Task 1]: [Status from handoff] -> [Current verification]
- [Task 2]: [Status from handoff] -> [Current verification]
**Key Learnings Validated:**
- [Learning with file:line reference] - [Still valid/Changed]
- [Pattern discovered] - [Still applicable/Modified]
**Recent Changes Status:**
- [Change 1] - [Verified present/Missing/Modified]
- [Change 2] - [Verified present/Missing/Modified]
**Artifacts Reviewed:**
- [Document 1]: [Key takeaway]
- [Document 2]: [Key takeaway]
For **external files** (paths outside the repo root — `~/`, `/tmp/`, `/Users/`): include an open/access command next to the artifact so the user can navigate immediately, e.g., `open ~/assets/file.html`. Also offer to move/copy the file to the repo root for easier access: "Shall I move this to the repo root for easier access?" Do NOT assume the user knows where external files live.
**Recommended Next Actions:**
Based on the handoff's action items and current state:
1. [Most logical next step based on handoff]
2. [Second priority action]
3. [Additional tasks discovered]
**Potential Issues Identified:**
- [Any conflicts or regressions found]
- [Missing dependencies or broken code]
Shall I proceed with [recommended action 1], or would you like to adjust the approach?
All sections above are required. If the handoff has no learnings, write "Key Learnings Validated: None in handoff." If no issues, write "Potential Issues Identified: None." Never skip a section.
STOP — ALWAYS wait for user approval here. NEVER proceed to Step 3 until the user explicitly confirms. This applies to ALL handoffs regardless of status (complete, incomplete, or ambiguous). Present the analysis, then stop and wait.
Exception — supplementary instructions as pre-authorization: If the user provided specific action commands in the invocation args (e.g., /resume-handoff path.md run launchctl bootstrap ...), those instructions constitute pre-authorization for those specific actions. In the analysis presentation, note "Proceeding with supplementary instructions as pre-authorized" and then continue without waiting for another explicit confirmation for those specific pre-authorized actions.
Labeling historical references: If the handoff document itself mentions paths to OTHER handoff documents (e.g., a prior session's handoff path listed under "Other Notes" or "Artifacts"), do NOT surface these as current artifacts. Label them explicitly as "(historical, from prior session)" or omit them entirely. Only list artifacts that are still actionable for the current session.
Use TodoWrite to create task list:
Present the plan:
I've created a task list based on the handoff and current analysis:
[Show todo list]
Ready to begin with the first task: [task description]?
STOP — ALWAYS wait for user approval here. NEVER begin implementation until the user explicitly says to proceed. Do not interpret the absence of objection as approval.
find . -name 'conftest.py' | head -5 or grep -r 'testpaths' pyproject.toml pytest.ini 2>/dev/null to locate the test root. Running pytest with a nonexistent path (exit code 4) cascades to any sibling parallel tool calls — discover first, then run.|| true to prevent cascade failures. Linters use exit code 1 to mean "violations found" (not a process error), so a bare ruff check . in a parallel call will cancel all sibling tool calls if any violations exist. Use: ruff check transcript_pipeline/ || true.Be thorough in analysis:
Be interactive (NEVER skip approval gates):
Leverage handoff wisdom:
Track continuity:
/commit — the user will invoke it when they're ready.Pipeline routing:
/iterate skill with the plan path and the approved changes as feedback rather than executing the edits directly. The handoff content serves as the feedback input for Case A of the iterate skill./validate {plan-path} as the next step to verify the implementation meets all plan criteria.Validate before acting:
test -f path && echo exists || echo missing rather than ls pathRead call fails with "file does not exist" for a file referenced in the handoff, run git status -- <path> immediately to determine if it was recently deleted or renamed. A deleted-but-unstaged file can often be restored with git show HEAD:<path>./draft-outreach with X input"), substitute structural verification rather than executing the skill. Trace routing logic through SKILL.md, verify reference file consistency, count required table rows/sections, and check that names match across files. Orchestration skills trigger expensive multi-agent pipelines. Document each scenario as [SCENARIO]: structural check passed/failed — [brief trace summary].| Scenario | Indicators | Approach |
|---|---|---|
| Clean Continuation | All changes present, no conflicts, clear next steps | Proceed with recommended actions |
| Diverged Codebase | Changes missing/modified, new related code added | Reconcile differences, adapt plan |
| Incomplete Work | Tasks marked "in_progress" | Complete unfinished work first |
| Stale Handoff | Significant time passed, major refactoring occurred | Re-evaluate strategy entirely |
User: /resume_handoff specification/feature/handoffs/handoff-0.md
Assistant: Let me read and analyze that handoff document...
[Reads handoff completely]
[Reads all referenced artifacts and files directly]
I've analyzed the handoff from [date]. Here's the current situation...
[Presents analysis]
Shall I proceed with implementing the webhook validation fix, or would you like to adjust the approach?
User: Yes, proceed with the webhook validation
Assistant: [Creates todo list and begins implementation]