dawiddutoit/custom-claude/dawiddutoit-quality-run-quality-gates
Claude Code and agent skill by dawiddutoit/custom-claude
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"},{"type":"config","description":"Configuration overrides"}]
Checking that the SKILL.md file is still in the repository.
Enforce Definition of Done by running quality gates (type checking, linting, dead code detection, tests). Use when task is complete, before commits, when declaring "done", or when user says "check all", "run quality gates", "validate code quality", or "run tests and linting". Adapts to Python (pyright/ruff/vulture/pytest), JavaScript (tsc/eslint/jest), and other ecosystems. MANDATORY before marking tasks complete.
Install
npx vskill@latest install dawiddutoit/custom-claude/dawiddutoit-quality-run-quality-gatesSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
Run Quality Gates
Purpose
Enforce Definition of Done by detecting and running all quality gates (type checking, linting, dead code detection, tests) for Python, JavaScript, Go, Rust, and other ecosystems. Provides actionable feedback for failures and blocks task completion until all gates pass.
Table of Contents
Quick Start → When to Use | What It Does | Simple Example
How to Implement → Detection Process | Execution Workflow | Outcomes
Automation → Scripts | Templates | Supporting Files
Help → Anti-Patterns | Output Format | Integration
Reference → Tool Reference | Common Failures
When to Use This Skill
MANDATORY in these situations:
- Before declaring a task "done" or "complete"
- Before marking a todo as completed
- Before creating a commit or pull request
- When user says "check all", "run quality gates", "validate code"
- After implementing new features or bug fixes
- After refactoring code
User trigger phrases:
- "run quality gates"
- "check all"
- "run tests and linting"
- "validate code quality"
- "is this done?"
- "run checks"
- "check before commit"
Additional detection patterns:
- After manually running individual tools (e.g., "I ran ruff check")
- When user says "I fixed linting" but hasn't run other gates
- After code changes but before marking task complete
- When only partial quality checks were performed
What This Skill Does
Enforces the Definition of Done by:
- Detecting project type (Python, JavaScript, TypeScript, etc.)
- Identifying quality gate tools (check_all.sh script or individual tools)
- Running all quality gates in parallel when possible
- Capturing and categorizing failures (type errors, lint errors, dead code, test failures)
- Providing actionable fixes for each failure category
- Re-running gates after fixes until all pass
- Confirming zero errors before declaring success
Result: ✅ All gates pass (task truly done) or ❌ Failures (with specific fixes needed)
Quick Start
Example 1: Task Completion Check
Example 2: Failures Detected
Instructions
Overview
Running quality gates involves 5 key steps:
- Detect project type and tools - Identify language and available quality gate tools
- Run quality gates - Execute all gates (unified script or individual tools)
- Parse results - Categorize failures by type (type errors, lint, tests, dead code)
- Provide actionable fixes - Generate specific fix recommendations for each failure
- Re-run after fixes - Validate that all issues are resolved
See detailed workflow in Execution Workflow section below.
Quality Gate Detection
Detection Process
- Check for unified script (preferred):
./scripts/check_all.sh(Python projects)npm run check(JavaScript/TypeScript projects)make check(Makefile-based projects)
- Fallback to individual tools by detecting project type:
Python Projects
Detect via: pyproject.toml, requirements.txt, setup.py
Tools to run:
- Type checking:
uv run pyrightormypy - Linting:
uv run ruff checkorpylintorflake8 - Dead code:
uv run vulture src/ --min-confidence 80 - Tests:
uv run pytest tests/ -q - Formatting:
uv run ruff format --checkorblack --check
JavaScript/TypeScript Projects
Detect via: package.json, tsconfig.json
Tools to run:
- Type checking:
npx tsc --noEmit - Linting:
npx eslint src/ - Tests:
npm testornpx jestornpx vitest - Formatting:
npx prettier --check src/
Go Projects
Detect via: go.mod
Tools to run:
- Type checking:
go build ./... - Linting:
golangci-lint run - Tests:
go test ./... - Formatting:
go fmt ./...
Rust Projects
Detect via: Cargo.toml
Tools to run:
- Type checking:
cargo check - Linting:
cargo clippy - Tests:
cargo test - Formatting:
cargo fmt --check
Project-Specific Configuration
Read project-specific quality gates from:
CLAUDE.md(Definition of Done section)pyproject.toml(Python)package.json(JavaScript/TypeScript).pre-commit-config.yaml(Pre-commit hooks)
Execution Workflow
Step 1: Detect Project and Tools
Step 2: Run Quality Gates
Step 3: Parse and Categorize Failures
Extract failures by tool:
- Type errors: Lines matching
error:orerror[ - Lint errors: Lines matching
.py:line:col:or.js:line:col: - Dead code: Lines matching
unusedordead code - Test failures: Lines matching
FAILEDorERROR collecting
Step 4: Provide Actionable Fixes
For each failure category, provide:
- File:line reference (exact location)
- Error description (what's wrong)
- Suggested fix (how to resolve)
- Priority (HIGH/MEDIUM/LOW based on error type)
Step 5: Re-run After Fixes
After user applies fixes:
Anti-Pattern Prevention
❌ Anti-Pattern 1: Declaring Done Without Running Gates
User: "I'm done with the feature"
Wrong Response:
Correct Response (Invoke Skill):
❌ Anti-Pattern 2: Ignoring Quality Gate Failures
User: "Some tests are failing but the main logic works"
Wrong Response:
Correct Response:
❌ Anti-Pattern 3: "Will Fix Later" Mentality
User: "Let's commit this and fix the lint errors later"
Wrong Response:
Correct Response:
❌ Anti-Pattern 4: Skipping Tests
User: "I added the feature but didn't write tests yet"
Wrong Response:
Correct Response:
❌ Anti-Pattern 5: Partial Quality Check (NEW)
User: "I ran ruff check and fixed all linting errors"
Wrong Response:
Correct Response:
Detection signals:
- User mentions running only ONE tool (ruff, eslint, tsc, etc.)
- User says "fixed linting" but no mention of tests/types
- Only one command executed (e.g.,
ruff check --fix) - No mention of running
check_all.shor equivalent
Why this matters: Linting alone doesn't verify:
- ❌ Type safety (pyright/mypy catch type errors)
- ❌ Correctness (pytest catches logic errors)
- ❌ Unused code (vulture detects dead code)
- ❌ Formatting consistency (ruff format)
Real-world example:
Output Format
Success Output
Failure Output with Fixes
Integration with Existing Tools
With check_all.sh Script
If project has ./scripts/check_all.sh:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/quality-run-quality-gates/SKILL.md
Popularity
- Repository stars
- 1
- 7-day trend score
- 3
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 18 Apr 2026, 6 months ago.
Extension points
hookPre/post lifecycle hooksconfigConfiguration overrides
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/dawiddutoit/custom-claude/dawiddutoit-quality-run-quality-gates)