Releases: DataDave-Dev/becwright
Release list
v1.0.0 — becwright is stable
becwright is stable. This first 1.0.0 turns a well-tested 0.x into a tool with a committed public contract you can depend on.
No code behavior changed since 0.4.0 — on purpose. This release ships the guarantees, format versioning, and docs that make the contract dependable, so upgrading from 0.4.0 is safe and gives you the same tool with a stable promise.
The public contract
Stable under SemVer as of 1.0.0, changed only on a major bump (with a one-minor deprecation notice in between):
- The
.bec/rules.yamlschema (the nine rule fields and their meaning). - The
.bec.yamlbundle format thatexport/importmove between repos. - Built-in check names and their flags.
- CLI commands and their exit codes (
0pass ·1a blocking rule failed ·2config/usage problem). - The
check --jsonoutput shape. - MCP tool names and signatures.
What landed on the path to 1.0.0
- Both on-disk formats are versioned —
.bec/rules.yamlcarries an optionalschema_version(absent = 1, so existing files keep working); a file stamped newer than the engine understands is refused with a clear "upgrade becwright" error instead of being silently misparsed. The.bec.yamlbundle was already versioned viabecwright_bec. - The
rules.yamlfield set is frozen and test-locked —id,paths,check,exclude,intent,why_it_matters,rejected_alternatives,severity,target. - Exit codes and
check --jsonare documented and test-locked so their shape can't drift silently. - A deprecation policy: from
1.0.0on, anything in the contract is deprecated with a warning for at least one minor and removed only in the next major — no1.xupgrade breaks a rule file, bundle, or check script without notice. - Declared
Development Status :: 5 - Production/Stable.
Fixed
becwright init --from-claude-mdno longer misreads a per-function line count as a per-file cap. A phrase like "~50 lines per function, ~800 per file" used to derivemax_lines --max 50(flagging nearly every file); it now declines to derive a cap from that ambiguous phrasing. Surfaced while field-testing becwright against real repositories.
Install
npm install -g becwright # self-contained binary, no Python
pipx install becwright # or pip install becwrightFull changelog: https://github.com/DataDave-Dev/becwright/blob/main/CHANGELOG.md#100--2026-07-02
v0.4.0 — commit-message rules & the advisory tier
becwright now enforces good practices end to end — the code, the commit message, and even judgment rules — so any rule you write in your CLAUDE.md gets the right treatment: a 100% guarantee if it's deterministic, honest best-effort if it isn't.
Highlights
Commit-message rules
Rules can now target the commit message, not just the files. becwright init installs a commit-msg hook alongside pre-commit.
target: commit-msgon a rule checks the message.becwright init --from-claude-mdmaps phrases like "conventional commits" and "no AI attribution" into ready-made message rules.
$ git commit -m "arreglé cosas" → BLOCKED (not Conventional Commits)
$ git commit -m "feat: … Co-Authored-By: Claude" → BLOCKED (AI attribution)
$ git commit -m "feat: add service" → allowed
Advisory tier — judgment rules, honestly
A new severity: advisory is the home for rules whose check isn't deterministic (e.g. an LLM reviewer). It reports — labelled ADVISORY (best-effort, not a guarantee) — but never blocks, so blocking/warning stay 100% guarantees and you always know which findings are guaranteed vs assisted. No LLM dependency in becwright — the reviewer is your own check command.
- id: readable-design
check: "./my-llm-review.sh" # your reviewer, your model
severity: advisory # reports, never blocksCode hygiene from a single phrase
- New
conflict_markerscheck (leftover<<<<<<</>>>>>>>/|||||||). - A broad "good practices" / "buenas prácticas" phrase in
--from-claude-mdexpands to the deterministic hygiene set (no secrets,eval, debug leftovers, or conflict markers), language-aware.
See the full changelog.
v0.3.0 — CLAUDE.md → BECs, new checks, agent tooling
becwright turns the deterministic parts of a CLAUDE.md into commit-blocking BECs — automatically, gradually, and with an AI agent — while judgment-based guidance stays as prose. CLAUDE.md asks an agent to behave; becwright verifies the result on every commit.
Highlights
CLAUDE.md → enforceable rules
becwright init --from-claude-mdreads yourCLAUDE.mdand turns the prohibitions it recognizes (secrets,eval,debugger,console.log, breakpoints, wildcard imports, a per-file line cap, …) into real rules, reporting which phrase matched each. It ignores what it can't verify (architecture, naming quality, function length) — that stays inCLAUDE.md.
Adopt on any codebase
becwright init --baselinestarts rules that already have violations aswarningand clean ones asblocking, so a legacy repo is guarded from day one without blocking commits on existing debt. Graduate each rule toblockingas you clean it.- Per-rule
exclude:globs carve files out of a rule (vendored/generated code, or the check's own implementation) — no more false positives forcing you to delete a useful rule.
New language-agnostic checks
require— a regex that must be present (e.g. a license header); the inverse offorbid.max_lines— a file-length cap (--max N).filename— file-name conventions (--forbid/--require).
AI agent / MCP authoring loop
The MCP server (becwright mcp) now lets an agent build rules from your CLAUDE.md, safely:
propose_rules_from_claude_md— the deterministic starting point.preview_rule— dry-run a candidate rule before writing it.add_rule— persist it behind a trust gate (previews unlessconfirm=true; built-in checks only).
The Claude Code skill/plugin teaches this whole flow.
Robustness & onboarding
- The pre-commit path checks staged content (matches exactly what the commit records).
- Checks have a timeout; a malformed
.bec/rules.yamlor a rule pointing at an unknown check now fails with a clear message instead of a confusing block. - Offline catalog:
becwright search/addinstall ready-made BECs with one command. - Plug into the pre-commit framework or Husky.
See the full changelog.
v0.2.2
Full cross-platform release: install with npm/pnpm (no Python) or pip/pipx.
- npm/pnpm: self-contained binary for linux x64/arm64, macOS (universal2: Intel + Apple Silicon) and win32 x64.
- pip/pipx: all platforms.
- Claude Code plugin: /plugin marketplace add DataDave-Dev/becwright
- MCP server (becwright mcp) and 'becwright check --json' for AI agents.
v0.2.1
First release with full npm coverage (no Python required) plus PyPI.
- npm/pnpm: self-contained binary for linux x64/arm64, macOS (universal2: Intel + Apple Silicon) and win32 x64.
- pip/pipx: all platforms.
- Claude Code plugin: /plugin marketplace add DataDave-Dev/becwright
- MCP server (becwright mcp) and 'becwright check --json' for AI agents.
v0.2.0
First release installable without Python.
- Install via npm/pnpm (self-contained binary, no Python) or pipx.
- Claude Code plugin: /plugin marketplace add DataDave-Dev/becwright
- MCP server (becwright mcp) and 'becwright check --json' for AI agents.
- Built-in checks invoked via 'becwright run'.
v0.1.0
First release of becwright.
- Deterministic enforcement of constraints (BECs) via a native git pre-commit hook.
- CLI: check / install / uninstall / export / import.
- Included checks: forbid (any language), no_token_in_logs, hardcoded_secrets, debug_remnants, dangerous_eval, wildcard_imports.
- Portable BECs: export/import a rule + its check between repos as a single .bec.yaml.
- Language-agnostic engine; catalog with Python and JS/TS BECs.
Install: pipx install becwright