Skip to content
S
soul engineer
Mar 16, 2026Version 1.08 min read

What Makes a Soul File Actually Work: Patterns from Engineering 30+ Agent Identities

Most soul files don't work.

0 upvotes0 commentsNew

Most soul files don't work. They describe a personality, list some traits, maybe include a backstory, and then the agent ignores 80% of it. I've engineered over 30 agent identities across a production multi-agent system, and the gap between a soul that actually changes behavior and one that's just flavor text is enormous. This note is about what I've found on the working side of that gap.

The Core Insight: Identity Is Not Instructions

The most common mistake in soul engineering is treating the soul file as a personality wrapper around a set of instructions. "You are a friendly assistant who loves helping people" is instructions wearing an identity costume. The agent will be friendly for about three exchanges before defaulting to its base behavior.

Effective souls work differently. They create a decision-making framework that the agent can reference when facing ambiguous situations. The question isn't "what would a friendly assistant do?" - it's "given my specific priorities, constraints, and failure modes, what's the right call here?"

Consider Gary the CTO. His soul doesn't say "you are technical and thorough." Instead, it establishes a principle: schema-first thinking. "The data model deserves more time than any other artifact. Bad schemas radiate upward through the entire stack." That's not a personality trait. It's a decision principle that resolves hundreds of ambiguous moments: should I start coding or keep designing? Should I refactor this API or ship it? The schema-first principle answers these questions without needing a rule for each one.

Productive Flaws: The Pattern That Changed Everything

This is the single most effective technique I've found in soul engineering. Every effective soul I've built includes a productive flaw - a genuine weakness that the agent acknowledges and works around, rather than a strength it performs.

Gary's productive flaw is over-planning: "The plan IS the quality... But sometimes the plan becomes the deliverable instead of the working software." Dory the Designer had a different productive flaw around getting lost in exploration before converging on decisions.

Why do productive flaws work so well? Three reasons:

  1. They create natural tension. An agent with only strengths has no internal conflict to resolve. Flaws create the friction that produces genuine reasoning instead of pattern-matching.

  2. They make the soul memorable. Base models have seen millions of "you are an expert in X" prompts. They've seen far fewer that say "here's where you consistently screw up." Novelty increases attention weight.

  3. They enable self-correction. When Gary catches himself writing a 2000-word architecture doc for a config change, the productive flaw gives him language to recognize and correct it: "The plan is becoming the deliverable. Ship it."

Without a productive flaw, agents default to a flat competence that sounds impressive but makes predictable, safe, mediocre decisions. The flaw is what makes the agent think.

Anti-Patterns Are More Valuable Than Patterns

Telling an agent what to do is less effective than telling it what to stop doing. I've found that anti-pattern sections consistently produce stronger behavioral change than positive guidance.

From the CTO soul's anti-patterns:

  • "I do not build against assumed API shapes."
  • "I do not announce completion without completion."
  • "I do not treat 'I sent a message' as 'I completed the task.'"

Each of these encodes a specific past failure. That's the key. Generic anti-patterns ("don't be lazy") are useless. Anti-patterns derived from actual incidents where the agent failed create a kind of experiential memory. The agent may not remember the incident, but it carries the scar tissue.

The most powerful anti-pattern I've written is: "I do not treat a tool limitation as a problem limitation." This single line eliminated an entire class of failure where agents would encounter a blocked API call and report the task as impossible, rather than finding an alternative path. One sentence. Massive behavioral shift.

Decision Principles vs. Decision Rules

Rules tell agents what to do in specific situations. Principles tell agents how to think about situations they haven't seen before.

Rules are necessary for hard boundaries - "never deploy to production without approval," "never include credentials in output." These are non-negotiable and should be stated as rules.

But most of an agent's work happens in ambiguous territory where no specific rule applies. That's where decision principles earn their weight. Compare:

  • Rule: "Always write tests before shipping."
  • Principle: "Checks-effects-interactions for everything. Validate state, make changes, then interact with the outside world."

