Formatting
The Formatting engine enforces consistent code style using the best-in-class formatter for each language. Formatting findings carry the lowest default weight (0.3), so they inform without dominating your score.Linting
The Linting engine catches language-specific bugs, anti-patterns, and bad practices using established, widely-trusted tools.Code Quality
The Code Quality engine measures structural complexity, locates dead code, and identifies unused dependencies. All thresholds are configurable.- Complexity
- Duplication & Dead Code
- Knip (JS/TS)
AI Slop
The AI Slop engine is what makes aislop unique. These are the patterns AI coding agents — Claude Code, Cursor, Codex, OpenCode — leave behind that pass lint and tests but quietly rot a codebase. In0.12.0, each rule also exposes a score-impact tier so strict defects score harder than mechanical or style cleanup.
Run
aislop rules to see each rule’s severity, fixability, score-impact tier, and rationale. JSON diagnostics include the same scoreImpact metadata for integrations.Comment and naming patterns
Comment and naming patterns
Exception and error handling
Exception and error handling
TypeScript type system abuse
TypeScript type system abuse
Dead and unreachable code
Dead and unreachable code
Imports and dependencies
Imports and dependencies
Hardcoded values
Hardcoded values
Python-specific patterns
Python-specific patterns
Go and Rust patterns
Go and Rust patterns
Security
The Security engine finds hardcoded secrets, unsafe code constructs, and vulnerable dependencies. It carries a default weight of 1.5 — second only to AI Slop.Architecture (opt-in)
The Architecture engine runs custom structural rules you define yourself. It is disabled by default — enable it withengines.architecture: true in .aislop/config.yml and create a .aislop/rules.yml file.
Suppressing findings inline
When you know a finding is a false positive or an intentional exception, you can suppress it without changing your config.aislop-ignore-next-linesuppresses findings on the next lineaislop-ignore-linesuppresses findings on the same lineaislop-ignore-file(placed anywhere in the file) suppresses findings for the entire file
-- followed by a reason to document why the suppression exists. The directive works in any comment syntax (//, #, <!-- -->). Suppressed findings are excluded before scoring, and the scan output reports how many were silenced.
For the complete list of all rules with their IDs, severities, and supported languages, see the Rules Reference.
ai-slop/trivial-comment// Import React,// Return the value)ai-slop/narrative-commentai-slop/meta-commentai-slop/todo-stubai-slop/generic-naminghelper_1,data2,temp1