Language-agnostic code quality control tool with Git hooks
A code quality control tool built in Go, distributed as a single binary with no external runtime dependencies. Provides enhanced visual feedback with spinners, execution timing, and structured JSON output.
- 🏗️ Single Binary: Zero runtime dependencies (Python, Node.js)
- 🔧 Automatic Setup: Installs quality tools automatically
- 🌍 Multi-language: Supports multiple languages in the same repository
- 📊 Observability: Spinners, timing, and real-time visual feedback
- 🔒 Built-in Security: Secret scanning in commit workflow
- ⚡ Native Performance: Instant execution without interpreters
- 🚀 CI/CD Ready: Clean JSON output for automation pipelines
# Download the latest release for your platform
# Linux (x64)
wget https://github.com/dmux/go-quality-gate/releases/latest/download/quality-gate-linux-amd64
chmod +x quality-gate-linux-amd64
sudo mv quality-gate-linux-amd64 /usr/local/bin/quality-gate
# Linux (ARM64)
wget https://github.com/dmux/go-quality-gate/releases/latest/download/quality-gate-linux-arm64
chmod +x quality-gate-linux-arm64
sudo mv quality-gate-linux-arm64 /usr/local/bin/quality-gate
# macOS (Intel)
wget https://github.com/dmux/go-quality-gate/releases/latest/download/quality-gate-darwin-amd64
chmod +x quality-gate-darwin-amd64
sudo mv quality-gate-darwin-amd64 /usr/local/bin/quality-gate
# macOS (Apple Silicon)
wget https://github.com/dmux/go-quality-gate/releases/latest/download/quality-gate-darwin-arm64
chmod +x quality-gate-darwin-arm64
sudo mv quality-gate-darwin-arm64 /usr/local/bin/quality-gate
# Windows (download .exe from releases page)
# https://github.com/dmux/go-quality-gate/releases/latestgo install github.com/dmux/go-quality-gate/cmd/quality-gate@latest# Run directly with Docker
docker run --rm ghcr.io/dmux/go-quality-gate:latest --version
# Create alias for easier usage
echo 'alias quality-gate="docker run --rm -v $(pwd):/workspace -w /workspace ghcr.io/dmux/go-quality-gate:latest"' >> ~/.bashrc
source ~/.bashrc# Clone and build
git clone https://github.com/dmux/go-quality-gate.git
cd go-quality-gate
make build
# Install hooks in your project
./quality-gate --installCreate a quality.yml in your project:
# Generate initial configuration based on your project
./quality-gate --init# Automatic execution via Git hooks
git commit -m "feat: new feature"
# Manual execution
./quality-gate pre-commit
# JSON output for CI/CD
./quality-gate --output=json pre-commit
# Auto-fix
./quality-gate --fix pre-committools:
- name: "Gitleaks"
check_command: "gitleaks version"
install_command: "go install github.com/zricethezav/gitleaks/v8@latest"
- name: "Ruff (Python)"
check_command: "ruff --version"
install_command: "pip install ruff"
hooks:
security:
pre-commit:
- name: "🔒 Security Check"
command: "gitleaks detect --no-git --source . --verbose"
output_rules:
on_failure_message: "Secret leak detected!"
python-backend:
pre-commit:
- name: "🎨 Format Check (Ruff)"
command: "ruff format ./backend --check"
fix_command: "ruff format ./backend"
output_rules:
show_on: failure
on_failure_message: "Run './quality-gate --fix' to format."
typescript-frontend:
pre-commit:
- name: "🎨 Format Check (Prettier)"
command: "npx prettier --check 'frontend/**/*.{ts,tsx}'"
fix_command: "npx prettier --write 'frontend/**/*.{ts,tsx}'"go build -o quality-gate ./cmd/quality-gateThis will create an executable named quality-gate in the current directory.
./quality-gate --installThe program will automatically configure pre-commit and pre-push hooks.
./quality-gate --init: (Experimental) Analyzes your project structure and generates an initialquality.ymlfile with suggestions./quality-gate --fix: Executes automatic fix commands (fix_command) defined in yourquality.yml./quality-gate pre-commit --output=json: Executes the specified hook and returns the result in JSON format
The configuration is divided into two main sections:
-
tools: List of tools required for the projectname: Human-readable tool namecheck_command: Command that returns success (exit code 0) if the tool is installedinstall_command: Command executed to install the tool ifcheck_commandfails
-
hooks: Quality check configuration
tools:
- name: "Gitleaks"
check_command: "gitleaks version"
install_command: "go install github.com/zricethezav/gitleaks/v8@latest"
- name: "Ruff (Python Linter/Formatter)"
check_command: "ruff --version"
install_command: "pip install ruff"
- name: "Prettier (Code Formatter)"
check_command: "npx prettier --version"
install_command: "npm install --global prettier"
hooks:
security:
pre-commit:
- name: "🔒 Security Check (Gitleaks)"
command: "gitleaks detect --no-git --source . --verbose"
output_rules:
on_failure_message: "Secret leak detected! Review code before committing."
python-backend:
pre-commit:
- name: "🎨 Format Check (Ruff)"
command: "ruff format ./backend --check"
fix_command: "ruff format ./backend"
output_rules:
show_on: failure
on_failure_message: "Code formatting issue. Run './quality-gate --fix' to fix."
- name: "🧪 Tests (Pytest)"
command: "pytest ./backend"
output_rules:
show_on: always
typescript-frontend:
pre-commit:
- name: "🎨 Format Check (Prettier)"
command: "npx prettier --check 'frontend/**/*.{ts,tsx}'"
fix_command: "npx prettier --write 'frontend/**/*.{ts,tsx}'"| Command | Description | Example |
|---|---|---|
--install |
Installs Git hooks in repository | ./quality-gate --install |
--init |
Generates initial quality.yml with intelligent analysis | ./quality-gate --init |
--fix |
Executes automatic fixes | ./quality-gate --fix pre-commit |
--version, -v |
Shows version information | ./quality-gate --version |
--output=json |
Structured output for CI/CD | ./quality-gate --output=json pre-commit |
# Simple version
./quality-gate --version
# Output: quality-gate version 1.2.0
# JSON version with build details
./quality-gate --version --output json
# Output:
{
"version": "1.2.0",
"build_date": "2025-10-21T16:34:44Z",
"git_commit": "f7b01a2"
}{
"status": "success",
"results": [
{
"hook": {
"Name": "🔒 Security Check",
"Command": "gitleaks detect --source ."
},
"success": true,
"output": "",
"duration_ms": 150,
"duration": "150ms"
}
]
}- Go 1.18+
- Git
- Package managers for your project languages (pip, npm, etc.)
# Clone the repository
git clone <repo>
cd go-quality-gate
# Install dependencies
go mod tidy
# Build
go build -o quality-gate ./cmd/quality-gate
# Run tests
go test ./...
# Test locally
./quality-gate --init
./quality-gate --installcmd/quality-gate/ # Main application
internal/
domain/ # Entities and business rules
service/ # Application logic
infra/ # Infrastructure (git, shell, logger)
repository/ # Persistence interfaces
config/ # Configuration and parsing
- Fork the project
- Create a branch:
git checkout -b feature/new-feature - Commit your changes:
git commit -m 'feat: new feature' - Push to the branch:
git push origin feature/new-feature - Open a Pull Request
See TODO.md for detailed roadmap and available tasks.
This project is under the MIT license. See the LICENSE file for more details.
Version: v1.1.x
Status: Active development
Complete documentation: TODO.md
