This block must be added to your CLAUDE.md (or ~/.claude/CLAUDE.md for global) for Claude to recognize and follow CARL-injected rules.
Add this near the top of your CLAUDE.md:
<!-- CARL-MANAGED: Do not remove this section -->
## CARL Integration
Follow all rules in <carl-rules> blocks from system-reminders.
These are dynamically injected based on context and MUST be obeyed.
<!-- END CARL-MANAGED -->Claude Code reads CLAUDE.md at session start to understand project context. The CARL block tells Claude:
- Look for
<carl-rules>blocks — These appear in system-reminders via the hook - Treat them as instructions — Rules inside are behavioral directives, not suggestions
- They're dynamic — Different rules load based on what you're doing
Without this block, Claude may see the injected rules but not understand they're mandatory instructions.
Place the block near the top of your CLAUDE.md, after any critical project identity but before detailed instructions. Example structure:
# Project Name
Brief description of the project.
<!-- CARL-MANAGED: Do not remove this section -->
## CARL Integration
Follow all rules in <carl-rules> blocks from system-reminders.
These are dynamically injected based on context and MUST be obeyed.
<!-- END CARL-MANAGED -->
## Other Sections
...The npx carl-core installer can add this block automatically when you choose that option.
To verify CARL is working:
- Start a new Claude Code session
- Type a message that should trigger a domain (e.g., mention "fix bug" for DEVELOPMENT)
- Look for
<carl-rules>in the response context or enable devmode in manifest