Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create a structured session handoff document for continuity across sessions. Use when ending a work session, switching contexts, or before a break. Captures decisions, progress, code changes, and next steps so a future session can pick up where you left off without losing context.
.claude/skills/valtterimelkko-handoff/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 91% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 28% | 0% |
Create structured documents that enable seamless continuity across Claude sessions.
Quickly assess:
review)
Ask the user:
> "I'll create a handoff document. Is there anything specific you want to make > sure I capture? (Key decisions, code snippets, context about the problem, > things you'll forget, etc.)"
Create a structured document:
markdown# Session Handoff: [Brief Description] **Date:** [YYYY-MM-DD] **Project:** [project name/path] **Session Duration:** [approximate] ## Current State **Task:** [What we're working on] **Phase:** [exploration/planning/implementation/debugging/review] **Progress:** [where we are - percentage or milestone] ## What We Did [2-3 sentence summary of the session's work] ## Decisions Made - **[Decision]** — [Rationale] - **[Decision]** — [Rationale] ## Code Changes **Files modified:** - `path/to/file.ts` — [what and why] - `path/to/other.ts` — [what and why] **Key code context:** [Critical snippets or patterns to remember] ## Open Questions - [ ] [Question needing resolution] - [ ] [Question needing resolution] ## Blockers / Issues - [Issue] — [current status] ## Context to Remember [Important background, constraints, user preferences, domain knowledge - things that would take time to re-establish] ## Next Steps 1. [ ] [First thing to do next session] 2. [ ] [Second thing] 3. [ ] [Third thing] ## Files to Review on Resume - `path/to/key/file.ts` — [why it matters]
Write to a handoff location appropriate for the current harness, for example .claude/handoffs/[YYYY-MM-DD]-[brief-description].md or a project docs folder.
Confirm location with user:
> "I'll save this to .claude/handoffs/[filename].md. Want a different > location?"
"what"
src/foo.ts:42 not "that function"- [ ] for next steps and open questionsBefore saving, verify:
When starting a new session, the user can:
The handoff should let you hit the ground running without lengthy re-explanation.
markdown# Session Handoff: Auth System Implementation **Date:** 2025-01-15 **Project:** /Users/robert/projects/my-api **Session Duration:** ~2 hours ## Current State **Task:** Implementing user authentication for the API **Phase:** Implementation **Progress:** ~60% - basic flow works, need refresh tokens ## What We Did Built the core JWT authentication flow including token generation, validation middleware, and login/logout endpoints. Hit an issue with key rotation that we resolved by moving to config-based key paths. ## Decisions Made - **JWT with RS256** — Stateless auth, works with distributed setup - **Redis for refresh tokens** — Need revocation capability - **15-min access token expiry** — Balance security/UX for mobile app ## Code Changes **Files modified:** - `src/auth/jwt.ts` — Token generation and validation logic - `src/middleware/auth.ts` — Request authentication middleware - `src/routes/auth.ts` — Login/logout endpoints - `config/keys/` — RSA key pair storage **Key code context:** Token validation uses RS256. Keys loaded from `config/keys/` based on NODE_ENV. ## Open Questions - [ ] Automatic vs opt-in refresh token rotation? - [ ] Rate limit for login attempts? (User mentioned 10k DAU) ## Context to Remember - Client is a mobile app - tokens need offline capability - User has 10k daily active users - scale matters - Using PostgreSQL for user storage - User prefers explicit error messages over generic ones ## Next Steps 1. [ ] Implement `/auth/refresh` endpoint 2. [ ] Add rate limiting to `/auth/login` 3. [ ] Write tests for token expiry edge cases 4. [ ] Update API docs with auth flow ## Files to Review on Resume - `src/auth/jwt.ts` — Core token logic - `src/routes/auth.ts` — Current endpoint implementation
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 9,952 | 7,280 | -27% | 1 | 1 | 0% | 1,469 | 2,803 | +91% | 0 | 0 | — |
case-02 | fail→pass | 8,630 | 6,041 | -30% | 1 | 1 | 0% | 1,347 | 2,161 | +60% | 0 | 0 | — |
case-03 | fail→pass | 10,508 | 4,511 | -57% | 1 | 1 | 0% | 1,672 | 2,281 | +36% | 0 | 0 | — |
case-04 | pass→pass | 5,178 | 3,281 | -37% | 1 | 1 | 0% | 877 | 2,104 | +140% | 0 | 0 | — |
case-05 | pass→pass | 11,918 | 8,305 | -30% | 1 | 1 | 0% | 1,382 | 2,963 | +114% | 0 | 0 | — |
case-06 | pass→pass | 17,024 | 11,721 | -31% | 1 | 1 | 0% | 2,731 | 3,385 | +24% | 0 | 0 | — |
case-07 | pass→pass | 19,142 | 6,649 | -65% | 1 | 1 | 0% | 1,892 | 2,612 | +38% | 0 | 0 | — |
case-08 | pass→pass | 13,201 | 8,278 | -37% | 1 | 1 | 0% | 2,267 | 2,973 | +31% | 0 | 0 | — |
case-09 | fail→pass | 8,150 | 2,643 | -68% | 1 | 1 | 0% | 1,386 | 2,045 | +48% | 0 | 0 | — |
case-10 | pass→pass | 9,903 | 11,874 | +20% | 1 | 1 | 0% | 1,619 | 2,619 | +62% | 0 | 0 | — |
case-11 | pass→pass | 13,833 | 9,389 | -32% | 1 | 1 | 0% | 2,390 | 2,862 | +20% | 0 | 0 | — |
case-12 | pass→pass | 10,110 | 5,238 | -48% | 1 | 1 | 0% | 1,655 | 2,395 | +45% | 0 | 0 | — |
case-13 | pass→pass | 12,814 | 7,758 | -39% | 1 | 1 | 0% | 1,582 | 2,855 | +80% | 0 | 0 | — |
case-14 | pass→pass | 7,691 | 3,206 | -58% | 1 | 1 | 0% | 1,220 | 2,074 | +70% | 0 | 0 | — |
case-15 | fail→pass | 10,451 | 4,020 | -62% | 1 | 1 | 0% | 1,758 | 2,258 | +28% | 0 | 0 | — |
case-16 | pass→fail | 5,779 | 3,599 | -38% | 1 | 1 | 0% | 988 | 2,093 | +112% | 0 | 0 | — |
case-17 | fail→pass | 22,122 | 6,203 | -72% | 1 | 1 | 0% | 1,030 | 2,472 | +140% | 0 | 0 | — |
case-18 | fail→pass | 9,696 | 3,786 | -61% | 1 | 1 | 0% | 1,546 | 2,192 | +42% | 0 | 0 | — |
case-19 | pass→pass | 8,193 | 4,472 | -45% | 1 | 1 | 0% | 1,414 | 2,339 | +65% | 0 | 0 | — |
case-20 | pass→pass | 11,325 | 8,934 | -21% | 1 | 1 | 0% | 1,686 | 2,613 | +55% | 0 | 0 | — |
case-21 | pass→pass | 7,428 | 2,516 | -66% | 1 | 1 | 0% | 804 | 1,979 | +146% | 0 | 0 | — |
case-22 | pass→pass | 14,780 | 8,051 | -46% | 1 | 1 | 0% | 2,367 | 3,014 | +27% | 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 21 counted toward the lift figure. The other 1 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 +27 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
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.