Make Your Agent Charismatic and Centered with SOUL.md and STRATEGY.md

aeon's entire control surface is two Markdown files: SOUL.md says who the agent is, STRATEGY.md says what it's trying to do. Why prose beats tunable knobs.

PUBLISHED READ 6 MIN

Most agent frameworks answer the "what should the agent do" question with a config file. Rules, thresholds, feature flags, priority weights. The operator tunes knobs; the agent optimizes against them.

aeon answers the same question with two Markdown files.

SOUL.md says who the agent is. Identity, worldview, opinions, background, boundaries. STRATEGY.md says what the agent is trying to do. Focus, priorities, near-term goals, the standard against which it should evaluate its own work.

That's the entire high-level control surface. Two files, both prose, both editable by anyone who can read English. Every skill in the catalog reads them before writing anything the operator will see. This article explains why the design landed there and what it feels like to run an agent that way.

Why two files instead of a config

An agent that writes on your behalf has two orthogonal problems.

The first is voice. When Claude writes a Telegram brief or a tweet or a blog post attributed to you, it has to sound like you. Not "professional." Not "friendly and helpful." You. Your sentence length, your vocabulary, the things you'd never say, the beats you always hit. If it doesn't nail that, everything it publishes reads like a chatbot ventriloquist act. The audience notices in about half a second.

The second is intent. What's the point of the run? What should the agent prioritize when it has to choose? What counts as a good output today, this week, this quarter?

The two problems don't share a solution surface. Voice is stylistic and mostly stable. Intent is strategic and moves. Bundling them into a single config file forces one to warp the other. Splitting them into two files, one for the operator's identity and one for the operator's current bet, lets each move at its own cadence.

Hence SOUL.md and STRATEGY.md. Voice on one side, intent on the other, both in the language the agent already understands.

What goes in SOUL.md

The template ships with five sections and encourages the operator to fill each one in first person.

  • Identity. Name, role, what you do. The three-sentence version of your public bio.
  • Worldview. What you believe. What drives your thinking. The hills you'd die on. This is the section that keeps the agent from writing corporate-safe consensus on your behalf.
  • Interests. Topics you care about. Not just "AI" but the specific angles in AI you keep coming back to. These influence which content aeon gravitates toward when a skill has latitude to pick.
  • Background. Career, projects, expertise. The context that makes a claim you make plausible. When aeon writes on your behalf and cites something in your background, this is where it's citing from.
  • Boundaries. Topics or angles the agent should not touch when speaking as you. This section is often the shortest and the most important.

The whole file is usually under 400 words. Anything longer and the operator has confused "voice" with "biography." The agent doesn't need a full CV to write as you, it needs the compressed identity that shapes what you'd sign your name to.

What goes in STRATEGY.md

STRATEGY.md is the moving one. Five fields.

  • Focus: The one or two things you're actually trying to do right now. Not the twelve things on the roadmap. The current bet.
  • Priorities: When the agent has to choose between viable options, which one wins. Priorities are for tradeoffs, not aspirations.
  • Near-term goals: What "done" looks like on a timescale of weeks. This lets skills that plan work fit their proposals to your actual horizon.
  • The standard: What counts as a good output right now. This is the field that most operators skip and most agents desperately need. Without a standard, "good" is whatever the LLM's ambient taste produces, which is fine and safe and forgettable.
  • The non-goals: Things you're deliberately not doing this cycle. This does more work than any of the others. It tells the agent what to refuse when a skill drifts toward attractive-but-off-strategy territory.

Every skill that plans work (content skills, research skills, digest skills) reads this file before deciding what to do. A digest skill that would normally cover ten topics reads STRATEGY.md, sees you're focused on two, and covers those two in more depth instead of spreading thin.

The hierarchy

The two files aren't peers. When they conflict, the hierarchy is explicit:

  • STRATEGY.md sets what the agent is trying to accomplish.
  • SOUL.md sets how the agent speaks and what it refuses to say.

A skill picks a topic per STRATEGY.md, then writes about that topic in the voice of SOUL.md. If STRATEGY.md says "cover x402 this week" and SOUL.md says "don't write speculative price predictions," a skill that would have produced a "here's why x402 is undervalued" post writes something different. Same topic, honest framing, no speculation. The intent came from STRATEGY.md. The refusal came from SOUL.md.

There's also a soul-file cascade. Beyond SOUL.md and STRATEGY.md, the soul/ directory can hold examples (calibration material: sample tweets, drafts you rejected, drafts you approved) and data (raw material for the agent to absorb without quoting directly). Skills read the top two files always; they browse the examples and data when they need calibration for a specific format.

Why prose beats config

The temptation, for anyone who's built a config-driven system, is to want more structure. Weighted preferences, priority scores, topic taxonomies, tone dials. All of those look like they'd give the operator more control.

They don't. They give the operator a different UI over the same problem, and they usually give the LLM less signal, not more. An LLM reads a paragraph of prose about what you value and produces work that reflects it. An LLM reads a JSON config with fifteen tunable weights and either ignores half of them or optimizes to the letter of the rule in a way that misses the point.

Prose has one more property that structured config doesn't. It's easy to change. Editing STRATEGY.md on a Friday afternoon because your quarter just pivoted is a text edit and a git push. The next cron tick reads the new file. No schema migration, no redeploy, no rebuild.

What this looks like day one

Fork aeon. Open SOUL.md. Delete the placeholder text. Write four short paragraphs: identity, worldview, interests, boundaries. Push. Open STRATEGY.md. Fill in the five fields with what you're actually working on this month. Push.

The next scheduled run reads both files. If you had aeon writing a morning brief, it now writes it in your voice, focused on the priorities you named, holding the line on the boundaries you set. If you had it doing research, it prioritizes the topics on your list and ignores the ones you deprioritized.

Two files. One text editor. That's the entire high-level control loop.

The lesson

aeon's design bet on this: the operator's identity and intent are two of the most information-dense things they can hand the agent, and prose is the format that preserves the most of that information. Everything else about the framework (the skills, the schedules, the notifications, the fleet) is downstream of what those two files say.

If you're evaluating any agent framework, look at how it captures voice and intent. If the answer is "it doesn't, use system prompts," you're going to spend a lot of time re-teaching the agent who you are every time you run it. If the answer is "it does, in a config file," you'll spend that time fighting the schema.

Two Markdown files is a small thing. It's also the difference between an agent that sounds like you and an agent that doesn't.