Wave 3 - adoption hardening. Patterns adapted (in original prose, with
attribution) from MIT-licensed shanraisshan/claude-code-best-practice.
Commands (command/enhance-claude-md.md, command/sync-claude-md.md):
- Add allowed-tools / disallowedTools / argument-hint / when_to_use so the
commands auto-suggest in the slash menu and avoid permission prompts.
- disallowedTools blocks WebFetch + WebSearch on both commands.
- Drop the previous broken hooks block (array-of-{matcher, commands} shape
did not match canonical schema; was never firing).
Skills:
- skill/karpathy-guidelines/SKILL.md: paths: glob over 23 code-file
extensions, so the guardrails auto-load only when editing source, not
markdown or data.
- skill/SKILL.md: model: haiku, effort: medium, paths: scoped to CLAUDE.md
+ AGENTS.md + .claude/rules/*.md so validator/generator passes run
cheaply without changing the user-facing model.
CLAUDE.local.md personal tier:
- skill/validator.py BestPracticesValidator now accepts filename=; any
*.local.md basename waives the 150-line cap.
- hooks/validate-claude-md.py reads the exempt suffix from hooks-config.
- .gitignore covers CLAUDE.local.md, **/CLAUDE.local.md,
.claude/settings.local.json, hooks/hooks-config.local.json.
Layered hook config:
- hooks/hooks-config.json: committed defaults
(validateClaudeMd.enabled/maxLines/exemptFilenameSuffix/exitCodeOnViolation,
stopAuditLine.enabled).
- hooks/validate-claude-md.py merges hooks-config.json +
hooks-config.local.json key-by-key; honours enabled=false (silent
exit 0), configurable cap, configurable exit code.
Stop audit hook:
- hooks/audit-claude-md.py walks the project tree, prints one stderr
line: total tracked / OVER cap / near cap (>=80%). Respects
stopAuditLine.enabled from config.
- hooks/hooks.json registers Stop event with matcher "".
Guardian fail-closed contract:
- agent/claude-md-guardian.md Safety & Validation section now explicitly
requires Skill-tool invocation (no inline paraphrase of SKILL.md),
abort on missing validated output, never auto-commit, and respect
local hook config.
Verified (8/8 smoke tests):
- Both commands parse with new fields and no broken hooks block.
- karpathy paths: 23 globs, includes .py/.ts/.go/.rs.
- skill model=haiku effort=medium with CLAUDE.md path scope.
- Validator: *.local.md (300 lines) -> pass; CLAUDE.md (300) -> fail;
legacy ctor without filename -> default behavior preserved.
- hooks-config.json valid; validateClaudeMd.enabled=true, maxLines=150.
- Hook validator: default rc=2 on bloated, rc=0 when local override
disables it, rc=0 on *.local.md (exempt).
- Stop hook entry present; audit script: rc=0 with "5 CLAUDE.md tracked".
- Regression: large-fullstack root still 52 lines with chain imports.
claude-md-guardian Agent
Background maintenance agent that keeps CLAUDE.md files synchronized with project changes.
Overview
The claude-md-guardian is a specialized Claude Code agent that monitors your project and automatically updates CLAUDE.md files when significant changes occur. It works independently in the background without interrupting development workflows.
Key Features
- 🔄 Auto-Sync: Updates CLAUDE.md based on git changes
- 🎯 Smart Detection: Only updates when significant changes occur
- ⚡ Token-Efficient: Uses haiku model for routine updates
- 🔇 Silent Operation: No interruptions during active development
- 📦 Milestone-Aware: Triggers after feature completion, refactoring, etc.
- ✨ Native Format: Ensures 100% Claude Code format compliance
When It's Invoked
Automatic Triggers
SessionStart (beginning of each session):
- Checks git changes since last update
- Silent exit if no significant changes
- Updates only when needed
Manual Triggers
After Major Milestones:
- ✅ Feature completion
- ✅ Major refactoring
- ✅ New dependencies added
- ✅ Architecture changes
- ✅ Configuration updates
Via Commands:
/enhance-claude-mdslash command- Direct invocation: "Claude, invoke claude-md-guardian"
Installation
Option 1: User-Level (Recommended)
Available in all your Claude Code projects:
# Copy agent to user directory
cp agent/claude-md-guardian.md ~/.claude/agents/
# Restart Claude Code
Option 2: Project-Level
Available only in current project:
# Create agents directory
mkdir -p .claude/agents
# Copy agent
cp agent/claude-md-guardian.md .claude/agents/
# Restart Claude Code
Option 3: With SessionStart Hook
Automatically check for updates at session start:
# Add to .claude/settings.json or ~/.claude/settings.json
{
"hooks": {
"SessionStart": {
"command": "echo 'Checking CLAUDE.md updates...'",
"timeout": 5000,
"description": "Trigger claude-md-guardian awareness"
}
}
}
Note: The hook creates awareness, but the agent only updates if significant changes detected.
v2.0.0 Update: Hooks now support advanced features like run_in_background, environment variables, and conditional execution. See docs/MIGRATION_V2.md for details.
Prerequisites
Required:
claudeforge-skillmust be installed- User-level:
~/.claude/skills/claudeforge-skill/ - Project-level:
.claude/skills/claudeforge-skill/ - v2.0.0: Auto-migrates from old
claude-md-enhancername
- User-level:
Optional (but recommended):
/enhance-claude-mdslash command- Git repository (for change detection)
Usage Examples
Example 1: Session Start (Auto)
# You start Claude Code session
# Agent checks changes automatically
Agent: ✓ CLAUDE.md current (no significant changes detected)
# Silent - continues session normally
Example 2: After Feature Completion (Manual)
You: "Feature complete - user authentication system implemented"
You: "Claude, invoke claude-md-guardian to update CLAUDE.md"
Agent: Analyzing changes for user authentication feature...
Updates applied:
- Architecture: Added authentication flow
- API Documentation: New /auth endpoints
- Security Practices: JWT implementation notes
- Database: User table schema
✅ CLAUDE.md updated to reflect authentication system
Example 3: New Dependencies Added
# You added react-query and tailwindcss to package.json
# Next session starts
Agent: Detected 2 new dependencies.
Updating CLAUDE.md:
- Tech Stack section (added React Query, Tailwind CSS)
- Setup & Installation (updated installation steps)
✅ CLAUDE.md updated (2 sections modified)
Example 4: Via Slash Command
/enhance-claude-md
# Slash command discovers changes and invokes agent
Agent: 🔄 Analyzing project changes...
Updates applied:
- Project Structure: New components/ directory
- File Structure: Updated directory explanations
- Common Commands: Added new npm scripts
✅ CLAUDE.md synchronized (3 sections modified)
What the Agent Does
1. Change Detection
Analyzes git history for:
- New dependencies (package.json, requirements.txt, etc.)
- New directories/file structure changes
- Configuration updates (.env.example, config files)
- Architecture pattern changes
2. Scope Determination
Minor Updates (1-2 sections):
- New dependency added
- Single directory created
- Minor configuration change
Moderate Updates (3-4 sections):
- Multiple dependencies
- Structure reorganization
- Feature completion
Major Updates (Full quality check):
- Architecture refactoring
- Multiple major changes
- First-time generation
3. Targeted Updates
Uses claude-md-enhancer skill to update only affected sections:
- Tech Stack: Dependency changes
- Project Structure: Directory changes
- Setup & Installation: Configuration changes
- Architecture: Pattern changes
- Common Commands: Script changes
4. Validation
Ensures all updates follow:
- Native Claude Code format (project structure diagrams, etc.)
- 100% format compliance
- Critical validation rule
Token Efficiency
Model Selection
haiku (default):
- Routine updates
- Dependency additions
- Minor structure changes
- Cost-effective for background tasks
sonnet (escalation):
- Major architecture changes
- First-time CLAUDE.md generation
- Complex modular setups
Update Strategy
Targeted (default):
- Edit specific sections only
- Preserve existing content
- Minimal token usage
Full (when necessary):
- Complete quality check
- Comprehensive enhancement
- Only for major milestones
Coordination with Other Agents
Works AFTER These Agents Complete
rr-frontend-engineer- Frontend featuresrr-backend-engineer- Backend APIsrr-fullstack-engineer- Integration work- Any agent marking tasks "completed"
Independent Operation
- ✅ Doesn't block other agents
- ✅ Runs in background
- ✅ No interruptions to development
- ✅ Reports when done
Never Invoked During
- ❌ Active development by other agents
- ❌ Minor code edits (typos, comments)
- ❌ Test-only changes
- ❌ Multiple times per session (unless milestones)
Output Formats
Silent (No Changes)
✓ CLAUDE.md current (no significant changes detected)
Concise (Minor Updates)
✅ CLAUDE.md updated:
- Tech Stack: Added 2 dependencies
- Setup: New environment variable
Changes: 2 sections, 8 lines
Detailed (Major Milestone)
🔄 Major changes detected - Full quality check performed
Updates applied:
- Architecture: New microservices pattern documented
- Tech Stack: 5 new dependencies added
- Setup & Installation: Updated for monorepo
- Common Commands: Added 3 new scripts
Quality Score: 75 → 88 (+13)
Changes: 6 sections, 45 lines
✅ CLAUDE.md fully synchronized
Configuration
Sensitivity Adjustment
In the agent file, you can adjust when updates trigger:
# Current thresholds (in agent logic):
- Minimum files changed: 5
- Dependency threshold: 1 new dependency
- Structure change: 1 new directory
Hook Timeout
{
"hooks": {
"SessionStart": {
"timeout": 5000 // 5 seconds
}
}
}
Troubleshooting
Agent Not Triggering
Problem: Agent doesn't update CLAUDE.md Solutions:
- Check
claude-md-enhancerskill is installed - Verify git repository exists
- Ensure changes meet significance threshold
- Manually invoke: "Claude, invoke claude-md-guardian"
Too Many Updates
Problem: Agent updates too frequently Solutions:
- Increase significance thresholds in agent
- Remove SessionStart hook
- Use manual invocation only
Skill Not Found Error
Problem: "claudeforge-skill not found" Solution:
# Install the skill
cp -r skill ~/.claude/skills/claudeforge-skill/
# Restart Claude Code
# Note: v2.0.0 auto-migrates from old claude-md-enhancer name
Integration
With claudeforge-skill
The agent uses this skill as its core capability:
Agent detects changes → Invokes skill → Skill updates sections → Agent validates
v2.0.0: Uses new permissions: syntax for tool access control.
With /enhance-claude-md Command
The slash command can invoke the agent:
/enhance-claude-md
# → Discovery → Analysis → Invokes claude-md-guardian → Updates
With Development Workflow
1. Developer works on feature
2. Other agents (frontend/backend) build code
3. Feature marked complete
4. claude-md-guardian invoked
5. CLAUDE.md updated
6. Ready for next feature
Best Practices
When to Invoke Manually
- ✅ After completing major feature
- ✅ After significant refactoring
- ✅ Before creating pull request
- ✅ After adding multiple dependencies
- ✅ After architecture changes
When to Let Auto-Trigger Handle It
- ✅ Session start checks
- ✅ Routine dependency updates
- ✅ Minor structure changes
When NOT to Invoke
- ❌ During active development
- ❌ After minor code changes
- ❌ Multiple times without actual changes
Version
- Version: 2.0.0
- Last Updated: January 2026
- Compatible: Claude Code 2.1.4+
- Dependencies: claudeforge-skill v2.0.0+
- Migration: See docs/MIGRATION_V2.md for upgrade guide
Related Resources
- Skill:
skill/(claudeforge-skill) - Slash Command:
command/(enhance-claude-md) - Agent File:
agent/claude-md-guardian.md
Quick Start: Copy agent to ~/.claude/agents/, restart Claude Code, and the guardian will automatically maintain your CLAUDE.md files!