3.7 KiB
Agent Pre-PR Ruff Policy
This document defines the policy for Copilot/AI Agents when creating or updating pull requests in the DocuElevate repository.
Required Steps Before Creating/Updating a PR
1. Run the Ruff Auto-Fix Script
Before creating or updating a branch or opening a PR, ALWAYS run:
./scripts/run-ruff-and-fix.sh
2. Handle Script Exit Codes
If the script exits with code 0 (success):
- ✅ All ruff checks passed or were auto-fixed
- Continue with PR creation process
- Push the branch (including any auto-fix commits)
If the script exits with code non-zero (failure):
- ❌ Stop PR creation immediately
- Do NOT open the PR
- Report the ruff failures to the human user
- Include the full
ruff checkoutput in your response - Create an issue or report the failures for manual resolution
3. Handle Auto-Fix Commits
If the script commits fixes:
- The script will automatically commit changes with message:
style: ruff auto-fixes - Push the branch with the commit(s) before continuing PR creation
- This ensures CI sees the fixed code when the PR is opened
Example Agent Workflow
1. Clone repository and create feature branch
2. Make code changes to implement feature
3. Run: ./scripts/run-ruff-and-fix.sh
4. Check exit code:
- If 0: Push branch and create PR
- If non-zero: Report failures, do NOT create PR
5. Run project tests (if ruff passed)
6. If all checks pass: Create the PR
7. If any check fails: Report failures instead of creating PR
Why This Policy Exists
- Prevent CI Failures: Ensures PRs don't break ruff checks in CI
- Auto-Fix Minor Issues: Automatically fixes formatting and simple linting issues
- Surface Manual Issues Early: Identifies issues that need human attention before PR creation
- Maintain Code Quality: Enforces consistent code style across the repository
Integration with Existing CI
DocuElevate has two workflows that handle ruff:
-
.github/workflows/ci.yml(Lint Job)- Runs
ruff check(without --fix) on all pushes and PRs - Fails CI if issues are found
- Runs early in the pipeline to catch style issues before tests
- Runs
-
.github/workflows/ruff-auto-fix.yml- Runs on PRs when Python files change
- Automatically applies
ruff --fixandruff format - Commits fixes back to the PR branch
- Posts a comment notifying the author
This agent script ensures that most issues are caught and fixed before the PR is created, reducing the need for the auto-fix workflow to intervene.
Local Development
Developers should also use this script or set up pre-commit hooks:
# Install pre-commit hooks (recommended)
pip install pre-commit
pre-commit install
# Or run manually before committing
./scripts/run-ruff-and-fix.sh
Troubleshooting
Script fails with "ruff: command not found"
The script installs ruff automatically. If this fails:
pip install ruff
Script fails with Git errors
Ensure you're in a Git repository with proper configuration:
git config user.name "Your Name"
git config user.email "your.email@example.com"
Ruff issues remain after --fix
Some issues cannot be auto-fixed (e.g., unused imports, complex logic issues). These require manual resolution:
- Review the ruff output
- Fix the issues manually
- Run the script again to verify
Configuration
Ruff configuration is in pyproject.toml under [tool.ruff] and [tool.ruff.lint].
Default settings:
- Line length: 120 characters
- Target Python version: 3.11+
- Enabled rules: Pyflakes (F), pycodestyle (E, W), isort (I), bandit (S), flake8-bugbear (B), pylint (PL)
Questions?
See the Contributing Guide for more information on code quality standards and development workflow.