AI Slop Code Risk Monitor

unocss/unocss

SlopCodeMonitor badge for unocss/unocss Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

The instant on-demand atomic CSS engine.

3.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for unocss/unocss, a TypeScript project with 18,991 GitHub stars. SynthScan examined 153,588 lines of code across 1616 source files, recording 164 pattern matches distributed across 4 syntactic categories. The legacy adjusted pattern signal is 3.4 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

3.4
Adjusted Signal
3.4
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
19.0K
Stars
TypeScript
Language
153.6K
Lines of Code
1.6K
Files
164
Pattern Hits
2026-10-31
Scan Date
0.02
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 4.4/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 121 finding(s).

Hallucinated Dependency & Supply Chain Risk 11.8/100 · LOW

Are imports declared and package/API names verified? 43 finding(s).

Agent Over-Engineering Ratio 4.0/100 · LOW

Are wrappers, guards, and repeated structures necessary? 107 finding(s).

PR Review Velocity Impact 15.2/100 · LOW

Which changes need focused human review? 164 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 38HIGH 0MEDIUM 0LOW 126

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 164 distinct pattern matches across 4 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hallucination Indicators38 hits · 380 pts
SeverityFileLineSnippetContext
CRITICALplayground/__play.html34 if (window.parent.document.body.parentElement.className.includes('dark')) root.classList.toggle('dark', true)CODE
CRITICALpackages-presets/preset-mini/src/_utils/utilities.ts20 const v = theme.spacing?.[size || 'DEFAULT'] ?? h.bracket.cssvar.global.auto.fraction.rem(size)CODE
CRITICALpackages-presets/preset-mini/src/_rules/border.ts128 const v = theme.borderRadius?.[s || 'DEFAULT'] || h.bracket.cssvar.global.fraction.rem(s || '1')CODE
CRITICALpackages-presets/preset-mini/src/_rules/flex.ts21 [/^(?:flex-)?basis-(.+)$/, ([, d], { theme }) => ({ 'flex-basis': theme.spacing?.[d] ?? h.bracket.cssvar.auto.fractionCODE
CRITICALpackages-presets/preset-mini/src/_rules/static.ts84 return { [`contain-intrinsic-${sizeMap[d as keyof typeof sizeMap] ?? 'size'}`]: h.bracket.cssvar.global.fraction.remCODE
CRITICALpackages-presets/preset-mini/src/_rules/position.ts146 return theme.spacing?.[v] ?? h.bracket.cssvar.global.auto.fraction.rem(v)CODE
CRITICALpackages-presets/preset-mini/src/_rules/position.ts197 [/^(?:position-|pos-)?z-(.+)$/, ([, v], { theme }: RuleContext<Theme>) => ({ 'z-index': theme.zIndex?.[v] ?? h.bracketCODE
CRITICALpackages-presets/preset-mini/src/_rules/svg.ts39 return { 'stroke-width': theme.lineWidth?.[b] ?? h.bracket.cssvar.fraction.px.number(b) }CODE
CRITICALpackages-presets/preset-mini/src/_rules/size.ts34 return h.bracket.cssvar.global.auto.fraction.rem(prop)CODE
CRITICALpackages-presets/preset-mini/src/_rules/size.ts78 return h.bracket.cssvar.global.auto.number(prop)CODE
CRITICALpackages-presets/preset-mini/src/_rules/decoration.ts19 [/^(?:underline|decoration)-offset-(.+)$/, ([, s], { theme }) => ({ 'text-underline-offset': theme.lineWidth?.[s] ?? hCODE
CRITICALpackages-presets/preset-mini/src/_rules/color.ts25 return { 'background-position': h.bracketOfPosition(d)!.split(' ').map(e => h.position.fraction.auto.px.cssvar(e) CODE
CRITICALpackages-presets/preset-mini/src/_rules/typography.ts103 [/^indent(?:-(.+))?$/, ([, s], { theme }) => ({ 'text-indent': theme.textIndent?.[s || 'DEFAULT'] || h.bracket.cssvar.CODE
CRITICALpackages-presets/preset-wind3/src/rules/table.ts30 const v = theme.spacing?.[s] ?? h.bracket.cssvar.global.auto.fraction.rem(s)CODE
CRITICALpackages-presets/preset-wind3/src/rules/table.ts41 const v = theme.spacing?.[s] ?? h.bracket.cssvar.global.auto.fraction.rem(s)CODE
CRITICALpackages-presets/preset-wind3/src/rules/static.ts83 return { 'object-position': h.bracketOfPosition(d)!.split(' ').map(e => h.position.fraction.auto.px.cssvar(e) ?? eCODE
CRITICALpackages-presets/preset-wind3/src/rules/spacing.ts13 let v = theme.spacing?.[s || 'DEFAULT'] ?? h.bracket.cssvar.auto.fraction.rem(s || '1')CODE
CRITICALpackages-presets/preset-wind4/src/utils/utilities.ts58 v = h.bracket.cssvar.global.auto.fraction.rem(isNegative ? `-${size}` : size, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/border.ts73 const v = h.bracket.bracketOfLength.cssvar.global.px(b, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/border.ts116 const _v = theme.radius?.[s] ?? h.bracket.cssvar.global.fraction.rem(s, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/flex.ts34 return { 'flex-basis': h.bracket.cssvar.auto.fraction.rem(d, theme) }CODE
CRITICALpackages-presets/preset-wind4/src/rules/table.ts66 v = h.bracket.cssvar.global.auto.fraction.rem(s, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/scrolls.ts51 value = h.bracket.cssvar.global.fraction.rem(v, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/scrolls.ts75 value = h.bracket.cssvar.global.fraction.rem(v, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/static.ts97 return { [`contain-intrinsic-${sizeMap[d as keyof typeof sizeMap] ?? 'size'}`]: h.bracket.cssvar.global.fraction.remCODE
CRITICALpackages-presets/preset-wind4/src/rules/static.ts257 return { 'object-position': position.split(' ').map(e => h.position.fraction.auto.px.cssvar(e) ?? e).join(' ') }CODE
CRITICALpackages-presets/preset-wind4/src/rules/transform.ts111 const v = numberResolver(b) ?? h.bracket.cssvar.none.fraction.rem(b, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/transform.ts132 const v = h.bracket.cssvar.none.fraction.percent(b, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/position.ts152 return h.bracket.cssvar.global.auto.fraction.rem(v, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/position.ts205 [/^(?:position-|pos-)?z-(.+)$/, ([, v], { theme }) => ({ 'z-index': h.bracket.cssvar.global.auto.number(v, theme) }), CODE
CRITICALpackages-presets/preset-wind4/src/rules/svg.ts39 return { 'stroke-width': h.bracket.cssvar.fraction.px.number(b, theme) }CODE
CRITICALpackages-presets/preset-wind4/src/rules/size.ts50 return v ?? h.bracket.cssvar.global.auto.none.fraction.rem(prop, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/size.ts100 return h.bracket.cssvar.global.auto.number(prop, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/decoration.ts19 [/^(?:underline|decoration)-offset-(.+)$/, ([, s], { theme }) => ({ 'text-underline-offset': h.auto.bracket.cssvar.gloCODE
CRITICALpackages-presets/preset-wind4/src/rules/color.ts29 return { 'background-position': bracketPosition.split(' ').map(e => h.position.fraction.auto.px.cssvar(e) ?? e).joCODE
CRITICALpackages-presets/preset-wind4/src/rules/typography.ts231 v = h.bracket.cssvar.auto.global.rem(s, theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/spacing.ts54 v = theme.spacing?.[s] ?? h.bracket.cssvar.auto.fraction.rem(s || '1', theme)CODE
CRITICALpackages-presets/preset-wind4/src/rules/mask.ts135 const _v = h.bracket.cssvar.global.fraction.rem(v, ctx?.theme)CODE
Hyper-Verbose Identifiers107 hits · 124 pts
SeverityFileLineSnippetContext
LOWvirtual-shared/integration/src/match-positions.ts21export function getPlainClassMatchedPositionsForPug(codeSplit: string, matchedPlain: Set<string>, start: number) {CODE
LOWvirtual-shared/integration/src/match-positions.ts122 function highlightLessGreaterThanSign(str: string) {CODE
LOWvirtual-shared/integration/src/match-positions.ts202export async function getMatchedPositionsFromCode(CODE
LOWvirtual-shared/integration/src/layers.ts50export function getCssEscaperForJsContent(view: string) {CODE
LOWtest/api-snapshot-utils.ts6export function normalizeRuntimeChunkHashes(text: string): string {CODE
LOWtest/api-snapshot-utils.ts11export function normalizeValueHandlerKeys(text: string): string {CODE
LOW…nocss/extractor-arbitrary-variants/index.snapshot.d.ts5export declare function extractorArbitraryVariants(): Extractor;CODE
LOW…nocss/extractor-arbitrary-variants/index.snapshot.d.ts6export declare function splitCodeWithArbitraryVariants(_: string): string[];CODE
LOW…@unocss/extractor-arbitrary-variants/index.snapshot.js5export function extractorArbitraryVariants() {}CODE
LOW…@unocss/extractor-arbitrary-variants/index.snapshot.js6export function splitCodeWithArbitraryVariants(_) {}CODE
LOW…shots__/tsnapi/@unocss/preset-mini/utils.snapshot.d.ts39export declare function resolveVerticalBreakpoints(_: Readonly<VariantContext<Theme>>): {CODE
LOW⚡…ts__/tsnapi/@unocss/preset-mini/variants.snapshot.d.ts6export declare function variantColorsMediaOrClass(_?: PresetMiniOptions): Variant[];CODE
LOW⚡…ts__/tsnapi/@unocss/preset-mini/variants.snapshot.d.ts8export declare function variantPseudoClassesAndElements(): VariantObject[];CODE
LOW⚡…ts__/tsnapi/@unocss/preset-mini/variants.snapshot.d.ts9export declare function variantPseudoClassFunctions(): VariantObject;CODE
LOW⚡…ts__/tsnapi/@unocss/preset-mini/variants.snapshot.d.ts11export declare function variantTaggedAriaAttributes(_?: PresetMiniOptions): Variant[];CODE
LOW⚡…ts__/tsnapi/@unocss/preset-mini/variants.snapshot.d.ts12export declare function variantTaggedDataAttributes(_?: PresetMiniOptions): Variant[];CODE
LOW⚡…ts__/tsnapi/@unocss/preset-mini/variants.snapshot.d.ts13export declare function variantTaggedPseudoClasses(_?: PresetMiniOptions): VariantObject[];CODE
LOW⚡…hots__/tsnapi/@unocss/preset-mini/variants.snapshot.js6export function variantColorsMediaOrClass(_) {}CODE
LOW⚡…hots__/tsnapi/@unocss/preset-mini/variants.snapshot.js8export function variantPseudoClassesAndElements() {}CODE
LOW⚡…hots__/tsnapi/@unocss/preset-mini/variants.snapshot.js9export function variantPseudoClassFunctions() {}CODE
LOW⚡…hots__/tsnapi/@unocss/preset-mini/variants.snapshot.js11export function variantTaggedAriaAttributes(_) {}CODE
LOW⚡…hots__/tsnapi/@unocss/preset-mini/variants.snapshot.js12export function variantTaggedDataAttributes(_) {}CODE
LOW⚡…hots__/tsnapi/@unocss/preset-mini/variants.snapshot.js13export function variantTaggedPseudoClasses(_) {}CODE
LOW…/tsnapi/@unocss/preset-attributify/index.snapshot.d.ts29export declare function autocompleteExtractorAttributify(_?: AttributifyOptions): AutoCompleteExtractor;CODE
LOW…__/tsnapi/@unocss/preset-attributify/index.snapshot.js5export function autocompleteExtractorAttributify(_) {}CODE
LOW…/__snapshots__/tsnapi/@unocss/config/index.snapshot.js5export function createRecoveryConfigLoader() {}CODE
LOW…apshots__/tsnapi/@unocss/inspector/index.snapshot.d.ts21export declare function createStandaloneInspectorDevframe(_?: StandaloneInspectorOptions): Promise<UnocssInspectorDevfraCODE
LOW…snapshots__/tsnapi/@unocss/inspector/index.snapshot.js6export async function createStandaloneInspectorDevframe(_) {}CODE
LOW…hots__/tsnapi/@unocss/inspector/devframe.snapshot.d.ts21export declare function createStandaloneInspectorDevframe(_?: StandaloneInspectorOptions): Promise<UnocssInspectorDevfraCODE
LOW…hots__/tsnapi/@unocss/preset-wind4/utils.snapshot.d.ts70export declare function resolveVerticalBreakpoints(_: Readonly<VariantContext<Theme>>): {CODE
LOW⚡…s__/tsnapi/@unocss/preset-wind4/variants.snapshot.d.ts6export declare function variantColorsMediaOrClass(_?: PresetWind4Options): Variant<Theme>[];CODE
LOW⚡…s__/tsnapi/@unocss/preset-wind4/variants.snapshot.d.ts8export declare function variantPseudoClassesAndElements(): VariantObject<Theme>[];CODE
LOW⚡…s__/tsnapi/@unocss/preset-wind4/variants.snapshot.d.ts9export declare function variantPseudoClassFunctions(): VariantObject<Theme>;CODE
LOW⚡…s__/tsnapi/@unocss/preset-wind4/variants.snapshot.d.ts11export declare function variantTaggedPseudoClasses(_?: PresetWind4Options): VariantObject<Theme>[];CODE
LOW…pshots__/tsnapi/@unocss/preset-wind4/rules.snapshot.js6export function notLastChildSelectorVariant(_) {}CODE
LOW⚡…ots__/tsnapi/@unocss/preset-wind4/variants.snapshot.js6export function variantColorsMediaOrClass(_) {}CODE
LOW⚡…ots__/tsnapi/@unocss/preset-wind4/variants.snapshot.js8export function variantPseudoClassesAndElements() {}CODE
LOW⚡…ots__/tsnapi/@unocss/preset-wind4/variants.snapshot.js9export function variantPseudoClassFunctions() {}CODE
LOW⚡…ots__/tsnapi/@unocss/preset-wind4/variants.snapshot.js11export function variantTaggedPseudoClasses(_) {}CODE
LOW…hots__/tsnapi/@unocss/preset-wind4/rules.snapshot.d.ts6export declare function notLastChildSelectorVariant(_: string): VariantHandler;CODE
LOW…pshots__/tsnapi/@unocss/rule-utils/index.snapshot.d.ts61export declare function generateBreakpointMediaQuery(_: string, _?: 'lt' | 'at', _?: string): string;CODE
LOW…pshots__/tsnapi/@unocss/rule-utils/index.snapshot.d.ts75export declare function resolveVerticalBreakpoints(_: BreakpointsContext): {CODE
LOW⚡…napshots__/tsnapi/@unocss/rule-utils/index.snapshot.js9export function createPseudoClassesAndElements(_) {}CODE
LOW⚡…napshots__/tsnapi/@unocss/rule-utils/index.snapshot.js10export function createPseudoClassFunctions(_) {}CODE
LOW⚡…napshots__/tsnapi/@unocss/rule-utils/index.snapshot.js11export function createTaggedPseudoClasses(_, _) {}CODE
LOW⚡…napshots__/tsnapi/@unocss/rule-utils/index.snapshot.js12export function createTaggedPseudoClassMatcher(_, _, _, _) {}CODE
LOW⚡…napshots__/tsnapi/@unocss/rule-utils/index.snapshot.js14export function generateBreakpointMediaQuery(_, _, _) {}CODE
LOW…napshots__/tsnapi/@unocss/rule-utils/index.snapshot.js25export function resolveVerticalBreakpoints(_) {}CODE
LOW…s__/tsnapi/@unocss/language-server/index.snapshot.d.ts85export declare function getMatchedPositionsFromCode(_: UnoGenerator, _: string, _?: string, _?: GetMatchedPositionsOptioCODE
LOW…s__/tsnapi/@unocss/language-server/index.snapshot.d.ts86export declare function getMatchedPositionsFromDoc(_: UnoGenerator, _: string, _: string, _?: boolean, _?: boolean): anyCODE
LOW…s__/tsnapi/@unocss/language-server/index.snapshot.d.ts100export declare function shouldProvideAutocomplete(_: string, _: string, _: number): boolean;CODE
LOW⚡…ots__/tsnapi/@unocss/language-server/index.snapshot.js51export async function getMatchedPositionsFromCode(_, _, _, _) {}CODE
LOW⚡…ots__/tsnapi/@unocss/language-server/index.snapshot.js52export function getMatchedPositionsFromDoc(_, _, _, _, _) {}CODE
LOW⚡…ots__/tsnapi/@unocss/language-server/index.snapshot.js58export function shouldProvideAutocomplete(_, _, _) {}CODE
LOW…unocss/transformer-attributify-jsx/index.snapshot.d.ts29export default function transformerAttributifyJsx(_?: TransformerAttributifyJsxOptions): SourceCodeTransformer;CODE
LOWpackages-engine/core/src/config.ts301function mergeAutocompleteShorthands(shorthands: Record<string, string | string[]>[]) {CODE
LOWpackages-engine/autocomplete/src/parse.ts228function getValuesFromPartTemplate(part: AutocompleteTemplatePart): string[] {CODE
LOW…ages-presets/extractor-arbitrary-variants/src/index.ts13export function splitCodeWithArbitraryVariants(code: string): string[] {CODE
LOW…ages-presets/extractor-arbitrary-variants/src/index.ts46export function extractorArbitraryVariants(): Extractor {CODE
LOWpackages-presets/preset-mini/src/_utils/utilities.ts280export function resolveVerticalBreakpoints(context: Readonly<VariantContext<Theme>>) {CODE
47 more matches not shown…
Over-Commented Block14 hits · 14 pts
SeverityFileLineSnippetContext
LOWvirtual-shared/integration/src/match-positions.ts21export function getPlainClassMatchedPositionsForPug(codeSplit: string, matchedPlain: Set<string>, start: number) {COMMENT
LOWtest/assets/output/preset-wind4-important-string.css1/* layer: properties */COMMENT
LOWtest/assets/output/preset-wind3-important-string.css1/* layer: default */COMMENT
LOW…hots__/tsnapi/@unocss/preset-wind4/utils.snapshot.d.ts101// #region Re-exportsCOMMENT
LOW…pshots__/tsnapi/@unocss/preset-wind4/index.snapshot.js21// #endregionCOMMENT
LOW…ots__/tsnapi/@unocss/language-server/index.snapshot.js61// #region VariablesCOMMENT
LOWpackages-engine/autocomplete/src/parse.ts201 // combinations = combinations.map(i => i + part.value)COMMENT
LOWexamples/sveltekit-scoped/src/app.d.ts1// See https://kit.svelte.dev/docs/types#appCOMMENT
LOWexamples/vite-svelte-scoped/src/vite-env.d.ts1/// <reference types="svelte" />COMMENT
LOWexamples/vite-svelte/src/vite-env.d.ts1/// <reference types="svelte" />COMMENT
LOWexamples/sveltekit/src/app.d.ts1// See https://kit.svelte.dev/docs/types#appCOMMENT
LOWexamples/vite-vue3/uno.config.ts21 },COMMENT
LOWexamples/vite-vue3/uno.config.ts41 // },COMMENT
LOWexamples/vite-svelte-postcss/src/vite-env.d.ts1/// <reference types="svelte" />COMMENT
Fake / Example Data5 hits · 5 pts
SeverityFileLineSnippetContext
LOWpackages-presets/preset-attributify/src/extractor.ts15export const defaultIgnoreAttributes = ['placeholder', 'fill', 'opacity', 'stroke-opacity']CODE
LOWpackages-presets/preset-wind3/src/rules/placeholder.ts7 [/^\$ placeholder-(.+)$/, colorResolver('color', 'placeholder', 'accentColor'), { autocomplete: 'placeholder-$colors' CODE
LOWpackages-presets/preset-wind4/src/rules/placeholder.ts8 [/^\$ placeholder-(.+)$/, colorResolver('color', 'placeholder'), { autocomplete: 'placeholder-$colors' }],CODE
LOWpackages-presets/rule-utils/src/pseudo.ts75 ['placeholder', '::placeholder'],CODE
LOWpackages-integrations/inspector/src/categories.ts273 placeholder: 'placeholder',CODE