AI Slop Code Risk Monitor

duxlabs-dev/dux-shell

SlopCodeMonitor badge for duxlabs-dev/dux-shell Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Desktop shell for wayland compositors built with Quickshell & GO, optimized for niri, hyprland, sway, MangoWC, labwc, and MiracleWM.

0.3 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for duxlabs-dev/dux-shell, a QML project with 8,721 GitHub stars. SynthScan examined 541,349 lines of code across 1308 source files, recording 118 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 0.3 (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.

0.3
Adjusted Signal
0.3
Raw Pattern Score
100%
Time Factor
2026-11-01
Last Push
8.7K
Stars
QML
Language
541.3K
Lines of Code
1.3K
Files
118
Pattern Hits
2026-10-31
Scan Date
0.00
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 1.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.1/100 · LOW

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

Agent Over-Engineering Ratio 0.6/100 · LOW

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

PR Review Velocity Impact 1.2/100 · LOW

Which changes need focused human review? 118 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

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

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 0HIGH 2MEDIUM 3LOW 113

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 118 distinct pattern matches across 10 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.

Hyper-Verbose Identifiers41 hits · 42 pts
SeverityFileLineSnippetContext
LOWquickshell/Modals/DLauncherV2/ItemTransformers.js126function transformBuiltInLauncherItem(item, pluginId, openLabel) {CODE
LOWquickshell/Modals/DLauncherV2/NavigationHelpers.js171function calculateNextSectionIndex(flatModel, selectedFlatIndex) {CODE
LOWquickshell/Modals/DLauncherV2/NavigationHelpers.js194function calculatePrevSectionIndex(flatModel, selectedFlatIndex) {CODE
LOWquickshell/Common/WorkspaceModel.js153function hyprlandMonitorWorkspaces(raw, workspaces, screenName) {CODE
LOWquickshell/Common/WorkspaceModel.js217function hyprlandPersistentWorkspaces(raw, records, screenName, followFocus, minCount) {CODE
LOWquickshell/Common/WorkspaceModel.js245function hyprlandSpecialDisplayName(name) {CODE
LOWquickshell/Common/WorkspaceModel.js258function hyprlandSpecialWorkspaces(raw, screenName, followFocus, occupiedOnly) {CODE
LOWquickshell/Common/WorkspaceModel.js291function hyprlandWorkspacesForScreen(raw, screenName, followFocus, occupiedOnly, minCount, showSpecial) {CODE
LOWquickshell/Common/WorkspaceModel.js351function hyprlandWindowsOnWorkspace(windows, workspace, toplevels) {CODE
LOWquickshell/Common/WorkspaceModel.js360function hyprlandWorkspaceOccupied(toplevels, workspace) {CODE
LOWquickshell/Common/WorkspaceModel.js583function aqueousWorkspacesForScreen(raw, screenName, occupiedOnly, cache) {CODE
LOWquickshell/Common/WorkspaceModel.js599function aqueousWindowsOnWorkspace(windows, workspace) {CODE
LOWquickshell/Common/WorkspaceModel.js623function umbrielWorkspacesForScreen(workspaces, screenName, occupiedOnly, cache) {CODE
LOWquickshell/Common/WorkspaceModel.js634function umbrielWindowsOnWorkspace(windows, workspace) {CODE
LOWquickshell/Common/KeyUtils.js504function compositorTextInputSelected(imModules, imModule) {CODE
LOWquickshell/Common/KeybindActions.js3265function parseCompositorActionArgs(compositor, action) {CODE
LOW⚡quickshell/Common/PamStack.js103function hasEnrolledFingerprintOutput(output) {CODE
LOW⚡quickshell/Common/PamStack.js113function hasMissingFingerprintEnrollmentOutput(output) {CODE
LOW⚡quickshell/Common/PamStack.js118function hasMissingFingerprintReaderOutput(output) {CODE
LOWquickshell/Common/OutputModel.js51function hyprlandProfileOutputIdentifier(output, key, isConnector) {CODE
LOWquickshell/Common/OutputModel.js276function parseHyprlandLuaMonitorLine(line) {CODE
LOWquickshell/Common/OutputModel.js676function outputsDataFromConfigEntry(configEntry, outputs, displayNameMode, compositor) {CODE
LOWquickshell/Common/OutputModel.js734function findConfigEntryByFingerprint(data, outputIdentifiers, autoOnly) {CODE
LOWquickshell/Common/OutputModel.js820function configEntryMatchesLiveLayout(configEntry, outputs, displayNameMode, compositor) {CODE
LOWquickshell/Common/OutputModel.js1065function recalculateAdjacentPositions(outputs, pendingChanges, changedOutput, newScale, compositor) {CODE
LOWquickshell/Common/WindowModel.js65function niriActiveWorkspaceOccupied(windows, allWorkspaces, screenName) {CODE
LOWquickshell/Common/WindowModel.js70function niriWindowOnActiveWorkspace(windows, allWorkspaces, screenName, currentOutput, focusedWindow) {CODE
LOWquickshell/Common/WindowModel.js142function hyprlandWindowOnActiveWorkspace(hyprToplevels, focusedWorkspace, toplevel) {CODE
LOWquickshell/Common/WindowModel.js151function hyprlandSpecialWorkspaceName(hyprToplevels, toplevel) {CODE
LOWquickshell/Common/settings/SettingsStore.js102function withoutSessionBackedPluginState(pluginSettings) {CODE
LOWquickshell/Common/settings/SettingsStore.js813function migrateControlCenterFooter(settings) {CODE
LOWquickshell/Common/settings/SettingsStore.js890function migrateScrollColumnBehavior(settings) {CODE
LOWquickshell/Common/settings/SettingsStore.js902function migrateIslandReducedMotion(settings) {CODE
LOWquickshell/Common/settings/SettingsStore.js955function migrateControlCenterHeader(widgets, fixedHeader, columns) {CODE
LOWquickshell/scripts/i18nsync_plugins.py103def warn_unresolved_shell_terms(shell_terms):CODE
LOWquickshell/scripts/i18nsync_plugins.py142def pending_translation_files(checkout):CODE
LOWquickshell/scripts/i18nsync_plugins.py258def keep_existing_translations(existing, incoming):CODE
LOWquickshell/scripts/i18nsync.py333def collect_rename_translations(api_token, project_id, renames):CODE
LOWquickshell/scripts/i18nsync.py353def apply_rename_translations(api_token, project_id, carry):CODE
LOWquickshell/translations/extract_translations.py184def create_plugin_poeditor_json(scoped):CODE
LOWquickshell/translations/extract_settings_index.py878def extract_bar_widget_option_labels(root_dir):CODE
Structural Annotation Overuse16 hits · 24 pts
SeverityFileLineSnippetContext
LOWquickshell/PLUGINS/README.md846### Step 1: Create Plugin DirectoryCOMMENT
LOWquickshell/PLUGINS/README.md853### Step 2: Create ManifestCOMMENT
LOWquickshell/PLUGINS/README.md874### Step 3: Create Widget ComponentCOMMENT
LOWquickshell/PLUGINS/README.md924### Step 4: Create Settings Component (Optional)COMMENT
LOWquickshell/PLUGINS/README.md962### Step 5: Enable PluginCOMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md54## Step 1: Determine Plugin TypeCOMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md73## Step 2: Create the ManifestCOMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md149## Step 3: Create the Main ComponentCOMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md367## Step 4: Add Startup Check (Optional)COMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md411## Step 5: Add Settings (Optional)COMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md455## Step 6: Use Data PersistenceCOMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md472## Step 7: Theme IntegrationCOMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md487## Step 8: Add Popout Content (Widgets Only)COMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md522## Step 9: Control Center Integration (Widgets Only)COMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md551## Step 10: External Commands and ClipboardCOMMENT
LOW.agents/skills/dms-plugin-dev/SKILL.md613## Step 11: Validate and TestCOMMENT
Deep Nesting14 hits · 14 pts
SeverityFileLineSnippetContext
LOWquickshell/tests/run-qml.py32CODE
LOWquickshell/scripts/i18nsync_plugins.py463CODE
LOWquickshell/scripts/i18nsync_plugins.py615CODE
LOWquickshell/scripts/i18nsync.py481CODE
LOWquickshell/translations/extract_translations.py96CODE
LOWquickshell/translations/extract_translations.py122CODE
LOWquickshell/translations/extract_settings_index.py281CODE
LOWquickshell/translations/extract_settings_index.py328CODE
LOWquickshell/translations/extract_settings_index.py374CODE
LOWquickshell/translations/extract_settings_index.py465CODE
LOWquickshell/translations/extract_settings_index.py625CODE
LOWscripts/format-staged.py300CODE
LOWscripts/release-notes.py71CODE
LOWscripts/release-notes.py141CODE
Redundant / Tautological Comments9 hits · 13 pts
SeverityFileLineSnippetContext
LOWcore/install.sh16# Check if running on LinuxCOMMENT
LOWcore/cmd/dms/commands_open.go31 dms open file.pdf # Open file (MIME auto-detected)CODE
LOWdistro/scripts/copr-upload.sh88# Check if copr-cli is installedCOMMENT
LOWdistro/scripts/ppa-build.sh280 # Check if this version already exists in PPA (for stable packages, use exact match)COMMENT
LOWdistro/scripts/obs-upload.sh50# Check if last positional argument is a number (rebuild release)COMMENT
LOWdistro/scripts/obs-upload.sh172 # Check if we got valid spec contentCOMMENT
LOWdistro/scripts/obs-upload.sh297# Check if package existsCOMMENT
LOWdistro/scripts/obs-upload.sh411 # Check if this version already exists in OBSCOMMENT
LOWquickshell/scripts/spam-notifications.sh180 # Increment counterCOMMENT
Over-Commented Block13 hits · 13 pts
SeverityFileLineSnippetContext
LOWcore/internal/keybinds/providers/niri_parser.go101 prev = cCOMMENT
LOWcore/internal/highlight/generate.go1// Package highlight replaces chroma's lexers and styles packages, whoseCOMMENT
LOWcore/internal/server/wayland/manager.go1721// releaseIdleControls tears the gamma controls down once nothing needs them,COMMENT
LOWcore/internal/server/wayland/suncalc.go81}COMMENT
LOWcore/internal/icc/parser.go541 return tCOMMENT
LOWcore/internal/matugen/sourcecolor.go41}COMMENT
LOWdistro/scripts/ppa-upload.sh1#!/bin/bashCOMMENT
LOWdistro/scripts/obs-upload.sh1#!/bin/bashCOMMENT
LOWdistro/scripts/ppa-status.sh1#!/bin/bashCOMMENT
LOWquickshell/Common/suncalc.js1.pragma libraryCOMMENT
LOWscripts/notify-issues.sh1#!/usr/bin/env bashCOMMENT
LOW.github/workflows/release.yml181 core/dms-${{ env.ASSET }}.gz.sha256COMMENT
LOW.github/workflows/release.yml201 # uses: actions/checkout@v6COMMENT
Fake / Example Data11 hits · 11 pts
SeverityFileLineSnippetContext
LOWcore/cmd/dms/commands_dmenu.go77 dmenuCmd.Flags().StringVar(&dmenuPlaceholder, "placeholder", "", "Input placeholder text")CODE
LOWcore/internal/highlight/lexers/caddyfile.go146 Include("placeholder"),CODE
LOWcore/internal/highlight/lexers/caddyfile.go152 Include("placeholder"),CODE
LOWcore/internal/highlight/lexers/caddyfile.go171 "placeholder": {CODE
LOWcore/internal/highlight/lexers/caddyfile.go186 Include("placeholder"),CODE
LOWcore/internal/highlight/lexers/caddyfile.go242 Include("placeholder"),CODE
LOWcore/internal/server/tailscale/manager_test.go113 Name: "user@example.com",CODE
LOWcore/internal/server/tailscale/client_test.go22 Name: "user@example.com",CODE
LOWcore/internal/server/tailscale/client_test.go60 LoginName: "user@example.com",CODE
LOWcore/internal/server/tailscale/client_test.go76 assert.Equal(t, "user@example.com", state.TailnetName)CODE
LOWcore/internal/server/tailscale/client_test.go92 assert.Equal(t, "user@example.com", peer.Owner)CODE
Excessive Try-Catch Wrapping9 hits · 11 pts
SeverityFileLineSnippetContext
LOWquickshell/scripts/i18nsync.py90 except Exception as e:CODE
LOWquickshell/scripts/i18nsync.py113 except Exception as e:CODE
LOWquickshell/scripts/i18nsync.py249 except Exception as e:CODE
LOWquickshell/scripts/i18nsync.py317 except Exception as e:CODE
LOWquickshell/scripts/i18nsync.py514 except Exception as e:CODE
LOWquickshell/translations/replace_qstr.py42 except Exception as e:CODE
MEDIUMquickshell/translations/replace_qstr.py43 print(f"Error processing {qml_file}: {e}")CODE
LOWscripts/format-staged.py220 except Exception:CODE
MEDIUMscripts/format-staged.py216def shutdown(self):CODE
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHscripts/format-staged.py220except Exception:CODE
HIGHscripts/format-staged.py190except OSError:CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/release.yml473 # Create the full packageCOMMENT
Unused Imports2 hits · 2 pts
SeverityFileLineSnippetContext
LOWquickshell/scripts/i18nsync_plugins.py7CODE
LOWquickshell/translations/replace_qstr.py2CODE