Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Resume work from previous session with full context restoration
.claude/skills/davepoon-gsd-resume-work/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 5% | 0% |
<objective> Restore complete project context from a previous session — handling both manual pause (from /gsd:pause-work) and auto-compact (from the PreCompact hook) handoffs identically. </objective>
<process>
Check for .planning/HANDOFF.json via Read tool. If missing, the session has no handoff — announce "No handoff found" and proceed to normal /gsd:progress routing.
Read .planning/STATE.md to restore the big-picture project position. If missing, reconstruct from .planning/ROADMAP.md and the latest phase directory's SUMMARY.md files; if reconstruction fails, surface the error and stop.
Parse .planning/HANDOFF.json. Extract phase, plan, task, status, source, uncommitted_files, decisions, context_notes, next_action. Per HANDOFF schema, all fields are always present (empty arrays / null for unset).
Emit a compact status block covering:
progress.percent).next_action string verbatim — it's the resumption hint.Offer 1-3 concrete options based on handoff state. Common patterns:
/gsd:execute-phase with the current phase./gsd:plan-phase or /gsd:execute-phase for the next phase.After routing — once steps 1-5 have completed without error — remove the handoff file:
bash node "${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/plugins/cache/gsd-plugin/current}/bin/gsd-tools.cjs" checkpoint --clear
If the command is unavailable for any reason, fall back to direct removal: bash rm -f .planning/HANDOFF.json
Do not abort the resume if cleanup fails — it's hygiene, not correctness. The next session's SessionStart will overwrite a stale handoff anyway (per D-05 from Phase 4: latest snapshot wins).
</process>
<rules>
HANDOFF.json is absent in step 1, skip everything — don't attempt to clean up what isn't there. checkpoint --clear is idempotent but unnecessary work.</rules>
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-22 | fail→fail | 1,824 | 3,291 | +80% | 1 | 1 | 0% | 193 | 949 | +392% | 0 | 0 | — |
case-01 | fail→fail | 4,700 | 4,514 | -4% | 1 | 1 | 0% | 262 | 1,041 | +297% | 0 | 0 | — |
case-20 | fail→fail | 10,617 | 5,560 | -48% | 1 | 1 | 0% | 2,352 | 1,101 | -53% | 0 | 0 | — |
case-21 | fail→fail | 5,137 | 21,204 | +313% | 1 | 1 | 0% | 372 | 1,071 | +188% | 0 | 0 | — |
case-02 | fail→fail | 5,263 | 4,376 | -17% | 1 | 1 | 0% | 790 | 974 | +23% | 0 | 0 | — |
case-03 | fail→fail | 6,217 | 4,367 | -30% | 1 | 1 | 0% | 1,026 | 1,006 | -2% | 0 | 0 | — |
case-04 | fail→fail | 6,658 | 5,021 | -25% | 1 | 1 | 0% | 1,070 | 1,141 | +7% | 0 | 0 | — |
case-05 | fail→pass | 9,084 | 2,913 | -68% | 1 | 1 | 0% | 1,624 | 1,286 | -21% | 0 | 0 | — |
case-06 | fail→pass | 4,997 | 1,986 | -60% | 1 | 1 | 0% | 1,033 | 1,167 | +13% | 0 | 0 | — |
case-07 | pass→pass | 8,328 | 3,163 | -62% | 1 | 1 | 0% | 1,318 | 1,371 | +4% | 0 | 0 | — |
case-08 | pass→pass | 7,690 | 2,809 | -63% | 1 | 1 | 0% | 1,225 | 1,284 | +5% | 0 | 0 | — |
case-09 | pass→pass | 7,318 | 3,200 | -56% | 1 | 1 | 0% | 1,246 | 1,352 | +9% | 0 | 0 | — |
case-10 | fail→pass | 8,730 | 2,093 | -76% | 1 | 1 | 0% | 1,514 | 1,124 | -26% | 0 | 0 | — |
case-11 | fail→pass | 9,336 | 2,534 | -73% | 1 | 1 | 0% | 1,526 | 1,341 | -12% | 0 | 0 | — |
case-12 | fail→pass | 6,833 | 2,578 | -62% | 1 | 1 | 0% | 1,128 | 1,186 | +5% | 0 | 0 | — |
case-13 | fail→pass | 8,106 | 2,979 | -63% | 1 | 1 | 0% | 1,529 | 1,322 | -14% | 0 | 0 | — |
case-14 | pass→pass | 12,558 | 4,451 | -65% | 1 | 1 | 0% | 2,102 | 1,555 | -26% | 0 | 0 | — |
case-15 | pass→pass | 9,393 | 3,512 | -63% | 1 | 1 | 0% | 1,504 | 1,396 | -7% | 0 | 0 | — |
case-16 | pass→pass | 10,884 | 3,614 | -67% | 1 | 1 | 0% | 2,022 | 1,321 | -35% | 0 | 0 | — |
case-17 | fail→pass | 14,717 | 3,067 | -79% | 1 | 1 | 0% | 2,339 | 1,309 | -44% | 0 | 0 | — |
case-18 | fail→fail | 9,078 | 1,725 | -81% | 1 | 1 | 0% | 1,536 | 977 | -36% | 0 | 0 | — |
case-19 | pass→pass | 8,565 | 2,341 | -73% | 1 | 1 | 0% | 1,627 | 1,143 | -30% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 15 counted toward the lift figure. The other 7 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 15 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.