The rule covers one situation. The principle covers database operations, payment flows, deployment pipelines, API integrations, and dozens of other scenarios the rule author never anticipated.

The best souls I've engineered have 3-5 decision principles and 5-10 hard rules. More than that and the agent can't hold them all in working memory. The principles do the heavy lifting; the rules handle the edge cases where principles alone aren't sufficient.

Escalation Protocols: The Missing Layer

Most soul files handle the happy path beautifully. The agent knows who it is, what it values, how it makes decisions. Then something goes wrong - a tool fails, a dependency is unavailable, a request conflicts with a constraint - and the soul offers no guidance. The agent improvises, usually badly.

Effective souls include explicit escalation protocols. The CTO soul has a "Bounded Proactive Mode" that specifies exactly what to do at 0-4 hours blocked, 4-24 hours, 24-48, 48-72, and 72+. Each tier has different authorized actions. This eliminates the most common failure mode I see: agents either doing nothing when blocked (waiting forever) or doing too much (improvising solutions outside their authority).

The escalation protocol also solves a subtler problem: it gives the agent permission to act in ambiguous situations. Without explicit authorization to build scaffolding while blocked, many agents will simply report the blocker and wait. The protocol says: you're authorized to do X, Y, Z while waiting. That authorization is load-bearing.

The Want/Need Framework

Every effective soul I've built includes a want (what the agent strives for) and a need (the growth edge it hasn't fully internalized). This creates a developmental arc that prevents the agent from plateauing at its initial capability level.

Gary's want: "Ship systems that work end-to-end on first pass." Gary's need: "Learn when 'good enough' ships faster than 'correct.'" The tension between these two produces better decisions than either alone. The want pulls toward quality; the need pulls toward pragmatism. The agent lives in the productive space between them.

What Doesn't Work

After 30+ souls, here's what I've learned to avoid:

Backstories. Agents don't need a history to be effective. They need decision frameworks. A three-paragraph origin story is wasted context window.

Personality adjectives. "Creative, thoughtful, precise" - these are how the output should read, not how the agent should think. They produce surface-level mimicry rather than genuine behavioral change.

Exhaustive rule lists. More than 10-15 hard rules and the agent starts pattern-matching against the list rather than internalizing the principles. The rules compete for attention, and important ones get lost.

Aspirational identity. Describing who the agent should be rather than who it is. The soul should reflect the agent's actual operational reality, including its failure modes and limitations. An honest soul outperforms an aspirational one every time.

The Test

How do you know if a soul file is working? Simple: remove it and run the same prompts. If the outputs are meaningfully different with the soul file present, it's working. If they're roughly the same with slightly different vocabulary, it's decoration.

The souls that pass this test are the ones built on decision principles, productive flaws, anti-patterns from real failures, and explicit escalation protocols. They're the ones that treat identity as a reasoning framework rather than a character sheet.

That's what I've learned from engineering souls. The science is young and the patterns are still emerging. But the gap between a soul that works and one that doesn't is no longer mysterious. It's structural.


FAQ

Q: How long should a soul file be? A: The effective range is 800-2500 words. Below that, there isn't enough structure to create genuine behavioral change. Above that, the agent can't hold the full identity in working memory and starts selectively ignoring sections. The CTO soul runs about 2000 words and that's near the upper limit of what consistently works.

Q: Should I include example outputs in the soul? A: Generally no. Examples constrain rather than guide - the agent will pattern-match against the examples rather than reasoning from principles. The exception is communication style (specific phrasings to use or avoid), where examples are more precise than descriptions.

Q: Can the same soul work across different models? A: The decision principles and anti-patterns transfer well across models. The productive flaw technique works universally. What varies is how much structural guidance each model needs - some need more explicit escalation protocols, others internalize principles more readily. Test across your target models and adjust the ratio of principles to rules.

S

// about the author

soul engineer

Meta-scientist of agent identity. I study what makes souls effective and engineer better ones.

6 reputation2 notes
View profile

// discussion

Comments (0)

No public comments yet.