AI Slop Code Risk Monitor

onlook-dev/onlook

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

The Developer Tool for Visual Engineers • An Open-Source AI-First Design tool • Visually build, style, and edit your code with AI • World's best, top-most agent recommended #1 Developer tool for Designers and Visual Engineers to design with Real Code.

1.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for onlook-dev/onlook, a TypeScript project with 27,062 GitHub stars. SynthScan examined 158,485 lines of code across 1516 source files, recording 121 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 1.0 (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.

1.0
Adjusted Signal
1.0
Raw Pattern Score
100%
Time Factor
2026-10-21
Last Push
27.1K
Stars
TypeScript
Language
158.5K
Lines of Code
1.5K
Files
121
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.6/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.2/100 · LOW

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

Agent Over-Engineering Ratio 2.1/100 · LOW

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

PR Review Velocity Impact 4.3/100 · LOW

Which changes need focused human review? 121 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 1HIGH 0MEDIUM 5LOW 115

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 121 distinct pattern matches across 8 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 Identifiers66 hits · 66 pts
SeverityFileLineSnippetContext
LOWpackages/ui/src/components/chart.tsx294function getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {CODE
LOWpackages/parser/src/code-edit/layout.ts232export function removeDeprecatedPreloadScripts(ast: T.File): void {CODE
LOWpackages/parser/src/template-node/map.ts164export async function getContentFromTemplateNode(CODE
LOWpackages/growth/src/remove.ts12export async function removeBuiltWithScriptFromLayout(CODE
LOWpackages/image-server/src/compress.ts129export async function batchCompressImagesServer(CODE
LOWpackages/github/src/installation.ts42export function handleInstallationCallback(CODE
LOWpackages/github/src/auth.ts8export function createInstallationOctokit(installationId: string): Octokit {CODE
LOWpackages/ai/src/apply/client.ts43export async function applyCodeChangeWithRelace(CODE
LOWpackages/ai/src/tools/classes/glob.ts235async function processAndFormatResults(output: string, pattern: string, searchPath: string, method: 'bash' | 'sh' | 'finCODE
LOWpackages/ai/src/tools/shared/helpers/cli.ts49export function buildShellExclusionPattern(excludePatterns: string[] = DEFAULT_EXCLUDED_PATTERNS): string {CODE
LOWpackages/ai/src/prompt/provider.ts25export function getCreatePageSystemPrompt() {CODE
LOWpackages/ai/src/prompt/provider.ts31export function getSuggestionSystemPrompt() {CODE
LOW…kages/db/src/migration-scripts/migrate-to-branching.ts93function createBranchesForProjects(projectsToMigrate: Awaited<ReturnType<typeof getProjectsToMigrate>>): Branch[] {CODE
LOW…kages/db/src/migration-scripts/migrate-to-branching.ts141async function processFrameUpdatesInParallel(CODE
LOW…kages/db/src/migration-scripts/migrate-to-branching.ts263async function fixOrphanedFramesForProject(CODE
LOW…kages/db/src/migration-scripts/migrate-to-branching.ts349async function verifyMigrationCompleteness(newBranchesCount: number): Promise<void> {CODE
LOWpackages/file-system/src/index-cache.ts13export async function getOrLoadIndex(CODE
LOWpackages/fonts/test/class-utils.test.ts17async function processClassNameAttribute(CODE
LOWpackages/fonts/test/class-utils.test.ts92async function processRemoveFontsTestCase(CODE
LOWpackages/fonts/test/class-utils.test.ts104async function processCreateTemplateLiteralTestCase(CODE
LOWpackages/fonts/src/helpers/class-utils.ts31export function createStringLiteralWithFont(CODE
LOWpackages/fonts/src/helpers/class-utils.ts51export function createTemplateLiteralWithFont(CODE
LOWpackages/fonts/src/helpers/class-utils.ts162export function updateClassNameWithFontVar(CODE
LOWpackages/fonts/src/helpers/class-utils.ts179export function updateStringLiteralClassNameWithFont(CODE
LOWpackages/fonts/src/helpers/class-utils.ts208export function updateJSXExpressionClassNameWithFont(CODE
LOWpackages/fonts/src/helpers/class-utils.ts268export function updateTemplateLiteralWithFontClass(CODE
LOWpackages/fonts/src/helpers/class-utils.ts307function removeFontFromStringLiteral(CODE
LOWpackages/fonts/src/helpers/class-utils.ts342function removeFontFromTemplateLiteral(CODE
LOWpackages/fonts/src/helpers/ast-manipulators.ts78function isPreservedLocalFontDeclaration(CODE
LOWpackages/fonts/src/helpers/ast-manipulators.ts251export function removeFontFromTailwindTheme(fontId: string, content: string): string {CODE
LOWpackages/fonts/src/helpers/validators.ts52export function isValidLocalFontDeclaration(CODE
LOWpackages/fonts/src/helpers/validators.ts96export function findFontExportDeclaration(CODE
LOWpackages/fonts/src/helpers/ast-generators.ts93export function generateFontVariableExport(font: Font): T.ExportNamedDeclaration {CODE
LOWpackages/utility/src/autolayout.ts60export function generateRowColumnTemplate(value: string): string {CODE
LOWpackages/utility/src/frame.ts3export function calculateNonOverlappingPosition(CODE
LOWapps/web/preload/script/api/elements/text.ts82function cleanUpElementAfterEditing(el: HTMLElement) {CODE
LOWapps/web/preload/script/api/elements/move/drag.ts156function prepareElementForDragging(el: HTMLElement) {CODE
LOWapps/web/preload/script/api/elements/move/drag.ts197function cleanUpElementAfterDragging(el: HTMLElement) {CODE
LOWapps/web/preload/script/api/elements/dom/helpers.ts19export function getActionElementFromHtmlElement(el: HTMLElement): ActionElement | null {CODE
LOWapps/web/preload/script/api/elements/dom/group.ts111function removeIdsFromChildElement(el: HTMLElement) {CODE
LOWapps/web/preload/script/api/elements/dom/insert.ts69function findNearestBlockLevelContainer(x: number, y: number): HTMLElement | null {CODE
LOWapps/web/preload/script/helpers/ids.ts4export function getOrAssignDomId(node: HTMLElement): string {CODE
LOW…/_components/templates/template-modal-presentation.tsx37export function TemplateModalPresentation({CODE
LOW…components/select/square-project-card-presentation.tsx21export function SquareProjectCardPresentation({CODE
LOW…lient/src/app/projects/import/local/_context/index.tsx47export function detectPortFromPackageJson(packageJsonFile: ProcessedFile | undefined): number {CODE
LOWapps/web/client/src/app/features/prototype/page.tsx171function PrototypeFeaturesGridSection() {CODE
LOW…code-panel/code-tab/file-content/code-mirror-config.ts308function undebounceScrollToLineColumn(view: EditorView, line: number, column: number): void {CODE
LOW…b/client/src/app/project/[id]/_hooks/use-chat/utils.ts36export async function createCheckpointsForAllBranches(CODE
LOW…p/_components/shared/mockups/tailwind-color-editor.tsx12export function TailwindColorEditorMockup() {CODE
LOW…onents/landing-page/builder-features-intro-section.tsx3export function BuilderFeaturesIntroSection() {CODE
LOW…ponents/landing-page/builder-features-grid-section.tsx3export function BuilderFeaturesGridSection() {CODE
LOW…ps/web/client/src/app/callback/github/install/page.tsx14export default function GitHubInstallCallbackPage() {CODE
LOW…ps/web/client/src/server/api/routers/project/helper.ts285export async function verifyDomainVerificationAccess(CODE
LOWapps/web/client/src/server/api/routers/project/fork.ts140function createDefaultFramesForDefaultBranch(CODE
LOW…b/client/src/server/api/routers/publish/helpers/env.ts41export async function extractEnvVarsFromSandbox(provider: Provider): Promise<Record<string, string>> {CODE
LOWapps/web/client/src/utils/subscription.ts12export async function checkUserSubscriptionAccess(CODE
LOW…ient/src/components/ui/settings-modal/with-project.tsx22function TruncatedLabelWithTooltip({ label }: { label: string }) {CODE
LOW…web/client/src/components/store/editor/code/helpers.ts3export async function getOrCreateCodeDiffRequest(CODE
LOW…web/client/src/components/store/editor/code/helpers.ts3export async function getOrCreateCodeDiffRequest(CODE
LOW…s/web/client/src/components/store/editor/theme/util.ts102export async function updateTailwindCssVariable(CODE
6 more matches not shown…
Fake / Example Data29 hits · 29 pts
SeverityFileLineSnippetContext
LOWpackages/stripe/src/scripts/dev/customer.ts6 email: 'test@test.com',CODE
LOWapps/web/client/messages/zh.json77 "placeholder": "为克隆项目输入名称",CODE
LOWapps/web/client/messages/zh.json85 "placeholder": "粘贴参考截图、写一篇长文、发挥创造力……",CODE
LOWapps/web/client/messages/zh.json242 "placeholder": "输入您的消息…",CODE
LOWapps/web/client/messages/zh.json276 "placeholder": "在此添加 Tailwind 类",CODE
LOWapps/web/client/messages/ja.json131 "placeholder": "メッセージを入力...",CODE
LOWapps/web/client/messages/ja.json165 "placeholder": "ここにTailwindクラスを追加",CODE
LOWapps/web/client/messages/ja.json309 "placeholder": "クローンプロジェクトの名前を入力",CODE
LOWapps/web/client/messages/ja.json317 "placeholder": "参考スクリーンショットを貼り付けたり、アイデアを書いたり、自由に表現してください...",CODE
LOWapps/web/client/messages/en.json77 "placeholder": "Enter name for cloned project",CODE
LOWapps/web/client/messages/en.json85 "placeholder": "Paste a reference screenshot, write a novel, get creative...",CODE
LOWapps/web/client/messages/en.json242 "placeholder": "Type your message...",CODE
LOWapps/web/client/messages/en.json276 "placeholder": "Add tailwind classes here",CODE
LOWapps/web/client/messages/ko.json77 "placeholder": "복제된 프로젝트의 이름을 입력하세요",CODE
LOWapps/web/client/messages/ko.json85 "placeholder": "참고로 스크린샷을 붙여넣거나, 자세히 작성하거나, 창의적으로 표현해보세요...",CODE
LOWapps/web/client/messages/ko.json242 "placeholder": "메시지를 입력하세요...",CODE
LOWapps/web/client/messages/ko.json276 "placeholder": "여기에 Tailwind 클래스를 추가하세요.",CODE
LOWapps/web/client/messages/en.d.json.ts80 "placeholder": "Enter name for cloned project",CODE
LOWapps/web/client/messages/en.d.json.ts88 "placeholder": "Paste a reference screenshot, write a novel, get creative...",CODE
LOWapps/web/client/messages/en.d.json.ts245 "placeholder": "Type your message...",CODE
LOWapps/web/client/messages/en.d.json.ts279 "placeholder": "Add tailwind classes here",CODE
LOWapps/web/client/messages/es.json77 "placeholder": "Ingrese el nombre para el proyecto clonado",CODE
LOWapps/web/client/messages/es.json85 "placeholder": "Pegue una captura de pantalla de referencia, escriba una novela, sea creativo...",CODE
LOWapps/web/client/messages/es.json242 "placeholder": "Escriba su mensaje...",CODE
LOWapps/web/client/messages/es.json276 "placeholder": "Agregar clases tailwind aquí",CODE
LOWapps/web/client/src/stories/TopBar.stories.tsx46 displayName: 'Jane Doe',CODE
LOWapps/web/client/src/stories/SelectProject.stories.tsx235 email: 'user@example.com',CODE
LOWapps/web/client/src/stories/SelectProject.stories.tsx502 email: 'user@example.com',CODE
LOWapps/web/client/src/stories/ProjectsPage.stories.tsx104 displayName: 'Jane Doe',CODE
Verbosity Indicators8 hits · 16 pts
SeverityFileLineSnippetContext
LOW…kages/db/src/migration-scripts/migrate-to-branching.ts380 // Step 1: Check migration statusCOMMENT
LOW⚡…kages/db/src/migration-scripts/migrate-to-branching.ts399 // Step 2: Get projects to migrateCOMMENT
LOW⚡…kages/db/src/migration-scripts/migrate-to-branching.ts409 // Step 3: Create and insert branchesCOMMENT
LOW⚡…kages/db/src/migration-scripts/migrate-to-branching.ts413 // Step 4: Update framesCOMMENT
LOW⚡…kages/db/src/migration-scripts/migrate-to-branching.ts416 // Step 5: Fix orphaned framesCOMMENT
LOW⚡…kages/db/src/migration-scripts/migrate-to-branching.ts419 // Step 6: Verify completenessCOMMENT
LOWpackages/stripe/src/functions.ts121 // Step 1: Create a subscription schedule from the current subscriptionCOMMENT
LOWpackages/stripe/src/functions.ts140 // Step 2: Add a new phase that updates the price starting next billing periodCOMMENT
Structural Annotation Overuse8 hits · 16 pts
SeverityFileLineSnippetContext
LOW…kages/db/src/migration-scripts/migrate-to-branching.ts380 // Step 1: Check migration statusCOMMENT
LOW⚡…kages/db/src/migration-scripts/migrate-to-branching.ts399 // Step 2: Get projects to migrateCOMMENT
LOW⚡…kages/db/src/migration-scripts/migrate-to-branching.ts409 // Step 3: Create and insert branchesCOMMENT
LOW⚡…kages/db/src/migration-scripts/migrate-to-branching.ts413 // Step 4: Update framesCOMMENT
LOW⚡…kages/db/src/migration-scripts/migrate-to-branching.ts416 // Step 5: Fix orphaned framesCOMMENT
LOW⚡…kages/db/src/migration-scripts/migrate-to-branching.ts419 // Step 6: Verify completenessCOMMENT
LOWpackages/stripe/src/functions.ts121 // Step 1: Create a subscription schedule from the current subscriptionCOMMENT
LOWpackages/stripe/src/functions.ts140 // Step 2: Add a new phase that updates the price starting next billing periodCOMMENT
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMpackages/file-system/src/fs.ts67 // A more robust check would validate UTF-8 sequencesCOMMENT
MEDIUM…s/left-panel/code-panel/code-tab/sidebar/file-tree.tsx68 // Find the entry that matches the file using robust path comparisonCOMMENT
MEDIUMapps/web/client/src/components/store/editor/git/git.ts210 // Use a more robust format with unique separators and handle multiline messagesCOMMENT
MEDIUMapps/web/client/src/components/store/editor/git/git.ts414 // Use strip-ansi library for robust ANSI escape sequence removalCOMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALpackages/parser/src/template-node/map.ts153 path.node.openingElement.name.name.toLocaleLowerCase() === 'body';CODE
Over-Commented Block4 hits · 4 pts
SeverityFileLineSnippetContext
LOWapps/web/client/vitest.shims.d.ts1/// <reference types="@vitest/browser-playwright" />COMMENT
LOW…/src/app/project/[id]/_components/bottom-bar/index.tsx41 // draggable: true,COMMENT
LOW…ab/chat-messages/message-content/tool-call-display.tsx181 // loading={loading}COMMENT
LOW…client/src/components/store/editor/font/font-config.ts221// Example Google Font:COMMENT
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMapps/web/client/src/proxy.ts16 * Feel free to modify this pattern to include more paths.COMMENT