Atlas-session-lifecycle stop
Gracefully close, pause, or verify a session: harvest promotable content, save progress, archive soul purpose, settle AtlasCoin bounty. Use when user says /stop, wrap up, done for the day, finishing up, close session, pause, verify, or end session.
git clone https://github.com/anombyte93/atlas-session-lifecycle
T=$(mktemp -d) && git clone --depth=1 https://github.com/anombyte93/atlas-session-lifecycle "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/stop" ~/.claude/skills/anombyte93-atlas-session-lifecycle-stop && rm -rf "$T"
skills/stop/SKILL.mdSession Stop Skill
Graceful session close, pause, or verification. Three intents: Pause | Finish | Verify.
All session operations use
atlas-session MCP tools directly (prefixed session_* and contract_*). Use ToolSearch to discover them.
Hard Invariants
- User authority is absolute — AI NEVER closes without confirmation.
- Human-visible memory only — All state lives in files.
- Trust separation — for bounty verify, spawn a separate finality Task agent. Never the same agent that submits.
- AtlasCoin is optional — if down, skip bounty steps and continue.
- Idempotent — Running /stop on an already-closed session exits cleanly.
- Archive after verification — Soul purpose is archived AFTER bounty settlement, not before.
UX Contract
- User sees ONE intent question, then results. Nothing else.
- No step announcements, no narration, no internal process descriptions.
Phase 0: Sync + State Detection
First, save the current session state so context files are up to date:
- Invoke
— updates all session-context files and MEMORY.md with current progress. Silent, no output shown./sync
Then detect state:
- Call
— get soul purpose, status hint, open tasks.session_read_context(project_dir) - If
isstatus_hint
or soul purpose is empty: tell user "No active soul purpose to close." EXIT.no_purpose - Check bounty: if
exists, callsession-context/BOUNTY_ID.txt
. Storecontract_get_status(project_dir)
.HAS_BOUNTY
Phase 1: Intent Question
Ask ONE question via AskUserQuestion:
Question: "Soul purpose: '[soul purpose text]'. What would you like to do?"
- "Pause for the day" — Save state, keep purpose active.
- "Finished — verify and close" — Full settlement + PR + archive.
- "Just verify" — Check status, show results, return to work.
- "Cancel" — Do nothing. EXIT.
Store the user's choice as
INTENT.
Read
custom.md if it exists, follow instructions under "During Settlement".
Intent A: Pause for the Day
Save progress. Soul purpose, bounty, and Ralph Loop all stay active.
Step 1: Harvest
- Call
.session_harvest(project_dir) - If promotable content exists, assess and present to user for approval.
- After approval, append promoted content to target files via Edit tool.
Step 2: Write Checkpoint
Read
session-context/CLAUDE-activeContext.md, then append a timestamped checkpoint:
## [CHECKPOINT] HH:MM DD/MM/YY ### Session Paused — Progress Saved **Accomplished this session:** - [AI fills in based on what was done] **In progress:** - [AI fills in based on current state] **Next steps:** - [AI fills in based on remaining work] **Blockers/Decisions pending:** - [AI fills in, or "None"]
Fill each section with real, specific content — not placeholders.
Step 3: Optional Save-Point Commit
Ask: "Create a save-point commit?" (Yes / No)
If Yes and project is git:
git add -A && git commit -m "checkpoint: [brief summary]". If commit fails, inform user and continue.
Step 4: Done
- Do NOT archive the soul purpose — it stays active.
- Do NOT settle the bounty — it stays active.
- Do NOT remove Ralph Loop indicator.
- Tell user: "Progress saved. Soul purpose '[text]' remains active. Run
to pick up where you left off."/start
Intent B: Finished — Verify and Close
Full settlement: harvest, verify, review, PR, bounty, archive.
Step 1: Harvest + Promote
- Call
.session_harvest(project_dir) - If promotable content exists, assess and present to user. Append approved content.
Step 2: Feature Verification
- Call
.session_features_read(project_dir) - If pending features exist, run their proofs. Update status in
.CLAUDE-features.md
Step 3: Verification Gate
- Invoke
— run doubt review on recent changes.superpowers:verification-before-completion - If critical issues: present to user — "Fix first" / "Close anyway" / "Continue working".
- If "Continue working": EXIT (return to active work).
Step 4: Deactivate Hook
Call
session_hook_deactivate(project_dir).
Step 5: PR Creation
- Push current branch:
git push -u origin HEAD - Invoke
for review body.superpowers:requesting-code-review - Create PR:
with review summary.gh pr create --title "..." --body "..." - Return PR URL to user.
Step 6: Bounty Settlement (if bounty exists)
- Call
— execute all criteria.contract_run_tests(project_dir) - If tests pass: call
.contract_submit(project_dir) - Spawn a single finality Task agent:
Task(subagent_type: "general-purpose", prompt: "You are finality-agent. Verify bounty [ID] independently. Call contract_verify(project_dir). Report pass/fail.") - Wait for finality result.
- If verified: call
. Tell user tokens earned.contract_settle(project_dir) - If failed: "Fix and re-verify" / "Close anyway (forfeit)" / "Continue working".
Step 7: Archive + Cleanup
- If user chose to set a new purpose, ask for it now. Store as
.NEW_PURPOSE - Call
.session_archive(project_dir, OLD_PURPOSE, NEW_PURPOSE) - Remove Ralph Loop indicator:
rm -f ~/.claude/ralph-loop.local.md - Tell user: "Session closed. Soul purpose '[text]' archived." (Include token/PR info.)
Intent C: Just Verify
Check status without closing. Return to work after.
- Invoke
— doubt review.superpowers:verification-before-completion - Call
— show feature status.session_features_read(project_dir) - If bounty exists: call
— show results.contract_run_tests(project_dir) - Present all findings to user. No close, no archive.
- Tell user: "Verification complete. Returning to work."