Bound (atada)
La regla nace ligada a la intención y a la decisión que la creó — el porqué. No es una regla suelta sin contexto.
becwright impone constraints sobre tu código de forma determinista. En vez de pedirle a un agente de IA que respete una regla —como hacen CLAUDE.md o .cursorrules—, verifica el resultado y frena el commit cuando la regla se rompe.
npm · pnpm · pipx — un binario autocontenido, sin necesidad de Python
$ git commit -m "feat: session logging"
▸ becwright check
✓ no-dangerous-eval pass
✓ no-debug-remnants pass
✗ no-token-in-logs BLOCKED
src/auth/session.py:42 — token filtrado a un log
commit abortado — 1 regla blocking falló
Un agente de IA escribe código y deja una nota: «esto nunca debe loguear tokens de sesión». Esa nota es texto. Meses después, otro agente regenera el módulo, no la lee, y mete el token en los logs. Nadie se entera hasta que explota en producción.
Las notas son probabilísticas: dependen de que el agente lea, entienda y obedezca. becwright es determinista: la regla se ejecuta sobre el código real y da pasa/no-pasa, sin importar qué agente o modelo hizo el cambio.
// Las dos capas son complementarias: CLAUDE.md previene, así el 95% sale bien a la primera. becwright es la red de seguridad para el 5% que se escapa.
| − Nota en CLAUDE.md | + Regla becwright | |
|---|---|---|
| Qué hace | Pide que se respete | Verifica que se respetó |
| Depende de | Que el agente la lea y obedezca | Nada — se ejecuta sobre el código |
| Resultado | Probable | Garantizado |
| Analogía | Un letrero de «velocidad máxima» | Un tope físico en la calle |
Tres propiedades que ningún artefacto actual tiene juntas. Cada una cierra un hueco que las otras dejan abierto.
La regla nace ligada a la intención y a la decisión que la creó — el porqué. No es una regla suelta sin contexto.
Lleva un chequeo que corre y devuelve pasa/no-pasa (código de salida 0 o 1). No es prosa que alguien promete respetar.
Puede exportarse de un repo e importarse en otro, como un paquete. Esto es lo que genera el efecto de red a futuro.
Elige tu ecosistema. Los paquetes de npm traen un binario autocontenido — sin necesidad de Python.
becwright init detecta tu lenguaje, escribe .bec/rules.yaml e instala el hook nativo de git.
Cada commit corre los checks sobre los archivos en stage. Si una regla blocking falla, el commit se detiene.
rules:
- id: no-token-in-logs
intent: >
Session tokens and credentials must
never reach any log.
why_it_matters: >
If a token shows up in the logs,
anyone with access can steal a session.
paths: ["src/**/*.py"]
check: "becwright run no_token_in_logs"
severity: blocking # stops the commit
Basados en texto/regex y conservadores por diseño. El valor está en atar cada regla a la razón por la que existe — y puedes escribir los tuyos en cualquier lenguaje.
forbid Cualquier regex que pases (--pattern) cualquiera depende no_token_in_logs Tokens / credenciales en llamadas de log Python blocking hardcoded_secrets Claves AWS, claves privadas, literales password = "…" cualquiera blocking debug_remnants breakpoint(), pdb.set_trace(), import pdb olvidados Python blocking dangerous_eval Llamadas a eval() / exec() cualquiera blocking wildcard_imports from x import * Python warning redundant_comments Comentarios que repiten lo obvio del código (heurístico) Python warning El motor solo filtra archivos por sus globs de paths y corre el check como comando — nunca asume Python. Vigila JavaScript, Go, Rust o lo que sea con el check genérico forbid o tu propio script.
CLAUDE.md le pide al agente que se porte bien. becwright es el guardia que verifica — y el agente puede instalarlo y manejarlo por ti. Un plugin dedicado de Claude Code agrega una skill becwright y un comando /becwright; cualquier otro agente — Cursor, Windsurf, opencode — lo maneja vía el servidor MCP o la CLI directa.
▸ Skill becwright
Se invoca sola cuando pides un guardrail. El agente sabe instalar, generar reglas y leer y arreglar la salida del check.
▸ Comando /becwright
Un único punto de entrada: init · check · add · status — instala, ejecuta e importa BECs sin salir del chat.
▸ check --json
Pasa/no-pasa legible por máquina con intención y porqué — sin parsear, funciona desde el binario autónomo.
▸ Servidor MCP
Expone check y list_checks como herramientas a cualquier agente MCP — Claude, Cursor, Windsurf, opencode.
/plugin install becwright@becwright
/becwright init
▸ becwright check --all
✓ no-dangerous-eval pass
✗ no-token-in-logs BLOCKED
src/auth.py:42 — arreglando…
✓ commit desbloqueado
npx becwright demo Mira a becwright frenar un commit malo de ejemplo. Pruébalo primero — sin instalar, sin tocar nada
# 1. Instala el motor
npm install --save-dev becwright pnpm add -D becwright pipx install becwright # 2. Genera reglas + instala el hook
becwright init ✓# 3. Listo — cada commit corre los checks
Los paquetes de npm cubren linux-x64, linux-arm64, darwin-x64, darwin-arm64 y win32-x64. En cualquier otra plataforma usa pipx install becwright.
Abre un issue en segundos. Elige un tipo, descríbelo y te llevamos a GitHub con todo pre-rellenado.
becwright es open source y crece con el apoyo de las personas y empresas que lo usan.
becwright es open source y el MVP instalable está verificado de punta a punta. Lleva guardrails deterministas a tu repo hoy.