Guías
Portabilidad
Exportá una BEC a un bundle autocontenido e importala en otro repo.
En corto: ¿escribiste una buena regla y la quieres en otro proyecto (o
pasársela a un compañero)? export la empaqueta en un archivito; import la
mete en el otro repo. El archivo lleva todo lo que la regla necesita — incluido
el código del check si es propio — así que no se rompe nada del otro lado.
Una BEC es portable — la puedes mover entre repos. Un bundle (el archivo
empaquetado) es un único archivo .bec.yaml autocontenido.
Exportar
becwright export no-token-in-logs -o no-token-in-logs.bec.yaml
Sin -o, el bundle se escribe por stdout.
Importar
becwright import no-token-in-logs.bec.yaml # desde un archivo
becwright import https://example.com/rule.bec.yaml # desde una URL
Al importar, becwright imprime la regla y el código del check, y luego pide
confirmación antes de instalar — importar una BEC significa importar código que
corre en cada commit. Usá --yes para saltar el prompt en automatización.
becwright se niega a sobrescribir un id de regla existente o un archivo de check
distinto que ya esté en disco.
Formato del bundle
becwright_bec: 1
exported_from: https://github.com/owner/repo # procedencia (la parte "bound")
rule:
id: no-token-in-logs
intent: ...
why_it_matters: ...
paths: ["src/**/*.py"]
severity: blocking
check:
kind: builtin # builtin | script | command
module: no_token_in_logs
La regla nueva se agrega al .bec/rules.yaml del destino, preservando el
contenido existente (comentarios y formato).
Los tres tipos de check
Cuando exportás una regla, su comando check se clasifica:
| Tipo | Cuándo | Qué viaja en el bundle |
|---|---|---|
builtin | becwright run X [args] | el nombre del módulo (y args) |
script | referencia un archivo del repo, p.ej. .bec/checks/foo.py | el fuente del script, embebido |
command | cualquier otra cosa | la cadena del comando crudo (se avisa al importar) |
La forma antigua python3 -m becwright.checks.X se sigue reconociendo al
importar, así que los bundles exportados por versiones previas siguen funcionando.
Un bundle script deja su código embebido en .bec/checks/ del repo destino,
así un check propio viaja con su código. Un bundle builtin solo necesita el
nombre, porque ese código viene con el paquete becwright.
Catálogo
El directorio becs/ del repositorio es un catálogo de BECs listas para usar,
importables directamente desde su URL raw. Incluye BECs de Python y
JavaScript/TypeScript.