AI Slop Code Risk Monitor

FxEmbed/FxEmbed

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

Fix X/Twitter and Bluesky embeds! Use multiple images, videos, polls, translations and more on Discord, Telegram and others

2.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for FxEmbed/FxEmbed, a TypeScript project with 5,801 GitHub stars. SynthScan examined 78,236 lines of code across 389 source files, recording 133 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 2.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.

2.0
Adjusted Signal
2.0
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
5.8K
Stars
TypeScript
Language
78.2K
Lines of Code
389
Files
133
Pattern Hits
2026-10-31
Scan Date
0.01
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 7.7/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.8/100 · LOW

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

Agent Over-Engineering Ratio 7.7/100 · LOW

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

PR Review Velocity Impact 9.4/100 · LOW

Which changes need focused human review? 133 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 0MEDIUM 2LOW 129

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 133 distinct pattern matches across 6 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 Identifiers120 hits · 122 pts
SeverityFileLineSnippetContext
LOW…kages/atmosphere/src/providers/twitter/searchErrors.ts13export function formatUnknownCursorMessage(cursor: string): string {CODE
LOW…kages/atmosphere/src/providers/twitter/searchErrors.ts18export function formatSearchQueryTooLongMessage(length: number): string {CODE
LOW…kages/atmosphere/src/providers/twitter/searchErrors.ts52function isSearchTimelineErrorPath(path: unknown): boolean {CODE
LOW…kages/atmosphere/src/providers/twitter/searchErrors.ts60export function parseSearchTimelineClientError(CODE
LOW…kages/atmosphere/src/providers/twitter/searchErrors.ts85export function isSearchTimelineClientErrorResponse(json: unknown): boolean {CODE
LOW…kages/atmosphere/src/providers/twitter/searchErrors.ts89export function searchTimelineClientErrorToApiQueryError(CODE
LOW…kages/atmosphere/src/providers/twitter/searchErrors.ts126export function unknownCursorFromSearchTimelineError(json: unknown): string | null {CODE
LOWpackages/atmosphere/src/providers/twitter/trends.ts17function isGraphQLTimelineCursorLoose(obj: unknown): obj is { cursorType: string; value: string } {CODE
LOWpackages/atmosphere/src/providers/twitter/trends.ts53function processTimelineItemContent(CODE
LOWpackages/atmosphere/src/providers/twitter/trends.ts77export function parseTrendsFromGenericTimelineInstructions(CODE
LOWpackages/atmosphere/src/providers/twitter/trends.ts124export function getExploreInitialTimelineInstructions(CODE
LOWpackages/atmosphere/src/providers/twitter/processor.ts31function mergeTweetShellIntoStatus(status: GraphQLTwitterStatus): void {CODE
LOWpackages/atmosphere/src/providers/twitter/processor.ts88function birdwatchEntitiesToFacets(entities: BirdwatchEntity[], noteText: string): APIFacet[] {CODE
LOWpackages/atmosphere/src/providers/twitter/processor.ts107function replyTargetScreenNameFromGraphQL(status: GraphQLTwitterStatus): string | undefined {CODE
LOWpackages/atmosphere/src/providers/twitter/processor.ts123function replyTargetDisplayNameFromGraphQL(status: GraphQLTwitterStatus): string | undefined {CODE
LOWpackages/atmosphere/src/providers/twitter/processor.ts135function repostedByFromGraphQLUser(user: GraphQLUser | undefined): APIRepostedBy | null {CODE
LOWpackages/atmosphere/src/providers/twitter/processor.ts168function getRetweetedOriginalFromLegacy(CODE
LOWpackages/atmosphere/src/providers/twitter/processor.ts180function isRetweetWithoutNestedOriginal(CODE
LOWpackages/atmosphere/src/providers/twitter/profile.ts57export function isSuspendedUserUnavailable(result: unknown): boolean {CODE
LOWpackages/atmosphere/src/providers/twitter/profile.ts67function userByScreenNameResultValid(result: unknown): boolean {CODE
LOWpackages/atmosphere/src/providers/twitter/profile.ts78function userResultByScreenNameResultValid(result: unknown): boolean {CODE
LOWpackages/atmosphere/src/providers/twitter/profile.ts89function descriptionEntitiesToFacets(CODE
LOWpackages/atmosphere/src/providers/twitter/profile.ts488export async function fetchTwitterGraphQLUserByRestId(CODE
LOW…kages/atmosphere/src/providers/twitter/proxy/errors.ts25function firstErrorMessageIncludes(json: unknown, substr: string): boolean {CODE
LOW…kages/atmosphere/src/providers/twitter/proxy/errors.ts34export function twitterResponseLooksEmpty(json: unknown): boolean {CODE
LOW…kages/atmosphere/src/providers/twitter/proxy/errors.ts57export function jsonHasTruthyErrorsProperty(json: unknown): boolean {CODE
LOW…kages/atmosphere/src/providers/twitter/proxy/errors.ts223export function applyNsfwViewerErrorPatch(json: unknown): void {CODE
LOW…ages/atmosphere/src/providers/twitter/proxy/discord.ts21function formatProxyEndpointForDiscord(pathname: string): string {CODE
LOWpackages/atmosphere/src/providers/mastodon/client.ts49async function resolveMastodonRedirectIfNeeded(CODE
LOW…ages/atmosphere/src/providers/threads/relationships.ts27export async function constructThreadsRelationshipList(CODE
LOWpackages/atmosphere/src/providers/threads/search.ts115export async function constructThreadsUserSearch(CODE
LOWpackages/atmosphere/src/providers/threads/search.ts196export async function constructThreadsTypeahead(CODE
LOWpackages/atmosphere/src/providers/threads/shortcode.ts4export function threadsShortcodeToMediaId(shortcode: string): string {CODE
LOWpackages/atmosphere/src/providers/threads/processor.ts115function textAndFacetsFromThreadsTextFragments(post: Record<string, unknown>): {CODE
LOWpackages/atmosphere/src/providers/threads/processor.ts175export function textAndFacetsFromThreadsPost(post: Record<string, unknown>): {CODE
LOWpackages/atmosphere/src/providers/threads/processor.ts191function mediaContainerFromThreadsPost(post: Record<string, unknown>): {CODE
LOWpackages/atmosphere/src/providers/threads/processor.ts442export function userFromThreadsProfilePayload(user: Record<string, unknown>): APIUser | null {CODE
LOWpackages/atmosphere/src/providers/threads/client.ts179export async function fetchThreadsUserByUsername(params: {CODE
LOWpackages/atmosphere/src/providers/threads/client.ts214export async function fetchThreadsProfileTimeline(params: {CODE
LOWpackages/atmosphere/src/providers/threads/profile.ts168export async function constructThreadsProfileStatuses(CODE
LOWpackages/atmosphere/src/providers/threads/cursors.ts51export function encodeThreadsConversationCursor(p: ThreadsConversationCursorV1): string {CODE
LOWpackages/atmosphere/src/providers/threads/cursors.ts55export function decodeThreadsConversationCursor(raw: string): ThreadsConversationCursorV1 | null {CODE
LOWpackages/atmosphere/src/providers/threads/cursors.ts79export function encodeThreadsProfileTimelineCursor(p: ThreadsProfileTimelineCursorV1): string {CODE
LOWpackages/atmosphere/src/providers/threads/cursors.ts83export function decodeThreadsProfileTimelineCursor(CODE
LOWpackages/atmosphere/src/providers/threads/cursors.ts169export function encodeThreadsSearchCursor(p: ThreadsSearchCursorV1): string {CODE
LOWpackages/atmosphere/src/providers/threads/cursors.ts173export function decodeThreadsSearchCursor(raw: string): ThreadsSearchCursorV1 | null {CODE
LOW…/atmosphere/src/providers/threads/private-processor.ts84export function threadRowsFromThreadsFeed(json: unknown): Record<string, unknown>[][] {CODE
LOW…/atmosphere/src/providers/threads/private-processor.ts115export function rankTokenFromThreadsSearch(json: unknown): string | null {CODE
LOW…/atmosphere/src/providers/threads/private-processor.ts167export function threadsUserFromPrivateRecord(rec: Record<string, unknown>): APIUser | null {CODE
LOW…/atmosphere/src/providers/threads/private-processor.ts223export function replyRowsFromThreadsReplies(json: unknown): Record<string, unknown>[] {CODE
LOW…kages/atmosphere/src/providers/threads/conversation.ts133export async function constructThreadsConversation(CODE
LOW…ckages/atmosphere/src/providers/threads/private-api.ts240export function fetchThreadsUserByUsername(CODE
LOW…ckages/atmosphere/src/providers/threads/private-api.ts252export function fetchThreadsKeywordSearch(CODE
LOWpackages/atmosphere/src/providers/threads/likes.ts19export async function constructThreadsStatusLikes(CODE
LOW…kages/atmosphere/src/providers/threads/profile-tabs.ts27export async function constructThreadsProfileTab(CODE
LOW…ages/atmosphere/src/providers/bluesky/notifications.ts19export async function fetchBlueskyNotifications(params: {CODE
LOW…ages/atmosphere/src/providers/bluesky/notifications.ts63export async function getBlueskyNotificationUnreadCount(params: {CODE
LOW…ages/atmosphere/src/providers/bluesky/notifications.ts83export async function updateBlueskyNotificationSeen(params: {CODE
LOW…phere/src/providers/bluesky/detectDescriptionFacets.ts41export function detectBlueskyDescriptionFacets(text: string): BlueskyFacet[] {CODE
LOW…es/atmosphere/src/providers/bluesky/profileStatuses.ts61export function groupConsecutiveSelfReplies(feed: BlueskyFeedViewPost[]): BlueskyFeedViewPost[][] {CODE
60 more matches not shown…
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippetContext
CRITICALpackages/atmosphere/src/providers/twitter/processor.ts538 status.note_tweet.note_tweet_results.result.richtext.richtext_tags.forEach(richtext => {CODE
CRITICALpackages/atmosphere/src/providers/twitter/processor.ts566 status.note_tweet.note_tweet_results.result.media.inline_media.forEach(inlineMedia => {CODE
Fake / Example Data8 hits · 8 pts
SeverityFileLineSnippetContext
LOWtest/bluesky.client-upstream.test.ts94 credentialKey: 'dummy-key'CODE
LOWtest/bluesky.client-upstream.test.ts100 expect(credMocks.initCredentials).toHaveBeenCalledWith('dummy-key');CODE
LOWtest/bluesky.client-upstream.test.ts119 { credentialKey: 'dummy-key' }CODE
LOWtest/bluesky.client-upstream.test.ts161 credentialKey: 'dummy-key'CODE
LOWtest/bluesky.client-upstream.test.ts189 { credentialKey: 'dummy-key' }CODE
LOWtest/bluesky.client-upstream.test.ts217 credentialKey: 'dummy-key',CODE
LOWtest/bluesky.client-upstream.test.ts235 credentialKey: 'dummy-key',CODE
LOWtest/bluesky.client-upstream.test.ts257 const result = await fetchActorProfile('did:plc:test', { credentialKey: 'dummy-key' });CODE
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/strings.ts235# Did you know we have a fetch API you can use for free, no API keys required?COMMENT
Decorative Section Separators1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/strings.ts243# ==========================================================================COMMENT
Over-Commented Block1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsrc/strings.ts221 ERROR_USER_NOT_FOUND: `Sorry, that user doesn't exist :(`,COMMENT