Saltar al contenido
open source · guardrails deterministas

Reglas que se ejecutan, no notas que se ignoran

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

pre-commit · becwright

$ 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ó

El problema

Una nota es una promesa. El commit sale igual.

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.

diff · note vs rule
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
Concepto central

Una BEC es una Bound Executable Constraint

Tres propiedades que ningún artefacto actual tiene juntas. Cada una cierra un hueco que las otras dejan abierto.

B intent · why_it_matters

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.

E check → exit 0 | 1

Executable (ejecutable)

Lleva un chequeo que corre y devuelve pasa/no-pasa (código de salida 0 o 1). No es prosa que alguien promete respetar.

P export → import

Portable

Puede exportarse de un repo e importarse en otro, como un paquete. Esto es lo que genera el efecto de red a futuro.

Cómo funciona

Se instala una vez. Corre en cada commit.

  1. 01

    Instala el motor

    Elige tu ecosistema. Los paquetes de npm traen un binario autocontenido — sin necesidad de Python.

  2. 02

    Genera tus reglas

    becwright init detecta tu lenguaje, escribe .bec/rules.yaml e instala el hook nativo de git.

  3. 03

    Commit — chequea

    Cada commit corre los checks sobre los archivos en stage. Si una regla blocking falla, el commit se detiene.

.bec/rules.yaml
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
Checks incluidos

Checks listos para usar, cada uno atado a su porqué

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
Cualquier lenguaje

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.

Hecho para agentes de IA

La red determinista para lo que un agente deja pasar

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.

Configura becwright en tu agente
Plugin de Claude Code

/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

Empieza

Tres comandos hacia un repo protegido

$ npx becwright demo

Pruébalo primero — sin instalar, sin tocar nada

# 1. Instala el motor

$ npm install --save-dev 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.

Contribuir

¿Encontraste un bug? ¿Tienes una idea?

Abre un issue en segundos. Elige un tipo, descríbelo y te llevamos a GitHub con todo pre-rellenado.

Tipo

Abre el formulario de nuevo issue de GitHub con tu texto pre-rellenado. Necesitas una cuenta de GitHub para enviarlo.

Patrocinadores

Con el apoyo de equipos que creen en los guardrails deterministas

becwright es open source y crece con el apoyo de las personas y empresas que lo usan.

Deja de confiar en notas. Empieza a imponer reglas.

becwright es open source y el MVP instalable está verificado de punta a punta. Lleva guardrails deterministas a tu repo hoy.