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

359
commands/continue.md Normal file
View File

@@ -0,0 +1,359 @@
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 status`
Use 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:
```bash
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:
1. Check if `.claude/sessions/.active-session` exists
2. 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:
```bash
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`
3. 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:**
1. **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
2. **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
3. **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
```
4. **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:
```bash
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:
```bash
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:status` for 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}