DBDelve
Dive deep into your data. A fast, native, multi-engine database client written in Rust. Free and open source, no telemetry.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Local quality gates for AI-assisted coding and Git workflows
翻訳待ち
Loading the full README.
Read the full README ↗Let AI write code. Make your checks approve shipping.
A local quality gate for Claude Code, Codex and ordinary Git workflows. Python 3.11+, macOS/Linux, no runtime dependencies. This is a v0.1 open-source project. It ships as a Claude Code plugin, a Codex plugin (installable from the ChatGPT desktop app) and a plain CLI. Landing page: docs/index.html.
Claude Code proposes commit/push
↓
Claude PreToolUse hook
↓
Syntax + obvious secrets + your tests/lint/types
↓
PASS → normal permission flow
FAIL → block + explain what to fix
↓
Git pre-commit / pre-push check again
It does not prove code is bug-free, understand every business requirement, or replace code review. It enforces the checks your project defines. It does not need Harbor, REA, an API key, or a second model.
This repository is also a plugin marketplace for Claude Code and for Codex. Both plugins bundle the same pieces:
PreToolUse Bash hook (hooks/hooks.json) that gates shipping commands,codegate_check MCP tool,check and setup skills (skills/).Plugins load in every project. The plugin hook (codegate hook plugin) therefore does nothing unless the current checkout has opted in. That takes a codegate.toml plus a local install receipt in .git/codegate/, written by init/install (or /codegate:setup) on your machine. A cloned repository that only ships a codegate.toml cannot make the plugin run its commands. Teammates opt in with python3 .codegate/runner.py install --git. It also steps aside where a project-local codegate install --claude hook already exists, so checks never run twice. Unlike the project-local hook, the plugin hook does not set onFailure: block. If Python 3.11+ is missing, it fails open rather than blocking every Bash call in every project. Git hooks and CI remain the enforcement layers.
/plugin marketplace add Relay-harness/codegate
/plugin install codegate@codegate
Then, in the repository you want to protect, run /codegate:setup. It runs init --git: it writes codegate.toml, vendors .codegate/runner.py and installs Git hooks. It skips --claude, because the plugin provides that hook. Use /codegate:check to run the gate on demand. After setup, codegate doctor reports WARN Claude Bash hook installed. That is expected when the hook comes from the plugin.
Example prompts after installation:
CodeGate runs locally and needs Python 3.11+ and access to the repository. Review the configured commands before opting in: checks use your permissions and inherited environment, and may change files or access the network. Reports remain in the repository's Git metadata until you remove them. Tool results can include local paths and test output that your AI client receives. See the CodeGate privacy policy, terms, and support tracker.
codex plugin marketplace add Relay-harness/codegate
codegate./hooks. Codex does not run plugin hooks until they are trusted.uvx --from git+https://github.com/Relay-harness/codegate.git codegate init --git, or ask Codex to use the setup skill.The Codex manifest is .codex-plugin/plugin.json and the marketplace is .agents/plugins/marketplace.json. Codex starts plugin MCP servers from the plugin directory, not from your project. Its MCP config therefore runs the server with --require-path, and codegate_check must be given the repository's absolute path.
This works in local Codex threads only. The ChatGPT web app cannot reach your files or run your tests, so CodeGate cannot gate code written there. Use Git hooks and required CI for that code.
Install the local project once:
uv tool install git+https://github.com/Relay-harness/codegate.git
Then, from the repository you want to protect:
codegate init --claude --git
codegate doctor
codegate check
Review codegate.toml, then commit .codegate/runner.py and codegate.toml. Restart Claude Code or reload its hooks and verify with /hooks before relying on the integration. The installer writes project-local .claude/settings.local.json, not global Claude settings. Claude may ask you to trust new project hook settings.
Node repositories: detect declared lint, typecheck, test and build scripts, and select npm/pnpm/yarn/bun from lockfiles. Python repositories with pyproject/pytest.ini plus tests: detect a pytest command and use the project's .venv/bin/python when available. Detection is a starting policy, not proof that these scripts test the right things. Test frameworks must already be installed in the project environment. CI=1 is set to discourage interactive/watch behavior.
No check commands detected? Shipping stays blocked. Add your actual test command before continuing. No silent success on an empty policy.
After the runner/config are committed, a teammate can use:
python3 .codegate/runner.py install --claude --git
python3 .codegate/runner.py doctor
python3 .codegate/runner.py check
The runner is self-contained. Each developer installs their own local hooks. Installing CodeGate does not install project dependencies, change global Git settings, or create commits/pushes for you.
This is the beginning of the README. Read the rest at the original. Read the full README ↗