kit v9 · f417275 · escritura
Escritura
33 reglas con id fijo, un linter que las detecta y un hook que
bloquea las graves: toda la prosa en español del grupo (informes, docs,
README, mails, UI copy) cumple la norma de core/prosa. Score
objetivo: menos de 1,0 violaciones por 100 palabras y 0 bloqueantes.
Cita cada regla por su id (P01 a P37; la numeración tiene
huecos: P08, P09, P24 y P36 no existen). El id sobrevive a las reescrituras
de la norma; la cita por texto no.
La voz de la casa
La base es la guía de estilo de developers.google.com,
adaptada al español del grupo: hablas con el lector de tú, en activa y en
presente, y la cifra va primero. Cada hábito con su par incorrecto y
correcto.
| Hábito | Incorrecto | Correcto |
| Segunda persona y tú | El usuario debe ejecutar el script de carga. | Ejecuta el script de carga. |
| Voz activa (P23) | La tabla gold es generada por el ETL. | El ETL genera la tabla gold. |
| Presente, no futuro | El comando devolverá un JSON. | El comando devuelve un JSON. |
| Condición antes de la instrucción | Usa stop y start si cambiaste el EnvironmentFile. | Si cambiaste el EnvironmentFile, usa stop y start. |
| Títulos en oración (P37) | Guía de Estilo para la Escritura Técnica | Guía de estilo para la escritura técnica |
| Listas numeradas solo para pasos | 1. Ventajas 2. Riesgos 3. Costos | Viñetas para ideas sueltas; números solo cuando el orden importa. |
| La cifra primero (data-forward) | El rendimiento mejoró considerablemente tras el ajuste. | El p95 bajó de 900 a 210 ms tras el ajuste. |
| Español neutro, tú (P06) | Fijate en el log y probá de nuevo. | Revisa el log y prueba de nuevo. |
| Tildes y eñes siempre | la migracion del analisis | la migración del análisis |
| Cero em-dash (P05) | v9 —ya publicada— incluye tokens | v9, ya publicada, incluye tokens (digest f417275) |
JUICIO · Lo que ningún script verifica lo aplica el
revisor (sección Juicio de la norma). La cifra o el hecho van primero; la
interpretación después. Si un párrafo repite lo ya dicho, uno de los dos
sobra. Un tema por párrafo, con oración temática inicial. Si al quitar una
oración no se pierde información, quítala.
0,3%error post-fix
210 msp95 actual
Data-forward también en la UI: el componente .stat pone la cifra en 28px mono y la etiqueta después. El párrafo que acompaña abre con el dato, no con el adjetivo.
<div class=stat>
<span class=stat__value>0,3%</span>
<span class=stat__label>error post-fix</span>
</div>
Reglas que bloquean (P01 a P07 y P33 a P35)
Tier bloquea: el hook detiene el Write/Edit del archivo. En el
linter manual, --hook sale con código 2 si encuentra una. Cada
regla con su tabla de dos columnas.
P01 · Muletillas IA · "cabe destacar", "es
importante señalar", "en el marco de", "juega un papel", "hoy en día",
"en aras de", "por medio de la presente". Si es importante, dilo primero;
no lo anuncies.
| Incorrecto | Correcto |
| Cabe destacar que el respaldo diario juega un papel fundamental en la operación. | El respaldo corre a las 03:00 y pesa 1,2 GB. Sin él, la última copia buena se pierde en 14 días. |
| En el marco del proceso de modernización, hoy en día el sistema es más robusto. | Desde la migración del 15 de agosto, el sistema conserva los respaldos automáticos. |
<table class=table>
<thead><tr><th class=th-mal>Incorrecto</th><th class=th-bien>Correcto</th></tr></thead>
<tbody><tr><td>...</td><td>...</td></tr></tbody>
</table>
<!-- .table es del kit (base/components.css); th-mal/th-bien tiñen con var(--err)/var(--ok) -->
Las tablas que siguen reutilizan ese mismo patrón.
P02 · Antítesis retórica · "no es solo X, es Y",
"más que un X, es un Y", "es un testimonio de". Afirma directo. La variante
"no solo X sino también Y" es legítima pero la IA la agota: avisa.
| Incorrecto | Correcto |
| No es solo un linter, es una filosofía de escritura. | El linter detecta 33 reglas y bloquea 10. |
P03 · Nominalización (= ETS 3.1) · El verbo directo
reemplaza al sustantivo con verbo de apoyo.
| Incorrecto | Correcto |
| Proceda a realizar la validación de los datos. | Valida los datos. |
| El servicio tiene la capacidad de hacer uso del cache y de dar inicio al reintento. | El servicio puede usar el cache e iniciar el reintento. |
P04 · Marketing · "de vanguardia", "de clase
mundial", "revolucionario", "disruptivo", "seamless". Muestra el dato
(cifra, fecha, latencia) o elimina el adjetivo.
| Incorrecto | Correcto |
| Una plataforma de vanguardia, robusta y sin fricciones. | Responde en 40 ms al p95 y sirve 12 sitios desde un solo proceso. |
P05 · Em-dash · Cero rayas largas en todo el copy
del grupo (canon editorial). Usa "·", "y", "hasta", paréntesis o punto y
oración nueva. Esta página no contiene ninguna: la celda incorrecta usa la
entidad HTML.
| Incorrecto | Correcto |
| El deploy —que tardó 3 minutos— salió bien. | El deploy salió bien y tardó 3 minutos. · Deploy ok (3 min). |
P06 · Voseo · Español neutro/tú: puedes, tienes,
imprime. Nunca podés, tenés, imprimí.
| Incorrecto | Correcto |
| Apretá el botón, fijate en el log y volvé a intentar. | Aprieta el botón, revisa el log y vuelve a intentar. |
P07 · Glosario: un significante, un significado
(= ETS 1.12/1.15) · Cada concepto tiene UN término canónico; las variantes
del .prosa.json están prohibidas. La rotación de sinónimos es
el hábito número 1 del slop. Detalle en la sección Glosario.
| Incorrecto | Correcto |
| El copago sube el gasto out-of-pocket; el pago compartido concentra el gasto OOP en crónicos. | El copago sube el gasto de bolsillo y lo concentra en crónicos. |
P33 · Gerundio analítico colgante (señal Wikipedia)
· La conclusión cuelga de una coma y además es gerundio de posterioridad,
incorrecto en español normativo. Punto y verbo conjugado.
| Incorrecto | Correcto |
| El piloto llegó a 12 comunas, consolidando su posición como referente. | El piloto llegó a 12 comunas. Es el despliegue más grande del año. |
P34 · Coletilla valorativa (señal Wikipedia) ·
"..., lo que refleja/demuestra/subraya": corta en la coma. Si no se pierde
ningún hecho, era opinión del modelo.
| Incorrecto | Correcto |
| El error bajó a 0,3%, lo que demuestra la madurez del pipeline. | El error bajó a 0,3%. |
P35 · Residuo de chat (señal Wikipedia) · Texto
pegado desde una conversación, no escrito para el documento.
| Incorrecto | Correcto |
| ¡Excelente pregunta! Espero que te sirva. ¿Quieres que profundice en [insertar cifra]? | Se borra completo. Si al borrarlo queda un hueco, faltaba contenido, no cortesía. |
Reglas que avisan (P10 a P23 y P37)
Tier avisa: el linter reporta y tú decides. Cuentan para el
score (umbral 1,0 por 100 palabras) pero no detienen la edición.
P10 · Hedging apilado · Máximo un matiz por
oración. Un "quizás" suelto es humano; el apilamiento es slop.
| Incorrecto | Correcto |
| Quizás podría, en algunos casos, llegar a ser conveniente evaluar el cambio. | El cambio conviene si el tráfico supera las 1.000 visitas diarias. |
P13 · Burocratismo · "en virtud de", "a efectos
de", "bajo apercibimiento". En prosa normal: "según", "para".
| Incorrecto | Correcto |
| En virtud de lo anterior y a efectos de cumplir el plazo, se solicita la firma. | Según lo anterior, firma antes del 30 para cumplir el plazo. |
P15 · Meta-discurso · "el presente informe", "a lo
largo de este documento", "como se mencionó", "en conclusión". El texto no
habla de sí mismo.
| Incorrecto | Correcto |
| El presente informe detalla los hallazgos que se describen más abajo. | Dos hallazgos: el backup escribe 13 bytes desde el 17-ago y el timer corre cada 24 h, no cada 30 min. |
P17 · Atribución vaga (weasel words) · "los
expertos señalan", "estudios demuestran", "es ampliamente considerado".
Cita la fuente o elimina la autoridad fantasma.
| Incorrecto | Correcto |
| Los expertos señalan que el gasto público en medicamentos creció. | DIPRES reporta un alza de 4,2% real en 2024. |
P22 · Metáfora gastada (Orwell 1) · "la punta del
iceberg", "tormenta perfecta", "enfrenta desafíos", "marcó un antes y un
después", "dejó una huella imborrable", "sentó las bases para".
| Incorrecto | Correcto |
| El bug era la punta del iceberg de una tormenta perfecta. | El bug destapó otros 7 defectos en el mismo módulo. |
P23 · Pasiva con agente (Orwell 4) · "fue elaborado
por X": X elaboró.
| Incorrecto | Correcto |
| El informe fue elaborado por el equipo de datos. | El equipo de datos elaboró el informe. |
P37 · Título en Title Case · En español solo la
primera palabra y los nombres propios llevan mayúscula. Aplica a títulos de
documentos, secciones y páginas de este hub.
| Incorrecto | Correcto |
| Impacto de la Tecnología en la Salud Pública | Impacto de la tecnología en la salud pública |
Las demás del tier avisa · umbrales y detectores
sin par de ejemplo porque la regla es un límite numérico o una lista.
| Id | Regla | Umbral o detector |
| P11 | Oración larga | más de 40 palabras (prosa) · 25 (estricto, ETS 5.1) |
| P12 | Párrafo largo | más de 8 oraciones (prosa) · 6 (estricto) |
| P14 | Gerundio auxiliar | "habiendo verificado", "siendo que" |
| P16 | Conectores de relleno | densidad sobre 1,5 por 100 palabras ("asimismo", "además", "en este sentido") |
| P18 | Muletillas leves | "en la actualidad", "a nivel de", "de cara a" |
| P19 | Emoji en prosa formal | señal típica de texto generado |
| P20 | Norma personal | regex propias del repo (clave frases del .prosa.json), con tier y mensaje |
| P21 | Palabra prohibida | lista literal del repo (clave prohibidas) |
Modo estricto (P25 a P32)
Para procedimientos, runbooks, mensajes de error y UI copy.
Suma el régimen verbal del Español Técnico Simplificado: solo cinco formas
verbales (infinitivo, infinitivo-imperativo, presente de indicativo en
tercera persona, participio adjetival, futuro imperfecto en tercera
persona) y tres perífrasis (está + participio, puede + infinitivo, debe +
infinitivo). Tope: 25 palabras por oración y 6 oraciones por párrafo.
| Id | Incorrecto | Correcto |
| P25 · Gerundio | Instalando el panel, conectar el cable. | Instalar el panel. Después, conectar el cable. |
| P26 · Subjuntivo | Lubricar según sea necesario. | Lubricar cuando es necesario. |
| P27 · Tiempo compuesto | Cuando haya revisado el filtro, cerrarlo. | Revisar el filtro. Después, cerrarlo. |
| P28 · Perífrasis no admitida | Tiene que verificar el voltaje; va a instalar el sensor. | Debe verificar el voltaje. Instalar el sensor. |
| P29 · Imperativo morfológico | Examine todo el sistema. | Examinar todo el sistema. |
| P30 · Pasiva perifrástica | El perno es apretado con la llave. | Apretar el perno con la llave. |
| P31 · Punto y coma | Apretar el perno; revisar el torque. | Apretar el perno. Revisar el torque. |
| P32 · Condicional | El valor debería estar entre 3 y 5 V. | El valor correcto está entre 3 y 5 V. |
AVISOS DE SEGURIDAD (ETS 7.1-7.6) · PELIGRO = daño
a personas · PRECAUCIÓN = daño al equipo · NOTA = información, nunca
órdenes. La orden va primero y la explicación después.
Peligro Cortar la energía antes de abrir el gabinete: los bornes quedan vivos 30 segundos.
Precaución Detener el servicio antes de editar la config: un reload no re-lee el EnvironmentFile.
Nota El registro quedó guardado (id 4.812).
<span class="badge badge--err">Peligro</span> Cortar la energía antes de abrir el gabinete: ...
<span class="badge badge--warn">Precaución</span> Detener el servicio antes de editar la config: ...
<span class="badge badge--ok">Nota</span> El registro quedó guardado (id 4.812).
Glosario de la casa (P07, P20 y P21)
No hay un glosario global: cada repo declara el suyo en su
.prosa.json y el linter lo aplica como P07 (variantes), P20
(regex propias) y P21 (palabras prohibidas). El ejemplo de referencia es el
perfil del informe de medicamentos.
| Término canónico | Variantes prohibidas | Fuente |
| canasta | cesta · paquete de beneficios | prosa.example.json |
| copago | co-pago · pago compartido | prosa.example.json |
| gasto de bolsillo | gasto out-of-pocket · gasto OOP | prosa.example.json |
| (sin reemplazo: se reescribe) | apalancar · sinergias | prosa.example.json, clave prohibidas |
Términos fijos de la estructura del grupo: úsalos con su
significado técnico, no como sinónimos decorativos.
| Término | Significado en la casa |
| marca | La única clase con contabilidad propia y hoja de estilo propia. |
| producto | Hereda de su marca y nunca lleva CSS propio; si lo necesita, es que es marca. |
| auxiliar | Jamás es producto; no lo llames producto en un doc. |
| infraestructura | No lleva marca ni namebrand. |
| · | El separador editorial del grupo; reemplaza a la raya larga en listas y lockups. |
// .prosa.json del repo (claves: modo, umbral, glosario, prohibidas, frases, desactivar)
{
"modo": "prosa",
"umbral": 1.0,
"glosario": { "copago": ["co-pago", "pago compartido"] },
"prohibidas": ["apalancar", "sinergias"],
"frases": [ { "patron": "\\ba la brevedad\\b", "tier": "bloquea",
"mensaje": "Di cuándo: fecha u hora concreta." } ]
}
Anti-reglas: lo que el linter no marca
Del catálogo Wikipedia con 25 años de ediciones: estas formas
son más frecuentes en texto humano y castigarlas produce slop, no lo
evita.
| Forma | Por qué se premia |
| Cópulas simples ("es", "son", "hay un") | El tell de IA es evitarlas ("se configura como", "ostenta la condición de"). |
| Un conector suelto ("Además,") | Normal en prosa ensayística; solo cuenta la densidad (P16). |
| Un matiz suelto ("quizás", "suele") | Humano; lo sospechoso es el apilamiento (P10). |
| Gramática perfecta, prosa formal, falta de citas | No son señales de nada. |
| Detectores automáticos (GPTZero y similares) | No son criterio: el linter reporta "esta frase es formulaica", nunca "esto lo escribió una IA". |
Cómo correr prosa-lint
El binario vive en /usr/local/bin/prosa-lint y
acepta archivos o directorios. Estas son todas sus flags.
prosa-lint informe.md # reporte completo + score
prosa-lint --modo estricto runbook.md # suma P25-P32 y baja los topes
prosa-lint --umbral 0.5 docs/ # score máximo aceptable (default 1.0)
prosa-lint --json archivo.md # salida JSON para tooling
prosa-lint --texto "una frase" # prueba rápida sin archivo
prosa-lint --hook archivo.md # solo tier bloquea · exit 2 si hay
prosa-lint --stdin-json # API: {"texto","modo","config"} por stdin
HOOK AUTOMÁTICO · Cada Write/Edit de
.md/.txt/.tex/.html en español pasa por
prosa-check.sh; el tier bloquea detiene la edición. Override
puntual: comentario prosa-ok: <razón> en la misma línea.
Dónde NO aplicar la norma: texto con voz deliberada (marketing con firma,
ensayo personal) y texto legal de formato obligatorio.
PASE COMPLETO · La skill /prosa
<archivo> corre la mecánica (linter) y además el juicio
(data-forward, sin vueltas, terminología). Perfiles publicados:
prosa.illanes00.cl (personal) y prosa.medicamentos.cochid.cl (informe
medicamentos).
Fuentes
/srv/projects/core/prosa/NORMA.md (v2) · las 33 reglas con id, los dos modos, tiers, anti-reglas, la sección Juicio y los seis principios de Orwell.
/srv/projects/core/prosa/prosa_lint.py y /usr/local/bin/prosa-lint · flags verificadas contra el --help real: --modo, --umbral, --json, --hook, --texto, --stdin-json.
/srv/projects/core/prosa/prosa.example.json · claves de configuración y el glosario de ejemplo (canasta, copago, gasto de bolsillo).
/srv/projects/core/prosa/referencias/ · ETS (tesis Gobbi, U. Bolonia 2014), checklist ISO 24495-1 y señales Wikipedia de escritura IA.
/srv/projects/CANON.md § Estilo editorial y § Prosa clara · español neutro/tú, cero em-dash, score objetivo y el hook por repo.
/srv/projects/core/core-style/ESTRUCTURA.md (citado vía CANON § Estructura) · los términos marca, producto, auxiliar e infraestructura.
base/tokens.css y base/components.css del kit v9 · .table, .badge, .stat y los colores --ok/--err/--warn de los ejemplos; el header de tokens.css prohíbe el em-dash en copy.
- developers.google.com/style · segunda persona, presente, voz activa, condición antes de la instrucción y listas numeradas solo para pasos (adaptación de la casa; no es un archivo del kit).