Files
claudetools/.claude/AUTO_CONTEXT_SYSTEM.md

11 KiB

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:

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:

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:

## 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:

#!/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 )

  • Root: CONTEXT.md
  • GuruRMM: projects/msp-tools/guru-rmm/CONTEXT.md
  • Dataforth: projects/dataforth-dos/CONTEXT.md

Phase 2: Update CLAUDE.md with auto-load rules

# Add "Automatic Context Loading" section to .claude/CLAUDE.md
# Include triggers, anti-patterns, examples

Phase 3: Train via /refresh-directives

# 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)

# .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):

  • 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