Automate GitHub PR linting with Google Gemini AI and auto-fix PRs
DISCOUNT 20%
LintGuardian: Automated PR Linting with n8n & AI
What It Does
LintGuardian is an n8n workflow template that automates code quality enforcement for GitHub repositories. When a pull request is created, the workflow automatically analyzes the changed files, identifies linting issues, fixes them, and submits a new PR with corrections. This eliminates manual code style reviews, reduces back-and-forth comments, and lets your team focus on functionality rather than formatting.
How It Works
The workflow is triggered by a GitHub webhook when a PR is created. It fetches all changed files from the PR using the GitHub API, processes them through an AI-powered linting service (Google Gemini), and automatically generates fixes. The AI agent then creates a new branch with the corrected files and submits a "linting fixes" PR against the original branch. Developers can review and merge these fixes with a single click, keeping code consistently formatted with minimal effort.
Prerequisites
To use this template, you'll need:
- n8n instance: Either self-hosted or using n8n.cloud
- GitHub repository: Where you want to enforce linting standards
- GitHub Personal Access Token: With permissions for repo access (repo, workflow, admin:repo_hook)
- Google AI API Key: For the Gemini language model that powers the linting analysis
- GitHub webhook: Configured to send PR creation events to your n8n instance
Setup Instructions
- Import the template into your n8n instance
- Configure credentials:
- Add your GitHub Personal Access Token under Credentials → GitHub API
- Add your Google AI API key under Credentials → Google Gemini API
- Update repository information:
- Locate the "Set Common Fields" code node at the beginning of the workflow
- Change the
gitHubRepoNameandgitHubOrgNamevalues to match your repository
const commonFields = { 'gitHubRepoName': 'your-repo-name', 'gitHubOrgName': 'your-org-name' } - Configure the webhook:
Create a file named
.github/workflows/lint-guardian.ymlin your repository replacing theTrigger n8n Workflowstep with your webhook:name: Lint Guardian on: pull_request: types: [opened, synchronize] jobs: trigger-linting: runs-on: ubuntu-latest steps: - name: Trigger n8n Workflow uses: fjogeleit/http-request-action@v1 with: url: 'https://your-n8n-instance.com/webhook/1da5a6e1-9453-4a65-bbac-a1fed633f6ad' method: 'POST' contentType: 'application/json' data: | { "pull_request_number": ${{ github.event.pull_request.number }}, "repository": "${{ github.repository }}", "branch": "${{ github.event.pull_request.head.ref }}", "base_branch": "${{ github.event.pull_request.base.ref }}" } preventFailureOnNoResponse: true - Customize linting rules (optional):
- Modify the AI Agent's system message to specify your team's linting preferences
- Adjust file handling if you have specific file types to focus on or ignore
Security Considerations
When creating your GitHub Personal Access Token, remember to:
- Choose the minimal permissions needed (repo, workflow, admin:repo_hook)
- Set an appropriate expiration date
- Treat your token like a password and store it securely
- Consider using GitHub's fine-grained personal access tokens for more limited scope
As GitHub documentation notes: "Personal access tokens are like passwords, and they share the same inherent security risks."
Extending the Template
You can enhance this workflow by:
- Adding Slack notifications when linting fixes are submitted
- Creating custom linting rules specific to your team's needs
- Expanding it to handle different types of code quality checks
- Adding approval steps for more controlled environments
This template provides an excellent starting point that you can customize to fit your team's exact workflow and code style requirements.