Feedback-driven release from the launch thread — thanks to everyone who tried it and pushed on the design.
New
-
rulesentry fix— opt-in normalizer. Rewrites files into a safe canonical form by removing the unambiguously invisible characters (zero-width, Tag, bidi controls, variation selectors, control chars) and normalizing deceptive whitespace. Homoglyphs and executable strings (!`cmd`,curl | bash) are never auto-rewritten — intent-dependent, so they stay flag-only for human review. Dry-run by default (exits 1 on pending changes, CI-friendly);--writeapplies. Preserves a benign leading BOM. Newrulesentry-fixpre-commit hook.npx rulesentry fix # preview
npx rulesentry fix --write # apply -
Load-boundary receipt — every scanned file now reports a git blob hash +
visibleSha256(what a human reviewer perceives) vsagentReadSha256(what the agent reads) + adiffersflag. Turns "there is hidden Unicode" into a verifiable "the reviewer approved hash X, the agent ingests hash Y." In JSON (receipts) and summarized in pretty output.gitBlobSha1matchesgit hash-object. -
Instruction-surface tagging — findings and receipts are tagged with the surface they came from (
claude-md,agents-md,skill,slash-command,subagent,mcp-config,cursor-rules,copilot-instructions, …), in JSON and SARIF.
Fixed
- Variation-selector severity: a non-UTF-8 byte payload is no longer mis-ranked as printable text.
Still zero runtime dependencies, MIT. 91 tests across Node 18/20/22 × Linux/Windows.
Full changelog: https://github.com/mohamedzhioua/rulesentry/blob/main/CHANGELOG.md