Integrations
Ready-to-copy setup guides for popular frameworks. Quick start: run npx eslint-plugin-ai-guardrails init to auto-generate configs.
Vite + React + TypeScript
Use vite-plugin-checker to surface ESLint violations in both the terminal and browser overlay during development.
import js from '@eslint/js';
import tseslint from 'typescript-eslint';
import aiGuardrails from 'eslint-plugin-ai-guardrails';
export default [
{ ignores: ['dist', 'build', 'coverage', 'node_modules'] },
js.configs.recommended,
...tseslint.configs.recommended,
aiGuardrails.flatConfigs.recommended
];import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import checker from 'vite-plugin-checker';
export default defineConfig({
plugins: [
react(),
checker({
typescript: true,
eslint: {
lintCommand: 'eslint "./src/**/*.{ts,tsx}" --max-warnings 0'
}
})
]
});Next.js + TypeScript
Next.js 13+ supports ESLint v9 flat config natively.
import js from '@eslint/js';
import tseslint from 'typescript-eslint';
import aiGuardrails from 'eslint-plugin-ai-guardrails';
export default [
{ ignores: ['.next', 'out', 'node_modules'] },
js.configs.recommended,
...tseslint.configs.recommended,
aiGuardrails.flatConfigs.recommended
];NestJS + TypeScript
NestJS projects typically have a src/ directory with decorators and dependency injection patterns. AI assistants tend to generate oversized service files — guardrails help keep them modular.
import js from '@eslint/js';
import tseslint from 'typescript-eslint';
import aiGuardrails from 'eslint-plugin-ai-guardrails';
export default [
{ ignores: ['dist', 'node_modules'] },
js.configs.recommended,
...tseslint.configs.recommended,
aiGuardrails.flatConfigs.recommended,
{
files: ['**/*.ts'],
rules: {
'ai-guardrails/max-file-lines': ['warn', { max: 250 }],
'ai-guardrails/max-function-lines': ['warn', { max: 40 }]
}
}
];Express + TypeScript
Express projects using ESLint v8 can use the legacy .eslintrc config.
{
"parser": "@typescript-eslint/parser",
"plugins": ["ai-guardrails"],
"extends": ["plugin:ai-guardrails/recommended"],
"rules": {
"ai-guardrails/max-file-lines": ["warn", { "max": 300 }],
"ai-guardrails/max-function-lines": ["warn", { "max": 50 }],
"ai-guardrails/no-orphan-todos": "error",
"ai-guardrails/no-ai-obvious-comments": "warn"
}
}Migrating to ESLint v9? Replace .eslintrc.json with an eslint.config.js that uses aiGuardrails.flatConfigs.recommended.
Elysia / Hono / Bun + TypeScript
Bun-based backends (Elysia, Hono) work with ESLint v9 flat config.
import aiGuardrails from 'eslint-plugin-ai-guardrails';
import tseslint from 'typescript-eslint';
export default [
{ ignores: ['dist', 'node_modules'] },
...tseslint.configs.recommended,
aiGuardrails.flatConfigs.recommended
];SvelteKit + TypeScript
import js from '@eslint/js';
import tseslint from 'typescript-eslint';
import aiGuardrails from 'eslint-plugin-ai-guardrails';
export default [
{ ignores: ['.svelte-kit', 'build', 'node_modules'] },
js.configs.recommended,
...tseslint.configs.recommended,
aiGuardrails.flatConfigs.recommended
];Note: ai-guardrails rules only apply to .ts and .tsx files. Svelte component files (.svelte) are not linted by this plugin.
Monorepo (Turborepo / pnpm / npm workspaces)
Install eslint-plugin-ai-guardrails in each workspace package that runs ESLint, not just the root.
# Run inside each package:
npx eslint-plugin-ai-guardrails init{
"scripts": {
"lint": "turbo run lint",
"typecheck": "turbo run typecheck",
"build": "turbo run build"
}
}CI Integration
GitHub Actions
name: CI
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run lint
- run: npm run typecheck
- run: npm testPre-commit Hook (Husky + lint-staged)
{
"lint-staged": {
"*.{ts,tsx,mts,cts}": "eslint --max-warnings 0"
}
}