AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Session Handoff

skill-ozlar34-claude-code-skills-session-handoff · by ozlar34

Generate a structured mid-session handoff block. Use only when the user explicitly invokes /session-handoff. Persists to ~/.claude/handoffs/ and copies to clipboard so a fresh session can resume without losing state. Supports `--minimal` for a ~80-token bare-bones block.

No reviews yet
0 installs
29 views
0.0% view→install

Install

$ agentstack add skill-ozlar34-claude-code-skills-session-handoff

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-ozlar34-claude-code-skills-session-handoff)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Session Handoff? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Session Handoff

Mid-session reset. Distinct from: /done (end-of-day), /gsd-pause-work (active GSD phase — prefer that; see Step 2a), /gsd-session-report (retrospective telemetry). Use when context is hot, a /clear is needed, and conversation state isn't yet on disk.

Persisted handoffs live at ~/.claude/handoffs/-.md, with latest.md as a pinned copy. A SessionStart hook surfaces latest.md if /dev/null && git log -5 --oneline 2>/dev/null && git diff --stat HEAD 2>/dev/null && \ echo "=== planning ===" && (ls .planning/phase-/PLAN.md .planning/phase-/SUMMARY.md 2>/dev/null | tail -10 || echo "no .planning")


The date (`YYYY-MM-DD`) comes from `currentDate` in the session reminder — don't shell out for it. Only the wall-clock `HH:MM` needs `date`.

**Conversation side — the cognitive step. This is the value of the handoff.**

Walk this checklist. Each bucket maps to a tag or section in the block:

- `[mcp]` **mcp-writes**: Notion/TickTick/NotebookLM/Actual Budget drafts not yet pushed → At-risk row
- `[vault]` **vault-writes**: Obsidian writes drafted in chat, not yet appended (CONTEXT.md, _decisions-log.md, hub, atomic note) → At-risk row
- `[memory]` **memory-pending**: memory rules discussed but not yet saved to MEMORY.md → At-risk row
- `[deferred]` **deferred**: Y from "do X then Y" still pending → At-risk row
- **decisions**: concrete choices locked this session → "Decisions locked" section
- **open-Qs**: decisions waiting on the user's input → "Open questions" section

### 2. Decide path

**2a. Active GSD phase? → delegate to `/gsd-pause-work` (if installed).**

Detection: `PLAN.md` exists in `.planning/phase-*/` but no `SUMMARY.md` in the same dir = phase active.

If yes, also check whether GSD is installed in this repo: `test -f ./.claude/get-shit-done/VERSION`.

- **GSD installed**: stop and output: "Active GSD phase at ``. Use `/gsd-pause-work` (phase-aware, produces PAUSE.md) — or confirm to proceed with session-handoff." Don't continue until confirmed; don't silently produce a parallel handoff.
- **GSD not installed**: stop and output: "Active GSD phase detected at ``, but GSD is not installed in this repo (`.claude/get-shit-done/VERSION` missing). Run `/gsd-install` to enable `/gsd-pause-work`, or confirm to proceed with session-handoff instead." Don't continue until confirmed.

**2b. Pick mode.**

- `--minimal` flag OR context monitor at critical → **minimal** (Step 3b)
- Otherwise → **default** (Step 3a)

### 3a. Write the handoff — default mode

Save via the **Write** tool to `~/.claude/handoffs/-.md` (e.g., `2026-04-26-2247.md`. `currentDate` from the session reminder, `HHMM` = `HH:MM` with the colon stripped).

Format below. **Sections with count = 0 are omitted entirely.** Situation, the `**Checked:**` line, and "Pick up from here" always render.

Session Handoff —

CWD: Project: | GSD phase N | other> Git: , modified, untracked, last commit "" Checked: decisions() at-risk() open-Qs()

Situation (2–3 sentences)

Decisions locked

At-risk state

  • [mcp]
  • [vault]
  • [memory]
  • [deferred]

Open questions

Pick up from here

  1. Re-read first:
  2. Next action:
  3. Context not captured in files:

### 3b. Write the handoff — minimal mode

Same path scheme as 3a. Optional `-min` suffix to distinguish.

Format — keep under ~80 tokens:

Session Handoff (minimal) —

CWD: | Git: , +

Situation: Next action: Not on disk:


No tables, no Checked line, no section headers beyond the three bold labels.

### 4. Push to clipboard and pin as latest

One Bash call (substitute `` with the file written in Step 3):

```bash
pbcopy .md && \
cp ~/.claude/handoffs/.md ~/.claude/handoffs/latest.md && \
find ~/.claude/handoffs -name "????-??-??-????.md" -mtime +10 -delete && \
echo "Saved → ~/.claude/handoffs/.md (latest.md updated, clipboard ready, >10d pruned)"

Confirm with one line. Do not re-emit the block in chat — it's in the Write tool result and on disk.

5. Stop

After the clipboard copy, STOP. Do not continue working. Do not ask "what next?" — the user will /clear. The next session's SessionStart hook will surface latest.md automatically (if <2h old); otherwise paste from clipboard or read the file.

Style rules

  • One section per question. "What isn't landed?" → at-risk. "What was decided?" → decisions. "What's blocked on the user?" → open-Qs. Don't fragment.
  • "Context not captured" / "Not on disk" is the most important field in either mode. What did the user say in this conversation that isn't in any file?
  • Don't editorialize. Next-session-you doesn't need commentary, just pointers.
  • Don't re-list files. The **Git:** header line + git status in the next session beats any table.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.