AI Slop Code Risk Monitor

libnoname/noname

SlopCodeMonitor badge for libnoname/noname Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).
2.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for libnoname/noname, a JavaScript project with 5,218 GitHub stars. SynthScan examined 751,735 lines of code across 930 source files, recording 219 pattern matches distributed across 4 syntactic categories. The legacy adjusted pattern signal is 2.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.

2.4
Adjusted Signal
2.4
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
5.2K
Stars
JavaScript
Language
751.7K
Lines of Code
930
Files
219
Pattern Hits
2026-10-31
Scan Date
0.17
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 0.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 10.8/100 · LOW

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

Agent Over-Engineering Ratio 0.0/100 · LOW

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

PR Review Velocity Impact 10.1/100 · LOW

Which changes need focused human review? 219 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 153HIGH 1MEDIUM 0LOW 65

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 219 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 Indicators153 hits · 1710 pts
SeverityFileLineSnippetContext
CRITICALapps/core/card/sp.js197 return lib.card.shandian.ai.result.target(player, target);CODE
CRITICALapps/core/card/standard.js2389 max = Math.max(max, lib.card.shunshou.ai.result.target(player, cur) * get.attitude(player, cur));CODE
CRITICALapps/core/card/standard.js2631 return lib.card.shunshou_copy.ai.result.target(CODE
CRITICALapps/core/card/standard.js2642 return lib.card.shunshou_copy.ai.result.player(CODE
CRITICALapps/core/card/standard.js2748 max = Math.max(max, lib.card.guohe.ai.result.target(player, current) * get.attitude(player, current));CODE
CRITICALapps/core/card/standard.js2955 return lib.card.guohe_copy.ai.result.target(CODE
CRITICALapps/core/card/huodong.js658 return lib.card.shandian.ai.result.target(player, target);CODE
CRITICALapps/core/card/zhulu.js625 return lib.card.nvzhuang.ai.equipValue.apply(this, arguments);CODE
CRITICALapps/core/card/zhulu.js747 return lib.card.jinhe.ai.equipValue.apply(this, arguments);CODE
CRITICALapps/core/card/yingbian.js113 max = Math.max(max, lib.card.shunshou.ai.result.target(player, cur) * get.attitude(player, cur));CODE
CRITICALapps/core/card/yingbian.js115 max = Math.max(max, lib.card.guohe.ai.result.target(player, cur) * get.attitude(player, cur));CODE
CRITICALapps/core/extension/杀海拾遗/card/yunchou/card.js495 return lib.card.shandian.ai.result.target(player, target);CODE
CRITICALapps/core/extension/杀海拾遗/card/yunchou/card.js565 return lib.card.shandian.ai.result.target(player, target);CODE
CRITICALapps/core/extension/杀海拾遗/character/ow/skill.js1719 var num = lib.skill.bingqiang.ai.result.playerx(player, players[i]);CODE
CRITICALapps/core/extension/杀海拾遗/character/ow/skill.js1776 var num = lib.skill.bingqiang.ai.result.playerx(player, target);CODE
CRITICALapps/core/extension/杀海拾遗/character/hearth/skill.js6569 player.storage.mdzhoufu2.clone.classList.add("thrownhighlight");CODE
CRITICALapps/core/extension/杀海拾遗/character/hearth/card.js759 return lib.card.shunshou.ai.result.player(player, target) - 3 / game.countPlayer();CODE
CRITICALapps/core/extension/杀海拾遗/character/hearth/card.js762 return lib.card.shunshou.ai.result.target(player, target);CODE
CRITICAL⚡apps/core/mode/versus.js2194 // this.dialog.versus_only_zhu.parentNode.classList.remove('disabled');COMMENT
CRITICAL⚡apps/core/mode/versus.js2195 this.dialog.versus_main_zhu.parentNode.classList.remove("disabled");CODE
CRITICAL⚡apps/core/mode/versus.js2197 // this.dialog.versus_only_zhu.parentNode.classList.add('disabled');COMMENT
CRITICAL⚡apps/core/mode/versus.js2198 this.dialog.versus_main_zhu.parentNode.classList.add("disabled");CODE
CRITICAL⚡apps/core/mode/versus.js2214 // this.dialog.versus_random_seat.parentNode.classList.add('disabled');COMMENT
CRITICAL⚡apps/core/mode/versus.js2217 // this.dialog.versus_random_seat.parentNode.classList.remove('disabled');COMMENT
CRITICAL⚡apps/core/mode/versus.js2219 // this.dialog.versus_cross_seat.parentNode.classList.add('disabled');COMMENT
CRITICAL⚡apps/core/mode/versus.js2222 // this.dialog.versus_cross_seat.parentNode.classList.remove('disabled');COMMENT
CRITICALapps/core/mode/versus.js5730 return lib.skill.jianshoudaiyuan.mod.aiValue.apply(this, arguments);CODE
CRITICALapps/core/mode/boss.js2549 game.boss.node.action.classList.add("freecolor");CODE
CRITICALapps/core/mode/boss.js5723 return lib.skill.sanshou_skill.ai.effect.target(card, player, target);CODE
CRITICALapps/core/mode/boss.js6462 // game.boss.nextSeat.nextSeat.nextSeat.changeSeat(3);COMMENT
CRITICALapps/core/mode/boss.js6463 // game.boss.nextSeat.nextSeat.nextSeat.nextSeat.changeSeat(4);COMMENT
CRITICALapps/core/mode/boss.js8642 return lib.skill.tengjia1.ai.effect.target.apply(this, arguments);CODE
CRITICALapps/core/mode/boss.js8671 return lib.skill.tengjia2.ai.effect.target.apply(this, arguments);CODE
CRITICALapps/core/mode/doudizhu.js783 game.zhu.node.identity.classList.remove("guessing");CODE
CRITICALapps/core/mode/doudizhu.js785 game.me.node.identity.classList.remove("guessing");CODE
CRITICALapps/core/mode/doudizhu.js1109 game.zhu.node.identity.classList.remove("guessing");CODE
CRITICALapps/core/mode/doudizhu.js1111 game.me.node.identity.classList.remove("guessing");CODE
CRITICALapps/core/mode/chess.js1354 if (lib.skill._chessmove.ai.result.player(player) <= 0) {CODE
CRITICALapps/core/mode/chess.js4166 dialog.choice.main_zhu.parentNode.classList.remove("disabled");CODE
CRITICALapps/core/mode/chess.js4168 dialog.choice.main_zhu.parentNode.classList.add("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4184 dialog.choice.noreplace_end.parentNode.classList.add("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4185 dialog.choice.replace_number.parentNode.classList.add("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4186 dialog.choice.choice_number.parentNode.classList.remove("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4188 dialog.choice.noreplace_end.parentNode.classList.remove("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4189 dialog.choice.replace_number.parentNode.classList.remove("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4190 dialog.choice.choice_number.parentNode.classList.add("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4257 dialog.choice.main_zhu.parentNode.classList.remove("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4259 dialog.choice.main_zhu.parentNode.classList.add("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4262 dialog.choice.noreplace_end.parentNode.classList.add("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4263 dialog.choice.replace_number.parentNode.classList.add("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4264 dialog.choice.choice_number.parentNode.classList.remove("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4266 dialog.choice.noreplace_end.parentNode.classList.remove("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4267 dialog.choice.replace_number.parentNode.classList.remove("disabled");CODE
CRITICAL⚡apps/core/mode/chess.js4268 dialog.choice.choice_number.parentNode.classList.add("disabled");CODE
CRITICALapps/core/mode/chess.js5717 const x = lib.skill._chessmove.ai.result.playerx(player);CODE
CRITICALapps/core/mode/identity.js218 for (const list of lib.config.mode_config.identity.identity.slice(1)) {CODE
CRITICALapps/core/mode/identity.js243 for (const list of lib.config.mode_config.identity.identity.slice(1)) {CODE
CRITICALapps/core/mode/identity.js1051 game.me.node.identity.classList.remove("guessing");CODE
CRITICALapps/core/mode/identity.js1272 game.me.node.identity.classList.remove("guessing");CODE
CRITICALapps/core/mode/identity.js1460 game.me.node.identity.classList.remove("guessing");CODE
93 more matches not shown…
Over-Commented Block62 hits · 58 pts
SeverityFileLineSnippetContext
LOWpackages/jit/src/service-worker/compile-strategy.ts61// * ```jsCOMMENT
LOWapps/core/extension/玩点论杀/card/list.js1const list = [COMMENT
LOWapps/core/extension/玩点论杀/card/list.js41 // ["heart", 11, "yangjingxurui"],COMMENT
LOWapps/core/extension/杀海拾遗/card/zhenfa/list.js21COMMENT
LOWapps/core/extension/杀海拾遗/card/zhenfa/list.js41COMMENT
LOWapps/core/extension/杀海拾遗/main/arenaReady.js1import { lib, game, ui, get, ai, _status } from "./utils.js";COMMENT
LOWapps/core/mode/boss.js61 // var bosslistlinks={};COMMENT
LOWapps/core/mode/chess.js721 // }COMMENT
LOWapps/core/mode/chess.js4301 // _status.event.dialog.close();COMMENT
LOWapps/core/mode/tafang.js741 ui.me.querySelector(".fakeme.player").show();COMMENT
LOWapps/core/character/refresh/skill.js12941 // var skills=game.expandSkills([skillx]);COMMENT
LOWapps/core/character/refresh/skill.js12961 // info.audioname2[name]=(skill+'_'+character);COMMENT
LOWapps/core/character/sixiang/skill.js6821 });COMMENT
LOWapps/core/character/sixiang/skill.js6841 }COMMENT
LOWapps/core/character/sixiang/skill.js6861 selectTarget() {COMMENT
LOWapps/core/character/sixiang/characterTitle.js1export default {COMMENT
LOWapps/core/layout/long2/layout.css181#arena.choose-character > .dialog.scroll3 {COMMENT
LOWapps/core/layout/nova/layout.css181#arena.choose-character > .dialog.scroll3 {COMMENT
LOWapps/core/layout/default/layout.css161}COMMENT
LOWapps/core/layout/default/layout.css3621#arena.selecting:not(.video) .player[data-position="0"] .card:not(.selectable) > .info,COMMENT
LOWapps/core/layout/default/layout.css3661#window:not(.nopointer) .textlink,COMMENT
LOWapps/core/layout/default/layout.css5101 border-radius: 4px;COMMENT
LOWapps/core/layout/default/layout.css5121#window[data-radius_size="reduce"] .player::after,COMMENT
LOWapps/core/layout/default/layout.css5141#window[data-radius_size="off"] .player,COMMENT
LOWapps/core/layout/default/layout.css5161#window[data-radius_size="increase"] .control,COMMENT
LOWapps/core/typings/windowEx.d.ts21 // /** 游戏懒加载资源列表(外部扩展资源列表,待验证) */COMMENT
LOWapps/core/noname/init/cordova.js121 // }COMMENT
LOWapps/core/noname/init/node.js21 } catch {COMMENT
LOWapps/core/noname/init/node.js41 // // 使用ts compiler对ts文件进行编译COMMENT
LOWapps/core/noname/ui/click/index.js841 }COMMENT
LOWapps/core/noname/ui/click/index.js861 // node.show();COMMENT
LOWapps/core/noname/ui/click/index.js1901 // var exy=_status.lastdragchange[i]._lastdragchange;COMMENT
LOWapps/core/noname/ui/create/index.js1141 #skillRegsCache = new Map();COMMENT
LOWapps/core/noname/ui/create/index.js2301 // lib.setPressure(ui.window,ui.click.pressurepause);COMMENT
LOWapps/core/noname/ui/create/index.js3241 node2.innerHTML = "";COMMENT
LOWapps/core/noname/ui/create/menu/startMenu.js141 } else if (value.restart) {COMMENT
LOWapps/core/noname/ui/create/menu/pages/exetensionMenu.js461 // proexport();COMMENT
LOWapps/core/noname/ui/create/menu/pages/optionsMenu.js501 // if(expanded){COMMENT
LOWapps/core/noname/ui/create/menu/pages/otherMenu.js601 // const game=window.game;COMMENT
LOWapps/core/noname/util/sandbox/sandbox.js1// 给扩展开发者的提示:COMMENT
LOWapps/core/noname/util/sandbox/sandbox.js101 * 对应 Proxy 的12种拦截器COMMENT
LOWapps/core/noname/util/sandbox/sandbox.js3501 Reflect.defineProperty(prototype, "constructor", descriptor);COMMENT
LOWapps/core/noname/util/sandbox/sandbox.js3521 // * @param {Window} globalCOMMENT
LOWapps/core/noname/get/index.js5381 // var storage=node.storage;COMMENT
LOWapps/core/noname/get/index.js7461 if ("zhuanhuanLimit" in info) {COMMENT
LOWapps/core/noname/library/index.js1121 // pressure_taptic:{COMMENT
LOWapps/core/noname/library/index.js1921 // item:{COMMENT
LOWapps/core/noname/library/index.js1961 // if(parseInt(ui.arena.dataset.number)>=7){COMMENT
LOWapps/core/noname/library/index.js1981 // game.saveConfig('background_color_music',color);COMMENT
LOWapps/core/noname/library/index.js5061 },COMMENT
LOWapps/core/noname/library/index.js5281 // for(var i=0;i<lib.config.hiddenCardPack.length;i++){COMMENT
LOWapps/core/noname/library/index.js5301 // }COMMENT
LOWapps/core/noname/library/index.js8301 }, 1000);COMMENT
LOWapps/core/noname/library/index.js8521 config: {COMMENT
LOWapps/core/noname/library/index.js8541 // random:'随机'COMMENT
LOWapps/core/noname/library/index.js8561 // '3':'3张',COMMENT
LOWapps/core/noname/library/index.js10241 visible_sxrm_connect_tag: "连接牌",COMMENT
LOWapps/core/noname/library/index.js10261 // newValue = newList.join("");COMMENT
LOWapps/core/noname/library/element/player.js15501 this.$throwordered(node, null, cardsetion);COMMENT
LOWapps/core/noname/library/element/player.js15521 }COMMENT
2 more matches not shown…
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHapps/core/noname/game/index.js5165 print() {CODE
Hyper-Verbose Identifiers3 hits · 3 pts
SeverityFileLineSnippetContext
LOWapps/core/mode/guozhan/src/patch/content.js329 function createChooseCharacterDialog() {CODE
LOWapps/core/noname/library/update.js547export async function getLatestVersionFromGitHub(owner = "libnoname", repo = "noname") {CODE
LOWapps/core/noname/library/fs/legacy.ts24export function installLegacyFileSystemAPI(game: LegacyFileSystemGame, fileSystem: FileSystem) {CODE