1.0.0 — one gate, every agent
code-quality is now a plugin, not only a skill. One repository installs into Claude Code, Codex, Grok, pi, omp and opencode; the agent hooks run without the model having to remember the skill.
What's new
- Plugin packaging:
.claude-plugin/(Claude Code, Grok, omp),.codex-plugin/+ marketplace (Codex), pi/omp package, opencode plugin (V1 and V2). The skill lives inskills/code-quality/. - Stop hook in every harness: the agent is sent back once with the gate's reasons.
- Bypass guard:
git commit --no-verify/-n(alsoFOO=1 git …, bundled-nm),-c core.hooksPath=…andgit config core.hooksPathare refused in repositories with.quality.toml. Switch:[hooks] block_bypass = false. - Inline suppressions no longer hide gate rules:
eslint-disable complexity,# noqa: C901,//nolint:gocycloand friends are ignored by the analyzers, and a new suppression in the diff is itself a tamper finding. - Git hooks install into a stable shim (
~/.local/share/code-quality, override withCODE_QUALITY_HOME), so plugin updates don't break them. - Grok 1.0.40 does not run plugin hooks yet:
bun scripts/quality.ts install-grok-hookswires them globally.
Verified live: Claude Code, Codex and Grok (stop, bypass refusal, switch). pi fully, omp partly, opencode via adapter handlers. 218 tests.
Breaking: SKILL.md moved to skills/code-quality/, git hooks moved from hooks/ to git-hooks/; rerun install-hooks in your repositories.