with one click
universal-quality-gate
// Multi-language code quality gate with auto-detection and linters.
// Multi-language code quality gate with auto-detection and linters.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | universal-quality-gate |
| description | Multi-language code quality gate with auto-detection and linters. |
| user-invocable | false |
| allowed-tools | ["Read","Bash","Grep","Glob"] |
| routing | {"triggers":["quality gate","lint check","multi-language lint","code quality check","language-agnostic lint"],"category":"code-quality","pairs_with":["code-linting","verification-before-completion"]} |
Language-agnostic code quality checking system. Automatically detects project languages via marker files and runs appropriate linters, formatters, and static analysis tools for each detected language.
This skill implements a Detect, Check, Report pattern for multi-language code quality enforcement:
Key Principles:
| Language | Marker Files | Tools |
|---|---|---|
| Python | pyproject.toml, requirements.txt | ruff, mypy, bandit |
| Go | go.mod | gofmt, golangci-lint, go vet |
| JavaScript | package.json | eslint, biome |
| TypeScript | tsconfig.json | tsc, eslint, biome |
| Rust | Cargo.toml | clippy, cargo fmt |
| Ruby | Gemfile | rubocop |
| Java | pom.xml, build.gradle | PMD |
| Shell | *.sh, *.bash | shellcheck |
| YAML | *.yml, *.yaml | yamllint |
| Markdown | *.md | markdownlint |
Run the quality gate check against the current project:
python3 ~/.claude/skills/code-quality/universal-quality-gate/scripts/run_quality_gate.py
This command automatically:
For pre-commit validation (fastest):
python3 ~/.claude/skills/code-quality/universal-quality-gate/scripts/run_quality_gate.py --staged
Checks only git-staged files, enabling rapid feedback on recent changes.
For auto-fixing (when issues are found):
python3 ~/.claude/skills/code-quality/universal-quality-gate/scripts/run_quality_gate.py --fix
Auto-corrects fixable issues (formatting, imports, etc.), then re-run Step 1 to verify.
For focused checking (single language):
python3 ~/.claude/skills/code-quality/universal-quality-gate/scripts/run_quality_gate.py --lang python
Narrows scope when debugging language-specific issues.
For verbose details:
python3 ~/.claude/skills/code-quality/universal-quality-gate/scripts/run_quality_gate.py -v
Shows expanded diagnostic output for troubleshooting.
PASSED output:
============================================================
Quality Gate: PASSED
============================================================
Languages: python, javascript
Files: 15
Tool Results:
[+] python/lint: passed
[+] python/format: passed
[-] python/typecheck: skipped (Optional tool not installed)
[+] javascript/lint: passed
[+] javascript/format: passed
Quality gate passed: 4/5 tools OK (1 skipped)
Gate passes when all required tools succeed. Skipped optional tools do not block.
FAILED output:
============================================================
Quality Gate: FAILED
============================================================
Languages: python, go
Files: 8
Tool Results:
[X] python/lint: FAILED
hooks/example.py:42:1: F841 local variable 'x' is assigned but never used
hooks/example.py:56:1: F401 'os' imported but unused
[+] python/format: passed
[+] go/format: passed
[X] go/lint: FAILED
main.go:15:2: S1000: should use for range instead of for select
Pattern Matches:
[WARNING] hooks/example.py:78: Silent exception handler - add explanatory comment
Quality gate failed: 2 tool(s) reported issues, 1 error pattern(s)
Review marked failures [X] first. Pattern matches [WARNING] are informational.
For auto-fixable issues:
python3 ~/.claude/skills/code-quality/universal-quality-gate/scripts/run_quality_gate.py --fixgit diff to verify correctnessFor manual fixes:
Once quality gate passes with zero required-tool failures:
Pre-commit validation (fastest path):
python3 ~/.claude/skills/code-quality/universal-quality-gate/scripts/run_quality_gate.py --staged
# If fails → fix issues → re-run
# If passes → git commit
Full repo audit:
python3 ~/.claude/skills/code-quality/universal-quality-gate/scripts/run_quality_gate.py
# Review all findings by language
# Fix by category: required failures → warnings → patterns
# Re-run after each batch of fixes
Language-specific validation:
python3 ~/.claude/skills/code-quality/universal-quality-gate/scripts/run_quality_gate.py --lang python
# Use when debugging a specific language's toolchain
# Narrows output and speeds iteration
To add language support without editing the script, modify the language registry:
// hooks/lib/language_registry.json
{
"new_language": {
"extensions": [".ext"],
"markers": ["config.file"],
"tools": {
"lint": {
"cmd": "linter {files}",
"fix_cmd": "linter --fix {files}",
"description": "Language linter",
"required": true
}
}
}
}
The quality gate script automatically detects and uses new registry entries on next run.
Cause: No changed files detected or no language markers found in project Solution:
--staged, ensure files are staged with git addCause: A required linter tool is not installed on the system Solution:
pip install ruff mypy banditgo install github.com/golangci/golangci-lint/cmd/golangci-lint@latestnpm install --save-dev eslint biomecargo install clippy (usually pre-installed with rustup)language_registry.json if you cannot install itCause: Tool taking longer than 60-second timeout (usually large file sets or performance issues) Solution:
--staged to check only changed files instead of the entire project--lang to check one language at a timeCause: Multiple conflicting linter configurations in the project (e.g., .eslintrc and biome.json) Solution:
language_registry.jsonPattern Matches like "Silent exception handler" or "Debug print" are informational warnings. They do not fail the gate. Review them and decide whether to fix:
[WARNING] entries identify anti-patterns but don't block commits--no-patterns to skip pattern scanning if these are not relevantWhen a tool is marked optional and not installed:
[-] language/tool: skipped (Optional tool not installed)hooks/lib/
quality_gate.py # Shared core library
language_registry.json # Language configurations
skills/code-quality/universal-quality-gate/
SKILL.md # This file
scripts/
run_quality_gate.py # Skill entry point (thin wrapper)
This skill uses the shared quality gate library from hooks/lib/ for on-demand code quality checking.
Multi-language linting: Language configurations in hooks/lib/language_registry.json
Related skills:
code-linting for single-language lint/format taskssystematic-code-review for comprehensive code review beyond lintingtest-driven-development for full validation with testsKey principle: Quality gates catch syntax and style issues. They do not replace: