AI Slop Code RIsk Monitor

SteamDeckHomebrew/decky-loader

A plugin loader for the Steam Deck.

5.8 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for SteamDeckHomebrew/decky-loader, a TypeScript project with 7,342 GitHub stars. SynthScan examined 23,889 lines of code across 142 source files, recording 88 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 5.8 (Moderate 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.

5.8
Adjusted Signal
5.8
Raw Pattern Score
100%
Time Factor
2026-10-04
Last Push
7.3K
Stars
TypeScript
Language
23.9K
Lines of Code
142
Files
88
Pattern Hits
2026-10-12
Scan Date
0.06
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 11.3/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 3.5/100 · LOW

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

Agent Over-Engineering Ratio 17.3/100 · LOW

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

PR Review Velocity Impact 26.8/100 · MEDIUM

Which changes need focused human review? 88 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 0HIGH 9MEDIUM 8LOW 71

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 88 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.

Empty Error Handlers7 hits · 35 pts
SeverityFileLineSnippetContext
HIGHbackend/decky_loader/wsrouter.py92except:CODE
HIGHbackend/decky_loader/wsrouter.py121except:CODE
HIGHbackend/decky_loader/updater.py137except:CODE
HIGHbackend/decky_loader/main.py157except CancelledError:CODE
HIGHbackend/decky_loader/plugin/sandboxed_plugin.py139except SystemExit:CODE
HIGHbackend/decky_loader/plugin/plugin.py111except:CODE
HIGHbackend/decky_loader/localplatform/localplatform.py57except FileNotFoundError:CODE
Excessive Try-Catch Wrapping26 hits · 30 pts
SeverityFileLineSnippetContext
LOWbackend/decky_loader/wsrouter.py74 except Exception as err:CODE
LOWbackend/decky_loader/injector.py326 except Exception as e:STRING
LOWbackend/decky_loader/injector.py355 except Exception as e:STRING
LOWbackend/decky_loader/updater.py225 except Exception as e:CODE
LOWbackend/decky_loader/browser.py102 except Exception as e:CODE
LOWbackend/decky_loader/browser.py166 except Exception as e:CODE
LOWbackend/decky_loader/browser.py254 except Exception as e:CODE
LOWbackend/decky_loader/loader.py186 except Exception as e:CODE
LOW⚡backend/decky_loader/loader.py214 except Exception as e:CODE
LOW⚡backend/decky_loader/loader.py225 except Exception as e:CODE
LOWbackend/decky_loader/settings.py47 except Exception as e:CODE
MEDIUMbackend/decky_loader/settings.py43def read(self):CODE
LOWbackend/decky_loader/utilities.py106 except Exception as e:CODE
LOWbackend/decky_loader/utilities.py118 except Exception as e:CODE
LOWbackend/decky_loader/utilities.py245 except Exception as e:CODE
LOWbackend/decky_loader/utilities.py460 except Exception:STRING
LOWbackend/decky_loader/main.py228 except Exception:CODE
LOWbackend/decky_loader/helpers.py87 except Exception as e:CODE
LOWbackend/decky_loader/helpers.py105 except Exception as e:CODE
LOWbackend/decky_loader/helpers.py128 except Exception as e:CODE
MEDIUMbackend/decky_loader/helpers.py70def get_loader_version() -> str:CODE
MEDIUMbackend/decky_loader/helpers.py94def get_system_pythonpaths() -> list[str]:CODE
LOWbackend/decky_loader/plugin/sandboxed_plugin.py211 except Exception as e:CODE
MEDIUMbackend/decky_loader/plugin/sandboxed_plugin.py146def _unload(self):CODE
LOWbackend/decky_loader/plugin/plugin.py173 except Exception as e:CODE
LOWbackend/decky_loader/plugin/imports/decky.py202except Exception as e:CODE
Hyper-Verbose Identifiers25 hits · 26 pts
SeverityFileLineSnippetContext
LOWfrontend/src/store.tsx104export async function requestMultiplePluginInstalls(requests: PluginInstallRequest[]) {CODE
LOWfrontend/src/fallback.ts63 function getGamepadNavigationTrees(): any {CODE
LOWfrontend/src/developer.tsx40export async function setShouldConnectToReactDevTools(enable: boolean) {CODE
LOWfrontend/src/utils/errors.ts20export function getLikelyErrorSourceFromValveError(error: ValveError): ErrorSource {CODE
LOWfrontend/src/utils/errors.ts24export function getLikelyErrorSourceFromValveReactError(error: ValveReactErrorInfo): ErrorSource {CODE
LOWbackend/decky_loader/wsrouter.py149 def handle_received_response_message(self, call_id: int):CODE
LOWbackend/decky_loader/injector.py203 async def add_script_to_evaluate_on_new_document(self, js: str, add_dom_wrapper: bool = True, manage_socket: bool = CODE
LOWbackend/decky_loader/injector.py266 async def remove_script_to_evaluate_on_new_document(self, script_id: str, manage_socket: bool = True):STRING
LOWbackend/decky_loader/browser.py66 async def _download_remote_binaries_for_plugin_with_name(self, pluginBasePath: str):CODE
LOWbackend/decky_loader/browser.py120 def set_plugin_dir_permissions(self, plugin_dir: str) -> bool:CODE
LOWbackend/decky_loader/browser.py313 async def request_multiple_plugin_installs(self, requests: List[PluginInstallRequest]):CODE
LOWbackend/decky_loader/loader.py142 async def handle_plugin_frontend_assets(self, request: web.Request):CODE
LOWbackend/decky_loader/loader.py148 async def handle_plugin_frontend_assets_from_data(self, request: web.Request):CODE
LOW⚡backend/decky_loader/loader.py206 async def handle_plugin_method_call_legacy(self, plugin_name: str, method_name: str, kwargs: Dict[Any, Any]):CODE
LOW⚡backend/decky_loader/loader.py219 async def handle_plugin_method_call(self, plugin_name: str, method_name: str, *args: List[Any]):CODE
LOW⚡backend/decky_loader/loader.py230 async def handle_plugin_backend_reload(self, plugin_name: str):CODE
LOWbackend/decky_loader/utilities.py95 async def _handle_legacy_server_method_call(self, request: Request) -> Response:CODE
LOWbackend/decky_loader/utilities.py296 async def disallow_remote_debugging(self):STRING
LOWbackend/decky_loader/helpers.py110async def download_remote_binary_to_path(url: str, binHash: str, path: str) -> bool:CODE
LOWbackend/decky_loader/helpers.py163def get_effective_user_group_id() -> int:CODE
LOW…ckend/decky_loader/localplatform/localplatformlinux.py55def _get_effective_user_group_id() -> int:CODE
LOW…ckend/decky_loader/localplatform/localplatformlinux.py59def _get_effective_user_group() -> str:CODE
LOWbackend/decky_loader/localplatform/localplatform.py44def get_use_cef_close_workaround() -> bool:CODE
LOWbackend/decky_loader/localplatform/localsocket.py33 async def _open_socket_if_not_exists(self):CODE
LOWbackend/decky_loader/localplatform/localsocket.py147 async def _open_socket_if_not_exists(self):CODE
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMbackend/main.py1# This file is needed to make the relative imports in decky_loader/ work properly.COMMENT
MEDIUMbackend/decky_loader/settings.py18 #Create the folder with the correct permissionCOMMENT
MEDIUMscripts/collect-debug-info.sh3# Define the directory to scanCOMMENT
MEDIUMscripts/plugin-info.sh4# Define the directory to scanCOMMENT
Cross-Language Confusion2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHbackend/decky_loader/injector.py84 res = await self.evaluate_js(f"window['{var_name}'] !== null && window['{var_name}'] !== undefined", False, manaCODE
HIGHbackend/decky_loader/utilities.py445 return (GamepadNavTree?.m_context?.m_controller || FocusNavController)?.m_ActiveContext?CODE
Redundant / Tautological Comments6 hits · 9 pts
SeverityFileLineSnippetContext
LOWbackend/decky_loader/browser.py179 # Check if plugin was already installed before thisCOMMENT
LOWbackend/decky_loader/browser.py194 # Check if the file is a local file or a URLCOMMENT
LOWscripts/deckdebug.sh28# Check if the dependencies are installedCOMMENT
LOWscripts/tasks.sh25# Check if the dependencies are installedCOMMENT
LOWscripts/tasks.sh84 # Check if the task has either a command or script.COMMENT
LOWscripts/plugin-info.sh9 # Check if package.json exists in the subdirectoryCOMMENT
Unused Imports7 hits · 7 pts
SeverityFileLineSnippetContext
LOWbackend/decky_loader/updater.py1CODE
LOWbackend/decky_loader/loader.py1CODE
LOWbackend/decky_loader/utilities.py1CODE
LOWbackend/decky_loader/plugin/sandboxed_plugin.py17CODE
LOWbackend/decky_loader/localplatform/localplatform.py8CODE
LOWbackend/decky_loader/localplatform/localplatform.py11CODE
LOWbackend/decky_loader/localplatform/localplatform.py14CODE
Deep Nesting7 hits · 7 pts
SeverityFileLineSnippetContext
LOWbackend/decky_loader/browser.py66CODE
LOWbackend/decky_loader/browser.py173CODE
LOWbackend/decky_loader/utilities.py315CODE
LOWbackend/decky_loader/main.py185CODE
LOWbackend/decky_loader/helpers.py110CODE
LOWbackend/decky_loader/plugin/plugin.py91CODE
LOW…ckend/decky_loader/localplatform/localplatformlinux.py87CODE
Over-Commented Block3 hits · 3 pts
SeverityFileLineSnippetContext
LOWfrontend/src/router-hook.tsx161 // Object.setPrototypeOf(stateNodeClone, Object.getPrototypeOf(routerNode.stateNode));COMMENT
LOWbackend/decky_loader/utilities.py181 del headers[header]COMMENT
LOWscripts/tasks.sh1#!/usr/bin/env bashCOMMENT
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWbackend/decky_loader/utilities.py315CODE