diff --git a/README.es.md b/README.es.md index da46d68..495a8bf 100644 --- a/README.es.md +++ b/README.es.md @@ -8,9 +8,12 @@ [![CI](https://github.com/DataDave-Dev/becwright/actions/workflows/ci.yml/badge.svg)](https://github.com/DataDave-Dev/becwright/actions/workflows/ci.yml) [![npm](https://img.shields.io/npm/v/becwright?logo=npm)](https://www.npmjs.com/package/becwright) +[![npm downloads](https://img.shields.io/npm/dm/becwright?logo=npm&label=descargas)](https://www.npmjs.com/package/becwright) [![PyPI](https://img.shields.io/pypi/v/becwright?logo=pypi&logoColor=white)](https://pypi.org/project/becwright/) +[![Versiones de Python](https://img.shields.io/pypi/pyversions/becwright?logo=python&logoColor=white)](https://pypi.org/project/becwright/) +[![Licencia: MIT](https://img.shields.io/badge/licencia-MIT-green)](LICENSE) -**La capa de enforcement para agentes de IA.** +**La capa de enforcement para agentes de IA.** (se pronuncia *bec-ráit* — un "wright" es un artesano, como en *playwright*) Reglas que se ejecutan, no notas que se ignoran. Tu `CLAUDE.md` es un *cartel*; becwright es el *guardia* — corre tus reglas sobre el código y frena el commit @@ -29,7 +32,7 @@ Se publica. Con becwright, el commit no llega a existir:

- becwright frenando un commit que hardcodea un secreto y usa eval + becwright frenando un commit en vivo: corre git commit, dos reglas blocking se disparan con su porqué, el commit se detiene

> **Velo vos mismo en 5 segundos** — sin configurar nada, sin git, sin tocar tu diff --git a/README.md b/README.md index 8fe5ee0..fbc0c55 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,12 @@ [![CI](https://github.com/DataDave-Dev/becwright/actions/workflows/ci.yml/badge.svg)](https://github.com/DataDave-Dev/becwright/actions/workflows/ci.yml) [![npm](https://img.shields.io/npm/v/becwright?logo=npm)](https://www.npmjs.com/package/becwright) +[![npm downloads](https://img.shields.io/npm/dm/becwright?logo=npm&label=downloads)](https://www.npmjs.com/package/becwright) [![PyPI](https://img.shields.io/pypi/v/becwright?logo=pypi&logoColor=white)](https://pypi.org/project/becwright/) +[![Python versions](https://img.shields.io/pypi/pyversions/becwright?logo=python&logoColor=white)](https://pypi.org/project/becwright/) +[![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE) -**The enforcement layer for AI coding agents.** +**The enforcement layer for AI coding agents.** (*bec-wright* — a "wright" is a maker, as in *playwright*) Rules that run, not notes that get ignored. Your `CLAUDE.md` is a *sign*; becwright is the *guard* — it runs your rules against the code and blocks the @@ -28,7 +31,7 @@ string — and leaves a note to *"clean this up later."* Nobody does. It ships. With becwright, the commit never happens:

- becwright blocking a commit that hardcodes a secret and calls eval + becwright blocking a commit live: git commit runs, two blocking rules fire with their why, the commit is stopped

> **See it yourself in 5 seconds** — no setup, no git, nothing on your machine is diff --git a/SECURITY.md b/SECURITY.md index 9c2b468..f3530c6 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,13 +2,13 @@ ## Supported versions -becwright is pre-1.0 and ships fixes on the latest release only. Please make -sure you are on the most recent version before reporting. +becwright ships fixes on the latest release only. Please make sure you are on +the most recent version before reporting. | Version | Supported | | ------- | --------- | -| latest `0.x` | ✅ | -| older `0.x` | ❌ | +| latest `1.x` | ✅ | +| older releases | ❌ | ## Reporting a vulnerability diff --git a/assets/becwright-demo-animated.svg b/assets/becwright-demo-animated.svg new file mode 100644 index 0000000..5f7bf7a --- /dev/null +++ b/assets/becwright-demo-animated.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + git commit — guarded by becwright + + + $ git commit -m "checkout: promo discounts" + + + BEC -- 1 file(s) against 2 rule(s) + + + BLOCK no-hardcoded-secrets (blocking) + Why it matters: a secret stays in git history forever. + checkout.py:2 > api_key = "x7Kp2mQ9vT4nB8wL" + + + BLOCK no-dangerous-eval (blocking) + Why it matters: eval on untrusted input is remote code execution. + checkout.py:4 > discount = eval(rule) + + + >>> Commit BLOCKED: becwright caught it before it shipped. + + + Rules that run, not notes that get ignored. + $ npx becwright demo # try it — nothing installed, nothing touched + $ +