Automate GitHub PR Linting with Google Gemini AI and Auto-Fix PRs

Go to Workflow
175 views
Built by Adam Bertram Adam Bertram
Created on June 07, 2026

Description

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 gitHubRepoName and gitHubOrgName values 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.yml in your repository replacing the Trigger n8n Workflow step 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.

Nodes Used (4)

AI Agent
@n8n/n8n-nodes-langchain.agent
Code
n8n-nodes-base.code
Google Gemini Chat Model
@n8n/n8n-nodes-langchain.lmChatGoogleGemini
HTTP Request
n8n-nodes-base.httpRequest