Documentation
Rules.
Rules are grouped by engine. Run npx aislop rules in any project to see the same list with your current config applied.
Format
Delegates to language-native formatters. All auto-fixable.
format/biome — JS/TS via Biome autoformat/ruff-format — Python via ruff autoformat/gofmt — Go autoformat/rubocop — Ruby autoformat/php-cs-fixer — PHP autoformat/cargo-fmt — Rust autoLint
Standard linters plus language-aware presets. Some rules auto-fix safely; destructive ones (like no-unused-vars) go through aislop's AST-based renamer instead.
oxlint/* — JS/TS correctness, imports, unicorn, react-hooks, jsx-a11y, Next.js partial autoruff/* — Python lints partial autogolangci-lint/* — Go lintsclippy/* — Rust lintsexpo-doctor/* — Expo / React Native dependency alignment
Astro projects auto-detect: no-undef and no-unused-expressions are disabled to avoid false positives on frontmatter globals and inline-script IIFEs (PostHog/Plausible/GTM).
Code quality
knip/unused-file — files exported nowhere auto (with -f)knip/unused-export — exports used nowhere autoknip/unused-dependency — dependencies listed but never imported auto (with -f)complexity/file-too-large — files over maxFileLoccomplexity/function-too-long — functions over maxFunctionLoc. Exempts functions whose body is dominated by a single template literal.complexity/deep-nesting — control-flow nested beyond maxNestingcomplexity/too-many-params — functions with more than maxParamscode-quality/unused-declaration — aislop's AST-based dead-declaration remover autoAI slop
The rules that catch agent-authored code. Most auto-fix.
ai-slop/trivial-comment — "// Import X" before an import, "// Initialize Y" before an assignment autoai-slop/narrative-comment — decorative separators, phase headers, JSDoc preambles without meaningful tags, cross-reference commentary, 5+ line prose blocks autoai-slop/unused-import — imports the agent added and never referenced autoai-slop/dead-pattern — if (true), return; // unreachable, empty catch blocks, silent console.log leftovers autoai-slop/unsafe-any — as any bypasses, @ts-ignore without justificationai-slop/todo-stub — // TODO followed by empty body or throw new Error("not implemented")ai-slop/generic-name — data, result, handler, process as top-level identifiersSecurity
security/eval — eval() callssecurity/innerHTML — direct innerHTML writes (XSS surface)security/sql-injection — template-literal SQL without parameter bindingsecurity/shell-injection — unescaped input passed to shellsecurity/vulnerable-dependency — npm/pnpm/pip/cargo/govulncheck audit findingsArchitecture (opt-in)
Your own rules — import bans, layer separation, required patterns. Define them in .aislop/rules.yml. See Configure for the schema.