AI Slop Code Risk Monitor

eggjs/egg

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

🥚🥚🥚🥚 Born to build better enterprise frameworks and apps with Node.js & Koa. https://codewiki.google/github.com/eggjs/egg

0.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for eggjs/egg, a TypeScript project with 18,984 GitHub stars. SynthScan examined 271,159 lines of code across 2579 source files, recording 153 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 0.8 (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.8
Adjusted Signal
0.8
Raw Pattern Score
100%
Time Factor
2026-10-23
Last Push
19.0K
Stars
TypeScript
Language
271.2K
Lines of Code
2.6K
Files
153
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 3.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.7/100 · LOW

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

Agent Over-Engineering Ratio 1.2/100 · LOW

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

PR Review Velocity Impact 3.6/100 · LOW

Which changes need focused human review? 153 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 2HIGH 1MEDIUM 11LOW 139

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 153 distinct pattern matches across 11 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.

Over-Commented Block73 hits · 73 pts
SeverityFileLineSnippetContext
LOWvitest.config.ts41 // {COMMENT
LOWvitest.config.ts61 // decorators correctly. Requires @oxc-node/core >= 0.1.0, which fixes theCOMMENT
LOWtools/egg-bin/src/baseCommand.ts241 // and an ESM `module.register()` hook from a single `--import`, so when it isCOMMENT
LOWtools/egg-bundler/test/no-filesystem-scan.test.ts1import fs from 'node:fs/promises';COMMENT
LOWtools/egg-bundler/test/deterministic.test.ts21//COMMENT
LOWtools/egg-bundler/src/lib/prelude.ts241 // Call args captured at build can themselves be member-proxies — e.g. a model columnCOMMENT
LOWtools/egg-bundler/src/lib/EntryGenerator.ts381}COMMENT
LOWtools/egg-bundler/src/lib/EntryGenerator.ts481 // no servers/timers/connections), run the snapshotWillSerialize hooks to releaseCOMMENT
LOWtools/egg-bundler/src/lib/EntryGenerator.ts541 // eslint-disable-next-line no-consoleCOMMENT
LOWplugins/watcher/src/lib/event-sources/development.ts81 // path: '/Users/mk2/git/changing/test/fixtures/foo.js',COMMENT
LOWplugins/security/test/benchmark/set_header.js61 console.log('\n setHeader() Benchmark\n node version: %s, date: %s\n Starting...', process.version, Date());COMMENT
LOWplugins/security/test/benchmark/cidr_subnet.js41 benchmarks.log();COMMENT
LOWplugins/redis/src/config/config.default.ts81export default {COMMENT
LOWplugins/redis/src/config/config.default.ts101 // port: 'port',COMMENT
LOWplugins/redis/src/config/config.default.ts121 // db: 'db',COMMENT
LOWplugins/development/test/development-ts.test.ts21 // for debounceCOMMENT
LOWplugins/mock/test/inject_ctx.test.ts81 .expect('stdout', /"before each" hook for "should not print"/)COMMENT
LOWplugins/mock/test/index.test-skip.ts1// import mm from '../index';COMMENT
LOWplugins/mock/test/index.test-skip.ts21COMMENT
LOWplugins/mock/test/index.test-skip.ts41COMMENT
LOWplugins/mock/test/index.test-skip.ts61// process.exit(1);COMMENT
LOWplugins/mock/test/mock_agent_httpclient.test.ts21 agent = (app as any).agent;COMMENT
LOWplugins/mock/test/mock_agent_httpclient.test.ts41 // agent.httpclient.once('response', function (result: any) {COMMENT
LOWplugins/mock/test/mock_agent_httpclient.test.ts61 // // assert.deepEqual(result.req.options, {COMMENT
LOWplugins/mock/test/mock_agent_httpclient.test.ts81COMMENT
LOWplugins/mock/test/mock_agent_httpclient.test.ts101 // done();COMMENT
LOWplugins/mock/test/mock_agent_httpclient.test.ts121 // agent.httpclient.once('response', function (result: any) {COMMENT
LOWplugins/mock/src/typings/index.d.ts1// make sure to import egg typings and let typescript know about itCOMMENT
LOWplugins/mock/src/lib/utils.ts41 return options;COMMENT
LOWplugins/mock/src/lib/utils.ts61// if (!src) {COMMENT
LOWplugins/mock/src/lib/utils.ts81// return dest;COMMENT
LOWplugins/mock/src/lib/prerequire.ts1// const debug = require('util').debuglog('egg-mock/prerequire');COMMENT
LOWplugins/mock/src/lib/prerequire.ts21// require(filepath);COMMENT
LOWtegg/README.md461COMMENT
LOWtegg/standalone/standalone/src/ModuleConfig.ts1// import 'egg';COMMENT
LOWtegg/plugin/controller/src/lib/impl/mcp/EggMcpRouter.ts561COMMENT
LOWtegg/plugin/tegg/test/BundledAppBoot.test.ts101 // The injected manifest VFS is the loader's fs, exactly like a bundled app.COMMENT
LOWtegg/plugin/tegg/test/app/extend/context.test.ts101 });COMMENT
LOWtegg/plugin/mcp-proxy/test/client-field-shadow.test.ts1import assert from 'node:assert';COMMENT
LOWtegg/plugin/orm/src/lib/DataSourceManager.ts1// exports.orm = {COMMENT
LOWpackages/cluster/test/options.test.ts321COMMENT
LOWpackages/cluster/test/master/messenger.test.ts61 await app.ready();COMMENT
LOWpackages/cluster/test/master/messenger.test.ts81 // 'ignore',COMMENT
LOWpackages/egg/test/typescript.test.ts21 // .expect('code', 0)COMMENT
LOWpackages/egg/test/typescript.test.ts61 describe('type check', () => {COMMENT
LOWpackages/egg/test/typescript.test.ts81 // await coffee.fork(COMMENT
LOWpackages/egg/test/app/extend/application.test.ts181 });COMMENT
LOWpackages/egg/test/app/extend/context.test.ts301 // await scheduler.wait(1200);COMMENT
LOWpackages/egg/test/app/extend/context.test.ts321 it('should use custom task name first', async () => {COMMENT
LOWpackages/egg/src/lib/application.ts121 //COMMENT
LOWpackages/egg/src/lib/egg.ts701 }COMMENT
LOWpackages/egg/src/lib/egg.ts721 // `npm ci` into the output dir), ORCOMMENT
LOWpackages/core/test/egg.test.ts241 // app.once('ready_timeout', id => {COMMENT
LOWpackages/core/test/egg.test.ts281 // done = pending(2, done);COMMENT
LOWpackages/core/test/egg.test.ts301 // done,COMMENT
LOWpackages/core/test/egg.test.ts321 await promise;COMMENT
LOWpackages/core/test/egg.test.ts341 // });COMMENT
LOWpackages/core/test/egg.test.ts441COMMENT
LOWpackages/core/test/egg.test.ts461 // return wrapped(true).then(res => assert(res === true));COMMENT
LOWpackages/core/test/egg.test.ts481 // const arr = [ fn(1), fn(2) ];COMMENT
13 more matches not shown…
Hyper-Verbose Identifiers50 hits · 52 pts
SeverityFileLineSnippetContext
LOWtools/egg-bin/src/bundleOptions.ts35export async function getBundleFrameworkSpecifier(baseDir: string, framework?: string): Promise<string> {CODE
LOWtools/egg-bundler/test/ManifestLoader.test.ts129async function createInstalledFrameworkFixture(CODE
LOWtools/egg-bundler/test/deterministic.test.ts94function makeDeterministicMockBuild(outputDir: string): BuildFunc {CODE
LOWtools/egg-bundler/test/deterministic.test.ts128function normalizeWorkerAppBaseDir(source: string, baseDir: string): string {CODE
LOWtools/egg-bundler/src/compat/leoric/index.ts33export function resolveLeoricSnapshotCompatibility(CODE
LOWtools/egg-bundler/src/lib/prelude.ts125export async function resolveSnapshotLazyModules(baseDir: string): Promise<string[]> {CODE
LOWtools/egg-bundler/src/lib/prelude.ts178(function eggBundlerSnapshotPrelude() {CODE
LOWtools/egg-bundler/src/lib/prelude.ts542export function injectExternalRequireLazyHook(content: string): ExternalRequireInjectionResult {CODE
LOWtools/egg-bundler/src/lib/frameworkSpecifier.ts6function isPathLikeFrameworkSpecifier(framework: string): boolean {CODE
LOWtools/egg-bundler/src/lib/frameworkSpecifier.ts23export function assertFrameworkPackageSpecifier(framework: string): void {CODE
LOWtools/egg-bundler/src/lib/Bundler.ts97function validateModulePackAliasSpecifier(filepath: string, specifier: string): void {CODE
LOW⚡tools/egg-bundler/src/lib/Bundler.ts122function normalizeRuntimeAssetRoot(filepath: string, root: string): string {CODE
LOW⚡tools/egg-bundler/src/lib/Bundler.ts126function normalizeRuntimeAssetRoots(filepath: string, roots: readonly string[]): readonly string[] {CODE
LOW⚡tools/egg-bundler/src/lib/Bundler.ts130function normalizeRuntimeAssetForceCopyDir(filepath: string, dir: string): string {CODE
LOW⚡tools/egg-bundler/src/lib/Bundler.ts134function normalizeRuntimeAssetForceCopyDirs(filepath: string, dirs: readonly string[]): readonly string[] {CODE
LOWtools/egg-bundler/src/lib/Bundler.ts160function parseModuleBundlePackConfig(CODE
LOWtools/egg-bundler/src/lib/Bundler.ts197function parseModuleBundleRuntimeAssetsConfig(CODE
LOWtools/egg-bundler/src/lib/Bundler.ts304export function sanitizeBundleOutputRelativePath(relativeName: string): string {CODE
LOW…ins/development/src/app/middleware/egg_loader_trace.ts10export default function createEggLoaderTraceMiddleware(_options: unknown, app: Application): MiddlewareFunc {CODE
LOWtegg/core/runtime/src/model/EggObject.ts12export function eggObjectLifecycleUtilFromBag(bag: TeggScopeBag): LifecycleUtil<EggObjectLifeCycleContext, EggObject> {CODE
LOWtegg/core/runtime/src/model/LoadUnitInstance.ts13export function loadUnitInstanceLifecycleUtilFromBag(CODE
LOWtegg/core/runtime/src/model/EggContext.ts13export function eggContextLifecycleUtilFromBag(CODE
LOW…/core/controller-decorator/src/decorator/Middleware.ts18function isAopTypeOrMiddlewareType(CODE
LOW…/core/controller-decorator/src/decorator/Middleware.ts32 function functionTypeClassMiddleware(constructor: EggProtoImplClass) {CODE
LOW…/core/controller-decorator/src/decorator/Middleware.ts44 function functionTypeMethodMiddleware(target: any, propertyKey: PropertyKey) {CODE
LOWtegg/core/loader/src/TeggManifestLoaderFS.ts41export function createTeggManifestLoaderFS(CODE
LOW…ecorator/src/qualifier/ChatCheckpointSaverQualifier.ts6export function ChatCheckpointSaverQualifier(CODE
LOWtegg/core/metadata/src/model/LoadUnit.ts12export function loadUnitLifecycleUtilFromBag(bag: TeggScopeBag): LifecycleUtil<LoadUnitLifecycleContext, LoadUnit> {CODE
LOWtegg/core/metadata/src/model/EggPrototype.ts17export function eggPrototypeLifecycleUtilFromBag(CODE
LOWtegg/plugin/schedule/src/lib/EggScheduleAdapter.ts9export function eggScheduleAdapterFactory(CODE
LOWscripts/utils.js54export function assertValidNpmPackageName(name) {CODE
LOWscripts/utils.js169export function resolveWorkspaceProtocols(manifest, { versionMap, catalogs }) {CODE
LOWscripts/utils.js205export function applyPublishConfigOverrides(manifest) {CODE
LOWscripts/ci-test-benchmark/cli.js111function normalizePackageManagerArgv(argv) {CODE
LOWpackages/core/src/loader/egg_loader.ts2046function controllerMethodToMiddleware(Controller: typeof BaseContextClass, key: string) {CODE
LOWpackages/core/src/loader/egg_loader.ts2047 return function classControllerMiddleware(this: Context, ...args: unknown[]) {CODE
LOWpackages/core/src/loader/egg_loader.ts2085function objectFunctionToMiddleware(func: Fun) {CODE
LOWpackages/core/src/loader/egg_loader.ts2086 async function objectControllerMiddleware(this: Context, ...args: unknown[]) {CODE
LOWpackages/core/src/loader/file_loader.ts66function getDefaultFileLoaderMatch(): string[] {CODE
LOWpackages/loader-fs/src/manifest_loader_fs.ts312function normalizeAlternationGroups(pattern: string): string {CODE
LOWpackages/loader-fs/src/index.ts30function isEnvironmentTeardownError(e: unknown): boolean {CODE
LOWpackages/logger/src/utils.ts97export function defaultContextPaddingMessage(ctx: Record<string, unknown>): string {CODE
LOWpackages/supertest/test/supertest.test.ts20function shouldIncludeStackWithThisFile(err: Error) {CODE
LOWpackages/utils/src/import.ts164function tryToResolveByDirnameFromPackage(dirname: string, pkg: any): string | undefined {CODE
LOWpackages/utils/src/import.ts289function tryToResolveFromAbsoluteFile(filepath: string): string | undefined {CODE
LOWpackages/utils/src/import.ts459function normalizeBundleModulePath(filepath: string): string {CODE
LOWpackages/skills/egg-core/references/proto.md85export class RequestHandler {CODE
LOWpackages/cookies/src/cookies.ts287function parseChromiumAndMajorVersion(userAgent: string): ParseChromiumResult {CODE
LOWpackages/cookies/src/cookies.ts327function ignoreCookiesByNameAndPath(cookies: string[], name: string, path: string | null | undefined) {CODE
LOWpackages/koa/src/request.ts644function splitCommaSeparatedValues(value: string, limit?: number): string[] {CODE
Hallucination Indicators2 hits · 30 pts
SeverityFileLineSnippetContext
CRITICALpackages/egg/test/lib/core/logger.test.ts120 // app.config.logger.buffer.should.equal(false);COMMENT
CRITICALpackages/egg/test/lib/core/logger.test.ts144 // app.config.logger.buffer.should.equal(true);COMMENT
Structural Annotation Overuse13 hits · 20 pts
SeverityFileLineSnippetContext
LOW…evelopment/src/app/middleware/loader_trace_template.ts20 // Step 2: 载入数据源COMMENT
LOWpackages/skills/PLAN.md213 // Step 1: 加载 skill 内容作为 system prompt,向被测 LLM 提问COMMENT
LOWpackages/skills/PLAN.md231 // Step 2: 用 Judge LLM 对回答逐项评分COMMENT
LOWpackages/skills/egg-controller/references/schedule.md9## Step 1: 创建定时任务COMMENT
LOWpackages/skills/egg-controller/references/schedule.md74## Step 2: 选择工作模式COMMENT
LOWpackages/skills/egg-controller/references/schedule.md81## Step 3: 配置运行参数COMMENT
LOWpackages/skills/egg-core/SKILL.md11### Step 1: 代码写在 module 中COMMENT
LOWpackages/skills/egg-core/SKILL.md102### Step 2: 用 Proto 实现 ServiceCOMMENT
LOWpackages/skills/egg-core/SKILL.md148### Step 3: 通过 Inject 使用 ServiceCOMMENT
LOWpackages/skills/egg-core/references/dynamic-inject.md8## Step 1: 定义抽象类和类型枚举COMMENT
LOWpackages/skills/egg-core/references/dynamic-inject.md29## Step 2: 创建自定义装饰器COMMENT
LOWpackages/skills/egg-core/references/dynamic-inject.md50## Step 3: 实现抽象类COMMENT
LOWpackages/skills/egg-core/references/dynamic-inject.md70## Step 4: 动态获取实现COMMENT
Decorative Section Separators4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMtools/egg-bundler/src/lib/EntryGenerator.ts383// ── decorator file-path correction ──────────────────────────────────────────COMMENT
MEDIUMtools/egg-bundler/src/lib/EntryGenerator.ts478 // ── snapshot build mode ─────────────────────────────────────────────────COMMENT
MEDIUMtools/egg-bundler/src/lib/EntryGenerator.ts529 // ── snapshot restore main ──────────────────────────────────────────COMMENT
MEDIUMtools/egg-bundler/src/lib/EntryGenerator.ts609 // ── normal mode ─────────────────────────────────────────────────────────COMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMtools/egg-bundler/src/lib/Bundler.ts540 // loop stays robust if it ever moves) and, in the same read/write, prepend theCOMMENT
MEDIUMtools/scripts/src/commands/start.ts239 // it makes env big but more robustCOMMENT
MEDIUMpackages/supertest/test/supertest.test.ts442 // "socket hang up". Assert the family so the test is robust regardless of whatCOMMENT
Modern AI Meta-Vocabulary3 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtools/create-egg/README.md61Check out Awesome Egg.js for [community maintained templates](https://github.com/eggjs/awesome-egg#boilerplates) that inCODE
MEDIUMtools/create-egg/README.md61Check out Awesome Egg.js for [community maintained templates](https://github.com/eggjs/awesome-egg#boilerplates) that inCODE
MEDIUMsite/docs/advanced/framework.md49Just use [egg-boilerplate-framework](https://github.com/eggjs/egg-boilerplate-framework) to generates a scaffold for youCODE
Magic Placeholder Names1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHsite/docs/zh-CN/core/deployment.md170 secret: '<YOUR_SECRET>',CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/release.yml135 # Create the tag locally if it doesn't existCOMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWpackages/supertest/README.md158 expect(response.body.email).toEqual('foo@bar.com');CODE
LOWpackages/supertest/README.md172 expect(response.body.email).toEqual('foo@bar.com');CODE
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOW…evelopment/src/app/middleware/loader_trace_template.ts20 // Step 2: 载入数据源COMMENT