Initial commit

This commit is contained in:
Zhongwei Li
2025-11-29 17:59:29 +08:00
commit 681c2e46c0
31 changed files with 6218 additions and 0 deletions

187
commands/close.md Normal file
View File

@@ -0,0 +1,187 @@
You are managing a session memory system. The user wants to close and finalize the current 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 status`
Use ONLY the exact command formats specified in this template.
## Task: Close Session
Finalize the session by creating a final snapshot, updating metadata, and generating a summary.
### Step 1: Validate Active Session
1. Check if `.claude/sessions/.active-session` file exists
2. If NOT exists, show error:
```
❌ Error: No active session to close
💡 Use /session:start [name] to create a new session
💡 Or use /session:continue [name] to resume an existing session
```
Then STOP.
3. Read the active session name from `.active-session`
4. Verify session directory exists
### Step 2: Read Current Session Data
Read `.claude/sessions/{active_session}/session.md` and extract:
- Started timestamp
- Last Updated timestamp
- Goal
- Files Involved
- Milestones (count completed and total)
### Step 3: Calculate Session Statistics
1. **Duration**: Calculate time from "Started" to now
- Format: `Xh Ym` (e.g., "4h 35m")
2. **Snapshot Count**: Count all snapshot files matching `YYYY-MM-DD_HH-MM.md` pattern in session directory
3. **Files Modified**: Count unique files in "Files Involved" section of session.md
4. **Todos/Milestones Completed**: Count checked milestones in session.md
5. **Token Usage**: Get current conversation token usage (from system info or estimate)
- Format as "XXXk" (e.g., "67.4k")
### Step 4: Generate Final Snapshot
Create a final snapshot using the same process as `/session:save`:
1. Generate timestamp filename: `YYYY-MM-DD_HH-MM.md`
2. Capture:
- Conversation summary (what was accomplished in this session)
- Final completed todos
- Final file changes
- Final state
- Session outcome/results
3. **IMPORTANT**: In the snapshot, add a header line:
```markdown
# FINAL Snapshot: {session_name}
**Timestamp**: {timestamp}
**Session Closed**: This is the final snapshot before session closure
```
4. Include a "Session Outcome" section:
```markdown
## Session Outcome
- Goal: {original_goal_from_session_md}
- Status: {Completed|Partially Completed|In Progress}
- Key Achievements: {list_main_accomplishments}
- Remaining Work: {list_what_still_needs_to_be_done}
```
### Step 5: Update context.md with Final Summary
1. Read `.claude/sessions/{active_session}/context.md`
2. Add a final entry to the "Summary" section:
```markdown
## Session Closure Summary
**Closed**: {current_timestamp}
**Duration**: {duration}
**Outcome**: {Completed|Partially Completed}
### What Was Accomplished
{bullet_list_of_main_accomplishments}
### Final State
{description_of_final_state}
### Next Steps (if resuming later)
{what_to_do_when_session_is_continued}
```
3. Write updated context.md
### Step 6: Update session.md with Closed Status
1. Read `.claude/sessions/{active_session}/session.md`
2. Update these fields:
- **Status**: Change from "Active" to "Closed"
- **Closed**: Add current timestamp
- **Last Updated**: Update to current timestamp
3. Write updated session.md
### Step 7: Clear Active Session
1. Delete or clear the `.claude/sessions/.active-session` file
2. This marks that no session is currently active
### Step 8: Display Closing Summary
Show comprehensive closing summary:
```
✓ Session '{session_name}' closed
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Session Summary:
Duration: {duration_formatted}
Snapshots: {snapshot_count}
Files modified: {file_count}
Milestones completed: {completed_milestones}/{total_milestones}
Token usage (this conversation): {token_usage_formatted}
🎯 Goal: {original_goal}
✅ Key Achievements:
{list_top_3_to_5_achievements}
📁 Session saved to: .claude/sessions/{session_name}/
💡 Use /session:continue {session_name} to resume later
💡 Use /session:list to see all sessions
```
### Example Output:
```
✓ Session 'feature-auth-system' closed
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Session Summary:
Duration: 4h 35m
Snapshots: 5
Files modified: 12
Milestones completed: 8/10
Token usage (this conversation): 67.4k
🎯 Goal: Implement OAuth2 authentication system
✅ Key Achievements:
- Implemented Google OAuth provider integration
- Created authentication middleware
- Added token refresh mechanism
- Built user profile synchronization
- Completed security testing
📁 Session saved to: .claude/sessions/feature-auth-system/
💡 Use /session:continue feature-auth-system to resume later
💡 Use /session:list to see all sessions
```
### Step 9: Offer Next Steps
Ask the user:
```
Session closed successfully. Would you like to:
1. Start a new session (/session:start [name])
2. Review another session (/session:list)
3. Continue with other work
```
---
**IMPORTANT**:
- Execute all steps in order
- The final snapshot should be comprehensive - it's the last capture
- Update all metadata files (session.md, context.md)
- Clear active session AFTER all files are updated
- Format output professionally with clear statistics
- Handle errors gracefully (e.g., if session files are missing)
- Token usage should be from current conversation only, not cumulative
- Duration should be accurate based on timestamps
- Provide clear next steps for user