This document defines what MARR is, its core concepts, and the boundaries of the system.
MARR (Making Agents Really Reliable) is a configuration system that provides AI coding agents with consistent project context and standards.
Marr is my real surname. I needed a config folder that Anthropic would never accidentally claim in
.claude/, so I just used my own name and retrofitted the backronym. Peak efficiency, minimal narcissism. Honest! π
MARR treats AI agent directives as first-class project infrastructure β not ad-hoc notes scattered across READMEs or chat sessions.
Without MARR:
With MARR:
A standard is a binding constraint on AI agent behavior. Standards are not guidelines or suggestions β they are requirements.
Standards are markdown files with:
Standards live in .claude/marr/standards/ and use the naming pattern prj-{topic}-standard.md.
A trigger is a condition that determines when a standard should be read.
Triggers are natural language descriptions of situations:
triggers:
- WHEN starting any feature, task, or implementation work
- WHEN working with git branches, commits, or pull requests
When an AI agentβs task matches a trigger, it reads that standard before proceeding. Multiple standards can trigger for the same task.
Triggers are semantic, not mechanical β they describe situations an agent can recognize, not file patterns or keywords.
MARR separates configuration into two layers:
User layer (~/.claude/marr/)
Project layer (.claude/marr/)
Precedence: Project standards override user preferences when they conflict. A project can enforce stricter rules than a userβs defaults.
MARR integrates with Claude Code via markdown imports:
~/.claude/CLAUDE.md
βββ @~/.claude/marr/MARR-USER-CLAUDE.md (user config)
./CLAUDE.md
βββ @.claude/marr/MARR-PROJECT-CLAUDE.md (project config)
Claude Code reads CLAUDE.md files and follows import directives. MARR uses this mechanism rather than inventing a new one.
In scope:
Out of scope:
All configuration lives in version-controlled files. No databases, dashboards, or external services. Changes are tracked like code.
Built for Claude Code, with portable markdown format for future multi-agent support. The configuration format isnβt agent-specific.
MARR ships with standards that encode best practices. Users can customize, but defaults work out of the box. Thereβs one way to structure things, not many options.
Start with marr init --project and get working config immediately. Customize over time. No need to understand everything upfront.
MARR standards use imperative language (βmustβ, βneverβ) not soft suggestions (βshouldβ, βconsiderβ). If something is optional, it doesnβt belong in a standard.
~/.claude/
βββ CLAUDE.md # User entry point
βββ marr/
βββ MARR-USER-CLAUDE.md # User preferences
project/
βββ CLAUDE.md # Project entry point
βββ .claude/
βββ marr/
βββ MARR-PROJECT-CLAUDE.md # Project config + standard registry
βββ README.md # Explains structure
βββ standards/
βββ prj-development-workflow-standard.md
βββ prj-version-control-standard.md
βββ prj-testing-standard.md
βββ ...
MARR ships with standards covering common development concerns:
| Standard | Scope |
|---|---|
| Development Workflow | Issues, tasks, releases, hotfixes |
| Version Control | Git branches, commits, PRs, tagging |
| Testing | Test philosophy, priorities, coverage |
| Documentation | Organization, content types, maintenance |
| MCP Usage | Model Context Protocol tool usage |
| UI/UX | Accessibility, mobile-first, conversion |
| Writing Prompts | Creating standards and prompt files |
Projects choose which standards to install. Not every project needs every standard.