agentic-dev-core · contrato de personalidad

La capa comportamental

Butler Pattern, PM Voice y Visual Mapping explican por qué el repo responde como responde. Pero encima de las tres hay una pregunta anterior: cuando dos capas opinan sobre lo mismo, ¿cuál gana? Hasta agosto de 2026 la respuesta era "la que se repite más veces por turno", y eso no lo había decidido nadie.

AGENTS.md §2 ~/.claude/CLAUDE.md → OUTPUT STYLE caveman@caveman · full docs/ai-personality.md

01Tres capas, tres dimensiones

Cada capa manda sobre una sola dimensión. Ese es el diseño entero: si dos reclaman la misma, se contradicen, y el desempate acaba siendo mecánico en lugar de deliberado.

Capa Dimensión Dónde vive Frecuencia
caveman cuántas palabras caveman@caveman, nivel full cada turno, vía hook
AGENTS.md §2manda qué se dice, granularidad y registro Butler + PM Voice + Visual Mapping cada turno, vía hook nuevo
OUTPUT STYLE cómo se ve y qué textura tiene ~/.claude/CLAUDE.md al arrancar sesión
Regla
§2 gana siempre sobre contenido. OUTPUT STYLE solo decide el render (títulos, anclas en negrita, backticks, tablas, espaciado) y la textura de las frases (sin guión largo, longitud variable, sin recap final). Si una regla de ahí cambiara qué se dice, está mal puesta y pertenece a §2.
El fallo
El desempate era mecánico, no editorial. El plugin de caveman se reinyecta en cada UserPromptSubmit, mientras §2 se lee una vez al arrancar y se diluye conforme crece el contexto. Ganaba la capa más repetida, no la que tenía razón. Por eso PM Voice se evaporaba en sesiones largas y caveman nunca.

02La misma sesión, los dos estilos

Ticket ficticio APEX-233, checkout con pago dividido entre dos tarjetas. Mismo trabajo, misma información. Solo cambia cómo llega.

Pulsa para alternar, o usa
claude · ~/projects/agentic-dev-boilerplate estilo anterior

03Qué cambió, y por qué

Ocho ajustes. Ninguno inventa una estrategia nueva: todos eliminan una contradicción que ya estaba escrita en dos sitios a la vez.

01

Reparto de capas declarado

§2 abre con la tabla vinculante de arriba. Antes ninguna de las tres fuentes decía cuál mandaba, así que la pregunta no tenía respuesta escrita.

02

Viñeta Butler sin guión largo

De topic — fragment a topic: fragment. La instrucción mandaba usar el carácter que la regla global prohibía, y ninguna corrección gana contra su propio ejemplo canónico.

03

143 guiones largos barridos

101 en AGENTS.md y 42 en docs/ai-personality.md. El modelo imita la densidad tipográfica que ve en sus propias instrucciones.

04

Fuera el headline punch

Obligaba a abrir cada respuesta con una frase de enganche distinta. Teatro fabricado, y contradecía el rasgo anti-theatre que la propia doc de personalidad reclamaba.

05

Hook de reinyección

.agents/hooks/personality-reinject.mjs devuelve el contrato de §2 en cada turno por unos 30 tokens, con un adapter fino por harness (.claude/settings.json, .opencode/plugins/, .codex/hooks.json). Arregla la asimetría mecánica, no la redacción.

06

Estos ficheros no son modelo de estilo

Nota explícita en §2: AGENTS.md y los SKILL.md son prosa densa para parseo automático. No se imita su tipografía en el chat.

07

El instalador deja de duplicar caveman

El one-liner corre en modo --all, que instala el plugin y encima registra hooks propios. Ahora se recomienda --no-hooks.

08

ai-personality.md resincronizado

Rutas inexistentes de caveman y de los hooks, y una descripción del fichero global que listaba preferencias que nunca contuvo. Nueva sección 3.7 para la capa OUTPUT STYLE.