Saltar al contenido
becwright

Empezar

Quickstart

Instala becwright, genera reglas y el hook de git con becwright init, y mira cómo frena tu primer commit malo — todo en unos tres minutos.

Última actualización

Esta página te lleva de cero a un repo protegido en unos tres minutos: instala el motor, corre un comando para generar las reglas y el hook de git, y mira a becwright frenar un commit que carga un secreto hardcodeado — y dejarlo pasar cuando el código está arreglado. El resultado es determinista: las mismas reglas corren en cada commit y devuelven el mismo pasa/no-pasa, sin importar qué editor, agente de IA o compañero hizo el cambio.

Pruébalo sin instalar

¿No quieres tocar tu repo todavía? La demo no necesita setup ni git — muestra a becwright frenando un commit malo de ejemplo y limpia todo al terminar:

npx becwright demo

Instalación

Elige tu ecosistema. Los paquetes de npm y pnpm traen un binario autónomo, así que no necesitas Python:

npm install --save-dev becwright    # o global: npm install -g becwright
pnpm add -D becwright
pipx install becwright              # o: pip install becwright

Los paquetes de npm cubren linux-x64, linux-arm64, darwin-x64, darwin-arm64 y win32-x64. En cualquier otra plataforma, usa la vía pipx.

Genera las reglas y el hook

Un solo comando dentro de tu repo:

becwright init

init detecta si el repo tiene archivos Python o JS/TS, escribe un .bec/rules.yaml inicial con reglas acordes e instala el hook de git pre-commit nativo. Desde este momento, cada git commit corre los checks — sin importar qué editor, agente o humano lo haga. (¿Prefieres armarlo a mano? becwright install instala solo el hook, y el .bec/rules.yaml lo escribes tú.)

Revisa las reglas generadas y mira cómo está el repo ahora mismo:

becwright check --all    # corre todas las reglas sobre el repo completo

El becwright check a secas (lo que corre el hook) mira solo los archivos staged — el conjunto exacto que creará el próximo commit — y por eso sigue siendo rápido incluso en repos grandes. --all escanea todo lo que git rastrea.

Míralo frenar un commit

Supón que un archivo cuela una API key activa en el diff. Haz stage y commit:

$ git add src/config.ts
$ git commit -m "add payments client"

✗ hardcoded-secrets  [blocking]
  intent: Sin credenciales, API keys ni contraseñas en el código fuente.
  why it matters: Un secreto commiteado al historial de git sigue
  filtrado aunque lo borres del archivo.
  Found in:
    src/config.ts:3
      > const STRIPE_KEY = "sk_live_51H8..."

Commit blocked — 1 blocking rule failed (exit 1).

El commit nunca ocurrió: el hook salió con 1, git lo rechazó, y la salida te dice (a ti o a tu agente) exactamente qué exige la regla y por qué existe. Arregla el código — lee la clave desde el entorno:

const STRIPE_KEY = process.env.STRIPE_KEY;

Haz stage y commit otra vez:

$ git add src/config.ts
$ git commit -m "add payments client"
✓ all rules passed — commit created

Ese es todo el ciclo. Los códigos de salida son estables y aptos para scripts: 0 pasa, 1 falló una regla blocking, 2 no es un repo git o error de uso. Las reglas con severity: warning se imprimen pero no frenan. Y si el commit malo lo hizo un agente de IA, la misma salida — o becwright check --json — le da la intención y el porqué, para que arregle el código y reintente por su cuenta.

Próximos pasos

  • Escribe tus propias reglas — o apóyate en el check integrado forbid para cualquier regla de “este patrón no debe aparecer” — en Escribir checks.
  • Deja que Claude Code, Cursor o cualquier agente con MCP instale y maneje becwright por ti en Agentes de IA.
  • ¿Ya usas el framework pre-commit? Se complementan — mira becwright vs pre-commit.