| name | session-start-protocol-skill |
| description | Initialize Claude Code session following Anthropic best practices for multi-session continuity. Use when: (1) starting any new Claude Code session, (2) resuming work after context compaction, (3) uncertain about current project state. Source: Anthropic Claude 4 Best Practices. |
Session Start Protocol
Purpose: Multi-session continuity and progress tracking
Source: Anthropic's Claude 4 Best Practices + Agent Harness patterns
Success: Enables unlimited context through automatic summarization
Usage Scenarios
(1) When starting any new Claude Code session
- Every morning
- After breaks
- When switching between projects
(2) When resuming work after context compaction
- Claude Code automatically compacts context when approaching limits
- You can continue working indefinitely
- Use this protocol to orient yourself
(3) When uncertain about current project state
- What was I working on?
- What's completed vs in-progress?
- What are the priorities?
Failed Attempts
| Attempt | Why It Failed | Lesson Learned |
|---|
| Relying on memory alone | Context gets compacted, lose progress | Always check git status |
| Starting random tasks | Forgot what was incomplete | Check system-status.json first |
| Skipping session initialization | Missed important updates, duplicated work | 2-min protocol saves hours |
Quick Start (< 2 min)
git status && git branch --show-current
git log --oneline -5
cat memory-bank/always/system-status.json | jq '.features[] | {name, status, passes}'
cat memory-bank/always/system-status.json | jq '.features[] | select(.passes == false)'
git log --oneline -10
cat memory-bank/always/system-status.json | jq '.recent_fixes[-3:]'
Output: List of incomplete features, recent commits, current priority
Complete Protocol
On Every New Session
1. Check Git State
git status
git branch --show-current
git log --oneline -5
git diff HEAD~1
2. Read System Status
cat memory-bank/always/system-status.json | jq '.features[] | select(.passes == false) | .name'
cat memory-bank/always/system-status.json | jq '.current_sprint'
cat memory-bank/always/system-status.json | jq '.active_blockers'
3. Select Next Task
- Focus on ONE incomplete feature (passes: false)
- Check if there are active blockers
- Read relevant Entry #X from memory-bank/learned/
- Understand context before starting
4. Set Session Goal
- Pick specific, achievable goal
- "Complete Feature X" or "Fix Issue Y"
- NOT "Work on everything" (violates Anthropic incremental progress principle)
When Context is Fresh (After Compaction)
Don't Panic: Context compaction is normal and expected
Discovery Protocol:
-
Filesystem Discovery (more reliable than compaction summary):
git status
git log --oneline -10
cat memory-bank/always/system-status.json
-
Re-read Critical Files:
- memory-bank/always/CORE-PATTERNS.md
- Relevant Entry from memory-bank/learned/
- Feature-specific files if needed
-
Trust the System:
- Git history is complete
- system-status.json is up-to-date
- Compaction summaries provide context
Evidence
Source: Anthropic's Claude 4 Engineering Blog + Best Practices
Used In: production (162+ entries, multi-month project)
Success: Multi-session continuity maintained across 100+ sessions
Time Cost: 2 min per session start
Time Saved: 10-30 min per session (vs getting oriented randomly)
Key Insight from Anthropic:
"Focus on incremental progress—making steady advances on a few things at a time rather than attempting everything at once."
Integration
Used With:
system-status.json - Feature tracking
/session-end protocol - Checkpointing before closing
- memory-bank/learned/ - Entry references
- Git commits - Progress tracking
Complements:
- session-end-checkpoint-skill (if you create it)
- troubleshooting-decision-tree-skill
- Project patterns from CORE-PATTERNS.md
Success Criteria
You've mastered this protocol when:
Example Session Start
$ git status
On branch feature/new-auth
Changes not staged for commit:
modified: src/auth/controller.js
$ cat memory-bank/always/system-status.json | jq '.features[] | select(.passes == false)'
{
"name": "Authentication_System",
"status": "implementing",
"passes": false,
"entry": 15
}
$ git log --oneline -3
abc1234 feat: Add JWT token validation
def5678 feat: Create auth middleware
ghi9012 feat: Setup auth routes
👉 Goal for this session: Complete JWT token refresh logic
👉 Reference: Entry #15 in memory-bank/learned/
👉 Expected: Mark Authentication_System passes: true by end of session
Quick Reference
git status && \
cat memory-bank/always/system-status.json | jq '.features[] | select(.passes == false)' && \
git log --oneline -5
/session-start