AI Slop Code Risk Monitor

usekaneo/kaneo

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

⚡ Project management that doesn't become the project. Boards, Gantt charts, and GitHub integration. Self-host it or use Kaneo Cloud.

0.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for usekaneo/kaneo, a TypeScript project with 9,675 GitHub stars. SynthScan examined 869,930 lines of code across 4760 source files, recording 625 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
9.7K
Stars
TypeScript
Language
869.9K
Lines of Code
4.8K
Files
625
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 2.2/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.6/100 · LOW

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

Agent Over-Engineering Ratio 2.1/100 · LOW

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

PR Review Velocity Impact 3.8/100 · LOW

Which changes need focused human review? 625 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 5HIGH 0MEDIUM 2LOW 618

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 625 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 Identifiers371 hits · 371 pts
SeverityFileLineSnippetContext
LOWtests/api-integration/setup.ts45function readDatabaseUrlFromEnvFile() {CODE
LOWtests/api-integration/due-date-reminders.test.ts44function dueDateInsideReminderWindow() {CODE
LOWtests/api-integration/time-entry-duration.test.ts33async function runDurationBackfillMigration() {CODE
LOWtests/api-integration/helpers/database.ts64export async function ensureTestDatabaseMigrated() {CODE
LOW…/helpers/project-access/create-restricted-workspace.ts6export async function createRestrictedWorkspace() {CODE
LOW…/helpers/project-access/create-invitation-workspace.ts7export async function createInvitationWorkspace() {CODE
LOWtests/api/plugins/gitlab/webhooks/issue-updated.test.ts93function linkWithLastTitleWrittenByKaneo(title: string) {CODE
LOWpackages/importers/src/linear/graphql.ts86export function retryRateLimitedResponses(fetchImpl: FetchLike): FetchLike {CODE
LOWpackages/mcp/src/install/targets.ts20export function validateCustomConfigPathInput(CODE
LOWpackages/mcp/src/install/targets.ts59export function getClaudeDesktopConfigPath(): string {CODE
LOWpackages/cli/src/auth/wait-for-approval.ts55export function webUrlFromVerificationUri(uri: string): string | undefined {CODE
LOWpackages/cli/src/admin/render-invitation-list.ts68export function renderReceivedInvitations(CODE
LOW…rs/telegram-integration/create-telegram-integration.ts20async function createTelegramIntegration(CODE
LOW…rs/telegram-integration/update-telegram-integration.ts21async function updateTelegramIntegration(CODE
LOW…rs/telegram-integration/delete-telegram-integration.ts5async function deleteTelegramIntegration(projectId: string) {CODE
LOW…attermost-integration/create-mattermost-integration.ts18async function createMattermostIntegration(CODE
LOW…attermost-integration/update-mattermost-integration.ts19async function updateMattermostIntegration(CODE
LOW…attermost-integration/delete-mattermost-integration.ts5async function deleteMattermostIntegration(projectId: string) {CODE
LOW…etchers/notification/mark-all-notifications-as-read.ts5async function markAllNotificationsAsRead(workspaceId?: string) {CODE
LOW…tchers/custom-field/get-custom-field-values-by-task.ts5async function getCustomFieldValuesByTask({ taskId }: { taskId: string }) {CODE
LOW…etchers/custom-field/get-custom-field-filter-values.ts5async function getCustomFieldFilterValues({CODE
LOW…ers/custom-field/get-custom-field-values-by-project.ts5async function getCustomFieldValuesByProject({CODE
LOW…b/src/fetchers/admin/send-admin-user-password-reset.ts4export async function sendAdminUserPasswordReset(userId: string) {CODE
LOW…c/fetchers/admin/send-admin-user-verification-email.ts4export async function sendAdminUserVerificationEmail(userId: string) {CODE
LOW…b/src/fetchers/admin/mark-admin-user-email-verified.ts4export async function markAdminUserEmailVerified(userId: string) {CODE
LOW…web/src/fetchers/admin/get-admin-webhook-deliveries.ts4export async function getAdminWebhookDeliveries(webhookId: string) {CODE
LOW…eb/src/fetchers/admin/remove-admin-workspace-member.ts5export async function removeAdminWorkspaceMember({CODE
LOW…c/fetchers/admin/update-admin-workspace-member-role.ts5export async function updateAdminWorkspaceMemberRole({CODE
LOW…c/fetchers/admin/transfer-admin-workspace-ownership.ts5export async function transferAdminWorkspaceOwnership({CODE
LOW…/web/src/fetchers/mcp/submit-authorization-decision.ts3export async function submitMcpAuthorizationDecision(CODE
LOWapps/web/src/fetchers/mcp/get-authorization-request.ts8export async function getMcpAuthorizationRequest(CODE
LOW…webhook-integration/get-generic-webhook-integration.ts31async function getGenericWebhookIntegration(CODE
LOW…hook-integration/create-generic-webhook-integration.ts25async function createGenericWebhookIntegration(CODE
LOW…hook-integration/update-generic-webhook-integration.ts26async function updateGenericWebhookIntegration(CODE
LOW…hook-integration/delete-generic-webhook-integration.ts5async function deleteGenericWebhookIntegration(projectId: string) {CODE
LOWapps/web/src/fetchers/task/get-description-pages.ts54export async function getPublicProjectDescription(CODE
LOW…tion-preferences/upsert-notification-workspace-rule.ts15async function upsertNotificationWorkspaceRule(CODE
LOW…ication-preferences/update-notification-preferences.ts24async function updateNotificationPreferences(CODE
LOW…tification-preferences/get-notification-preferences.ts48async function getNotificationPreferences(): Promise<NotificationPreferences> {CODE
LOW…tion-preferences/delete-notification-workspace-rule.ts5async function deleteNotificationWorkspaceRule(CODE
LOW…etchers/workspace-user/update-member-project-access.ts12async function updateMemberProjectAccess({CODE
LOW…etchers/workspace-user/get-workspace-project-access.ts4async function getWorkspaceProjectAccess(workspaceId: string) {CODE
LOW…ings/workspace-general/create-workspace-form-schema.ts4export function createWorkspaceFormSchema(t: TFunction) {CODE
LOW…s/settings/preferences/general-preferences-section.tsx11export function GeneralPreferencesSection() {CODE
LOW…nents/settings/profile/is-delete-confirmation-valid.ts1export function isDeleteConfirmationValid(CODE
LOW…tings/notifications/notification-settings-skeleton.tsx9export function NotificationSettingsSkeleton() {CODE
LOW…notifications/events/use-event-preferences-autosave.ts14export function useEventPreferencesAutosave(CODE
LOWapps/web/src/components/calendar/calendar-task-bar.tsx23export function getCalendarTaskStatusClass(status: string): string {CODE
LOWapps/web/src/components/my-work/group-assigned-tasks.ts12export function groupAssignedTasksByDueDate(CODE
LOWapps/web/src/components/my-work/group-assigned-tasks.ts33export function groupAssignedTasksByProject(CODE
LOW…rkspace-management/workspace-member-confirm-dialog.tsx14function WorkspaceMemberConfirmDialog({CODE
LOW…pace-management/workspace-lifecycle-confirm-dialog.tsx14export function WorkspaceLifecycleConfirmDialog({CODE
LOW…components/project/mattermost-integration-settings.tsx4export function MattermostIntegrationSettings({CODE
LOW…rc/components/project/discord-integration-settings.tsx4export function DiscordIntegrationSettings({CODE
LOW…project/code-hosting/disconnect-integration-button.tsx13export function DisconnectIntegrationButton({CODE
LOW…ts/project/integrations/filter-enabled-integrations.ts11export function filterEnabledIntegrations(CODE
LOW…oject/integrations/disabled-integration-disconnect.tsx9export function DisabledIntegrationDisconnect({CODE
LOW…tions/generic-webhook/build-generic-webhook-request.ts11export function buildGenericWebhookRequest(CODE
LOW…ns/generic-webhook/generic-webhook-event-checklist.tsx13export function GenericWebhookEventChecklist({CODE
LOW…neric-webhook/generic-webhook-integration-settings.tsx28export function GenericWebhookIntegrationSettings({CODE
311 more matches not shown…
Fake / Example Data229 hits · 234 pts
SeverityFileLineSnippetContext
LOWtests/api-integration/managed-profile-edits.test.ts38 name: "Jane Doe",CODE
LOWtests/api-integration/managed-profile-edits.test.ts169 { name: "Jane Doe", image: PICTURE, locale: null },CODE
LOWtests/api-integration/managed-profile-edits.test.ts183 { name: "Jane Doe", locale: "de-DE", image: PICTURE },CODE
LOWtests/api-integration/managed-profile-edits.test.ts188 name: "Jane Doe",CODE
LOWtests/api-integration/managed-profile-edits.test.ts249 expect(await loadProfile(userId)).toMatchObject({ name: "Jane Doe" });CODE
LOWtests/api-integration/managed-profile-edits.test.ts262 name: "Jane Doe",CODE
LOWtests/api-integration/managed-profile-edits.test.ts279 expect(await loadProfile(user.id)).toMatchObject({ name: "Jane Doe" });CODE
LOWtests/api-integration/managed-profile-edits.test.ts288 email: "admin@example.com",CODE
LOWtests/api-integration/project-access-management.test.ts463 const adminInvitation = await invite("admin@example.com", "admin", [CODE
LOWtests/api-integration/project-access-management.test.ts467 email: "admin@example.com",CODE
LOWtests/api-integration/api-key-socket-revocation.test.ts67 email: "admin@example.com",CODE
LOWtests/api-integration/deferred-issue-edits.test.ts1401 : { accessToken: "new-fake-token" }),CODE
LOWtests/api-integration/admin-user-listing.test.ts62 email: "admin@example.com",CODE
LOWtests/api-integration/admin-user-listing.test.ts101 email: "admin@example.com",CODE
LOWtests/api-integration/admin-user-listing.test.ts135 email: "admin@example.com",CODE
LOWtests/api-integration/admin-user-listing.test.ts180 email: "admin@example.com",CODE
LOWtests/api-integration/admin-user-listing.test.ts194 email: "admin@example.com",CODE
LOWtests/api-integration/admin-user-listing.test.ts237 email: "admin@example.com",CODE
LOWtests/api-integration/admin-user-listing.test.ts275 email: "admin@example.com",CODE
LOW…s/api-integration/admin-user-sessions-api-keys.test.ts59 email: "admin@example.com",CODE
LOW…s/api-integration/admin-user-sessions-api-keys.test.ts180 const otherAdminSession = await signIn(app, "admin@example.com");CODE
LOW…s/api-integration/admin-user-sessions-api-keys.test.ts229 const otherAdminSession = await signIn(app, "admin@example.com");CODE
LOWtests/api-integration/admin-email-change.test.ts44 email: "admin@example.com",CODE
LOWtests/api-integration/admin-email-change.test.ts65 email: "admin@example.com",CODE
LOWtests/api-integration/admin-email-change.test.ts87 email: "admin@example.com",CODE
LOWtests/api-integration/workspace-role-demotion.test.ts37 const admin = await signup("admin@example.com");CODE
LOWtests/api-integration/admin-user-removal.test.ts97 email: "admin@example.com",CODE
LOWtests/api-integration/admin-user-removal.test.ts119 email: "admin@example.com",CODE
LOWtests/api-integration/admin-user-removal.test.ts146 email: "admin@example.com",CODE
LOWtests/api-integration/admin-user-removal.test.ts185 email: "admin@example.com",CODE
LOWtests/api-integration/admin-user-removal.test.ts228 email: "admin@example.com",CODE
LOW…s/api-integration/admin-audit-log-auth-actions.test.ts50 email: "admin@example.com",CODE
LOW…s/api-integration/admin-audit-log-auth-actions.test.ts78 actorEmail: "admin@example.com",CODE
LOW…s/api-integration/admin-audit-log-auth-actions.test.ts296 actorEmail: "admin@example.com",CODE
LOWtests/api-integration/helpers/admin/admin-users-api.ts25 email: "admin@example.com",CODE
LOWtests/api/utils/custom-oauth-profile.test.ts11 name: "Jane Doe",CODE
LOWtests/api/utils/custom-oauth-profile.test.ts15 ).toEqual({ name: "Jane Doe" });CODE
LOWtests/api/utils/custom-oauth-profile.test.ts26 ).toEqual({ name: "Jane Doe" });CODE
LOW⚡tests/api/utils/custom-oauth-profile.test.ts56 name: "Jane Doe",CODE
LOW⚡tests/api/utils/custom-oauth-profile.test.ts62 ).toEqual({ name: "Jane Doe", locale: "de" });CODE
LOW⚡tests/api/utils/custom-oauth-profile.test.ts69 name: "Jane Doe",CODE
LOW⚡tests/api/utils/custom-oauth-profile.test.ts76 name: "Jane Doe",CODE
LOW⚡tests/api/utils/custom-oauth-profile.test.ts85 { name: "Jane Doe", picture: "javascript:alert(1)", locale: "sv" },CODE
LOW⚡tests/api/utils/custom-oauth-profile.test.ts88 ).toEqual({ name: "Jane Doe", image: undefined, locale: null });CODE
LOWtests/api/user/assert-managed-profile-unchanged.test.ts41 stored: { name: "Jane Doe", image: null, locale: "en-US" },CODE
LOWtests/api/user/assert-managed-profile-unchanged.test.ts86 { name: "Jane Doe" },CODE
LOWtests/api/user/managed-avatar-guards.test.ts21 return { fields, stored: { name: "Jane Doe", image, locale: null } };CODE
LOWtests/api/user/managed-profile.test.ts14 return { name: "Jane Doe", image: null, locale: "en-US", ...overrides };CODE
LOWtests/api/user/managed-profile.test.ts40 { name: "Jane Doe", image: picture, locale: "en-US" },CODE
LOWtests/api/user/managed-profile.test.ts109 { name: "Jane Doe", picture, locale: "en" },CODE
LOW…ents/skills/coss/references/primitives/preview-card.md54 <AvatarImage src="/avatar.png" alt="John Doe" />CODE
LOW.agents/skills/prototype/SKILL.md213. **Every variant fully works.** Real interactions, real motion, realistic content — actual product-shaped copy, plausiCODE
LOWpackages/importers/src/plane/mapping.test.ts138 name: "Jane Doe",CODE
LOWpackages/importers/src/plane/mapping.test.ts222 { name: "Jane Doe", email: "jane@example.com" },CODE
LOWpackages/importers/src/plane/mapping.test.ts323 author: { name: "Jane Doe", email: "jane@example.com" },CODE
LOWpackages/importers/src/plane/source.test.ts392 assignee: { name: "Jane Doe", email: "jane@example.com" },CODE
LOWpackages/importers/src/plane/source.test.ts482 author: { name: "Jane Doe", email: "jane@example.com" },CODE
LOWpackages/importers/src/plane/source.test.ts521 expect(result.tasks[0]?.assignee).toEqual({ name: "Jane Doe" });CODE
LOWpackages/mcp/src/tools/register.test.ts59 email: "user@example.com",CODE
LOWpackages/mcp/src/tools/register.test.ts80 email: "user@example.com",CODE
169 more matches not shown…
Hallucination Indicators5 hits · 50 pts
SeverityFileLineSnippetContext
CRITICALapps/web/src/components/activity/comment-editor.tsx595 view.state.schema.nodes.kaneoIssueLink.create({CODE
CRITICALapps/web/src/components/task/task-description.tsx503 view.state.schema.nodes.kaneoIssueLink.create({CODE
CRITICALapps/web/src/hooks/use-project-websocket-cache.test.tsx229 const keys = mocks.client.invalidateQueries.mock.calls.map(CODE
CRITICALapps/web/src/hooks/use-project-websocket-cache.test.tsx356 mocks.client.invalidateQueries.mock.calls.filter(CODE
CRITICALapps/web/src/hooks/use-project-websocket-cache.test.tsx475 mocks.client.invalidateQueries.mock.calls.filter(CODE
Over-Commented Block15 hits · 15 pts
SeverityFileLineSnippetContext
LOWcompose.coolify.yml1# Kaneo on CoolifyCOMMENT
LOWcharts/kaneo/values.yaml121 # Use existing secret for external database credentials in the form of a uri, e.g.: "postgresql://user:pass@hostCOMMENT
LOW.devcontainer/devcontainer.json21 // Configure tool-specific properties.COMMENT
LOWscripts/provision-sentry-alerts.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/provision-sentry-dashboards.sh1#!/usr/bin/env bashCOMMENT
LOWapps/web/src/main.tsx21// Capture a pricing-page `?checkout=<plan>-<interval>` deep link before theCOMMENT
LOWapps/web/src/hooks/use-workspace-creation-access.ts21 * it enforces `DISABLE_WORKSPACE_CREATION` through Better Auth'sCOMMENT
LOWapps/web/src/hooks/use-project-websocket.ts281 queryClient.invalidateQueries({ queryKey });COMMENT
LOW…utations/workspace/use-transfer-workspace-ownership.ts1import { useMutation, useQueryClient } from "@tanstack/react-query";COMMENT
LOW…layout/_authenticated/dashboard/settings/workspace.tsx1import { createFileRoute, Outlet, redirect } from "@tanstack/react-router";COMMENT
LOW…rd/workspace/$workspaceId/project/$projectId/gantt.tsx161 );COMMENT
LOW…rkspace/$workspaceId/project/$projectId/gantt.test.tsx361COMMENT
LOWapps/api/src/auth.ts461 );COMMENT
LOWapps/api/src/auth.ts541 },COMMENT
LOWapps/api/src/search/task-short-id.ts1// A task's short id is its project key plus the task number, e.g. "DEP-23".COMMENT
Decorative Section Separators2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMapps/site/components/landing/app-preview/index.tsx404// ─────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMapps/site/components/landing/app-preview/index.tsx406// ─────────────────────────────────────────────────────────────────────────────COMMENT
Example Usage Blocks2 hits · 3 pts
SeverityFileLineSnippetContext
LOWscripts/provision-sentry-alerts.sh7# Usage:COMMENT
LOWscripts/provision-sentry-dashboards.sh8# Usage:COMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcharts/kaneo/values.yaml106 # Important: when using external postgres, make sure you have set up the db user correctly:COMMENT