AI Slop Code Risk Monitor

mountain-loop/yaak

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

The most intuitive desktop API client. Organize and execute REST, GraphQL, WebSockets, Server Sent Events, and gRPC 🦬

1.1 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for mountain-loop/yaak, a TypeScript project with 19,393 GitHub stars. SynthScan examined 202,704 lines of code across 1450 source files, recording 211 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 1.1 (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.1
Adjusted Signal
1.1
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
19.4K
Stars
TypeScript
Language
202.7K
Lines of Code
1.4K
Files
211
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 4.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.4/100 · LOW

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

Agent Over-Engineering Ratio 2.9/100 · LOW

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

PR Review Velocity Impact 5.1/100 · LOW

Which changes need focused human review? 211 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 0MEDIUM 1LOW 210

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 211 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 Identifiers118 hits · 121 pts
SeverityFileLineSnippetContext
LOWcrates/yaak-sse/summary.ts12export function candidateJsonPayloadsFromSseText(text: string): string[] {CODE
LOWcrates/yaak-models/guest-js/store.ts209export async function changeModelStoreWorkspace(workspaceId: string | null) {CODE
LOWcrates/yaak-ws/index.ts4export function deleteWebsocketConnections(requestId: string) {CODE
LOWcrates/yaak-plugins/index.ts28export async function installPluginFromDirectory(directory: string) {CODE
LOWcrates/yaak-git/index.ts48function gitWorktreeStatusQueryKey(dir?: string, refreshKey?: string) {CODE
LOWcrates/yaak-git/index.ts54export function invalidateGitWorktreeStatus(dir?: string) {CODE
LOWplugins/importer-postman-environment/src/index.ts30export function convertPostmanEnvironment(contents: string): ImportPluginResponse | undefined {CODE
LOWplugins/importer-openapi/src/index.ts498function successResponseContentType(CODE
LOWplugins/importer-openapi/src/index.ts599function importOperationDescription({CODE
LOWplugins/importer-openapi/src/index.ts767function shouldInlinePathParameter(CODE
LOWplugins/importer-openapi/src/index.ts1062function serializeContentParameter(parameter: UnknownRecord, importState: ImportState): string {CODE
LOWplugins/importer-openapi/src/index.ts1543function schemaPropertiesToExample(CODE
LOWplugins/importer-openapi/src/index.ts1684function importSecurityRequirement({CODE
LOWplugins/importer-openapi/src/index.ts1836function registerAuthenticationVariable(CODE
LOWplugins/importer-openapi/src/index.ts1993function buildOAuthVariablesByScheme(CODE
LOWplugins/auth-bearer/src/index.ts34function generateAuthorizationHeader(values: CallHttpAuthenticationRequest["values"]) {CODE
LOWplugins/auth-oauth2/src/callbackServer.ts183export function buildHostedCallbackRedirectUri(localPort: number): string {CODE
LOWplugins/auth-oauth2/src/callbackServer.ts209export async function getRedirectUrlViaExternalBrowser(CODE
LOWplugins/auth-oauth2/src/callbackServer.ts277function getFragmentForwardingHtml(): string {CODE
LOWplugins/auth-oauth2/src/getOrRefreshAccessToken.ts8export async function getOrRefreshAccessToken(CODE
LOWplugins/auth-oauth2/src/grants/implicit.ts100async function getTokenViaEmbeddedBrowser(CODE
LOWplugins/auth-oauth2/src/grants/authorizationCode.ts152async function getCodeViaEmbeddedBrowser(CODE
LOWplugins/auth-digest/src/digest.ts145function unsupportedAlgorithmError(algorithm: string | undefined): Error {CODE
LOWplugins/importer-curl/src/index.ts228function extractAuthenticationFromHeaders(headers: HttpUrlParameter[]): ExtractedAuthentication {CODE
LOWplugins/importer-curl/src/graphql.ts70function hasExtraGraphQLEnvelopeFields(body: Record<string, unknown>): boolean {CODE
LOWplugins/importer-curl/src/graphql.ts75function getGraphQLDetectionSignals(CODE
LOWpackages/ui/src/components/editor/CodeEditor.tsx600function saveCachedEditorStateDebounced(stateKey: string | null, state: EditorState) {CODE
LOWpackages/ui/src/hooks/usePortal.ts10function getOrCreatePortal(name: string) {CODE
LOW⚡packages/theme/src/appearance.ts31export function subscribeToCSSAppearanceChange(cb: (appearance: Appearance) => void): () => void {CODE
LOW⚡packages/theme/src/appearance.ts38export function subscribeToWindowAppearanceChange(CODE
LOW⚡packages/theme/src/appearance.ts44export function subscribeToSystemAppearanceChange(CODE
LOWpackages/theme/src/appearance.ts58export function subscribeToPreferredAppearance(cb: (appearance: Appearance) => void) {CODE
LOWpackages/theme/src/appearance.ts70export function subscribeToPreferredAppearanceChange(cb: (appearance: Appearance) => void) {CODE
LOWpackages/theme/src/window.ts53export function completeFullColorVariables(theme: Theme, cmp: Partial<CSSVariables>): CSSVariables {CODE
LOWpackages/theme/src/window.ts102export function completePartialColorVariables(CODE
LOWpackages/theme/src/window.ts148function templateTagColorVariables(theme: Theme, color: YaakColor): CSSVariables {CODE
LOWpackages/theme/src/window.ts183function buttonSolidColorVariables(CODE
LOWpackages/theme/src/window.ts201function buttonBorderColorVariables(CODE
LOWpackages/common-lib/templateFunction.ts7export function validateTemplateFunctionArgs(CODE
LOWpackages/plugin-runtime/src/migrations.ts3export function migrateTemplateFunctionSelectOptions(CODE
LOW.github/scripts/check-contribution-policy.js767function getManualPullRequestNumbers({ context, core }) {CODE
LOWapps/yaak-client/polyfills.ts18export function getOrInsert<K, V>(this: KeyedCollection<K, V>, key: K, value: V): V {CODE
LOWapps/yaak-client/polyfills.ts25export function getOrInsertComputed<K, V>(CODE
LOWapps/yaak-client/components/TemplateFunctionDialog.tsx82function InitializedTemplateFunctionDialog({CODE
LOWapps/yaak-client/components/CommercialUseBanner.tsx90async function shouldShowCommercialUsePrompt(): Promise<boolean> {CODE
LOW…ps/yaak-client/components/GrpcProtoSelectionDialog.tsx23function GrpcProtoSelectionDialogWithRequest({CODE
LOW⚡apps/yaak-client/components/ModelSettingsEditor.tsx276function modelSupportsHttpSettings(model: ModelWithSettings): model is ModelWithHttpSettings {CODE
LOW⚡apps/yaak-client/components/ModelSettingsEditor.tsx280function modelSupportsCookieSettings(model: ModelWithSettings): model is ModelWithCookieSettings {CODE
LOW⚡apps/yaak-client/components/ModelSettingsEditor.tsx288function modelSupportsMessageSizeSettings(CODE
LOW…ient/components/RecentWebsocketConnectionsDropdown.tsx22export function RecentWebsocketConnectionsDropdown({CODE
LOWapps/yaak-client/components/EnvironmentEditDialog.tsx118function EnvironmentEditDialogSidebar({CODE
LOWapps/yaak-client/components/Sidebar.tsx855function getSidebarSuggestionValue(ast: Ast | null) {CODE
LOW…/yaak-client/components/EnvironmentActionsDropdown.tsx18export const EnvironmentActionsDropdown = memo(function EnvironmentActionsDropdown({CODE
LOWapps/yaak-client/components/CookieDialog.tsx694function defaultCookieExpiresInputValue() {CODE
LOW…yaak-client/components/ConfirmLargeResponseRequest.tsx18export function ConfirmLargeResponseRequest({ children, response }: Props) {CODE
LOW…s/yaak-client/components/RedirectToLatestWorkspace.tsx12export function RedirectToLatestWorkspace() {CODE
LOW…ps/yaak-client/components/HttpAuthenticationEditor.tsx190function AuthenticationTypeDropdown({ model }: Props) {CODE
LOW…ps/yaak-client/components/HttpAuthenticationEditor.tsx217function AuthenticationDisabledInput({CODE
LOW…ak-client/components/RecentGrpcConnectionsDropdown.tsx22export function RecentGrpcConnectionsDropdown({CODE
LOW…/yaak-client/components/EnvironmentSharableTooltip.tsx3export function EnvironmentSharableTooltip() {CODE
58 more matches not shown…
Over-Commented Block66 hits · 66 pts
SeverityFileLineSnippetContext
LOWcrates-proxy/yaak-proxy-lib/src/lib.rs661// -- Request/response types --COMMENT
LOWcrates-proxy/yaak-proxy-lib/src/lib.rs781COMMENT
LOWcrates-proxy/yaak-proxy-lib/src/models.rs41 /// Bytes of the request body on the wire, captured or not.COMMENT
LOWcrates-proxy/yaak-proxy-lib/src/flows.rs21 /// Part of the host, any case: `stripe` matches `api.stripe.com`.COMMENT
LOWcrates-proxy/yaak-proxy-lib/src/attribution.rs1//! Which app opened each client connection. The client's end of a connection to the engine is aCOMMENT
LOWcrates-server/yaak-web/index.ts1// The server's wire contract, generated by ts-rs from src/wire.rsCOMMENT
LOWcrates-server/yaak-web/src/config.rs1use clap::Parser;COMMENT
LOWcrates-server/yaak-web/src/config.rs21 #[arg(long, env = "PORT", default_value_t = 9227)]COMMENT
LOWcrates-server/yaak-web/src/config.rs61 #[arg(long, env = "YAAK_WEB_MAX_RESPONSE_BYTES", default_value_t = 64 * 1024 * 1024)]COMMENT
LOWcrates-server/yaak-web/src/lib.rs1//! yaak-web: the network half of Yaak in a browser.COMMENT
LOWcrates-server/yaak-web/src/lib.rs101 // port in a browser guessed wrong about which of the two dev servers hosts theCOMMENT
LOWcrates-server/yaak-web/src/guard.rs1//! Where a send may go.COMMENT
LOWcrates-server/yaak-web/src/wire.rs1//! What crosses the wire between a tab and this server.COMMENT
LOWcrates-server/yaak-web/src/wire.rs21};COMMENT
LOWcrates-server/yaak-web/src/wire.rs61 version: Option<String>,COMMENT
LOWcrates/yaak-models/src/query_manager.rs1use crate::client_db::{ClientDb, WriteDb};COMMENT
LOWcrates/yaak-models/src/models.rs2081COMMENT
LOWcrates/yaak-models/src/models.rs3301COMMENT
LOWcrates/yaak-models/src/cookies.rs1//! Carrying a send's cookie changes back into a jar.COMMENT
LOWcrates/yaak-models/src/queries/workspaces.rs81impl<'a> WriteDb<'a> {COMMENT
LOWcrates/yaak/src/send.rs341}COMMENT
LOWcrates/yaak/src/response_body.rs1//! Reading response bodies back out, by response id.COMMENT
LOWcrates/yaak/src/response_body.rs21/// allocate on a plugin's say-so.COMMENT
LOWcrates/yaak-templates/src/tag_scan.rs1use std::iter::Peekable;COMMENT
LOWcrates/yaak-mcp/src/params.rs81#[serde(rename_all = "camelCase")]COMMENT
LOWcrates/yaak-mcp/src/params.rs101 #[schemars(description = "Request headers")]COMMENT
LOWcrates/yaak-mcp/src/params.rs121#[serde(rename_all = "camelCase")]COMMENT
LOWcrates/yaak-mcp/src/params.rs141 #[serde(skip_serializing_if = "Option::is_none")]COMMENT
LOWcrates/yaak-mcp/src/params.rs181pub struct CreateFolderParams {COMMENT
LOWcrates/yaak-mcp/src/params.rs201 pub authentication_type: Option<String>,COMMENT
LOWcrates/yaak-mcp/src/params.rs221 pub folder_id: Option<String>,COMMENT
LOWcrates/yaak-tls/src/lib.rs121/// Whether the platform's native TLS stack should be handed PEM material asCOMMENT
LOWcrates/yaak-commands/tests/test_host.rs161/// A host that is deliberately **not** `Send` or `Sync`: it keeps its state inCOMMENT
LOWcrates/yaak-commands/src/host.rs1//! What a command needs from whatever is running it.COMMENT
LOWcrates/yaak-commands/src/host.rs81///COMMENT
LOWcrates/yaak-commands/src/lib.rs1//! Command handlers for the RPC surface, written against [`Host`] instead ofCOMMENT
LOWcrates/common/yaak-database/src/pool.rs1//! Where connections come from.COMMENT
LOWcrates/common/yaak-rpc-schema/index.ts1// The RPC wire schema, generated by ts-rs from the Rust declarations inCOMMENT
LOWcrates/common/yaak-rpc-schema/src/lib.rs1//! The wire schema for the app's RPC surface: every command name, its requestCOMMENT
LOWcrates/common/yaak-rpc-schema/src/lib.rs61/// Returned by the two watch commands: the name of the event to emit to stopCOMMENT
LOWcrates/common/yaak-rpc-schema/src/lib.rs181#[ts(export, export_to = "gen_rpc.ts")]COMMENT
LOWcrates/common/yaak-rpc-schema/src/lib.rs941COMMENT
LOWcrates/common/yaak-rpc/src/lib.rs141///COMMENT
LOWcrates/common/yaak-rpc/src/lib.rs221COMMENT
LOWcrates/common/yaak-rpc/src/lib.rs241 serde_json::to_value(res).map_err($crate::RpcError::from)COMMENT
LOWcrates/yaak-plugins/src/events.rs261#[derive(Debug, Clone, Default, Serialize, Deserialize, TS)]COMMENT
LOWcrates/yaak-plugins/src/events.rs441#[serde(default, rename_all = "camelCase")]COMMENT
LOWcrates/yaak-plugins/src/events.rs1501 pub http_responses: Vec<HttpResponse>,COMMENT
LOWcrates/yaak-plugins/src/events.rs1521 #[ts(type = "number")]COMMENT
LOWcrates/yaak-plugins/src/events.rs1541#[ts(export, export_to = "gen_events.ts")]COMMENT
LOWcrates/yaak-plugins/src/manager.rs1161/// Bundled plugin directories that shipped in past versions and no longer exist. UpdatesCOMMENT
LOWcrates/yaak-wasm/index.ts1// The desktop's model layer, compiled to wasm for the browser. See src/lib.rs.COMMENT
LOWcrates/yaak-wasm/src/lib.rs1//! The desktop's model layer, running in a browser.COMMENT
LOWcrates/yaak-wasm/src/lib.rs141 result: serde_json::Value,COMMENT
LOWcrates/yaak-git/src/pull.rs181//COMMENT
LOWcrates/yaak-git/src/pull.rs201// let fetch_commit = repo.reference_to_annotated_commit(&fetch_head)?;COMMENT
LOWflatpak/generate-sources.sh1#!/usr/bin/env bashCOMMENT
LOWcrates-tauri/yaak-proxy-helper/src/networksetup.rs1//! The macOS system proxy as `networksetup` sees it: the web and secure web proxies of eachCOMMENT
LOWcrates-tauri/yaak-proxy-helper/src/networksetup.rs61 self.http.points_at(port) || self.https.points_at(port)COMMENT
LOWcrates-tauri/yaak-app-client/index.ts1// ts-rs owns bindings/index.ts and rewrites it on export. What remains hereCOMMENT
6 more matches not shown…
Fake / Example Data16 hits · 18 pts
SeverityFileLineSnippetContext
LOWplugins/importer-openapi/src/index.ts1583 email: "user@example.com",CODE
LOWplugins/action-copy-grpcurl/README.md42 -d '{"name": "John Doe"}' \CODE
LOWplugins/action-copy-grpcurl/README.md72 -d '{"email": "user@example.com"}' \CODE
LOWplugins/auth-digest/tests/index.test.ts272 realm: "http-auth@example.org",CODE
LOWplugins/auth-digest/tests/index.test.ts301 realm: "api@example.org",CODE
LOWplugins/auth-digest/tests/index.test.ts332 realm: "legacy@example.org",CODE
LOW⚡plugins/auth-digest/tests/index.test.ts355 realm: "second@example.org",CODE
LOW⚡plugins/auth-digest/tests/index.test.ts358 decoyRealm: "first@example.org",CODE
LOW⚡plugins/auth-digest/tests/index.test.ts364 values: { username: "user", password: "pass", realm: "second@example.org" },CODE
LOWplugins/auth-digest/tests/digest.test.ts161 'Digest realm="http-auth@example.org", qop="auth, auth-int", algorithm=SHA-256, ' +CODE
LOWplugins/auth-digest/tests/digest.test.ts164 'Digest realm="http-auth@example.org", qop="auth, auth-int", algorithm=MD5, ' +CODE
LOWplugins/auth-digest/tests/digest.test.ts185 'Digest username="Mufasa", realm="http-auth@example.org", uri="/dir/index.html", ' +CODE
LOWplugins/auth-digest/tests/digest.test.ts200 'Digest username="Mufasa", realm="http-auth@example.org", uri="/dir/index.html", ' +CODE
LOWplugins/action-copy-curl/README.md49 "name": "John Doe",CODE
LOWplugins/template-function-prompt/src/index.ts116 { type: "text", name: "placeholder", label: "Input Placeholder", optional: true },CODE
LOWplugins-external/faker/README.md67| `lorem` | Lorem ipsum text | `word`, `sentence`, `paragraph` |CODE
Verbosity Indicators4 hits · 6 pts
SeverityFileLineSnippetContext
LOWcrates/yaak-git/src/pull.rs51 // Step 1: fetch the specific branchCOMMENT
LOWcrates/yaak-git/src/pull.rs83 // Step 2: merge the fetched branchCOMMENT
LOWcrates/yaak-git/src/pull.rs117 // Step 1: fetch the remoteCOMMENT
LOWcrates/yaak-git/src/pull.rs131 // Step 2: reset --hard to remote/branchCOMMENT
Structural Annotation Overuse4 hits · 6 pts
SeverityFileLineSnippetContext
LOWcrates/yaak-git/src/pull.rs51 // Step 1: fetch the specific branchCOMMENT
LOWcrates/yaak-git/src/pull.rs83 // Step 2: merge the fetched branchCOMMENT
LOWcrates/yaak-git/src/pull.rs117 // Step 1: fetch the remoteCOMMENT
LOWcrates/yaak-git/src/pull.rs131 // Step 2: reset --hard to remote/branchCOMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMcrates-server/yaak-web/Cargo.toml10# render + storage orchestration), yaak-plugins, or the RPC router: this crateCOMMENT
Example Usage Blocks2 hits · 3 pts
SeverityFileLineSnippetContext
LOWflatpak/update-manifest.sh5# Usage:COMMENT
LOWflatpak/generate-sources.sh9# Usage:COMMENT