Skip to content

Add axle-netlify-plugin (accessibility compliance CI)#1481

Open
asafamos wants to merge 1 commit intonetlify:mainfrom
asafamos:add-axle-plugin
Open

Add axle-netlify-plugin (accessibility compliance CI)#1481
asafamos wants to merge 1 commit intonetlify:mainfrom
asafamos:add-axle-plugin

Conversation

@asafamos
Copy link
Copy Markdown

Adds axle-netlify-plugin to site/plugins.json.

What it does

Scans every Netlify deploy preview for WCAG 2.1 / 2.2 AA accessibility violations using axe-core 4.11. When enabled, Claude Sonnet generates source-code fix diffs per violation for inclusion in the build log. Fails the build when violations meet or exceed a configurable severity threshold — so accessibility regressions can't ship.

Why this plugin

  • Purpose-built for the EAA 2025 / ADA / Israeli תקנה 35 regulatory wave.
  • Same engine as our GitHub Action, npm CLI, Cloudflare Pages plugin, and Vercel plugin — one consistent scanner across the whole deploy ecosystem.
  • No overlay widget is injected into the deployed site. The plugin runs at build time against the deploy-prime URL and never touches end-user pages.
  • Zero-config: works with defaults out of the box against DEPLOY_PRIME_URL; every input has a sensible default.

Checklist (per plugin review guidelines)

  • Open source (MIT) — source
  • Works with no inputs configured (uses DEPLOY_PRIME_URL)
  • manifest.yml present, name matches the npm package name
  • package.json has repository, bugs, homepage
  • Keywords include netlify and netlify-plugin
  • Package name starts with a recognizable identifier (axle-netlify-plugin)
  • Uses onPostBuild, returns failBuild() appropriately
  • No post-deploy logic in onPostBuild (all scanning happens in-phase)
  • Inputs all have a name and a description

Inputs

  • failOn — severity threshold (critical / serious / moderate / minor / none). Default: serious.
  • withAiFixes — generate AI fix suggestions (requires ANTHROPIC_API_KEY env var). Default: false.
  • maxAiFixes — cost guard on AI calls per build. Default: 10.
  • url — override the scan URL. Defaults to DEPLOY_PRIME_URL.

Environment variables (optional)

  • ANTHROPIC_API_KEY — only required when withAiFixes is true. Claude generates the fix diffs.

Happy to adjust description length, entry placement, or any metadata if the current format needs changes.

@asafamos asafamos requested a review from a team as a code owner April 20, 2026 18:49
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 20, 2026

👷 Deploy request for netlify-plugins pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit e0b4312

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 20, 2026

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added "Axle Accessibility" plugin for enhanced accessibility tooling support.
  • Updates

    • Improved plugin description formatting across the registry.

Walkthrough

The pull request updates site/plugins.json with character encoding changes and adds a new plugin entry. Existing plugin descriptions have emoji and special characters replaced with Unicode equivalents, and quote styles updated to Unicode representations. A new plugin entry named "Axle Accessibility" (package axle-netlify-plugin, version 1.0.1) is introduced with a variables section defining the ANTHROPIC_API_KEY environment variable as required when a specific input flag is enabled.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically summarizes the main change: adding the axle-netlify-plugin to the plugins registry with its primary purpose (accessibility compliance CI).
Description check ✅ Passed The description is directly related to the changeset, providing detailed context about the plugin being added, its functionality, purpose, and compliance with plugin review guidelines.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
site/plugins.json (2)

106-106: Unrelated character-encoding changes should be reverted or split out.

These modifications re-encode existing emoji/typographic characters (⚡️, ’, 🔌, ☑️, “”, 🐺) as \uXXXX JSON escape sequences. They are semantically identical to what was there before but appear on lines unrelated to the Axle plugin addition — likely an artifact of the editor/serializer used locally. This adds noise to the diff, makes the file harder to review, and mixes unrelated churn into an otherwise targeted PR.

Please revert these lines so the PR only contains the new Axle Accessibility entry, or move the re-encoding into a separate PR if it's intentional.

Also applies to: 294-294, 320-320, 329-329, 600-600, 726-726, 984-984

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@site/plugins.json` at line 106, Revert the unrelated JSON re-encoding changes
in plugins.json by restoring the original emoji/typographic characters (e.g.,
⚡️, ’, 🔌, ☑️, “”, 🐺) instead of their \uXXXX escape sequences so the PR only
contains the Axle Accessibility addition; alternatively, move all these
encoding-only edits into a separate commit/PR. Locate the affected entries by
searching for the altered description strings such as "Persist the Gridsome
cache between Netlify builds for huge speed improvements!" and any other plugin
descriptions that now contain \uXXXX sequences, replace those escape sequences
with the original glyphs, and ensure the Axle Accessibility entry remains the
only functional change in this PR.

1046-1059: Consider adding a docs link to help users discover configuration inputs.

The npm package axle-netlify-plugin@1.0.1 is properly published with all required metadata fields (repository, bugs, homepage, and netlify/netlify-plugin keywords). The repo at https://github.com/asafamos/axle is publicly accessible.

Adding a docs field pointing to the plugin README would help users discover setup instructions for the failOn, withAiFixes, maxAiFixes, and url inputs, which won't be visible from plugins.json alone.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@site/plugins.json` around lines 1046 - 1059, Add a "docs" field to the Axle
Accessibility plugin object (the entry with "name": "Axle Accessibility" and
"package": "axle-netlify-plugin") that points to the plugin README or docs URL
(e.g. the GitHub README at https://github.com/asafamos/axle#readme) so users can
discover configuration inputs like failOn, withAiFixes, maxAiFixes, and url;
update the JSON object to include "docs": "<URL>" alongside the existing
metadata fields.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@site/plugins.json`:
- Line 106: Revert the unrelated JSON re-encoding changes in plugins.json by
restoring the original emoji/typographic characters (e.g., ⚡️, ’, 🔌, ☑️, “”,
🐺) instead of their \uXXXX escape sequences so the PR only contains the Axle
Accessibility addition; alternatively, move all these encoding-only edits into a
separate commit/PR. Locate the affected entries by searching for the altered
description strings such as "Persist the Gridsome cache between Netlify builds
for huge speed improvements!" and any other plugin descriptions that now contain
\uXXXX sequences, replace those escape sequences with the original glyphs, and
ensure the Axle Accessibility entry remains the only functional change in this
PR.
- Around line 1046-1059: Add a "docs" field to the Axle Accessibility plugin
object (the entry with "name": "Axle Accessibility" and "package":
"axle-netlify-plugin") that points to the plugin README or docs URL (e.g. the
GitHub README at https://github.com/asafamos/axle#readme) so users can discover
configuration inputs like failOn, withAiFixes, maxAiFixes, and url; update the
JSON object to include "docs": "<URL>" alongside the existing metadata fields.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 64dacc69-fd33-4737-ad80-1947bd81ef8b

📥 Commits

Reviewing files that changed from the base of the PR and between 4db6292 and e0b4312.

📒 Files selected for processing (1)
  • site/plugins.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant