10 KiB
Executable File
Auto Code Review Gate Skill
Skill Purpose
Automatically run comprehensive code reviews before any PR-related commands (/pr-*) and ensure all identified issues are resolved before allowing commits to be pushed. This acts as a quality gate to prevent low-quality code from entering the staging/develop branches.
Activation
This skill is automatically triggered when any of these commands are called:
/pr-feature-to-staging/pr-deploy-workflow/commit-and-pr/pr-fix-pr-review- Any other command starting with
/pr-
Workflow
Phase 1: Pre-Commit Code Review
When a /pr-* command is detected:
-
Intercept the command - Don't execute the PR command yet
-
Display notice to user:
🔍 AUTO CODE REVIEW GATE ACTIVATED Running comprehensive code review before proceeding with PR... This ensures code quality standards are met before merge. -
Execute code review:
/code-review -
Analyze review results:
- Count total issues by severity (Critical, High, Medium, Low)
- Create issue summary report
- Determine if auto-fix is possible
Phase 2: Issue Resolution
If NO issues found:
✅ CODE REVIEW PASSED
No issues detected. Proceeding with original command...
→ Execute the original /pr-* command
If issues found (Critical or High priority):
❌ CODE REVIEW FAILED - BLOCKING ISSUES FOUND
Found X critical and Y high-priority issues that must be fixed.
BLOCKING ISSUES:
- [List of critical issues with file:line]
- [List of high-priority issues with file:line]
🔧 AUTOMATIC FIX PROCESS INITIATED
Launching pyspark-data-engineer agent to resolve issues...
Auto-Fix Workflow:
-
Create task document (if not already exists):
- Location:
.claude/tasks/pre_commit_code_review_fixes.md - Format: Same as code review fixes task list
- Include all critical and high-priority issues
- Location:
-
Launch pyspark-data-engineer agent:
Task: Fix all critical and high-priority issues before PR Document: .claude/tasks/pre_commit_code_review_fixes.md Validation: Run syntax check, linting, and formatting after each fix -
Wait for agent completion and verify:
- All critical issues resolved
- All high-priority issues resolved
- Syntax validation passes
- Linting passes
- No new issues introduced
-
Re-run code review to confirm all issues resolved
-
Final decision:
- ✅ If all issues fixed: Proceed with original command
- ❌ If issues remain: Block PR and display unresolved issues
If only Medium/Low priority issues:
⚠️ CODE REVIEW WARNING - NON-BLOCKING ISSUES FOUND
Found X medium and Y low-priority issues.
These won't block the PR but should be addressed soon.
User Choice:
Do you want to:
1. Auto-fix these issues before proceeding (recommended)
2. Proceed with PR and create tech debt ticket
3. Cancel and fix manually
Choice [1/2/3]:
Phase 3: Post-Fix Validation
After auto-fix completes:
-
Run validation suite:
python3 -m py_compile <modified_files> ruff check python_files/ ruff format python_files/ -
Run second code review:
- Ensure no new issues introduced
- Verify all original issues resolved
- Check for any regressions
-
Generate fix summary:
📊 AUTO-FIX SUMMARY ================== Files Modified: 4 Issues Fixed: 9 (3 critical, 4 high, 2 medium) Validation: ✅ All checks passed Modified Files: - python_files/gold/g_z_mg_occ_person_address.py - python_files/gold/g_xa_mg_statsclasscount.py - python_files/silver/silver_cms/s_cms_person.py - python_files/gold/g_xa_mg_cms_mo.py ✅ All issues resolved. Proceeding with PR...
Phase 4: Execute Original Command
Only after ALL critical/high issues are resolved:
-
Add fixed files to git staging:
git add <modified_files> -
Create enhanced commit message:
[Original commit message] 🤖 Auto Code Review Fixes Applied: - Fixed X critical issues - Fixed Y high-priority issues - All validation checks passed -
Execute original
/pr-*command -
Display completion message:
✅ PR CREATED WITH AUTO-FIXES All code quality issues have been resolved. PR is ready for human review. Code Review Report: .claude/tasks/pre_commit_code_review_fixes.md
Configuration
Severity Thresholds
# .claude/config/code_review_gate.yaml
blocking_severities:
- CRITICAL
- HIGH
auto_fix_enabled: true
auto_fix_medium_issues: true # Prompt user for medium issues
auto_fix_low_issues: false # Skip low-priority auto-fix
max_auto_fix_attempts: 2
validation_required: true
Bypass Options
Emergency Override (use with caution):
# Skip code review gate (requires explicit confirmation)
/pr-feature-to-staging --skip-review-gate --confirm-override
# This will prompt:
⚠️ DANGER: Skipping code review gate
This may introduce bugs or technical debt.
Type 'I UNDERSTAND THE RISKS' to proceed:
Implementation Hooks
Hook 1: Command Interceptor
# Intercepts all /pr-* commands
if command.startswith("/pr-"):
# Trigger auto-code-review-gate skill
execute_skill("auto-code-review-gate")
Hook 2: Issue Detection
# Parse code review output
issues = parse_code_review_output(review_result)
critical_count = count_by_severity(issues, "CRITICAL")
high_count = count_by_severity(issues, "HIGH")
if critical_count > 0 or high_count > 0:
block_pr = True
attempt_auto_fix = True
Hook 3: Auto-Fix Delegation
# Create task document and delegate to pyspark-data-engineer
task_doc = create_task_document(issues)
agent_result = launch_agent("pyspark-data-engineer", task_doc)
# Validate fixes
validation_passed = run_validation_suite()
issues_resolved = verify_issues_fixed(issues, agent_result)
if validation_passed and issues_resolved:
allow_pr = True
Example Execution Flow
Scenario: User runs /pr-feature-to-staging
USER: /pr-feature-to-staging "feat: add new statsclasscount table"
SYSTEM:
🔍 AUTO CODE REVIEW GATE ACTIVATED
Running comprehensive code review before proceeding with PR...
[Code review executes...]
SYSTEM:
❌ CODE REVIEW FAILED - 3 CRITICAL ISSUES FOUND
CRITICAL ISSUES:
1. python_files/gold/g_z_mg_occ_person_address.py:43
- Redundant Spark session initialization (memory leak risk)
2. python_files/gold/g_xa_mg_statsclasscount.py:100
- Validation methods defined but never called (data quality risk)
3. python_files/gold/g_z_mg_occ_person_address.py:32
- Unused constructor parameter (confusing API)
🔧 AUTOMATIC FIX PROCESS INITIATED
Launching pyspark-data-engineer agent...
[Agent fixes all issues...]
SYSTEM:
📊 AUTO-FIX SUMMARY
==================
Files Modified: 2
Issues Fixed: 3 (3 critical)
Validation: ✅ All checks passed
✅ All critical issues resolved.
Adding fixed files to commit:
M python_files/gold/g_z_mg_occ_person_address.py
M python_files/gold/g_xa_mg_statsclasscount.py
Proceeding with PR creation...
[Original /pr-feature-to-staging command executes]
SYSTEM:
✅ PR CREATED SUCCESSFULLY
Branch: feature/statsclasscount → staging
PR #: 5830
Status: Ready for review
All code quality gates passed! 🎉
Error Handling
If auto-fix fails:
❌ AUTO-FIX FAILED
The pyspark-data-engineer agent was unable to resolve all issues.
Remaining Issues:
- [List of unresolved issues]
NEXT STEPS:
1. Review the task document: .claude/tasks/pre_commit_code_review_fixes.md
2. Fix issues manually
3. Re-run /pr-feature-to-staging when ready
OR
Use emergency override (not recommended):
/pr-feature-to-staging --skip-review-gate --confirm-override
If validation fails after fix:
❌ VALIDATION FAILED AFTER AUTO-FIX
The fixes introduced new issues or broke existing functionality.
Validation Errors:
- [List of validation errors]
Rolling back auto-fixes...
Original code restored.
NEXT STEPS:
1. Review the code review report
2. Fix issues manually with more care
3. Test thoroughly before re-running PR command
Benefits
- Prevents bugs before merge: Catches issues at commit time, not in production
- Automated quality gates: No manual intervention needed for common issues
- Consistent code quality: All PRs meet minimum quality standards
- Faster review cycles: Human reviewers see clean code
- Learning tool: Developers see fixes and learn patterns
- Tech debt prevention: Issues fixed immediately, not deferred
Metrics Tracked
The skill automatically logs:
- Number of PRs with code review issues
- Issues caught per severity level
- Auto-fix success rate
- Time saved by automated fixes
- Common issue patterns
Stored in: .claude/metrics/code_review_gate_stats.json
Integration with Existing Workflows
This skill works seamlessly with:
/pr-feature-to-staging- Adds quality gate before PR creation/pr-deploy-workflow- Ensures clean code through entire deployment pipeline/commit-and-pr- Quick commits still get quality checks/pr-fix-pr-review- Prevents re-introducing issues when fixing review feedback
Testing the Skill
To test the auto code review gate:
# 1. Make some intentional code quality issues
echo "import os\nimport os" >> test_file.py # Duplicate import
# 2. Try to create PR
/pr-feature-to-staging "test auto review gate"
# 3. Verify gate catches issues and auto-fixes them
# 4. Confirm PR only proceeds after fixes applied
Maintenance
Update the skill when:
- New code quality rules are added
- Project standards change
- New file types need review
- Additional validation checks needed
Future Enhancements
Potential improvements:
- AI-powered issue prioritization: Use ML to determine which issues are most critical
- Team notification: Slack/Teams alerts when auto-fixes are applied
- Fix explanation: Include detailed explanations of each fix for learning
- Custom rule sets: Project-specific or team-specific quality gates
- Performance metrics: Track build times and code quality trends
Status: Active Version: 1.0 Last Updated: 2025-11-04 Owner: DevOps/Quality Team