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
forbidpara 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.