Ir al contenido

Skills

chimera-run-the-projects-own-gate-command

Ejecuta literalmente el comando de verificación del proyecto — mismo alcance, mismos flags. La variante casi idéntica que improvisas miente en ambas direcciones.

PatrónProcedencia: cleanEstado: activev0.1.0 · Apache-2.0

Conferida por quien revisó y leyó la tarjeta, no reclamada por el propio archivo. Una tarjeta que el agente destila durante una ejecución que consumió contenido no confiable nace contaminada y queda retenida para revisión antes de ser recuperada.

Cuándo viene a la mente

  • a punto de correr lint o chequeo de tipos
  • verificando antes de un commit o PR
  • CI falló pero en local pasaba
  • agregando un argumento de alcance o un flag de estrictez
  • reportando la compuerta en verde

Evita y Comprueba es donde suele estar el valor. Haz es la sección que todo el mundo escribe.

El cuerpo de la tarjeta de arriba es una traducción. El original en inglés es lo que importa la CLI, lo que lee el agente en ejecución y lo que atestigua el hash de abajo.

Disparador

Estás a punto de ejecutar la compuerta de calidad del proyecto — lint, verificación de tipos, pruebas — y de reportar el resultado como evidencia de que un cambio es seguro. La tentación es estrecharla («solo toqué chimera/») o apretarla («--strict seguro que es mejor»).

No aplica a la exploración. Ejecutar pytest tests/test_governed_surfaces.py -x mientras iteras sobre un archivo es lo correcto; la regla trata de a qué puedes llamar la compuerta. Una ejecución estrechada es una ayuda de depuración, nunca la verificación.

Haz

  1. Encuentra dónde está escrito el comando, y nombra UNA fuente como canónica. En Chimera ese es el target check del Makefilemake check — porque un target es ejecutable y una línea en prosa es una copia de uno. Las tres comprobaciones que ejecuta son ruff check ., mypy chimera y pytest -q.
  2. Ejecuta la forma canónica byte por byte. Sin argumento de ruta añadido, sin flag añadido, sin runner sustituido. Ten en cuenta que una copia en prosa puede diferir de maneras que parecen cosméticas y no lo son: Makefile:21 lo envuelve como uv run --no-sync, CONTRIBUTING.md:105 como uv run --extra dev --extra desktop. La misma herramienta, entornos distintos — que es exactamente por qué una de las dos tiene que ser la fuente.
  3. Si dos fuentes discrepan, trata el workflow de CI como autoritativo, ejecuta ese, y corrige el documento desactualizado en el mismo PR — CONTRIBUTING.md cargó una línea mypy --strict equivocada durante un tiempo, y una instrucción desactualizada se propaga a todo el que la lea.
  4. Si el comando canónico no puede ejecutarse en tu entorno, di que la compuerta no se ejecutó. En Windows el .venv local está roto (litellm quiere Rust/MSVC), así que la compuerta corre en WSL — mover el shell está permitido, editar el comando no.
  5. Reporta el comando y su salida literalmente, no un resumen de cómo fue.

Evita

Dos casi-aciertos, ambos reales, ambos en una misma sesión, y fíjate en que fallan en direcciones opuestas:

mypy --strict chimera      # WRONG — lies toward failure
mypy chimera               # right

El flag explícito anula el propio warn_unused_ignores = false del proyecto en pyproject.toml y reporta unos quince errores unused-ignore en archivos que nadie tocó. Eso casi se convirtió en un reporte de bug presentado contra código limpio.

ruff check chimera tests   # WRONG — lies toward success
ruff check .               # right

El alcance estrechado no reporta un B023 (un closure capturando una variable de bucle) que ruff check . sí reporta, porque el alcance cambia qué archivos — y por tanto qué ajustes de reglas por directorio — entran en juego. CI falló en un PR cuya «compuerta» local estaba en verde.

El mecanismo compartido: el flag decide qué configuración gana, y el alcance decide qué reglas se disparan. Ninguna de las dos es una diferencia cosmética, y ambas variantes se parecen lo bastante al comando real como para que la salida se lea como autoritativa.

Comprueba

Señala el archivo y la línea donde está escrito tu comando. Makefile:21, CONTRIBUTING.md:105. Si no puedes, lo improvisaste.

La pregunta binaria: ¿podría pegarse la cadena que escribiste en la receta check sin ninguna edición? Si tu comando tiene un argumento o un flag que la receta no tiene, la respuesta es no, y lo que ejecutaste fue una comprobación distinta que casualmente comparte el nombre.

Riesgo

El comando canónico suele ser el más lento, y una regla que prohíbe la variante rápida empuja hacia no ejecutar nada en absoluto. Eso es peor resultado que una ejecución estrechada etiquetada con honestidad.

Mide el costo antes de decidir que la regla es barata, y vuelve a medirlo a medida que la suite crece. El primer borrador de esta tarjeta decía que la suite completa de Chimera tardaba «unos quince segundos» — un número que fue cierto una vez y que ya había derivado a unos 100 segundos en cuatro ejecuciones medidas para cuando se escribió la tarjeta. Una tarjeta sobre no improvisar comandos es mal sitio para publicar una cifra que no sobrevive a ejecutar el comando.

Y la receta misma puede estar equivocada. Seguirla literalmente significa heredar sus puntos ciegos: make check no te dirá que una prueba lee un bench/local_lift/results/paired.json ignorado por git que un clon nuevo no tiene. El arreglo para una compuerta mala es cambiar la receta en un PR, no ejecutar calladamente una mejor en privado — una mejora privada protege exactamente a una persona y deja a CI, y a todos los demás, con el comando viejo.

Cómo usarla

La tarjeta es un dato. Clona el repositorio e impórtala por ruta: lo que llega por la red se trata como contaminado y queda retenido a la espera de aprobación, que es el comportamiento deseable y la razón por la que aquí no hay un instalador de una línea.

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/chimera-run-the-projects-own-gate-command/SKILL.md

Integridad

SHA-256 del archivo tal como se publicó. Quien lo importe puede comprobar que lo que recibió es lo que mostró esta página.

12e60e2bbe0fa29b4a242ec429a1897741266f43812148c3a55356f77de227b9

Lee la tarjeta en el repositorio