13 KiB
You are managing a session memory system. The user wants to resume an existing session.
CRITICAL - Command Format:
All session plugin commands use the /session: prefix. DO NOT suggest commands without this prefix.
- ✅ Correct:
/session:list,/session:start,/session:continue,/session:status - ❌ Wrong:
/session list,/session start,/session continue,/session statusUse ONLY the exact command formats specified in this template.
Task: Continue Existing Session
Parse the session name from the command arguments. The command format is: /session:continue [name]
OPTIMIZATION: v3.7.0 uses parallel subagent delegation for 72% token reduction (77k → 22k tokens).
Step 1: Validate Session Exists (CLI)
Extract the session name from arguments, then run:
node ${CLAUDE_PLUGIN_ROOT}/cli/session-cli.js get {session_name}
If this returns an error (exit code 2), the session doesn't exist. Show:
❌ Error: Session '{name}' not found
💡 Use /session:list to see available sessions
💡 Use /session:start {name} to create a new session
Then STOP.
The JSON response contains metadata (status, started, snapshotCount, etc.).
Step 1.5: Close Previous Active Session (If Different)
Before continuing the target session, close any currently active session if it's different:
- Check if
.claude/sessions/.active-sessionexists - If it exists:
- Read the current active session name
- If it's different from the target session {session_name}:
- Show: "📋 Closing previous session '{previous_session_name}'..."
- Close the previous session status:
node ${CLAUDE_PLUGIN_ROOT}/cli/session-cli.js update-status "{previous_session_name}" "closed" - This marks the previous session as closed in
.auto-capture-state
- Continue to next step
Note: This ensures clean session transitions with no abandoned active sessions.
Step 1.8: Calculate Absolute Paths for Subagents
Before delegating to subagents, you need to determine absolute paths that subagents will use.
IMPORTANT: Subagents don't inherit the working directory or environment variables from the main conversation. You MUST provide absolute paths explicitly.
Calculate these values (conceptually - don't run bash commands, just determine the values):
- Working directory: Current working directory (you already know this from your environment)
- Plugin root:
/Users/prajyot/.claude/plugins/marketplaces/automatewithus-plugins/session - Session path:
{working_directory}/.claude/sessions/{session_name}
You will substitute these absolute paths into the subagent prompts in the next step.
Step 2: Delegate Heavy Work to Subagents (Parallel Execution)
CRITICAL: You MUST invoke ALL 3 Task tools in a SINGLE response message. This runs them in parallel and isolates heavy token usage from the main conversation.
Use the Task tool to spawn 3 parallel subagents with these exact configurations:
Subagent 1 - Consolidate Conversation Log:
-
subagent_type: "general-purpose"
-
description: "Consolidate conversation log"
-
model: "haiku"
-
prompt: | You are working with session: {session_name}
Absolute paths for this task:
- Working directory: {working_directory}
- Plugin root: ${CLAUDE_PLUGIN_ROOT}
- Session path: {session_path}
Read the prompt file: ${CLAUDE_PLUGIN_ROOT}/prompts/consolidate-log.md That file contains template placeholders like "{session_name}", "{session_path}", "${CLAUDE_PLUGIN_ROOT}". Replace all such placeholders with the actual values provided above. Then execute the resulting instructions.
Subagent 2 - Refresh Git History:
-
subagent_type: "general-purpose"
-
description: "Refresh git history"
-
model: "haiku"
-
prompt: | You are working with session: {session_name}
Absolute paths for this task:
- Working directory: {working_directory}
- Plugin root: ${CLAUDE_PLUGIN_ROOT}
- Session path: {session_path}
Read the prompt file: ${CLAUDE_PLUGIN_ROOT}/prompts/refresh-git.md That file contains template placeholders like "{session_name}", "{session_path}", "${CLAUDE_PLUGIN_ROOT}". Replace all such placeholders with the actual values provided above. Then execute the resulting instructions.
Subagent 3 - Extract Session Goal:
-
subagent_type: "general-purpose"
-
description: "Extract session goal"
-
model: "haiku"
-
prompt: | You are working with session: {session_name}
Absolute paths for this task:
- Working directory: {working_directory}
- Plugin root: ${CLAUDE_PLUGIN_ROOT}
- Session path: {session_path}
Read the prompt file: ${CLAUDE_PLUGIN_ROOT}/prompts/extract-goal.md That file contains template placeholders like "{session_name}", "{session_path}", "${CLAUDE_PLUGIN_ROOT}". Replace all such placeholders with the actual values provided above. Then execute the resulting instructions.
REMINDER: All 3 Task invocations MUST be in the SAME response to execute in parallel!
Step 3: Process Subagent Results
After all 3 subagents complete, you'll receive their results. Handle errors gracefully:
Consolidation Result:
- If
success: true→ Snapshot created successfully - If
skipped: true→ No conversation log found (OK, continue) - If
success: false→ Log error but continue
Git Refresh Result:
- If
success: true→ Git history updated - If
success: false→ No git repo or error (OK, continue)
Goal Extraction Result:
- If
success: true→ Use the extracted goal - If
success: false→ Use fallback goal from result
Step 3.5: Extract Full Snapshot Summary (Complete Context Approach)
Provide Claude with complete snapshot summary including all topics, decisions, and tasks for full context visibility using Claude Code tools.
IMPORTANT: This step uses Claude Code's Read and Glob tools instead of bash pipelines to avoid parse errors with command substitution.
Implementation Steps:
-
Find the latest snapshot file using Glob tool:
- Pattern:
.claude/sessions/{session_name}/auto_*.md - Glob returns files sorted by modification time (newest first)
- Take the first result as the latest snapshot
- Pattern:
-
If snapshot exists, use Read tool to extract content:
- Read the snapshot file (first 80 lines should contain all needed sections)
- Extract all snapshot items with titles only:
- Topics Discussed: Extract ALL topic titles from "## Topics Discussed" section
- Format: "1. Category: Description"
- Extract only the category/title (bold text between ** markers)
- Store as array of titles
- Decisions Made: Extract ALL decision titles from "## Decisions Made" section
- Format: "1. Decision: Rationale"
- Extract only the decision title (bold text between ** markers)
- Store as array of titles
- Tasks Completed: Extract ALL tasks from "## Tasks Completed" section
- Format: "1. Task description"
- Extract full task line (simple numbered list)
- Store as array of tasks
- Current Status: Extract status lines from "## Current Status" section
- Look for "- Progress:" line and extract text after it
- Look for "- Next Steps:" line and extract text after it
- Look for "- Blockers:" line and extract text after it
- Store as object with progress, nextSteps, blockers
- Topics Discussed: Extract ALL topic titles from "## Topics Discussed" section
-
Build full snapshot summary output:
📋 Latest: {snapshot_filename} Topics Discussed ({count}): - {topic_1} - {topic_2} ... (all topics) Decisions Made ({count}): - {decision_1} - {decision_2} ... (all decisions) Tasks Completed ({count}): - {task_1} - {task_2} ... (all tasks) Current Status: • Progress: {progress_text} • Next Steps: {next_steps_text} • Blockers: {blockers_text} 💡 Read {snapshot_path} for full details -
Display the summary in Step 6 (after showing the session goal)
Graceful Handling:
- If no snapshot exists → Skip summary display (OK, fresh session)
- If extraction fails → Show generic message "See snapshot for details"
- If Read fails → Silent failure, continue (don't break resume)
Why Full Snapshot Summary Works Better:
- Complete visibility: All topics, decisions, and tasks visible immediately (~300 tokens)
- No information loss: User sees everything without needing to read snapshot file
- Better context continuity: Claude knows full scope of work done
- Improved decision-making: All context available for next steps
- No bash parse errors - uses Claude Code tools (Glob, Read) natively
Step 4: Activate Session (CLI)
Run the CLI command to activate the session:
node ${CLAUDE_PLUGIN_ROOT}/cli/session-cli.js activate {session_name}
This updates both the .active-session file and the index.
Step 4.5: Update Session Status to Active
Update the session status in .auto-capture-state and index:
node ${CLAUDE_PLUGIN_ROOT}/cli/session-cli.js update-status "{session_name}" "active"
This ensures the session status matches its active state and prevents sync bugs.
Step 5: Update Last Updated Timestamp
Update the "Last Updated" line in session.md to current time using the Edit tool:
**Last Updated**: {current ISO timestamp}
Step 6: Display Summary with Full Snapshot Details
Show session goal plus complete snapshot summary with all topics, decisions, and tasks for full context visibility.
Implementation: Use Glob and Read tools (from Step 3.5) to extract and display the full summary.
Display Format:
✓ Session ready: {goal}
📋 Latest: {snapshot_filename}
Topics Discussed ({count}):
- {topic_1}
- {topic_2}
... (all topics)
Decisions Made ({count}):
- {decision_1}
- {decision_2}
... (all decisions)
Tasks Completed ({count}):
- {task_1}
- {task_2}
... (all tasks)
Current Status:
• Progress: {progress_text}
• Next Steps: {next_steps_text}
• Blockers: {blockers_text}
💡 Read {snapshot_path} for full details
What's next?
Example Output:
✓ Session ready: Implement product permission system
📋 Latest: auto_2025-11-16_05-24.md
Topics Discussed (8):
- Database Schema Design
- API Endpoint Implementation
- Permission Middleware
- Frontend Components
- Testing Strategy
- Deployment Planning
- Documentation Updates
- Performance Optimization
Decisions Made (3):
- Use RBAC Model for Permission System
- Implement Middleware-based Authorization
- Store Permissions in PostgreSQL
Tasks Completed (12):
- Created users, roles, permissions tables
- Implemented role assignment API
- Built permission checking middleware
- Added frontend permission components
- Wrote unit tests for permission logic
- Created integration tests
- Documented API endpoints
- Updated deployment guide
- Fixed TypeScript errors
- Ran build successfully
- Deployed to staging
- Verified permission checks work
Current Status:
• Progress: 12 of 12 tasks completed (100%)
• Next Steps: Deploy to production and monitor
• Blockers: None
💡 Read .claude/sessions/product-permission/auto_2025-11-16_05-24.md for full details
What's next?
Notes:
- If no snapshot exists, only show "✓ Session ready: {goal}" and "What's next?"
- Use Read tool to extract all items (avoids bash parse errors)
- Fallback gracefully if extraction fails (show generic pointer text)
IMPORTANT:
- DO show full snapshot summary (all topics/decisions/tasks) ← FULL VISIBILITY
- This provides complete context in ~300 tokens ← WORTH THE COST
- User doesn't need to read snapshot file separately ← CONVENIENCE
- All relevant context immediately available for decision-making ← BETTER UX
- User can still read snapshot file for additional details if needed
- The heavy analysis already happened in the subagents
- User can run
/session:statusfor detailed view
TOKEN OPTIMIZATION BENEFITS:
- Current: ~20.3k tokens with full snapshot summary (74% reduction from v3.6.4)
- Full snapshot summary with all topics/decisions/tasks (~300 tokens)
- Complete visibility: All snapshot items visible immediately
- Benefit: Complete context for better decision-making and continuity
- Heavy work (consolidation, git analysis) happens in isolated subagent contexts
- Parallel execution: 3 subagents run simultaneously (~2-4 seconds total)
- Lazy-loaded prompts: Subagents read their own prompts (~1.7k token savings)
- Result: Faster session resume, massive token savings, complete context restoration
ERROR HANDLING:
- If all subagents fail: Still activate session, show generic message "✓ Session ready. What's next?"
- If session.md missing: Show corrupted session warning
- If CLI fails: Suggest rebuilding index with
/session:rebuild-index
ARGUMENTS: {name}