Contrato de salida · agentic-qa-boilerplate

Cómo escribe la IA a partir de ahora

Dos capas gobiernan cada respuesta en el chat, cada una sobre una dimensión distinta. Esta página muestra el reparto y una sesión ficticia de QA renderizada en los dos estilos, para que la diferencia se vea en lugar de leerse.

AGENTS.md §2 instrucciones de usuario → OUTPUT STYLE 2026-08-17

01El reparto de capas

Cada capa manda sobre una sola dimensión. Cuando dos capas reclaman la misma, se contradicen, y gana la que se reinyecta más veces por turno, no la que tiene razón. Ese era el problema de fondo.

CapaDimensiónDónde viveFrecuencia
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 instrucciones de agente a nivel usuario (## OUTPUT STYLE), en cualquiera de los tres hosts 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, la regla está mal puesta y pertenece a §2.

02La misma sesión, los dos estilos

Ticket ficticio UPEX-482, login con 2FA. Mismo trabajo, misma información, misma longitud aproximada. Solo cambia cómo llega.

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

03Qué se tocó

Siete acciones, todas aplicadas y verificadas con bun run repo:check.

01 · 02

WRITING STYLE pasa a OUTPUT STYLE

Tres bloques (dos de ellos positivos) en lugar de listas negras: no hay BANNED VOCABULARY, BANNED PHRASES ni BANNED RHETORICAL PATTERNS. Queda una micro-lista de palabras a evitar con excepción de uso técnico literal, que es lo que permite escribir API key sin esquivarlo.

aplicado
03

Viñeta Butler sin guión largo

El formato canónico pasa de topic — fragment a topic: fragment. La instrucción mandaba usar guión largo mientras la regla global lo prohibía, así que ninguna corrección iba a funcionar mientras el ejemplo dijera lo contrario.

aplicado
04

Barrido de guiones largos

Se barrieron AGENTS.md y docs/ai-personality.md (ruta retirada; la página es docs/core/personalidad.html). El modelo imita la densidad tipográfica que ve en sus propias instrucciones, y veía muchos guiones largos contra una línea que los prohibía. El barrido de la fecha de este reporte los dejó en cero; el estado actual lo dice una búsqueda en el archivo, no esta página.

aplicado
05

Fuera el headline punch

La regla obligaba a abrir cada respuesta con una frase de enganche distinta cada vez. Teatro fabricado, y contradecía el rasgo anti-theatre de la propia personalidad. La pregunta de orientación del menú se queda: esa sí navega.

aplicado
07

ai-personality.md resincronizado (página: docs/core/personalidad.html)

Cinco puntos de deriva: rutas inexistentes de los hooks, 6-component contra 7-COMPONENT, skills /sdd-* que no se instalan, y una descripción del fichero global que listaba cosas que ese fichero nunca tuvo. Se añade la sección 3.7 documentando la capa nueva.

aplicado
06

Hook de reinyección del contrato

.agents/hooks/personality-reinject.mjs guarda el texto una sola vez y tres adaptadores finos lo registran como UserPromptSubmit: .claude/settings.json, .opencode/plugins/personality-reinject.js y .codex/hooks.json. Sin él, PM Voice y Butler se leen una vez y se diluyen a lo largo de la sesión: el problema era mecánico, no editorial. Cuesta unas decenas de tokens por turno.

aplicado