claudeers.
// Developer Tools

code-quality

Deterministic code quality gate for AI coding agents (Claude Code, Codex, pi): git hooks that block test tampering, hold the CRAP bar on changed functions, c…

Install with your AI

Paste into Claude Code, Cursor, or any agent — it reads the repo and wires the tool into your project.

Install and set up code-quality (claude-plugin project) into my current project.
Found on https://claudeers.com/code-quality
Repo: https://github.com/smixs/code-quality
Homepage/docs: —
Detected install method: claude-plugin → /plugin install code-quality@smixs/code-quality
Category: devtools. Platforms: cli, api.
Read the repo's README for exact setup and env vars, then install it and wire it into my project.

Claudeers Health Verdict:
unknown; community-verified: false. Confirm the source before running anything.
// or install directly (claude-plugin)

⚠ Unverified / not recently updated — review before pasting a run-this config.

/plugin marketplace add smixs/code-quality
/plugin install code-quality@smixs/code-quality
// or clone
git clone https://github.com/smixs/code-quality

// compatibility

Platformscli, api
Operating systems—
AI compatibilityclaude
LicenseMIT
Pricingopen-source
LanguageTypeScript

Get your FREE $2.50 API credits to access TickAtlas financial data ↗
Code Quality

Code Quality

Your AI agent made the tests green. Did it fix the code, or the tests?

A quality gate for coding agents: git hooks and Stop hooks that block test tampering and hold one complexity bar on every changed function. 12 languages, one config file, no server.

skills.sh installs

Two toll lanes: red barrier down, green barrier up

The cheap way out, caught

The agentThe gate
Marked the failing test it.skiptamper/test-skipped tests/queue.test.ts:12
Dropped two assertionstamper/assertion-weakened tests/queue.test.ts:48
Swapped toEqual for toBeTruthytamper/assertion-weakened tests/queue.test.ts:52
Stubbed the module under testnote: tamper/mock-added tests/queue.test.ts:+64
Refreshed the baseline with the codetamper/baseline-touched baseline.json:1
Shipped 50 lines, 31 coveredcov/diff: 62% (31/50 lines, minimum 80%)

Deterministic. Exit code 1, file and line in the report. No model is asked for an opinion.

How it works

flowchart LR
    A[git hooks] --> Q
    B[Stop hook: Claude, Codex, pi, omp; Grok after global hook install] --> Q
    C[OpenCode idle notice] --> Q
    Q[one script] --> D{new finding on a changed line?}
    D -->|yes| F[GATE FAIL, agent gets one round to fix]
    D -->|no| P[GATE PASS]
  • One bar. Cyclomatic complexity 10, CRAP 30, 80% coverage of added lines, no new cycles, no new dead code, no secrets.
  • Old debt does not block. A baseline snapshot keeps existing findings as debt. Only new findings on changed lines fail.
  • Seconds, not minutes. check runs in 3-19 s on a real repo. The full gate with tests and coverage is a manual run.
  • Any language. Complexity from lizard, coverage from lcov, adapters for TypeScript, Python, Go, Rust, Java, Kotlin, C#, Swift, PHP, Ruby, C/C++, Dart.

Install

Bun is required for the gate and the shell hooks. Install for your agent:

AgentInstall
Claude Codeclaude plugin marketplace add smixs/code-quality then claude plugin install code-quality@code-quality
Codexcodex plugin marketplace add smixs/code-quality then codex plugin add code-quality@code-quality; review and trust its hooks with /hooks
Grok 1.0.40grok plugin install smixs/code-quality --trust, then from this repository or its installed plugin root run bun scripts/quality.ts install-grok-hooks
pipi install git:github.com/smixs/code-quality
ompomp plugin install github:smixs/code-quality
OpenCode V1bun add github:smixs/code-quality in a project with package.json, then add "plugin": ["file:./node_modules/code-quality"] and "skills": ["./node_modules/code-quality/skills"] to opencode.json
OpenCode V2Add "plugins": ["github:smixs/code-quality"] to opencode.json
Skill onlynpx skills add smixs/code-quality (does not install hooks)

