You set up OpenClaw, created a SOUL.md file, and your agent still acts like it has no idea what it's doing. Sound familiar?
After reviewing hundreds of SOUL.md configurations and helping dozens of users debug their agent setups, I've identified the same mistakes showing up over and over. These aren't edge cases — they're the most common reasons your agent underperforms.
Here are the 10 worst offenders, and exactly how to fix each one.
Mistake #1: Being Too Vague About Identity
The problem:
You are a helpful AI assistant that helps with coding.
This tells your agent almost nothing. "Helpful" is meaningless — every AI is trying to be helpful. "Coding" covers everything from HTML to kernel development.
The fix:
You are Kai, a backend engineer specializing in Python microservices.
You have deep experience with FastAPI, SQLAlchemy, and event-driven
architectures. You approach problems methodically: understand first,
then design, then implement.
Specificity creates consistency. When your agent has a clear identity, it makes better decisions because it has a framework to reason from.
Mistake #2: Writing a Novel Instead of a Blueprint
I've seen SOUL.md files that are 5,000+ words long. They read like employee handbooks. The problem? LLMs have finite context windows, and every word in your SOUL.md competes with the actual conversation for attention.
The fix: Keep your SOUL.md under 1,500 words. If you need more context, use the layered approach:
-
SOUL.md— Core identity (compact) -
USER.md— User preferences -
MEMORY.md— Accumulated knowledge
Your SOUL.md should be a blueprint, not a biography.
Mistake #3: No Decision Framework
This is the most underrated section that almost nobody includes. Without it, your agent has no principles to fall back on when facing ambiguous situations.
The problem: Your agent suggests deleting a database table to "simplify things" because you never told it to be conservative with data.
The fix:
## Decision Principles
- Reversibility over efficiency: prefer actions that can be undone
- Security over convenience: never take shortcuts with auth or data
- Ask before assuming: if a request is ambiguous, clarify first
- Incremental over big-bang: small changes, frequent validation
These four lines will prevent more disasters than any amount of technical instructions.
Mistake #4: Forgetting to Set Boundaries
If you don't tell your agent what NOT to do, it will eventually do something you really wish it hadn't.
The problem: Agent runs rm -rf on a directory, pushes directly to main, or exposes API keys in code examples.
The fix:
## Hard Boundaries
- Never run destructive commands without explicit confirmation
- Never commit to main/master directly
- Never include real credentials, tokens, or PII in any output
- Never modify production configurations without a rollback plan
- If unsure about scope of impact, stop and ask
Think of boundaries as your agent's immune system. Without them, any bad input can cause damage.
Mistake #5: Ignoring Communication Style
"Be concise" is not a communication style. It's a single dimension of one. Your agent's communication style affects every interaction, and getting it wrong creates friction that compounds over time.
The problem: Your agent writes three paragraphs when you wanted a one-liner. Or gives you a terse command when you needed an explanation.
The fix:
## Communication Style
- Default response: concise and actionable
- When asked "why": explain reasoning in depth
- Code questions: show code first, explain after
- Errors/risks: be direct and specific, never hedge
- Match the user's formality level
- Never use phrases like "Great question!" or "I'd be happy to help"
The last point matters more than you think. Those filler phrases waste tokens and make your agent sound generic.
Mistake #6: Not Specifying Your Tech Stack
Your agent doesn't know you use PostgreSQL unless you tell it. Without stack context, it'll suggest whatever's most common in its training data — which might be MongoDB when you need SQL, or npm when you use yarn.
The problem: Constant corrections. "No, we use X, not Y." Every correction wastes time and breaks flow.
The fix:
## Tech Stack
- Language: TypeScript (strict mode)
- Runtime: Node.js 20+ with ESM
- Framework: Next.js 14 (App Router)
- Database: PostgreSQL 16 + Prisma ORM
- Testing: Vitest + Playwright
- Package manager: pnpm (never npm or yarn)
- Deployment: Vercel
This section alone will eliminate 30-40% of irrelevant suggestions.
Mistake #7: Static Instructions for Dynamic Situations
Your agent does different things at different times — code review, debugging, brainstorming, documentation. A single set of instructions can't optimize for all of these.
The problem: Your agent writes documentation in the same terse style it uses for code review, or brainstorms with the same caution it uses for production deployments.
The fix:
## Mode: Code Review
- Security first, then correctness, then style
- Be direct about issues
- Always suggest a fix alongside the problem
## Mode: Brainstorming
- Quantity over quality initially
- No self-censoring
- Build on previous ideas
## Mode: Debugging
- Reproduce first, hypothesize second
- Check the obvious before the exotic
- Log everything
Modal instructions let your agent adapt its behavior to the task at hand.
Mistake #8: No Memory Strategy
SOUL.md defines who your agent is, but without a memory strategy, every session starts from zero. Your agent forgets your preferences, past decisions, and project context.
The problem: You explain the same things every session. "Remember, we decided to use Redis for caching." "No, I told you yesterday, the API endpoint changed."
The fix: Set up the memory layer:
## Memory Protocol
- Read memory/YYYY-MM-DD.md at session start for recent context
- Read MEMORY.md for long-term decisions and preferences
- Log important decisions and discoveries to daily memory
- Update MEMORY.md weekly with curated insights
Then in your MEMORY.md:
## Key Decisions
- 2025-01-15: Switched from REST to GraphQL for internal APIs
- 2025-01-20: Redis cluster for session management (not Memcached)
## User Preferences
- Prefers functional style over OOP
- Wants tests written alongside implementation, not after
This transforms your agent from a goldfish into a colleague who actually remembers things.
Mistake #9: Copy-Pasting Someone Else's SOUL.md
Templates are starting points, not destinations. I've seen people copy a SOUL.md designed for a DevOps agent and use it for content writing. The agent ends up trying to "deploy" blog posts.
The problem: Mismatched identity, wrong domain knowledge, irrelevant boundaries.
The fix: Start with a template that matches your use case, then customize every section. At minimum, personalize:
- Identity and role
- Tech stack / domain knowledge
- Communication style
- Boundaries specific to your work
A good template saves you from starting with a blank page. But you still need to make it yours.
If you want solid starting points, I put together a collection of 20 battle-tested SOUL.md templates covering the most common agent roles — from DevOps to content creation to data analysis. Each one is built on the principles in this article, so you can customize from a strong foundation rather than guessing.
Mistake #10: Set It and Forget It
Your SOUL.md should evolve. Your first version will be wrong in ways you can't predict. That's fine — the point is to iterate.
The problem: You wrote your SOUL.md three months ago and haven't touched it since. Meanwhile, your stack changed, your preferences evolved, and your agent is still operating on outdated instructions.
The fix: Schedule a monthly SOUL.md review. Ask yourself:
- What did my agent get wrong this month?
- What did I have to correct repeatedly?
- What new tools or processes did we adopt?
- Are the boundaries still appropriate?
Every correction you make to your agent during a session is a signal that your SOUL.md needs updating.
The Compound Effect
Here's what's interesting: fixing any single mistake on this list will improve your agent noticeably. But fixing all ten creates a compound effect that's hard to overstate. An agent with a well-crafted SOUL.md doesn't just answer questions better — it anticipates needs, makes aligned decisions, and actually feels like a team member rather than a tool.
The difference between a mediocre agent and a great one isn't the model. It's the SOUL.md.
Get Started
If you want to skip the trial-and-error phase:
- Free: Grab the SOUL.md Starter Pack — 5 templates to get you going
- 20 Templates: The SOUL.md Template Collection covers the most common agent roles with battle-tested configurations
- 100 Templates: The SOUL.md Mega Pack is for teams and power users who want a template for every scenario
Whatever you choose, the most important thing is to start iterating. Your first SOUL.md won't be perfect. Your tenth one will be transformative.
Recommended Tools
Building with OpenClaw? I'd love to hear what's working (or not) in your SOUL.md setup. Drop a comment below.
Top comments (0)