An opinionated ESLint plugin with rules used by GitHub for JavaScript, TypeScript, and React development.
eslint-plugin-github is an ESLint plugin that provides a curated set of linting rules used internally by GitHub. It enforces code quality, security, accessibility, and modern JavaScript practices across JavaScript, TypeScript, and React projects. The plugin helps teams adopt consistent coding standards and avoid common pitfalls.
Development teams, especially those working on web applications with JavaScript, TypeScript, or React, who want to enforce GitHub's internal best practices for security, accessibility, and code quality.
Developers choose this plugin because it offers battle-tested, opinionated rules directly from GitHub's engineering practices, ensuring high standards for security, accessibility, and performance without needing to manually configure individual ESLint rules.
An opinionated collection of ESLint rules used by GitHub.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Rules are curated from GitHub's internal use, ensuring they enforce proven standards for code quality, security, and accessibility in production environments.
Includes specific rules like a11y-svg-has-accessible-name and a11y-aria-label-is-well-formatted, directly helping teams build more accessible web applications as per the README.
Rules such as no-dynamic-script-tag and prefer-observers prevent common security vulnerabilities and encourage better performance practices, as highlighted in the key features.
Enforces modern patterns like using async/await over Promises (via no-then) and for..of loops over Array.forEach, keeping codebases up-to-date with current best practices.
Includes rules like authenticity-token and no-d-none that are tailored for GitHub's internal applications, which may be irrelevant or overly restrictive for other projects.
The component mapping feature is marked as experimental and subject to change in the README, leading to potential breaking changes and instability in future updates.
Supports both legacy .eslintrc and flat eslint.config.js setups, which can add confusion for teams transitioning between ESLint versions or new to advanced configuration.