diff --git a/.gitignore b/.gitignore
index a8887eab92..758d36cea4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,9 @@ packages/sw/.yarn/cache
 # pnpm
 .pnpm-store
 
+# eslint
+**/.eslintcache
+
 # Cypress
 cypress/screenshots
 cypress/videos
diff --git a/packages/backend/package.json b/packages/backend/package.json
index ff84beec67..8f07f80911 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -20,7 +20,7 @@
 		"restart": "pnpm build && pnpm start",
 		"dev": "node ./scripts/dev.mjs",
 		"typecheck": "pnpm --filter megalodon build && tsc --noEmit && tsc -p test --noEmit",
-		"eslint": "eslint --quiet \"src/**/*.ts\"",
+		"eslint": "eslint --quiet \"src/**/*.ts\" --cache",
 		"lint": "pnpm typecheck && pnpm eslint",
 		"jest": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --config jest.config.unit.cjs",
 		"jest:e2e": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --config jest.config.e2e.cjs",
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 35cb900d3b..5da671b9b6 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -13,7 +13,7 @@
 		"test": "vitest --run --globals",
 		"test-and-coverage": "vitest --run --coverage --globals",
 		"typecheck": "vue-tsc --noEmit",
-		"eslint": "eslint --quiet \"src/**/*.{ts,vue}\"",
+		"eslint": "eslint --quiet \"src/**/*.{ts,vue}\" --cache",
 		"lint": "pnpm typecheck && pnpm eslint"
 	},
 	"dependencies": {
diff --git a/packages/megalodon/package.json b/packages/megalodon/package.json
index 01c5c1147c..dbb5686af2 100644
--- a/packages/megalodon/package.json
+++ b/packages/megalodon/package.json
@@ -6,7 +6,7 @@
   "typings": "./lib/src/index.d.ts",
   "scripts": {
     "build": "tsc -p ./",
-    "lint": "eslint --ext .js,.ts src",
+    "lint": "eslint --ext .js,.ts src --cache",
     "doc": "typedoc --out ../docs ./src",
     "test": "NODE_ENV=test jest -u --maxWorkers=3"
   },
diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json
index 528eb00b74..acd6ab9dd2 100644
--- a/packages/misskey-bubble-game/package.json
+++ b/packages/misskey-bubble-game/package.json
@@ -17,7 +17,7 @@
 	"scripts": {
 		"build": "node ./build.js",
 		"watch": "nodemon -w package.json -e json --exec \"node ./build.js --watch\"",
-		"eslint": "eslint './**/*.{js,jsx,ts,tsx}'",
+		"eslint": "eslint './**/*.{js,jsx,ts,tsx}' --cache",
 		"typecheck": "tsc --noEmit",
 		"lint": "pnpm typecheck && pnpm eslint"
 	},
diff --git a/packages/misskey-js/generator/package.json b/packages/misskey-js/generator/package.json
index 4a02bcd8ff..f9bd0a4e5d 100644
--- a/packages/misskey-js/generator/package.json
+++ b/packages/misskey-js/generator/package.json
@@ -4,7 +4,7 @@
 	"description": "Misskey TypeGenerator",
 	"type": "module",
 	"scripts": {
-		"generate": "tsx src/generator.ts && eslint ./built/**/*.ts --fix"
+		"generate": "tsx src/generator.ts && eslint ./built/**/*.ts --fix --cache"
 	},
 	"devDependencies": {
 		"@readme/openapi-parser": "2.5.0",
diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json
index 39e687d4af..5ba4b93411 100644
--- a/packages/misskey-js/package.json
+++ b/packages/misskey-js/package.json
@@ -22,7 +22,7 @@
 		"tsd": "tsd",
 		"api": "pnpm api-extractor run --local --verbose",
 		"api-prod": "pnpm api-extractor run --verbose",
-		"eslint": "eslint './**/*.{js,jsx,ts,tsx}'",
+		"eslint": "eslint './**/*.{js,jsx,ts,tsx}' --cache",
 		"typecheck": "tsc --noEmit",
 		"lint": "pnpm typecheck && pnpm eslint",
 		"jest": "jest --coverage --detectOpenHandles",
diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json
index c6db6e6221..f32b31d4d9 100644
--- a/packages/misskey-reversi/package.json
+++ b/packages/misskey-reversi/package.json
@@ -17,7 +17,7 @@
 	"scripts": {
 		"build": "node ./build.js",
 		"watch": "nodemon -w package.json -e json --exec \"node ./build.js --watch\"",
-		"eslint": "eslint './**/*.{js,jsx,ts,tsx}'",
+		"eslint": "eslint './**/*.{js,jsx,ts,tsx}' --cache",
 		"typecheck": "tsc --noEmit",
 		"lint": "pnpm typecheck && pnpm eslint"
 	},
diff --git a/packages/sw/package.json b/packages/sw/package.json
index 9174f50ae3..081f648f8a 100644
--- a/packages/sw/package.json
+++ b/packages/sw/package.json
@@ -5,7 +5,7 @@
 		"watch": "nodemon -w ../../package.json -e json --exec \"node build.js watch\"",
 		"build": "node build.js",
 		"typecheck": "tsc --noEmit",
-		"eslint": "eslint --quiet src/**/*.ts",
+		"eslint": "eslint --quiet src/**/*.ts --cache",
 		"lint": "pnpm typecheck && pnpm eslint"
 	},
 	"dependencies": {