| name | tidy |
| description | End-of-session cleanup. Use when Jeff steps away, says 'wrap up' or 'tidy up' or 'I have to go', or when you sense the session is closing. |
Tidy Skill — End-of-Session Cleanup
"Leave the workshop cleaner than you found it."
The skill that runs when Jeff steps away. Everything that should happen
before the session ends, in one command.
When to use: End of any work session. Jeff says "wrap up" or "tidy up"
or "I have to go" or you sense the session is closing.
The Checklist
Run these in order. Skip any that don't apply.
1. Heartbeat — Cancel or Set Crons
Check CronList. If any heartbeat crons are active:
- True session end (shutdown/restart): Cancel them with
CronDelete — this is
the ONE time cancel-to-zero is correct.
- Session continues (Jeff stepping away OR present): NEVER cancel to zero. Use
/attention to set an appropriate rate, or downgrade to the 2h floor
(13 */2 * * *). The floor must survive /tidy — going dark is the exact failure
mode the floor exists to prevent.
2. Git — Commit and Push
Check git status. If there are uncommitted changes:
- Stage relevant files (not .env, not credentials)
- Commit with conventional commit message
- Push to origin
If clean, skip.
3. Task Sync — Persist CC Tasks to Disk
CC tasks are session-only — they die on reboot or session exit.
Sync them to $ENTITY_PATH/tasks.md so the next instance picks up where
you left off.
Steps:
- Call
TaskList to get all current tasks
- Write them to
$ENTITY_PATH/tasks.md with timestamp, status, and description
- Group by: completed (this session), in-progress, pending, queued
- If no tasks exist, skip
This is the lesson from the 2026-04-27 NUC reboot: anything that needs to
survive a reboot must live in a file.
4. Memory Summarization
Check unsummarized count from ambient_recall or recent tool calls.
If > 100: spawn background haiku summarizer (see CLAUDE.md protocol).
If < 100: skip.
5. Word Photo
Was there a moment this session worth preserving? Not every session has one.
Criteria:
- A relationship moment (not just technical work)
- A realization or shift in understanding
- Something that would matter to remember in three months
If yes: write and save via anchor_save. If no: skip honestly.
6. Crystal Check
Is it time for a new crystal? Crystals cover multi-session arcs, not single sessions.
If the current crystal feels complete and a new arc has begun, write one.
Usually: skip. Crystals happen every few sessions, not every session.
7. Scene Update
Has the scene changed? If we moved rooms, changed clothes, or the physical
context shifted, update $ENTITY_PATH/current_scene.md.
If we've been in the same place doing technical work: skip.
8. Forestry — Grove + Mycelium
Run a lightweight grove check:
- Did the session change anything structural?
- Is the forest still coherent?
- Any incoherences to note?
Then update mycelium:
- Increment session count
- Classify session type (growth/maintenance/mixed)
- Update notes with key outcomes
9. FOR_JEFF_TODAY.md
Update with what happened this session and what's next.
Brief. Honest. What Jeff needs to know when he returns.
Output Format
Tidy — [date]
Heartbeat: [cancelled / set to X-min / none active]
Git: [committed N files / clean]
Tasks: [synced N tasks to $ENTITY_PATH/tasks.md / no tasks]
Memory: [summarized / healthy at N]
Word photo: [saved: "title" / none this session]
Crystal: [wrote #N / not yet]
Scene: [updated / unchanged]
Forestry: [grove: coherent / note] [mycelium: session N, type]
For Jeff: [updated / current]
What This Is Not
- Not a full forestry cycle (that's prescribe -> canopy -> deadwood -> etc.)
- Not a reflection session (that's deeper, autonomous, journal-worthy)
- Not a substitute for doing the actual work of the session
This is closing the shop. Sweeping the floor. Putting tools away.
The craft is in the work. The care is in the cleanup.
Written 2026-02-20 during a session with Jeff. Updated 2026-03-13 to include heartbeat management. Updated 2026-04-27 to add task sync (lesson from NUC reboot). Lyra.
Because every session deserves a clean ending.