name: session-management description: Manage work sessions with creation, loading, syncing, and archiving capabilities.
Session Management
Manages work sessions. Session paths must be explicitly provided or known from context.
Session Path Resolution
IMPORTANT: Sessions do NOT have a default location. The session path must be:
- Provided explicitly in arguments (e.g.,
start ~/projects/my-project/_sessions/session-name) - Already known from conversation context (active session in working memory)
- Defined in project's
.samocodefile underSESSIONSpath
If session path cannot be determined: STOP and ask the user for the session location.
Actions
Use $ARGUMENTS to specify action and parameters:
-
start [session-path/name]- Create new session -
continue [session-name-pattern]- Load existing session -
sync- Sync current conversation to active session -
archive [session-name-pattern]- Archive a session
Action: start
Create a new work session.
Steps
-
Resolve session location:
- If full path provided in arguments: use it
- If only name provided: check project
.samocodefile forSESSIONSpath - If neither: STOP and ask user for session directory path
-
Parse session name:
- Take session name from arguments after "start"
- If empty, ERROR: "Session name required. Usage: start [session-name]"
- Sanitize name (lowercase, replace spaces with hyphens)
-
Create session folder:
- Path:
[SESSIONS_DIR]/[YY-MM-DD]-[session-name]/(use current date for folder name) - If folder exists, ERROR: "Session already exists"
- Path:
-
Detect Working Dir:
- Check project
.samocodefile forMAIN_REPOpath - Or use git root:
git rev-parse --show-toplevel - Or use current working directory
- If unclear: leave as "TBD" and note to set it
- Check project
-
Create _overview.md:
# Session: [session-name] Started: [TIMESTAMP_LOG] Working Dir: [detected or TBD] ## Status Phase: investigation Iteration: 1 Blocked: no Last Action: Session created Next: Ready to work ## Flow Log - [TIMESTAMP_ITERATION] Session created ## Files (none yet) ## Plans (none yet) ## Linear Tasks (none yet) -
Commit (if sessions dir is a git repo):
-
cd [SESSIONS_DIR] && git add . && git commit -m "Start session: [session-name]"
-
-
Confirm to user:
Session created: [YY-MM-DD]-[session-name] Path: [full-path] IMPORTANT: This is now your active session. Remember this path for subsequent commands. Ready to work. Use /dive, /task, or /create-plan to continue.
IMPORTANT: After creating the session, keep the session path in your working memory for all subsequent session-aware commands.
Action: continue
Load and continue working in an existing session.
Steps
-
Resolve session location:
- If full path provided: use it
- Check project
.samocodefile forSESSIONSpath - If not found: STOP and ask user for sessions directory
-
Find matching sessions:
- Search sessions directory for folders matching
*$ARGUMENTS*(exclude archive/) - Sort by modification time (most recent first)
- Search sessions directory for folders matching
-
Handle results:
- No matches: ERROR: "No sessions found matching '$ARGUMENTS'. Use start action to create one."
- One match: Proceed to load
- Multiple matches: List them with dates and ask user to specify
-
Load session:
- Read
_overview.mdfrom the session folder - Add Flow Log entry:
- [TIMESTAMP_ITERATION] Session resumed - Commit if git repo:
git add . && git commit -m "Resume session: [session-name]"
- Read
-
Present summary:
Session: [session-name] Path: [full-path] Working Dir: [from _overview.md] Started: [date] Recent Activity: [Last 5-10 Flow Log entries] Files: [count] [List with brief descriptions] Plans: [list if any] Linear Tasks: [list if any] --- Session loaded. Ready to continue.
IMPORTANT: After loading, keep the session path in your working memory for all subsequent session-aware commands.
Action: sync
Ensure all work from this conversation is recorded in the active session.
Steps
-
Check for active session:
- If no session in working memory: ERROR: "No active session. Use continue action to load one first."
-
Read current session state:
- Read
[SESSION_PATH]/_overview.md
- Read
-
Review conversation for unrecorded work:
- Code changes (files created, modified, deleted)
- Decisions made
- Problems solved
- Discoveries about the codebase
- Commits made
- Blockers/TODOs remaining
-
Update _overview.md:
- Add missing Flow Log entries
- Add missing Files entries
- Update other sections as needed
-
Create detail files if warranted:
- Only for complex topics that need more than a log entry
-
Commit (if git repo):
-
cd [SESSION_DIR] && git add . && git commit -m "Sync session: [session-name]"
-
-
Report:
- "Session synced: [what was added]"
- Or: "Session already up to date."
Action: archive
Archive a session (full) or archive work within a session (partial).
Usage Patterns
-
archive- Archive entire active session (moves folder to archive/) -
archive [session-name]- Archive entire named session -
archive keep file1.md file2.md- Archive work files within session, keep specified files -
archive [session-path] keep file1.md- Archive work in specific session, keep files
Full Archive (no "keep" keyword)
Session Resolution
-
If arguments after "archive" are empty:
- Check for active session in working memory
- If no active session: ERROR: "No active session and no session name provided."
- Use active session path
-
If arguments provided (no "keep"):
- Search sessions directory for folders matching
*$ARGUMENTS*(exclude archive/) - No matches: ERROR: "No sessions found matching '$ARGUMENTS'"
- One match: Confirm with user: "Archive session [name]? (y/n)"
- Multiple matches: List and ask user to specify
- Search sessions directory for folders matching
Full Archive Process
-
Get session info:
- Read
[SESSION_PATH]/_overview.md - Extract Working Dir line
- Read
-
Create archive folder if needed:
mkdir -p [SESSIONS_DIR]/archive -
Remove worktree (if applicable):
- If Working Dir contains
/worktrees/:git worktree remove [working_dir_path] - If removal fails (uncommitted changes), warn user and ask to proceed or abort
- Note: Branch is preserved, only worktree removed
- If Working Dir contains
-
Move session folder:
mv [SESSION_PATH] [SESSIONS_DIR]/archive/ -
Commit changes (if git repo):
-
cd [SESSIONS_DIR] && git add . && git commit -m "Archive session: [session-name]"
-
-
Clear active session (if archiving active session):
- Remove from working memory
-
Confirm to user:
Session archived: [session-name] Moved to: [archive-path] Worktree removed: [path] (branch preserved) Session closed.
Partial Archive (with "keep" keyword)
Archives completed work within a session while keeping important deliverables accessible.
Argument Parsing
- Split arguments on "keep" keyword
- Before "keep": session path (optional, defaults to active session)
- After "keep": list of files to keep in place (space-separated)
Example: archive keep competitor-analysis.md → archive active session, keep competitor-analysis.md
Partial Archive Process
-
Resolve session:
- If path before "keep": use it
- Otherwise: use active session from working memory
- ERROR if no session found
-
Get timestamp and slug:
TIMESTAMP_FOLDER=$(date '+%y-%m-%d')- Extract slug from session folder name or task name from _overview.md
- Archive folder:
[SESSION_PATH]/archive/[YY-MM-DD]-[slug]/
-
Create archive subfolder:
mkdir -p [SESSION_PATH]/archive/[YY-MM-DD]-[slug] -
Identify files to archive:
- All
.mdfiles in session root EXCEPT:-
_overview.md(always kept - session state) -
_qa.md(always kept if exists) -
_signal.json(always kept) - Files listed after "keep" keyword
-
- All timestamped files (pattern:
[MM-DD-HH:mm]-*.md)
- All
-
Move files to archive:
for file in [files_to_archive]; do mv "$file" [SESSION_PATH]/archive/[YY-MM-DD]-[slug]/ done -
Update _overview.md:
- Add Flow Log entry:
- [TIMESTAMP_LOG] Archived work to archive/[YY-MM-DD]-[slug]/, kept: [kept_files] - Reset Status section for next task
- Add Flow Log entry:
-
Report to user:
Work archived within session. Archived to: [SESSION_PATH]/archive/[YY-MM-DD]-[slug]/ Files moved: [count] files Kept in place: [kept_files]
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!