skills/universal-quality-gate/SKILL.md
Multi-language code quality gate with auto-detection and linters.
npx skillsauth add notque/claude-code-toolkit universal-quality-gateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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/universal-quality-gate/scripts/run_quality_gate.py
This command automatically:
For pre-commit validation (fastest):
python3 ~/.claude/skills/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/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/universal-quality-gate/scripts/run_quality_gate.py --lang python
Narrows scope when debugging language-specific issues.
For verbose details:
python3 ~/.claude/skills/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/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/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/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/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/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:
documentation
Document translation: quick/normal/refined modes with chunked parallel subagents and glossary support.
development
AI image generation: Gemini and Nano Banana backends; single/series/batch workflows with prompt-to-disk.
testing
Unified voice content generation pipeline with mandatory validation and joy-check. 13-phase pipeline: LOAD, GROUND, STATS-CHECKPOINT, GENERATE, HOOK-GATE, VALIDATE, REFINE, VARIETY-GATE, JOY-CHECK, ANTI-AI, CLOSE-GATE, OUTPUT, CLEANUP. Use when writing articles, blog posts, or any content that uses a voice profile. Use for "write article", "blog post", "write in voice", "generate content", "draft article", "write about".
documentation
Critique-and-rewrite loop for voice fidelity validation.