AI Slop Code Risk Monitor

marko-js/marko

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

A declarative, HTML-based language that makes building web apps fun

0.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for marko-js/marko, a JavaScript project with 14,468 GitHub stars. SynthScan examined 165,391 lines of code across 1983 source files, recording 127 pattern matches distributed across 7 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-31
Last Push
14.5K
Stars
JavaScript
Language
165.4K
Lines of Code
2.0K
Files
127
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.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

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

Agent Over-Engineering Ratio 3.0/100 · LOW

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

PR Review Velocity Impact 4.0/100 · LOW

Which changes need focused human review? 127 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 1MEDIUM 2LOW 124

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 127 distinct pattern matches across 7 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 Identifiers96 hits · 100 pts
SeverityFileLineSnippetContext
LOW.sizes/dom.js1685function syncControllableFormInput(el, hasChanged, onChange) {CODE
LOW.sizes/dom.js1906function queueCompleteAwaitCounter(tryBranch, awaitCounter) {CODE
LOW⚡packages/runtime-tags/src/html/attrs.ts554function escapeSingleQuotedAttrValue(value: string) {CODE
LOW⚡packages/runtime-tags/src/html/attrs.ts563function replaceUnsafeSingleQuoteAttrChar(match: string) {CODE
LOW⚡packages/runtime-tags/src/html/attrs.ts567export function escapeDoubleQuotedAttrValue(value: string) {CODE
LOW⚡packages/runtime-tags/src/html/attrs.ts576function replaceUnsafeDoubleQuoteAttrChar(match: string) {CODE
LOWpackages/runtime-tags/src/html/serializer.ts2512function stringEntriesToHeadersInit(entries: Iterable<[string, string]>) {CODE
LOWpackages/runtime-tags/src/html/writer.ts1542function renderReorderPlaceholders(CODE
LOW…es/runtime-tags/src/translator/visitors/placeholder.ts191function buildEscapedTextExpression(value: t.Expression): t.Expression {CODE
LOW…s/runtime-tags/src/translator/visitors/program/html.ts226function replaceRegisteredFunctionNode(node: t.Node) {CODE
LOW…s/runtime-tags/src/translator/visitors/program/html.ts244function registerFunctionDeclarations(body: t.Statement[]) {CODE
LOW…me-tags/src/translator/visitors/program/pre-analyze.ts72function splitStaticPlaceholderText(CODE
LOW…me-tags/src/translator/visitors/program/pre-analyze.ts394function buildChangeHandlerFunction(CODE
LOW…me-tags/src/translator/visitors/program/pre-analyze.ts417function ensureDestructuredChangeHandler(parent: t.NodePath<t.ObjectProperty>) {CODE
LOW…me-tags/src/translator/visitors/program/pre-analyze.ts491function moveElementDefaultsToConstTags(CODE
LOW…runtime-tags/src/translator/visitors/tag/custom-tag.ts352function buildLoadSetupVirtualModule(CODE
LOW…runtime-tags/src/translator/visitors/tag/custom-tag.ts364function buildLoadSignalVirtualModule(CODE
LOW…untime-tags/src/translator/visitors/tag/dynamic-tag.ts678function getDynamicTagInputBindings(tagExtra: t.MarkoTagExtra): Opt<Binding> {CODE
LOW…runtime-tags/src/translator/visitors/tag/native-tag.ts1337function getDOMControllableDefaultHelper(CODE
LOW…runtime-tags/src/translator/visitors/tag/native-tag.ts1451function assertValidNativeAttrName(CODE
LOW…runtime-tags/src/translator/visitors/tag/native-tag.ts1465function assertNativeAttrValueType(CODE
LOW…runtime-tags/src/translator/visitors/tag/native-tag.ts1594function assertOptionInSelectWithValue(tag: t.NodePath<t.MarkoTag>) {CODE
LOWpackages/runtime-tags/src/translator/core/if.ts278export function flattenTextOnlyConditional(rootTag: t.NodePath<t.MarkoTag>) {CODE
LOWpackages/runtime-tags/src/translator/core/if.ts376function assertHasPrecedingCondition(tag: t.NodePath<t.MarkoTag>) {CODE
LOWpackages/runtime-tags/src/translator/core/if.ts390function assertOptionalIfAttribute(tag: t.NodePath<t.MarkoTag>) {CODE
LOWpackages/runtime-tags/src/translator/core/style.ts133function createCustomPropertyNames(tag: t.NodePath<t.MarkoTag>) {CODE
LOWpackages/runtime-tags/src/translator/core/style.ts170function checkDynamicStylePlacement(tag: t.NodePath<t.MarkoTag>) {CODE
LOW…s/runtime-tags/src/translator/util/section-renderer.ts7export function getSectionRendererIdentifier(section: Section) {CODE
LOWpackages/runtime-tags/src/translator/util/scope-read.ts38export function createScopeReadExpression(CODE
LOW…ages/runtime-tags/src/translator/util/translate-var.ts275function toShorthandExcludedProperty(name: string) {CODE
LOW…untime-tags/src/translator/util/finalize-references.ts140function excludeAssignedChangeHandlers() {CODE
LOW…untime-tags/src/translator/util/finalize-references.ts505function resolveIntersectionSource(CODE
LOW…untime-tags/src/translator/util/finalize-references.ts746function resolveReferencedBindingsInFunction(CODE
LOW…untime-tags/src/translator/util/finalize-references.ts824function resolveReferencedBindings(CODE
LOW…untime-tags/src/translator/util/finalize-references.ts964function resolveExpressionReference(CODE
LOWpackages/runtime-tags/src/translator/util/branch-tag.ts44export function resumeOwnerByMarkerWhenUnconditional(CODE
LOWpackages/runtime-tags/src/translator/util/branch-tag.ts195export function forTypeToUnkeyedBranchRuntime(type: ForType) {CODE
LOWpackages/runtime-tags/src/translator/util/bindings.ts473export function getDebugNamesAsIdentifier(refs: ReferencedBindings) {CODE
LOWpackages/runtime-tags/src/translator/util/bindings.ts518export function hasNonConstantPropertyAlias(ref: Binding) {CODE
LOW…src/translator/util/get-declared-binding-expression.ts15export function getDeclaredBindingExpression(CODE
LOW…ckages/runtime-tags/src/translator/util/write-guard.ts212function getOrHoistSectionGuard(CODE
LOW…ckages/runtime-tags/src/translator/util/params-tree.ts108function hasSupersetExcludeProperties(CODE
LOW…es/runtime-tags/src/translator/util/translate-attrs.ts167export function getTranslatedBodyContentProperty(CODE
LOW…es/runtime-tags/src/translator/util/translate-attrs.ts177export function addDynamicAttrTagStatements(CODE
LOWpackages/runtime-tags/src/translator/util/assert.ts171function buildUnsupportedAttrsError(CODE
LOW…ges/runtime-tags/src/translator/util/scope-accessor.ts45export function getScopeOffsetAccessorLiteral(CODE
LOW…ges/runtime-tags/src/translator/util/scope-accessor.ts139export function getClosureAccessorLiteral(binding: Binding) {CODE
LOW…ges/runtime-tags/src/translator/util/scope-accessor.ts162function getSectionInstancesAccessor(section: Section) {CODE
LOW…ges/runtime-tags/src/translator/util/scope-accessor.ts171export function getSectionInstancesAccessorLiteral(section: Section) {CODE
LOWpackages/runtime-tags/src/translator/util/known-tag.ts954function collectAttrTagReferenceNodes(CODE
LOW…ages/runtime-tags/src/translator/util/solve-reasons.ts126function addIntersectionMemberReason(CODE
LOW…ages/runtime-tags/src/translator/util/tag-name-type.ts331export function isUnresolvedKnownWrongTag(tag: t.NodePath<t.MarkoTag>) {CODE
LOW…time-tags/src/translator/util/nested-attribute-tags.ts175function hasRepeatedDynamicAttrTags(attrTags: t.NodePath<t.MarkoTag>[]) {CODE
LOWpackages/runtime-tags/src/translator/util/tag-import.ts28export function importOrSelfReferenceName(CODE
LOW…s/runtime-tags/src/translator/util/to-property-name.ts3export function getMemberExpressionPropString(CODE
LOW…s/runtime-tags/src/translator/util/to-property-name.ts29export function isValidPropertyIdentifier(name: string) {CODE
LOW…me-tags/src/translator/util/is-only-child-in-parent.ts15export function getOnlyChildParentTagName(tag: t.NodePath<t.MarkoTag>) {CODE
LOWpackages/runtime-tags/src/translator/util/references.ts404function trackReferencesForBinding(babelBinding: t.Binding, binding: Binding) {CODE
LOWpackages/runtime-tags/src/translator/util/references.ts608function createBindingsAndTrackReferences(CODE
LOWpackages/runtime-tags/src/translator/util/references.ts1388export function getReferencedBindingsInFunction(extra: t.FunctionExtra) {CODE
36 more matches not shown…
Fake / Example Data14 hits · 14 pts
SeverityFileLineSnippetContext
LOWpackages/runtime-tags/src/translator/core/try.ts165 if (placeholderSection) importRuntimeFeature("placeholder");CODE
LOWpackages/runtime-tags/src/translator/util/runtime.ts121 "placeholder",CODE
LOW…-reordered-placeholder/__snapshots__/writes.debug.html9 "value": "placeholder"CODE
LOW…-reordered-placeholder/__snapshots__/writes.debug.html12 "value": "placeholder"CODE
LOW…ordered-placeholder/__snapshots__/html.bundle.debug.js42 (0, import_attr_tag.a)("placeholder", { "renderBody": (out) => {CODE
LOW…ordered-placeholder/__snapshots__/html.bundle.debug.js43 (0, import_render_tag.default)(_marko_template$1, { "value": "placeholder" }, out, _componentDef, "1");CODE
LOW…ild-reordered-placeholder/__snapshots__/html.bundle.js33 (0, import_attr_tag.a)("placeholder", { "renderBody": (out) => {CODE
LOW…ild-reordered-placeholder/__snapshots__/html.bundle.js34 (0, import_render_tag.default)(_marko_template$1, { "value": "placeholder" }, out, _componentDef, "1");CODE
LOW…-child-reordered-placeholder/__snapshots__/writes.html9 "value": "placeholder"CODE
LOW…-child-reordered-placeholder/__snapshots__/writes.html12 "value": "placeholder"CODE
LOW…eordered-placeholder/__snapshots__/dom.bundle.debug.js31 (0, import_attr_tag.a)("placeholder", { "renderBody": (out) => {CODE
LOW…eordered-placeholder/__snapshots__/dom.bundle.debug.js32 (0, import_render_tag.default)(_marko_template$1, { "value": "placeholder" }, out, _componentDef, "1");CODE
LOWpackages/runtime-class/docs/syntax.md475 <p>Lorem ipsum....</p>CODE
LOWpackages/compiler/src/taglib/marko-html.json2086 "name": "placeholder"CODE
Over-Commented Block11 hits · 11 pts
SeverityFileLineSnippetContext
LOWscripts/test-parallel.js1// Runs the mocha suite across CPU cores. A few giant fixture-driven suitesCOMMENT
LOW…untime-tags/src/translator/util/constants/slot-kind.ts1// A binding's value.COMMENT
LOW…to-class/components/split-display/component-browser.js1// Split component (browser class makes it split / attach-only as a hydrationCOMMENT
LOWpackages/runtime-class/CHANGELOG.md5881 // {COMMENT
LOWpackages/runtime-class/index.d.ts221 replace(target: ChildNode): this;COMMENT
LOWpackages/runtime-class/browser-refresh.js1// This is a noop in Marko 5 and should eventually be removed.COMMENT
LOW…ages/runtime-class/test/components-pages/index.test.js41 var browser = createBrowserWithMarko(__dirname, html, {COMMENT
LOWpackages/runtime-class/docs/compiler.md241COMMENT
LOWpackages/runtime-class/src/runtime/vdom/VNode.js81 },COMMENT
LOW…ages/compiler/src/taglib/loader/loadTaglibFromProps.js121 taglib.addAttribute(attr);COMMENT
LOW…ages/compiler/src/taglib/loader/loadTaglibFromProps.js161 // will be the tag definition. Example:COMMENT
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHpackages/compiler/test/compile.test.js132 print("<foo<string> <T>|x: T|>${x}</foo>\n<type-arg<string>/>", {CODE
Modern AI Meta-Vocabulary2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMpackages/runtime-tags/CHANGELOG.md2734- [#2783](https://github.com/marko-js/marko/pull/2783) [`506539c`](https://github.com/marko-js/marko/commit/506539cbb17cCODE
MEDIUMpackages/runtime-class/CHANGELOG.md1115- [#2783](https://github.com/marko-js/marko/pull/2783) [`506539c`](https://github.com/marko-js/marko/commit/506539cbb17cCODE
Structural Annotation Overuse2 hits · 3 pts
SeverityFileLineSnippetContext
LOWpackages/runtime-class/docs/marko-5-upgrade.md3## Step 0 - Ensure you're in a working state on the latest version of Marko 4COMMENT
LOWpackages/runtime-class/docs/marko-5-upgrade.md25## Step 1 - Upgrade Marko & DependenciesCOMMENT
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOW…kages/runtime-class/src/runtime/vdom/morphdom/index.js672 // For transcluded content, we need to check if the element belongs to a different componentCOMMENT