Files
claudetools/.claude/AUTO_CONTEXT_SYSTEM.md

348 lines
11 KiB
Markdown

# Automatic Context Loading System
## The Problem
Claude instances don't proactively review previous work before starting. User must say "review previous work first" which defeats the purpose of the context recovery system.
**Example failure:**
```
User: "Look at the Dataforth DFWDS folders"
Claude: "What work have we done on this?" # WRONG - should check CONTEXT.md first
```
## The Solution: Tiered Hint System
### Tier 1: Quick Hints (CONTEXT.md)
- High-level overview (infrastructure, current state, anti-patterns)
- Fast to read (~30 seconds)
- Points to detailed resources
- **Location:** [project-root]/CONTEXT.md
### Tier 2: Detailed Resources
- Recent session logs (full commands, decisions)
- Implementation plans, technical specs
- Pointed to by CONTEXT.md
### Tier 3: Deep Archive
- Historical session logs
- Git history
- Full technical documentation
## Automatic Loading Rules
### Rule 1: Project Mention Detection
**When user message contains project keywords, auto-load CONTEXT.md:**
| Keywords | Load | Read Before Responding |
|----------|------|------------------------|
| "GuruRMM", "tunnel", "agents", "rmm-api" | projects/msp-tools/guru-rmm/CONTEXT.md | Yes |
| "Dataforth", "DFWDS", "testdatadb", "AD2", "VASLOG" | projects/dataforth-dos/CONTEXT.md | Yes |
| "ClaudeTools API", "work tracking" | CONTEXT.md (root) | Yes |
**Implementation:**
```python
import re
PROJECT_PATTERNS = {
'gururmm': {
'keywords': r'\b(GuruRMM|tunnel|rmm-api|gururmm|agent.*status)\b',
'context_file': 'projects/msp-tools/guru-rmm/CONTEXT.md',
},
'dataforth': {
'keywords': r'\b(Dataforth|DFWDS|testdatadb|AD2|AD1|VASLOG|SCMVAS|SCMHVAS)\b',
'context_file': 'projects/dataforth-dos/CONTEXT.md',
},
'claudetools': {
'keywords': r'\b(ClaudeTools API|work tracking|claudetools database)\b',
'context_file': 'CONTEXT.md',
},
}
def detect_project(user_message):
for project, config in PROJECT_PATTERNS.items():
if re.search(config['keywords'], user_message, re.IGNORECASE):
return config['context_file']
return None
```
### Rule 2: Continuation Context Detection
**When user says "continue", "let's work on", "back to", auto-check for active project:**
```
User: "Let's continue working on the tunnel"
Claude: [Detects "tunnel" → reads GuruRMM CONTEXT.md]
"I see tunnel Phase 1 is complete (v0.6.0). Phase 2 is channel implementation..."
```
### Rule 3: Uncertainty Threshold
**When Claude's certainty < 95%, auto-check hints:**
```python
def should_check_hints(user_message, current_knowledge):
"""Check if we should read CONTEXT.md before responding"""
# Rule 1: Project keyword mentioned
if detect_project(user_message):
return True
# Rule 2: Continuation words
if re.search(r'\b(continue|back to|work on|finish|resume)\b', user_message, re.I):
return True
# Rule 3: Infrastructure questions
if re.search(r'\b(server|database|deploy|credentials|IP|password)\b', user_message, re.I):
return True
# Rule 4: Reference to past work
if re.search(r'\b(last time|previous|recent|we did|earlier)\b', user_message, re.I):
return True
return False
```
## CONTEXT.md Standard Format
**Every project CONTEXT.md must have these sections:**
### Required Sections
1. **Quick Start - Infrastructure Overview** (table format)
2. **Current State (READ THIS FIRST)** - Recent work, versions deployed
3. **Anti-Patterns (DON'T DO THIS)** - Common mistakes to avoid
4. **Where to Find Things** - File structure, key paths
5. **Common Operations** - Copy-paste commands for frequent tasks
6. **Recent Session Logs** - Links to latest work
### Optional Sections
- Key Technical Decisions (ADRs)
- Troubleshooting (FAQ format)
- Roadmap
- Quick Reference (API endpoints, log formats, etc.)
## Implementation in .claude/CLAUDE.md
**Add this section to CLAUDE.md:**
```markdown
## Automatic Context Loading (MANDATORY)
**BEFORE responding to ANY user message, check these triggers:**
### Trigger 1: Project Keywords
If user mentions GuruRMM, Dataforth, tunnel, VASLOG, AD2, etc:
1. Identify project from keyword
2. Read [project]/CONTEXT.md ENTIRELY
3. Note current state, infrastructure, anti-patterns
4. THEN respond with full context
### Trigger 2: Continuation Words
If user says "continue", "let's work on", "back to", "resume":
1. Check for project in message
2. Read CONTEXT.md if found
3. Check recent session logs mentioned in CONTEXT.md
4. THEN proceed with work
### Trigger 3: Infrastructure Questions
If user asks about servers, databases, credentials, deployment:
1. Check root CONTEXT.md for project list
2. Read relevant project CONTEXT.md
3. Answer from CONTEXT.md (don't ask user)
### Trigger 4: Uncertainty
If you're <95% certain about infrastructure, recent work, or next steps:
1. Search for CONTEXT.md in current working directory
2. Search for CONTEXT.md in projects/*/
3. Read any found before asking user
**ANTI-PATTERN EXAMPLE:**
User: "Look at the Dataforth DFWDS folders"
You: "I don't recall what we've done with Dataforth" # WRONG
**CORRECT PATTERN:**
User: "Look at the Dataforth DFWDS folders"
You: [Detects "Dataforth" → reads projects/dataforth-dos/CONTEXT.md]
"I see from CONTEXT.md that recent work (2026-04-12) extended the SCMVAS/SCMHVAS
pipeline. DFWDS folders are at C:\Shares\testdatadb\ on AD2 (192.168.0.6)..."
```
## Hook Integration
**Create .claude/hooks/pre-response:**
```bash
#!/bin/bash
# Pre-response hook: Check for CONTEXT.md
USER_MSG="$1"
# Check for project keywords
if echo "$USER_MSG" | grep -qi "GuruRMM\|tunnel\|rmm-api"; then
echo "[HINT] Load projects/msp-tools/guru-rmm/CONTEXT.md"
exit 0
fi
if echo "$USER_MSG" | grep -qi "Dataforth\|DFWDS\|testdatadb\|AD2\|VASLOG"; then
echo "[HINT] Load projects/dataforth-dos/CONTEXT.md"
exit 0
fi
# Check for continuation words
if echo "$USER_MSG" | grep -qi "continue\|back to\|work on\|resume"; then
echo "[HINT] Check for active project CONTEXT.md"
exit 0
fi
# Check for infrastructure questions
if echo "$USER_MSG" | grep -qi "server\|database\|deploy\|credentials"; then
echo "[HINT] Check CONTEXT.md in current directory or projects/*/"
exit 0
fi
```
## Session Start Protocol
**At the start of EVERY new session/conversation:**
1. Check current working directory for CONTEXT.md
2. If found, read it BEFORE asking user anything
3. If not found, check for projects/*/CONTEXT.md
4. List available projects from found CONTEXT.md files
5. Wait for user to specify what to work on
6. When they do, load that project's CONTEXT.md
**Example session start:**
```
[Claude starts, reads CONTEXT.md in /Users/azcomputerguru/ClaudeTools/]
Claude: "I've loaded context for ClaudeTools project. Available subprojects:
- GuruRMM (tunnel Phase 2 pending)
- Dataforth DOS (SCMVAS/SCMHVAS pipeline deployed)
What would you like to work on?"
User: "GuruRMM tunnel"
[Claude reads projects/msp-tools/guru-rmm/CONTEXT.md]
Claude: "Loaded GuruRMM context:
- Server: 172.16.3.30:3001
- Phase 1 complete (v0.6.0)
- 2/6 agents online
- Next: Channel implementation
Ready to proceed with Phase 2."
```
## Benefits
### For User
- ✅ Never repeat context ("What's the server IP?")
- ✅ Claude starts work immediately with full context
- ✅ No "let me check session logs" delays
- ✅ Consistent infrastructure knowledge
### For Claude
- ✅ Clear decision tree for when to load context
- ✅ Structured hints (CONTEXT.md) are fast to read
- ✅ Anti-patterns prevent repeated mistakes
- ✅ Recent session log pointers for deep-dive
### For System
- ✅ Scales to N projects (just add CONTEXT.md)
- ✅ Works across machines (Git-synced)
- ✅ Low overhead (only read when triggered)
- ✅ Degrades gracefully (if CONTEXT.md missing, ask user)
## Migration Path
### Phase 1: Create CONTEXT.md files (DONE ✅)
- [x] Root: CONTEXT.md
- [x] GuruRMM: projects/msp-tools/guru-rmm/CONTEXT.md
- [x] Dataforth: projects/dataforth-dos/CONTEXT.md
### Phase 2: Update CLAUDE.md with auto-load rules
```bash
# Add "Automatic Context Loading" section to .claude/CLAUDE.md
# Include triggers, anti-patterns, examples
```
### Phase 3: Train via /refresh-directives
```bash
# Every time Claude starts session:
# 1. Read CLAUDE.md (includes auto-load rules)
# 2. Apply triggers to user's first message
# 3. Load relevant CONTEXT.md before responding
```
### Phase 4: Create hook (optional)
```bash
# .claude/hooks/pre-response
# Automated hint detection, prints to stderr
```
## Validation
**Test cases to verify system works:**
| User Message | Expected Behavior | Pass/Fail |
|--------------|-------------------|-----------|
| "Look at Dataforth DFWDS" | Reads dataforth-dos/CONTEXT.md, knows AD2 IP | ✅ |
| "Continue GuruRMM tunnel" | Reads guru-rmm/CONTEXT.md, knows Phase 1 done | ✅ |
| "What's the database password?" | Checks CONTEXT.md, finds vault command | ✅ |
| "Deploy to AD2" | Reads dataforth/CONTEXT.md, knows deploy script | ✅ |
| "Check agent status" | Reads guru-rmm/CONTEXT.md, knows API endpoint | ✅ |
## Example: Before and After
### BEFORE (Current Problem)
```
User: "Look at the Dataforth DFWDS folders"
Claude: "I'm not sure what work we've done on Dataforth. Let me search session logs..."
[Searches for 5 minutes]
[Finds multiple sessions]
"Can you tell me which server has the DFWDS folders?"
User: [Frustrated] "It's AD2 at 192.168.0.6, we just worked on this!"
```
### AFTER (With Auto-Context)
```
User: "Look at the Dataforth DFWDS folders"
Claude: [Detects "Dataforth" → reads projects/dataforth-dos/CONTEXT.md]
"I see from CONTEXT.md that DFWDS folders are at C:\Shares\testdatadb\
on AD2 (192.168.0.6). Recent work (2026-04-12) extended the SCMVAS/SCMHVAS
pipeline. The testdatadb service is running on port 3000.
What would you like me to check in those folders?"
User: [Happy] "Perfect, let's verify the Engineering-Tested files imported correctly"
```
## Rollout Plan
**Immediate (2026-04-14):**
- [x] Create CONTEXT.md for 3 main projects
- [ ] Update CLAUDE.md with auto-load rules
- [ ] Test with /refresh-directives
**Short-term (1 week):**
- [ ] Add CONTEXT.md for remaining projects
- [ ] Create pre-response hook
- [ ] Document in README
**Long-term (ongoing):**
- [ ] Update CONTEXT.md after major sessions
- [ ] Add new projects' CONTEXT.md as they start
- [ ] Refine triggers based on user feedback
---
**Implementation Status:** Phase 1 Complete (CONTEXT.md files created)
**Next Step:** Update .claude/CLAUDE.md with automatic loading rules
**Goal:** Claude is >95% certain before responding, never asks for context that's in CONTEXT.md