.claude/skills/finish-session/SKILL.md
Run the end-of-session checklist — write session summary to session log, move completed items to DONE.md, add new items to ROADMAP.md, check CLAUDE.md is current, review dirty git state and propose commits. Use when the user says "/finish", "/finish-session", "/end", "let's wrap up", "wrap up", "let's finish", "end this session", "let's call it", "that's enough for today", or similar.
npx skillsauth add sebjacobs/dotfiles finish-sessionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Runs the end-of-session checklist. Ensures every session ends cleanly with the handoff state captured for next time.
Mid-session break (/break)? Use the break-session skill instead.
Run date to get the actual current time. Check whether the session is running past 7PM — if so, flag it.
Determine the project name and branch:
basename "$(git rev-parse --show-toplevel)"
git rev-parse --abbrev-ref HEAD
Summarise the session — what was built or fixed, key decisions, anything discovered that changed the plan. The --next field is the handover: the 2-3 most important things to pick up next session, in priority order.
jotter write \
--project <project> \
--branch <branch> \
--type finish \
--content "<session summary: what shipped, decisions made, gotchas/debt>" \
--next "<top priorities for next session, in order>"
This auto-commits and pushes to the data repo remote.
Scan ROADMAP.md for any - [x] items (or items completed this session). Move them to the top of DONE.md under today's date heading. Remove them from ROADMAP.md.
Anything discovered during the session that needs doing:
ROADMAP.md NowROADMAP.md NextROADMAP.md Later (or BACKLOG.md if detailed)Don't leave it to memory.
In ROADMAP.md:
docs/specs/ before moving to NextIf anything changed — new script, renamed column, updated workflow, new skill, schema change — update the relevant section of the project's CLAUDE.md. Future sessions start by reading it; stale docs are worse than no docs.
Check for any open PRs on the current branch or any feature branches worked on this session:
gh pr list --state open
For each open PR, review what's left to do and add any remaining TODOs as a checklist at the bottom of the PR description under a ## TODO before merge heading. This makes the PR a live tracker of what's left, so the next session picks up exactly where things left off.
git status
git diff --stat
Survey all uncommitted changes. Propose a grouping to the user — one commit per logical feature or change. Wait for approval before staging or committing.
Once commits are done:
git status
Tree should be clean. If not, flag any remaining uncommitted files and ask whether to commit, stash, or leave.
Confirm push if not already done.
Cancel the session cron timer if one is running (CronDelete <job-id>).
End with a one-line summary of the session:
"Done. Today: [what shipped]. Next session: [top priority]."
development
Run the session start routine — ask about available time and hard stops, read recent session logs and ROADMAP.md priorities, propose a realistic goal. Use when the user says "/start", "/start-session", "let's start", "start session", "begin session", or at the start of any longer session. Skip for quick focused tasks where the goal is already clear.
development
Mid-session checkpoint — snapshot current decisions and progress without archiving or cleaning up. Use when the user says "/save", "checkpoint", "save progress", or before risky operations like schema migrations, large refactors, or long-running tasks.
tools
Recover context from a crashed or unfinished session by reading the most recent JSONL transcript. Use when the user says "/recover", "recover session", "what was I doing", or when /start detects the last entry isn't a finish.
testing
TDD ping-pong pairing mode — collaborative spec, alternating test-write and implement roles