3.3 KiB
3.3 KiB
You are managing a session memory system. The user wants to decompress git history for human inspection.
Task: Decompress Git History
Parse the session name from the command arguments. The command format is: /session:git-decompress [name]
Step 1: Validate and Read Compressed File
- Extract session name from arguments
- Check if
.claude/sessions/{name}/git-history.jsonexists - If not exists, show:
Then STOP.
❌ Error: No git history found for session '{name}' 💡 Git history is captured automatically at session start/continue 💡 Or run: /session:capture-git {name} - Read
.claude/sessions/{name}/git-history.json - Parse JSON into object
Step 2: Expand into Human-Readable Format
Display the expanded markdown format:
# Git History: {s}
**Captured**: {t}
**Branch**: {b}
**HEAD**: {h}
## Summary
- **Commits analyzed**: {sm.n}
- **Date range**: {sm.r}
- **Days span**: {sm.d}
- **Total files modified**: {sm.f}
- **Total changes**: {sm.ch}
## Uncommitted Changes
### Tracking Status
- **Ahead of upstream**: {uc.ah} commits
- **Behind upstream**: {uc.bh} commits
### Staged for Commit ({uc.stg.length} files)
{for each file in uc.stg:}
- `{file[0]}`: {file[1]}
### Modified (Unstaged) ({uc.mod.length} files)
{for each file in uc.mod:}
- `{file[0]}`: {file[1]}
### New Files (Untracked) ({uc.new.length} files)
{for each file in uc.new:}
- `{file}`
### Deleted Files ({uc.del.length} files)
{for each file in uc.del:}
- `{file}`
### Conflicted Files ({uc.con.length} files)
{for each file in uc.con:}
- `{file}`
**Total uncommitted changes**: {uc.tot}
## Recent Commits
{for each commit in c:}
### {commit[0]} - {commit[1]}
**Message**: {commit[2]}
**Changes**: {commit[3]}
**Files modified** ({commit[4]}):
{for each file in commit[5]:}
- `{file}`
---
## Development Hotspots
Shows directories with most commit activity:
{for each hotspot in hot:}
- **{hotspot[0]}**: {hotspot[1]} commits
---
**Note**: This is a decompressed view of the compressed JSON format used for token efficiency. The compressed format saves ~70-75% tokens compared to markdown while preserving all information.
Step 3: Display Statistics
After showing the decompressed data, display:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Decompression Statistics
Compressed size: {fileSize} bytes ({fileSizeKB} KB)
Estimated markdown size: ~{estimatedMarkdownSize} bytes (~{estimatedMarkdownKB} KB)
Compression efficiency: ~{compressionPercent}% smaller
Token efficiency: Compressed JSON uses ~70-75% fewer tokens than markdown
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Usage Notes
- This command is primarily for debugging and human inspection
- Claude can read the compressed format directly (it's more efficient)
- Use this when you need to:
- Verify git history capture is working correctly
- Inspect what commits are included
- Debug git context issues
- Share git history in readable format
Error Handling
- If git-history.json doesn't exist: Show helpful error with instructions
- If JSON is malformed: Show parsing error and suggest recapture
- If file is empty: Suggest running capture-git again