Claude and Codex load Stop and PreToolUse hooks from the plugin. Grok 1.0.40 did not dispatch plugin hooks in a live check (total_hooks=0); install-grok-hooks writes ~/.grok/hooks/code-quality.json with both commands pointing to the current plugin root. Run it again after moving or updating that root; bun scripts/quality.ts uninstall-grok-hooks removes that file. $GROK_HOME overrides the Grok directory. pi and omp load the package extensions. OpenCode blocks the shell tool before a bypass and writes a session message on idle when the gate is red; its idle event cannot force another agent turn. OpenCode V1.18.32 reads the plugin's config.skills value but does not discover the skill from it. Add an explicit "skills": ["./node_modules/code-quality/skills"] entry to opencode.json when using a project Bun installation. In Git repositories with .quality.toml, git commit --no-verify, git commit -n, git push --no-verify, git -c core.hooksPath=... and git config core.hooksPath are blocked by default. Set [hooks] block_bypass = false in .quality.toml to disable this guard.

To enable the plugin for a team repository, commit these project settings:

// .claude/settings.json
{ "extraKnownMarketplaces": { "code-quality": { "source": { "source": "github", "repo": "smixs/code-quality" } } },
  "enabledPlugins": { "code-quality@code-quality": true } }
// .pi/settings.json
{ "packages": ["git:github.com/smixs/code-quality"] }
// opencode.json (V2)
{ "plugins": ["github:smixs/code-quality"] }

For Codex, commit .codex/config.toml:

[plugins."code-quality@code-quality"]
enabled = true

Wire each Git repository with a .quality.toml and a baseline. From the plugin checkout or installed package root:

bun scripts/quality.ts install-hooks <repo>
bun scripts/quality.ts --repo <repo> --update-baseline

install-hooks sets core.hooksPath to ~/.local/share/code-quality/git-hooks/, or $CODE_QUALITY_HOME/git-hooks/. A root pointer follows the latest invoked plugin copy. Existing repository hooks are chained. See configuration.

Jev, optional

Five calibrated yes/no questions about added test hunks (a textual test, an untested error path, a weakened assertion, a mock that hides the change, a tautological property). Notes only: Jev never changes the exit code. Two ways to connect, whichever key you have:

[review]                      # TypeSafe directly, key from console.typesafe.ai/keys
jev = true                    # TYPESAFE_API_KEY in the environment
[review]                      # or through OpenRouter
jev = true                    # OPENROUTER_API_KEY in the environment
jev_provider = "openrouter"

Details, the model pins and the curl for each: Jev reference.

Docs

Credits

CRAP metric by Alberto Savoia and Brian Cunningham. Tamper taxonomy from TRACE (arXiv 2601.20103). Built on lizard, jscpd, ast-grep, gitleaks, osv-scanner, dependency-cruiser, knip, ESLint, Radon and TypeSafe Jev.

MIT. Copyright 2026 Sergey Shima.

// faq

What is code-quality?

Deterministic code quality gate for AI coding agents (Claude Code, Codex, pi): git hooks that block test tampering, hold the CRAP bar on changed functions, check diff coverage, secrets and dependencies. 12 languages, one config file. Optional Jev classifier for test hunks.. It is open-source on GitHub.

Is code-quality free to use?

code-quality is open-source under the MIT license, so it is free to use.

What category does code-quality belong to?

code-quality is listed under devtools in the Claudeers registry of Claude-compatible tools.

5 views
★ 10 stars
unclaimed
updated 12 days ago

// embed badge

code-quality on Claudeers
[![Claudeers](https://claudeers.com/api/badge/code-quality.svg)](https://claudeers.com/code-quality)

// retro hit counter

code-quality hit counter
[![Hits](https://claudeers.com/api/counter/code-quality.svg)](https://claudeers.com/code-quality)

// reviews

// guestbook

0/500

// related in Developer Tools

🔓

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Curs…

// devtoolsaffaan-m/⟨JavaScript⟩★ 267,519◷ MIT[ claude ]
🔓

Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

// devtoolsDietrichGebert/⟨JavaScript⟩★ 148,251◷ MIT[ claude ]
🔓

Use Garry Tan's exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA

// devtoolsgarrytan/⟨TypeScript⟩★ 134,274◷ MIT[ claude ]
🔓

AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, and more). Turn any folder of code, SQL schemas, R scripts, shell scripts, docs,…

// devtoolssafishamsi/⟨Python⟩★ 123,348◷ MIT[ claude ]
→ see how code-quality connects across the ecosystem