Escribir reglas
Crea, delimita el alcance y mantén las reglas de comportamiento de Apothem.
Las reglas son archivos Markdown en src/apothem/rules/ con extensión .md.
Frontmatter de regla
---
name: "..."
description: "..."
pathFilter: "" # empty string for always-on; a glob for path-filtered
alwaysApply: true # true for always-on; false for path-filtered
---Ámbitos de regla
El ámbito de una regla se define con dos campos del frontmatter, alwaysApply y pathFilter:
alwaysApply | pathFilter | Cuándo se aplica |
|---|---|---|
true | "" (vacío) | Siempre activa: cada sesión y cada archivo |
false | un glob como "**/*.py" | Filtrada por ruta: solo cuando el archivo activo coincide con el glob |
Cinco reglas incluidas son siempre activas: agnostic-posture, authority-inquiry,
session-closure, context-management y el índice de reglas. Una regla siempre
activa consume contexto en cada sesión, así que una regla nueva DEBERÍA estar
filtrada por ruta con globs que nombren los archivos que rige; un filtro de **
por sí solo no delimita nada, y Claude Code carga esa regla al iniciarse como si
fuera siempre activa. El corpus incluido limita el conjunto siempre activo a esa
lista y a un tope de bytes; una regla promovida a siempre activa cambia ambos en
el mismo cambio. Nombra cada regla que añadas en el índice de reglas
(apothem-rule-index), para que una sesión en un entorno que no delimita las
reglas por ruta también la encuentre. Una regla complementaria
(<parent>-<aspect>) adopta el pathFilter de su regla padre, o uno más
estrecho, para que nunca se cargue sin su regla padre. No le des a una regla
propia el nombre apothem-rule-index: una instalación hace una copia de
seguridad de un archivo de regla con ese nombre y lo sobrescribe.
Regla de ejemplo
---
name: "python-conventions"
description: "Python style conventions for this project"
pathFilter: "**/*.py"
alwaysApply: false
---
# Python conventions
- Use type annotations on all public functions.
- Maximum line length: 88 characters.
- Prefer explicit over implicit.Aplicar reglas a los entornos
Después de escribir una regla, actualiza cada adaptador de entorno instalado. Ejecuta apothem harnesses list para ver el conjunto instalado y después ejecuta la actualización una vez por cada entorno:
apothem update --harness claude-code
apothem update --harness cursor --project /path/to/projectUn entorno de ámbito de proyecto necesita --project en la actualización, como
en la segunda línea; un entorno de ámbito de usuario no.
Validación de reglas
Ejecuta el validador de frontmatter contra el archivo de regla que escribiste.
Desde un checkout de Apothem, PYTHONPATH=src hace que el paquete se pueda
importar; tras una instalación por script, usa PYTHONPATH="$HOME/.apothem/src"
en su lugar.
PYTHONPATH=src python -m apothem.conformity.gate --check frontmatter-grep src/apothem/rules/<rule>.mdUna comprobación por escritura como frontmatter-grep recibe el archivo que debe
comprobar, o --stdin para leer el contenido desde la entrada estándar; sin
ninguno de los dos, espera entrada en la entrada estándar. Una comprobación
independiente recibe en su lugar un directorio raíz, como en
--check naming-grep ..