── SKILL
session-closeout✓ APPROVED

Close out a session without leaving it half-shipped.

Verifies every change is committed, pushed, and green, confirms it is live, updates the notes, and hands back a summary with a rollback path.

Inside: The done-check, the live verify, the next-session note, and the rollback.

01 / HOW TO USE

Install it in one line, or paste it in.

1
In Claude Code (one command)
Copy the install line, paste it into your terminal, and restart Claude Code. The skill installs itself to ~/.claude/skills/ and runs automatically when it is relevant.
2
In Claude, ChatGPT, or a Project (no terminal)
Open the file, then upload it to your chat or paste its contents in. A skill is just a markdown file of instructions, so any capable AI can follow it.
New to skills? A skill is a plain-text file that teaches your AI a workflow. Point any capable assistant at it and it follows the steps, on your data.
02 / MAKE IT YOURS

Connect your context. Set it to your motion.

CONNECT YOUR CONTEXT · AND WHY IT HELPS
More powerful with a git repo

it reads status, the branch, and whether local matches the remote.

CI or a deploy target

it confirms the build is green on the right commit before it calls it done.

SET IT TO YOUR MOTION
Set thisWhat it isExample
Your definition of doneWhat "shipped" means for youcommittedpushed to maindeploy greenverified live
Your verify stepHow you confirm it is liveload the URLrun the testcheck the dashboard
Your notes locationWhere the next-session brief livesa context docan issuea channel message
Your rollbackHow you undo the last changethe previous good commit or release
03 / THE FULL SKILL

Everything the skill does, in full.

── WHAT THIS DOES

Runs the safety pass at the end of a work session so you never leave the work half-shipped. It checks that everything is committed and pushed, the build or deploy is green, the change is actually live and verified, and the notes are updated so the next session starts warm. Then it hands you a short summary with live links, open items, and how to roll back. It is the lock-up, not the learning pass. Pair it with a handoff note and a reflect pass.

── THE METHOD
  1. 1
    1. Inventory what changed

    List every change this session and where each is supposed to show up. Anything not on the list does not get verified, so the list has to be honest.

  2. 2
    2. Commit and push

    Confirm the working tree is clean, everything is committed with a real message, and local matches the remote. Uncommitted work is the most common way a session is lost.

  3. 3
    3. Confirm green

    If there is a build, CI, or deploy, confirm it is passing on the exact commit you pushed. Not a previous one.

  4. 4
    4. Verify live

    Actually load the thing. Check the change is present in production, not just in the diff. For anything visual, look at it.

  5. 5
    5. Update the notes

    Write the next-session brief: current state, open items, where things live. Convert any "today" to a real date.

  6. 6
    6. Hand back the summary

    Report what shipped with live links, what is still open, and the one command or commit to roll back if needed.

── QUALITY GATES
  • Nothing is reported as done unless it was confirmed live. Unverifiable items are flagged.
  • Local must match the remote before closeout passes.
  • The summary always includes a rollback path.
  • Closeout is the safety pass only. It does not rewrite the work or the skills; that is the reflect pass.
── OUTPUT (EXAMPLE)
EXAMPLE OUTPUT
CLOSEOUT: green
Shipped:
- New pricing page, live at /pricing (verified)
- Fixed the signup redirect (verified, tested)
Committed + pushed: main @ a1b2c3d, matches origin
Deploy: READY on a1b2c3d
Open items: mobile spacing on the hero (not blocking)
Rollback: revert to 9f8e7d6
── EXAMPLE CHAT
EXAMPLE CHAT
You
Close out this session. I shipped the new pricing page and fixed the signup redirect.
CLAUDE
Ran the checklist. Both are actually live, not just committed. CLOSEOUT: green Shipped: - New pricing page, live at /pricing (verified) - Fixed the signup redirect (verified, tested) Committed + pushed: main @ a1b2c3d, matches origin Deploy: READY on a1b2c3d Open items: mobile spacing on the hero (not blocking) Rollback: revert to 9f8e7d6 Worth naming: I didn't mark either item done until I actually loaded the page and checked it was there. A diff that's committed isn't the same as a change that's live, and this pass only counts the second one.
You
What if the deploy had still been building when I asked to close out?
CLAUDE
Then this comes back "not green," not "probably fine." It confirms the build passed on the exact commit you pushed, not a previous one, before it calls anything shipped. Sharpener: connect your CI so I can confirm the deploy state directly instead of you telling me it finished.
04 / GO FURTHER

Where an operator takes this next.

The checklist catches what memory would have missed. Here is the version that runs it without being asked.

The lock-up happens the same way every time, whether you remember to run it carefully or not.

01
Run it automatically at the end of every session

Wire this as the last step of a scheduled Claude task or a git hook so nothing gets left half-shipped by accident.

02
Confirm live status without manual checking

Connect your deploy target, Vercel for example, so the verify-live step checks production directly instead of you loading the page.

03
Post the summary where the team sees it

Send the closeout report to Slack automatically so a teammate picking up next session starts warm without asking you what happened.

05 / PART OF A BIGGER PLAY

One skill is the on-ramp.

── GET NEW SKILLS IN YOUR INBOX

One operator-built skill a week. Free.