Skip to content

Releases: DataDave-Dev/becwright

v1.0.0 — becwright is stable

Choose a tag to compare

@DataDave-Dev DataDave-Dev released this 02 Jul 17:20
bb03efc

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.yaml schema (the nine rule fields and their meaning).
  • The .bec.yaml bundle format that export / import move between repos.
  • Built-in check names and their flags.
  • CLI commands and their exit codes (0 pass · 1 a blocking rule failed · 2 config/usage problem).
  • The check --json output shape.
  • MCP tool names and signatures.

What landed on the path to 1.0.0

  • Both on-disk formats are versioned.bec/rules.yaml carries an optional schema_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.yaml bundle was already versioned via becwright_bec.
  • The rules.yaml field set is frozen and test-lockedid, paths, check, exclude, intent, why_it_matters, rejected_alternatives, severity, target.
  • Exit codes and check --json are documented and test-locked so their shape can't drift silently.
  • A deprecation policy: from 1.0.0 on, anything in the contract is deprecated with a warning for at least one minor and removed only in the next major — no 1.x upgrade breaks a rule file, bundle, or check script without notice.
  • Declared Development Status :: 5 - Production/Stable.

Fixed

  • becwright init --from-claude-md no longer misreads a per-function line count as a per-file cap. A phrase like "~50 lines per function, ~800 per file" used to derive max_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 becwright

Full changelog: https://github.com/DataDave-Dev/becwright/blob/main/CHANGELOG.md#100--2026-07-02

v0.4.0 — commit-message rules & the advisory tier

Choose a tag to compare

@DataDave-Dev DataDave-Dev released this 01 Jul 20:02
02a97da

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-msg on a rule checks the message.
  • becwright init --from-claude-md maps 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 blocks

Code hygiene from a single phrase

  • New conflict_markers check (leftover <<<<<<< / >>>>>>> / |||||||).
  • A broad "good practices" / "buenas prácticas" phrase in --from-claude-md expands 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

Choose a tag to compare

@DataDave-Dev DataDave-Dev released this 01 Jul 17:32
beae056

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-md reads your CLAUDE.md and 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 in CLAUDE.md.

Adopt on any codebase

  • becwright init --baseline starts rules that already have violations as warning and clean ones as blocking, so a legacy repo is guarded from day one without blocking commits on existing debt. Graduate each rule to blocking as 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 of forbid.
  • 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 unless confirm=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.yaml or a rule pointing at an unknown check now fails with a clear message instead of a confusing block.
  • Offline catalog: becwright search / add install ready-made BECs with one command.
  • Plug into the pre-commit framework or Husky.

See the full changelog.

v0.2.2

Choose a tag to compare

@DataDave-Dev DataDave-Dev released this 30 Jun 18:20
dd99a64

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

Choose a tag to compare

@DataDave-Dev DataDave-Dev released this 30 Jun 18:08
736edfc

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

Choose a tag to compare

@DataDave-Dev DataDave-Dev released this 30 Jun 16:59
5544eea

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

Choose a tag to compare

@DataDave-Dev DataDave-Dev released this 30 Jun 05:47
2b87164

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