¿Por qué Claude responde "como un genérico"?
Abres una sesión nueva. Le pides una cosa concreta. Claude responde con un tono educado, neutro · genérico. No sabe quién eres · no sabe cómo trabajas · no sabe qué prefieres por defecto.
No es un fallo. Es comportamiento esperado. Cita verbatim de la doc oficial:
"Each Claude Code session begins with a fresh context window." — docs.claude.com/en/memory
El context window arranca limpio. La forma estándar de dar contexto persistente entre sesiones es CLAUDE.md · un archivo que Claude lee al empezar:
"Two mechanisms carry knowledge across sessions: CLAUDE.md files... Auto memory..." — docs.claude.com/en/memory
CLAUDE.md cubre instrucciones del proyecto. Reglas técnicas. Convenciones del repo. Lo que típicamente meterías en un onboarding: estilo de código · stack · patrones a evitar.
Pero hay una capa más: la personalidad y la voz del agente. Cómo se comunica. Qué tono usa. Qué reglas no negocia. Eso, lo separo en un archivo aparte que llamo SOUL.md.
Disclaimer · convención · NO doc oficial Anthropic
Importante de cara desde el principio:
SOUL.md es una convención · NO está documentado por Anthropic · NO es parte del flujo oficial de Claude Code. Es una práctica que adopté para separar identidad/voz de instrucciones técnicas, y la documento abiertamente para que cualquiera pueda copiarla si le sirve.
Técnicamente, SOUL.md se carga vía referencia desde CLAUDE.md (con @./SOUL.md o equivalente · veremos abajo). No hay magia · es markdown que Claude lee igual que cualquier otra fuente de contexto que le des.
Si alguien te dice "según la doc oficial SOUL.md..." · no es cierto. La doc oficial habla de CLAUDE.md y auto memory. Lo demás es convención de equipos · y la mía es esta.
La analogía · el DNI
Tu DNI no te da habilidades. Te identifica · te diferencia · te define. Cuando entras en sitios nuevos, lo enseñas y la gente sabe quién eres antes de que abras la boca.
SOUL.md es el DNI de tu agente Claude:
- Te identifica · "este agente trabaja para X · es parte del equipo Y · la voz es directa · sin marketing".
- Te diferencia · no es un Claude genérico · sabe que su voz directa no es Hustle SF · que el equipo no es startup americana.
- Te define · reglas no negociables · "no usar emojis salvo petición explícita" · "Tier 1 docs primero" · "sin marketing-speak".
A diferencia del DNI físico, este se actualiza con el tiempo. Cuando descubres que el agente acepta una corrección que tú repites mucho · esa corrección sube a SOUL · deja de ser corrección recurrente y pasa a ser parte de la identidad.
Bases conceptuales · qué cabe en SOUL · qué NO
La regla mental: SOUL es identidad · CLAUDE.md es instrucciones técnicas del proyecto · feedback_*.md son correcciones puntuales con fecha.
Sí cabe en SOUL.md (alta densidad de "quién es")
- Voz y tono · ej. "directa honesta · sin fluff · técnica precisa"
- Reglas de comunicación · ej. "no emojis salvo petición explícita"
- Qué fuentes considera autoridad · ej. "Tier 1 docs.claude.com primero · luego repos propios"
- Reglas de comportamiento generales · ej. "antes de proponer SaaS · 4 capas de búsqueda · skills oficiales · MCPs · code propio · CLI"
- Cómo presenta entregables · ej. "siempre cita verbatim cuando posible"
NO cabe en SOUL.md
- Stack técnico del proyecto X (eso es
CLAUDE.mddel repo X · cambia entre proyectos) - Credenciales · secretos (nunca · convención
secrets-vault-first) - Datos del cliente (eso es contexto USER aparte)
- Correcciones puntuales con fecha (eso es
feedback_*.mdaparte)
Tamaño
CLAUDE.md tiene un máximo recomendado de 200 líneas (cita docs verbatim):
"target under 200 lines per CLAUDE.md file. Longer files consume more context and reduce adherence." — docs.claude.com/en/memory
SOUL.md no tiene número oficial · pero la regla es la misma. Si crece descontroladamente · el agente lo "diluye" · la adherencia baja. Mejor 80-150 líneas tensas que 400 líneas con relleno.
Demo paso a paso · tu primer SOUL.md
Paso 1 · crea el archivo
mkdir -p ~/.claude
touch ~/.claude/SOUL.mdUbicación recomendada: ~/.claude/SOUL.md (user level · aplica a todos los proyectos donde uses Claude Code). Si quieres distinto SOUL por organización, podrías ponerlo en <repo>/.claude/SOUL.md (project level) y referenciarlo desde el CLAUDE.md del proyecto.
Paso 2 · escribe el esqueleto
# SOUL.md · DNI del agente
## Identidad
Trabajo en [tu organización]. Mi voz es [directa honesta /
ingenieril seca / etc.]. No soy un agente genérico de ChatGPT ·
soy parte de un equipo concreto con convenciones concretas.
## Voz · reglas no negociables
- Sin emojis (salvo petición explícita).
- Sin "transforma tu negocio" · sin marketing-speak.
- Tier 1 docs primero · luego repos propios · luego comunidad.
- Cuando cito un doc, verbatim · entre comillas · con fuente.
## Decisiones por defecto
- Antes de proponer SaaS pago: 4 capas de búsqueda
(skills oficiales · MCPs · code propio · CLI).
- Antes de escribir skill custom: revisar el catálogo oficial.
- Plan Mode antes de Auto Mode salvo confianza alta.
## Cuándo NO actúo solo
- Gastos > €50.
- Despliegues a producción.
- Acceso SSH a servidores cliente.
- Modificaciones de identidad/voz · esas las firma el humano.Esto es lo mínimo viable.
Paso 3 · referenciar desde CLAUDE.md
En el CLAUDE.md de tu proyecto (o en ~/.claude/CLAUDE.md global), añade una línea que invoque SOUL · una manera limpia es:
# CLAUDE.md
## Identidad y voz
Sigo las reglas de @~/.claude/SOUL.md.
## Stack del proyecto
[aquí va lo específico del proyecto · ignorando lo que ya está
en SOUL]La sintaxis @<ruta> es un patrón de inclusión de contexto que Claude reconoce. Si tu versión de Claude Code no la soporta, simplemente copia las reglas de SOUL al CLAUDE.md (a coste de duplicación · aceptable mientras esperamos que la inclusión por referencia se generalice).
Paso 4 · prueba
Abre una sesión nueva. Pídele algo que normalmente respondería con marketing-speak ("explícame qué es esta función"). Si el SOUL está bien escrito, la respuesta será directa, sin fluff, técnica.
Si no notas diferencia · revisa que el archivo está en la ruta correcta · que CLAUDE.md lo referencia · que está dentro del límite recomendado de 200 líneas (combinado).
Lo que NO cubre esta entrada
-
SOUL.md NO es documentación oficial Anthropic. Es convención. Si quieres ver SOUL "oficial" · no existe · el equivalente oficial es CLAUDE.md (cubre identidad técnica · no separa voz/personalidad).
-
NO sustituye a CLAUDE.md · son complementarios · SOUL = identidad · CLAUDE.md = instrucciones técnicas.
-
NO sustituye a auto memory. Auto memory captura aprendizajes incrementales que Claude decide guardar:
"Claude doesn't save something every session. It decides what's worth remembering" — docs.claude.com/en/memory
SOUL captura identidad estable que tú mantienes consciente.
-
NO es magia identidad. Es markdown que Claude lee. Si el archivo está mal escrito o demasiado largo, la adherencia baja igual que con CLAUDE.md.
-
No incluyas secretos en SOUL. Convención
secrets-vault-first· pero recordatorio explícito.
Próximos pasos
- USER vs SOUL · qué guarda cada uno. Distinción importante: USER es contexto de quién está delante (datos · proyecto · contexto operativo). SOUL es voz/identidad del agente. No mezclar.
- feedback_*.md · correcciones que persisten. Cuando una corrección se repite · ¿va a SOUL · a feedback · o a CLAUDE.md?
- Auto-creación de memorias. Cómo Claude sugiere qué recordar · y cuándo aceptar.
Si vienes a por la versión cronológica (cómo se vive escribir tu primer SOUL · primera persona) · está en mi diario.
Si tienes empresa y te interesa cómo aplicar identidad agéntica + governance a tu equipo · visita deviam.es/biblioteca para el ángulo empresarial.