session-close
Use when the Operator says close/shut down/end this session for good, or close out for the day.
Skill by Exploitacious
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/exploitacious-session-close
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/session-close
What's inside
- Skill name
session-close- Description
- Use when the Operator says close/shut down/end this session for good, or close out for the day. Reconciliation and teardown, not pre-compact-synthesis or session-handoff.
- License
- MIT
- Instructions
- 85 lines in SKILL.md · view on GitHub
Files (3)
- SKILL.md
- mechanics.md
- teardown.md
SKILL.md (first lines)
# Close a session, permanently and cleanly Permanently end a finished session: document it, reconcile it, archive it, tear it down. Three endings exist in this harness; pick the right one first. | Ending | Meaning | Skill | |--------|---------|-------| | Pause | Same session continues after a `/compact` | `pre-compact-synthesis` | | Move | Work continues in another session, profile, or machine | `session-handoff` | | Close | The session's purpose is done: document, archive, tear down | this skill | Close is for a finished purpose, not a finished day. If real work is still in-flight, say so and offer handoff or compact instead. A close with open threads is a future archaeology dig. A session never closes itself. Run this skill only after the operator's explicit word to close in this conversation. A finished purpose, an empty task list, or a completed handoff is the cue to say the work is done and offer the endings (close, archive, keep it open), then wait. Autonomy to compact at a rest stop is not authority to close: a close writes to external systems and ends the session you are speaking from, so it is the operator's call. Run this skill end to end; do not hand-roll a close. Writing the time entry or ticket note by hand, or skipping the step-2 reconciliation, is the failure to avoid: a hand-rolled close updates memory but leaves the backend running, the registry row, the session stamps, and any vault rollup live, because only the skill's teardown drops them. One hand-assembled close declared itself closed with its backend still running, and its skipped time-entry read-back let a retry double-fire byte-identical entries seconds apart until a later redo caught the duplicate. The reconciliation gate in step 2 is the point of this skill. It is the operator's primary way of entering time and tracking WIP, so it runs on every close as a firm forcing function: skip an item only with a reason the operator gives, never silently. It runs identically on any profile; the reconciliation decides billable versus personal per item. ## Flow ### 1. Closeout synthesis (the four-artifact pass) Run the full hygiene checklist from `pre-compact-synthesis`, everything except its final `/compact` (you are closing, so its "pause or close?" question is already answered). - Git: every touched repo committed and pushed (the OPS copy only when `origin-private-check` verifies its origin private; the git-guard hook blocks it otherwise); working trees clean, or deliberately dirty with the operator's knowledge. Name what you leave. - Docs match reality: README, CHANGELOG, and lessons files updated for what this session shipped, in the same pass, not "later". - Memory: durable lessons, decisions, and feedback written to the memory pool, one fact per file, indexed. Then evict what this close terminates: per `pre-compact-synthesis` closeout hygiene, "Flush the memory cache", fold a closing project's entries to that project's home (its own docs tree by PR when the repo has one the team reads, else `CONTEXT/projects/<project>-lessons.md`) and delete them, index lines too, no stubs. - Tasks: the session's task list is resolved, completed or re-homed with the operator's sign-off. Nothing silently abandoned. - Pending items: reconcile them in every repo this session touched per `pre-compact-synthesis/closeout-hygiene.md` step 5: delete what the work completed, correct what drifted, route what is new. - Notes vault (optional, only when the operator keeps one): the rollup and inbox sweep in `closeout-hygiene.md` step 6. - Leftovers: if a genuinely open thread survives all of the above, write a handoff baton (`session-handoff` WRITE). A clean close usually needs none. ### 2. WIP and work-tracking reconciliation (the gate) Make the tickets, time, and boards reflect what this session did, before the session is gone. Read `CONTEXT/work-tracking.md` for the operator's time, ticketing, and board tools plus their fixed args. If that file is absent, still reconcile: draft the entry text and remind the operator to log it, per its "If nothing here is configured" block. Write nothing to an external system without their OK. A. Assemble the work picture; do not ask the operator to remember it. The session's activity is on disk. Reconstruct it scoped to what THIS session touched, because a box can run concurrent sessions and crons that commit on their own and would attribute to the wrong item. See `mechanics.md` for the scoped work-picture command and the leftover-stamp backstop. Commits are candidates, not attributions: the highest-confidence signal is the uncommitted working tree plus the work-log narrative, so lead with those and use commits only to corroborate. Compute minutes from the transcript per the standard in `work-tracking.md`, never guess or round. B. Resolve each touched work area to a candidate item. Consult the repo-to-item map named in `work-tracking.md` for a hint, then confirm it is the right OPEN item. A repo is not 1:1 with an item; phase-scoped work spawns new ones. Confirm, never auto-pick. Check what is already logged today so a day captured elsewhere is not double-logged. C. Present the table, then the offer with the structured question tool where one exists (multi-select, so the operator can pick several), otherwise numbered prose. Show a compact reconciliation table, then let the operator pick what to apply: ``` This session: Xh wall / Yh git-active (t0 to now) repo/area -> item / card logged today proposed example-webapp -> TCK-1042 Webapp work 0.0h log 1.93h (board card 50%) advance card -> Active ``` Offer, per resolved item (the operator authorizes each): log time as one well-formatted entry via the configured tool; advance the board card as a separate write; update the personal task tracker; flag a blocker with a naming note instead of advancing; or skip with a reason the operator names. No tool configured for a surface means draft the text for the operator to paste. D. No open item for the work? File one first. New labor without a tracked item is a process bug: open the item under the right board theme, then log against it. Never log orphaned labor. Never terminally close an item on the operator's behalf. E. Execute, verify, learn, stamp. - Execute only the writes the operator authorized. - Read every time entry back before calling it logged; the write response echoes the request, not the stored result. The receipt quotes the stored number. The read-back and same-day fix path are in `work-tracking.md`. - Learn-on-confirm: a new repo-to-item association the operator confirms gets appended to the map in `work-tracking.md`, tagged `(learned <date>)`. - Stamp the outcome and clean up the session state (see `mechanics.md`); a later revive is a new work session and must not inherit this one's stamp. Non-billable is still loggable: internal or overhead items take entries for tracking; personal work takes none by default. If the scan finds nothing to reconcile, say so in one line, then still run all of step E; skipping the cleanup false-flags this clean close as abandoned-unreconciled at the next boot. ### 3. One decision from the Operator Ask with the structured question tool where one exists, otherwise numbered prose (two options): - Archive (default): the registry row moves to the archive file. It stops returning on reboot but keeps its session-id, workdir, and profile; `archive-remote-claude.sh revive <Name>` brings it back with full history. - Forget: deregister entirely, no archive row. The transcript still exists on disk (`claude --resume` finds it by id), but the harness stops tracking it. A session with no registry row (started by hand, run as a T3 Code thread, or a tmux session nothing registered) has nothing to archive or forget. Skip the question, say so in the receipt, and tear the backend down per `teardown.md`. ### 4. Deliver the closeout receipt Report BEFORE teardown; step 5 can end this session mid-breath and nothing printed after it arrives anywhere. The receipt names what was committed and pushed (repos plus short SHAs), what memory and lessons were written, what docs changed, the WIP and work-tracking outcome (hours logged with item numbers, cards advanced, tasks updated, or what was declined and why), any baton written, and the revive command if archived. ### 5. Last act: teardown (final tool call of the session) Deregister and tear down the backend this session runs on. The tmux branch, the dead-pane hazard that can kill a sibling session, the no-registry-row case, and the not-in-tmux case (a T3 Code thread, an IDE, a plain terminal) are in `teardown.md`. In tmux this kills the session you are in, so make it the absolute last tool call, after the receipt is out. Outside tmux nothing is killed from here. ## Notes - Closing never deletes history. Registry rows are pointers; transcripts live under the profile's `projects/` dir untouched. - A remote-controlled session disappears from the operator's claude.ai device list when its tmux dies. Expected, part of "gone". - To close a DIFFERENT session by name (not the one you are in), skip steps 1 and 2; you cannot run another session's closeout or reconcile its work-tracking from here. Warn that its in-session state is whatever it is, then archive or forget its row. Prefer telling the operator to run the close from inside that session so its gate fires. - Archiving or settling a thread in a host's own UI is not a session close: the reconciliation never ran. Only the operator's word settles a thread they work in, and only the foreman thread itself closes its own session, never a lane.
From Exploitacious/OPS, MIT.
More from Exploitacious/OPS
- 0.570score
operating-model
Exploitacious
Use when shaping agent prose or making code changes: answer design, lazy-correct engineering, and the AI-tell editing catalog.
SkillAFreshness: AClaude Code +9 - 0.570score
memory-prune
Exploitacious
Use when the operator says prune, audit, or sweep memory, the memories are cluttered, or relocate a lesson.
SkillAFreshness: AClaude Code +9 - 0.565score
remote-session
Exploitacious
Use to start, attach, list, park, revive, or end a one-off Claude Code session in tmux that the operator remote-controls from another device (the claude.ai…
SkillAFreshness: AClaude Code +9 - 0.565score
grabit
Exploitacious
Use when the operator wants a real file off this headless box and onto their own machine: they say send me this, grab this, put it in my downloads, pull this…
SkillAFreshness: AClaude Code +9 - 0.565score
grabit-screenshots
Exploitacious
Use when the operator says they pushed something to this box for you to look at: look at my screenshot, check the image I sent, I just sent you a diagram or…
SkillAFreshness: AClaude Code +9 - 0.565score
harness-update
Exploitacious
Use when the Operator says update the harness, sync from the template, or pull upstream OPS changes.
SkillAFreshness: AClaude Code +9 - 0.561score
session-handoff
Exploitacious
Use to hand in-flight work across profiles or machines where --resume cannot reach.
SkillAFreshness: AClaude Code +9 - 0.561score
design-method
Exploitacious
Apply when designing or building any UI, web page, landing page, component, or email template.
SkillAFreshness: AClaude Code +9 - 0.561score
stewardship
Exploitacious
Apply when an MCP tool or a skill returns errors, wrong data, or instructions that do not match reality.
SkillAFreshness: AClaude Code +9 - 0.561score
pre-compact-synthesis
Exploitacious
Synthesize durable state before a /compact, then closeout.
SkillAFreshness: AClaude Code +9 - 0.559score
operator-voice
Exploitacious
Use when writing anything in the operator's voice or for their readers: emails, client deliverables, marketing copy, chat posts, anything sent on their behalf.
SkillAFreshness: AClaude Code +9 - 0.519score
harness-deploy
Exploitacious
Use when changing how Stage 1 (linuxploitacious) or Stage 2 (.claude-config/deploy.sh or .ps1) installs, or deploying the harness to a new machine.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 19, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Exploitacious/OPS
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Exploitacious
- 0.570score
memory-prune
Exploitacious
Use when the operator says prune, audit, or sweep memory, the memories are cluttered, or relocate a lesson.
SkillAFreshness: AClaude Code +9 - 0.570score
operating-model
Exploitacious
Use when shaping agent prose or making code changes: answer design, lazy-correct engineering, and the AI-tell editing catalog.
SkillAFreshness: AClaude Code +9 - 0.565score
grabit
Exploitacious
Use when the operator wants a real file off this headless box and onto their own machine: they say send me this, grab this, put it in my downloads, pull this…
SkillAFreshness: AClaude Code +9 - 0.565score
grabit-screenshots
Exploitacious
Use when the operator says they pushed something to this box for you to look at: look at my screenshot, check the image I sent, I just sent you a diagram or…
SkillAFreshness: AClaude Code +9 - 0.565score
harness-update
Exploitacious
Use when the Operator says update the harness, sync from the template, or pull upstream OPS changes.
SkillAFreshness: AClaude Code +9 - 0.565score
remote-session
Exploitacious
Use to start, attach, list, park, revive, or end a one-off Claude Code session in tmux that the operator remote-controls from another device (the claude.ai…
SkillAFreshness: AClaude Code +9
Cite this page
session-close skill. Agent Mart. https://agentmart.dev/skills/exploitacious-session-close (last updated 2026-10-24)