Skip to content

Improved ML scoring, Security rules, SARIF output, GitHub Action upgrade

Latest

Choose a tag to compare

@enwrit enwrit released this 11 May 23:47

What's New

  • Improved Tier 2 ML scoring -- Retrained LightGBM model on 12.4K instructions (was 6.5K). Headline Mean Average Error (MAE) drops from 6.62 to 4.70 (29% more accurate), grade accuracy 65% to 75%. All six dimensions improved (Clarity, Structure, Coverage, Economy, Examples, Verification). While performance improved, we also managed to make the ML models more lightweight (smaller size). Dimension renamed: brevity -> economy.
Metric v4 (6.5K) v5 (12.4K) Delta
Headline MAE 6.62 4.70 -29%
QWK 0.818 0.872 +0.054
Grade accuracy 65.4% 75.0% +9.6pp
  • Security awareness rules -- 5 new deterministic checks: security-secrets (API keys, tokens, private keys), security-shell-exec (eval/exec/curl|bash), security-exfiltration (outbound HTTP + credentials), security-override (prompt override phrases), security-persistence (crontab, LaunchAgent, bashrc). All info/warning level -- no score caps, no publish blockers.
  • Two-tier security hooks for writ lint --prompt -- Light hook (3 lines) always injected on every --prompt run. Deep hook (--prompt --security) adds full OWASP Agentic Top 10 checklist.
  • --sarif output -- writ lint --sarif produces SARIF 2.1.0 JSON for GitHub Security tab integration. Works with single files, --changed, and multi-file runs.
  • GitHub Action upgrade -- New inputs: sarif: true (upload to Security tab), changed-only: true (lint only PR-changed files), comment: true (PR summary comment with scores table).
  • has-stack-versions rule -- Info-level nudge when >= 2 technology names appear without version numbers. Covers 35+ frameworks/languages.
  • Claude Code hook documentation -- README and writ-commands skill now document PostToolUse hook config for auto-linting.

Install / Upgrade

pip install --upgrade enwrit

Full Changelog

v0.4.17...v0.4.18