Hacker News AI · 10/14/2026, 01:52:57

ai-deslop Releases Oxlint Rules to Block Low-Evidence and Unsafe Type Patterns in AI-Generated TypeScript

68AI Score
Executive Summary

Developer releases ai-deslop, an Oxlint plugin suite designed to detect and reject low-evidence 'AI slop' patterns in generated TypeScript. By flagging issues like chained type assertions and conditional empty object spreads, it enforces code quality standards for AI-assisted programming. The tool supports Bun, Deno, and Node.js, aiming to mitigate common hallucinations and inefficiencies inherent in LLM-generated code.

SOURCE COVERAGEFull Original Report

Contents9 sections

ai-deslop

Opinionated Oxlint rules that reject low-evidence, low-signal, AI-slop code patterns.

Rules are vendored from dmmulroy/anti-slop (generic rules) alongside additional deslop rules, all renamed under the deslop/* namespace. The vendored source is MIT licensed; see Credits below.

Install

BASH
npm install --save-dev ai-deslop
# @oxlint/plugins comes along as a runtime dependency — keep it in sync with your oxlint version

Ships compiled JavaScript — works with any oxlint JS-plugin runtime (Bun, Deno, or Node.js).

Usage

TS
import { defineConfig } from "oxlint";
import { configs as deslopConfigs } from "ai-deslop";

export default defineConfig({
  jsPlugins: ["ai-deslop"],
  options: deslopConfigs.recommended.options,
  rules: deslopConfigs.recommended.rules
});

Rules

Type safety and evidence

RuleStatusDescription
no-chained-type-assertionsRecommendedRejects nested as / angle-bracket assertions that fabricate evidence.
no-conditional-empty-object-spreadRecommendedReports object spreads using a conditional {} branch to omit fields.
no-known-value-wideningRecommendedRejects known expressions flowing into explicit unknown, object, or open dictionaries.
no-object-parametersRecommendedRejects object on function inputs.
no-runtime-typeofRecommendedRequires boundary parsing instead of ad hoc typeof narrowing.
no-unknown-parametersRecommendedRejects unknown on function inputs.
no-unknown-returnsRecommendedRejects return contracts resolving to unknown.
no-unknown-type-aliasesRecommendedRejects aliases whose resolved type is unknown.
no-unsafe-dictionary-typeRecommendedRejects dictionary values based on unsafe escape hatches.
no-widen-then-assertRecommendedRejects widening known evidence before narrowing assertions.
require-safety-comment-for-type-assertionRecommendedRequires an invariant justification for non-const assertions.
no-pass-through-type-aliasRecommendedDisallows aliases that only rename another type.

Code quality and APIs

RuleStatusDescription
no-array-filter-mapRecommendedRejects adjacent eager array filter/map passes; allows lazy iterator pipelines.
no-reduce-accumulator-copyRecommendedRejects non-spread accumulator copies inside reducers. Enable native oxc/no-accumulating-spread alongside it.
no-reflect-applyRecommendedRejects global Reflect.apply.
no-reflect-getRecommendedRejects global Reflect.get.
no-shape-in-symbol-namesRecommendedRejects shape in locally owned symbol names.

Tests

RuleStatusDescription
no-call-only-assertionsRecommendedFlags tests whose assertions only check mock calls.
no-module-mockingRecommendedRejects Vitest and Jest module mocks.
no-poor-substring-testsRecommendedRejects testing that a constant string contains substrings.
no-repeated-expect-callRecommendedFlags adjacent assertions that repeat the same call in test files. Reuse the result instead. No fixer.

Opt-in rules

RuleStatusDescription
no-duplicate-constsOpt-inReports all-caps constants with the same static value in different files.
no-duplicate-typesOpt-inReports exact duplicate object contracts. No fixer.
no-renamed-importsOpt-inFixes unnecessary named-import aliases when the original name has no module-level conflict.
canonical-class-namesOpt-inFixes non-canonical Tailwind CSS v4 class spellings.
Standard ruleStatusDescription
typescript/no-deprecatedRecommendedDisallows using code marked @deprecated. Requires type-aware linting.
typescript/no-require-importsRecommendedDisallows CommonJS require() imports.
typescript/no-floating-promisesRecommendedDisallows floating promises. Requires type-aware linting.
typescript/no-unnecessary-conditionRecommendedDisallows always truthy/falsy/nullish conditions. Requires type-aware linting.
no-unreachableRecommendedDisallows unreachable code.

Guides

GuideContents
No duplicate constsConfiguration and exact static-value comparison behavior.
No duplicate typesExact comparison behavior, worker scope, complete TypeScript/JSON examples, and every supported option.
No renamed importsWhen named-import aliases are fixed and how conflicts are handled.
Tailwind canonical class namesTailwind v4 setup, complete TypeScript/JSON examples, and every supported option.

作者发帖说明(HN):

Catches unsafe types, duplicate code, and low-value tests.