AI Slop Code Risk Monitor

tldraw/tldraw

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

Build infinite canvas apps in React with the tldraw SDK. World's best, top-most agent recommended #1 five star SDK.

2.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for tldraw/tldraw, a TypeScript project with 51,167 GitHub stars. SynthScan examined 810,974 lines of code across 3944 source files, recording 1571 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 2.9 (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.9
Adjusted Signal
2.9
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
51.2K
Stars
TypeScript
Language
811.0K
Lines of Code
3.9K
Files
1.6K
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 6.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

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

Agent Over-Engineering Ratio 10.8/100 · LOW

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

PR Review Velocity Impact 14.9/100 · LOW

Which changes need focused human review? 1571 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 6HIGH 3MEDIUM 490LOW 1072

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 1571 distinct pattern matches across 13 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.

Decorative Section Separators486 hits · 1207 pts
SeverityFileLineSnippetContext
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx880 // ┌─────────────────────────────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx882 // │ ┌────────────────────────┐ ┌──────────────────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx886 // │ └────────────────────────┘ └──────────────────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx887 // └─────────────────────────────────────────────────────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx979 // ┌─────────────────────────────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx981 // │ ┌────────────────────────┐ ┌──────────────────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx986 // │ └────────────────────────┘ └──────────────────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx987 // └─────────────────────────────────────────────────────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1142 // ┌───────────┼────┼────────────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1144 // │ ┌─────────┼────┼─────────┐ ┌──────────────────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1148 // │ └─────────┼────┼─────────┘ └──────────────────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1149 // └───────────┼────┼────────────────────────────────────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1167 // ┌─────────────────────────────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1169 // │ ┌────────────────────────┐ ┌──────────────────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1174 // │ └────────────────────────┘ └──────────────────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1175 // └─────────────────────────────────────────────────────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1614 // ┌─────────────────────────────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1616 // │ ┌────────────────────────┐ ┌──────────────────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1621 // │ └────────────────────────┘ └──────────────────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1622 // └─────────────────────────────────────────────────────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1723 // ┌─────────────────────────────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1725 // │ ┌────────────────────────┐ ┌──────────────────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1730 // │ └────────────────────────┘ └──────────────────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1731 // └─────────────────────────────────────────────────────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1955// // ┌─────────────────────────────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1957// // │ ┌────────────────────────┐ ┌──────────────────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1962// // │ └────────────────────────┘ └──────────────────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx1963// // └─────────────────────────────────────────────────────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx2040 // ┌─────────────────────────────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx2042 // │ ┌────────────────────────┐ ┌──────────────────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx2047 // │ └────────────────────────┘ └──────────────────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/groups.test.tsx2048 // └─────────────────────────────────────────────────────────┘COMMENT
MEDIUMpackages/tldraw/src/test/groups.test.tsx948 // ┌──────────────────┐COMMENT
MEDIUMpackages/tldraw/src/test/groups.test.tsx953 // └──────────────────┘COMMENT
MEDIUMpackages/tldraw/src/test/groups.test.tsx1286 // ┌──────────────────────────────┐COMMENT
MEDIUMpackages/tldraw/src/test/groups.test.tsx1298 // └──────────────────────────────┘COMMENT
MEDIUMpackages/tldraw/src/test/groups.test.tsx1851 // ┌──────────────────────────────┐COMMENT
MEDIUMpackages/tldraw/src/test/groups.test.tsx1863 // └──────────────────────────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts342 // ┌──────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts348 // 10 └──────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts353 // 20 ┌──────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts359 // 30 └──────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts367 // ┌──────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts375 // └──────────────────OCOMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts388 // ┌──────────────────────────────────────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts389 // │ ┌───────────────────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts393 // │ └───────────────────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts396 // │ ┌───────────────────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts400 // │ └───────────────────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts401 // └──────────────────────────────────────────────────────────────────OCOMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts409 // ┌─────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts410 // │ ┌──────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts419 // 20 │ └──────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts427 // 40 │ ┌──────────┐ │COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts436 // 60 │ └──────────┘ │COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts437 // └─────────────────────────────────OCOMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts446 // O───────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts454 // └───────────────┘COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts463 // ┌───────────────────────────────────┐COMMENT
MEDIUM⚡packages/tldraw/src/test/resizing.test.ts464 // │ ┌──────────┐ │COMMENT
426 more matches not shown…
Hyper-Verbose Identifiers659 hits · 651 pts
SeverityFileLineSnippetContext
LOWinternal/scripts/generate-tldraw-package-docs.ts27export function generateTldrawPackageDocs({CODE
LOWinternal/scripts/api-check.ts46function getTempDeclarationFilename(packageName: string): string {CODE
LOWinternal/scripts/refresh-assets.ts196async function optimizeAndMergeDotcomIcons() {CODE
LOWinternal/scripts/refresh-assets.ts418async function writeUrlBasedAssetDeclarationFile() {CODE
LOWinternal/scripts/refresh-assets.ts455async function writeImportBasedAssetDeclarationFile(CODE
LOWinternal/scripts/refresh-assets.ts495async function writeSelfHostedAssetDeclarationFile(): Promise<void> {CODE
LOWinternal/scripts/refresh-assets.ts532async function writeAssetDeclarationDTSFile() {CODE
LOWinternal/scripts/trigger-sdk-hotfix.ts56async function cherryPickTakingReleaseNotesFromCommit(commitSha: string) {CODE
LOWinternal/scripts/check-circular-deps.ts103async function checkPackageForCircularDependencies(packageName: string, packageEntryPath: string) {CODE
LOWinternal/scripts/publish-editor-extensions.ts57async function copyExtensionToReleaseFolder(version: string) {CODE
LOWinternal/scripts/deploy-dotcom.ts231async function deployWorkersInDependencyOrder({CODE
LOWinternal/scripts/deploy-dotcom.ts532async function deployTldrawUserContentWorker({ dryRun }: { dryRun: boolean }) {CODE
LOWinternal/scripts/deploy-dotcom.ts802function renderFlyioReplicationManagerToml(appName: string, backupPath: string): string {CODE
LOWinternal/scripts/deploy-dotcom.ts830function renderFlyioViewSyncerToml(CODE
LOWinternal/scripts/deploy-dotcom.ts878async function deployZeroViaFlyIoMultiNode() {CODE
LOWinternal/scripts/deploy-dotcom.ts1022async function coalesceWithPreviousAssets(assetsDir: string) {CODE
LOWinternal/scripts/export-template.ts151async function setWorkspaceDependenciesToLatest(dependencies?: Record<string, string>) {CODE
LOWinternal/scripts/prune-preview-deploys.ts71async function listPreviewWorkerDeployments() {CODE
LOWinternal/scripts/prune-preview-deploys.ts192async function deletePreviewWorkerDeployment(id: string) {CODE
LOWinternal/scripts/lib/publishing.ts75async function stageAllPackageJsonChanges() {CODE
LOWinternal/scripts/lib/publishing.ts102export async function getLatestTldrawVersionFromNpm({CODE
LOWinternal/scripts/lib/publishing.ts307export async function publishProductionDocsAndExamplesAndBemo({CODE
LOWinternal/scripts/lib/publishing.ts338export async function triggerBumpVersionsWorkflow(ghToken: string) {CODE
LOWinternal/scripts/lib/labels.ts42export function formatLabelOptionsForPRTemplate() {CODE
LOWpackages/validate/DOCS.md808function validateAndProcess(data: unknown) {CODE
LOW⚡packages/tldraw/api-report.api.md1297export function defaultHandleExternalExcalidrawContent(editor: Editor, { point, content }: {CODE
LOW⚡packages/tldraw/api-report.api.md1303export function defaultHandleExternalFileAsset(editor: Editor, { file, assetId }: TLFileExternalAsset, options: TLDefaulCODE
LOW⚡packages/tldraw/api-report.api.md1306export function defaultHandleExternalFileContent(editor: Editor, { point, files }: {CODE
LOW⚡packages/tldraw/api-report.api.md1312export function defaultHandleExternalFileReplaceContent(editor: Editor, { file, shapeId }: TLFileReplaceExternalContent,CODE
LOW⚡packages/tldraw/api-report.api.md1315export function defaultHandleExternalSvgTextContent(editor: Editor, { point, text }: {CODE
LOW⚡packages/tldraw/api-report.api.md1321export function defaultHandleExternalTextContent(editor: Editor, { point, text, html }: {CODE
LOW⚡packages/tldraw/api-report.api.md1328export function defaultHandleExternalTldrawContent(editor: Editor, { point, content }: {CODE
LOW⚡packages/tldraw/api-report.api.md1334export function defaultHandleExternalUrlAsset(editor: Editor, { url }: TLUrlExternalAsset, { toasts, msg }: TLDefaultExtCODE
LOW⚡packages/tldraw/api-report.api.md1337export function defaultHandleExternalUrlContent(editor: Editor, { point, url, shapeId }: {CODE
LOW⚡packages/tldraw/api-report.api.md1347export function DefaultHelperButtonsContent(): JSX.Element;CODE
LOW⚡packages/tldraw/api-report.api.md3321export function renderHtmlFromRichTextForMeasurement(editor: Editor, richText: TLRichText_2): string;CODE
LOW⚡packages/tldraw/api-report.api.md3324export function renderHtmlFromRichTextWithExtensions(richText: TLRichText_2, extensions: Extensions): string;CODE
LOW⚡packages/tldraw/api-report.api.md3327export function renderPlaintextFromRichText(editor: Editor, richText: TLRichText_2): string;CODE
LOW⚡packages/tldraw/api-report.api.md4263export function TldrawUiComponentsProvider({ overrides, children, }: TLUiComponentsProviderProps): JSX.Element;CODE
LOW⚡packages/tldraw/api-report.api.md4269export function TldrawUiContextualToolbar({ children, className, isMousingDown, getSelectionBounds, changeOnlyWhenYChangCODE
LOW⚡packages/tldraw/api-report.api.md4275export function TldrawUiDialogCloseButton(): JSX.Element;CODE
LOW⚡packages/tldraw/api-report.api.md4290export function TldrawUiDropdownMenuCheckboxItem({ children, onSelect, ...rest }: TLUiDropdownMenuCheckboxItemProps): JSCODE
LOW⚡packages/tldraw/api-report.api.md4293export function TldrawUiDropdownMenuContent({ className, side, align, sideOffset, alignOffset, collisionPadding, childreCODE
LOW⚡packages/tldraw/api-report.api.md4296export function TldrawUiDropdownMenuGroup({ className, children }: TLUiDropdownMenuGroupProps): JSX.Element;CODE
LOW⚡packages/tldraw/api-report.api.md4299export function TldrawUiDropdownMenuIndicator(): JSX.Element;CODE
LOW⚡packages/tldraw/api-report.api.md4311export function TldrawUiDropdownMenuSubContent({ id, alignOffset, sideOffset, size, children, }: TLUiDropdownMenuSubContCODE
LOW⚡packages/tldraw/api-report.api.md4314export function TldrawUiDropdownMenuSubTrigger({ id, label, title, disabled, }: TLUiDropdownMenuSubTriggerProps): JSX.ElCODE
LOW⚡packages/tldraw/api-report.api.md4317export function TldrawUiDropdownMenuTrigger({ children, ...rest }: TLUiDropdownMenuTriggerProps): JSX.Element;CODE
LOW⚡packages/tldraw/api-report.api.md4329export function TldrawUiInFrontOfTheCanvas(): JSX.Element;CODE
LOW⚡packages/tldraw/api-report.api.md4338export function TldrawUiMenuActionCheckboxItem({ actionId, whenDisabled, disabled, checked, ...rest }: TLUiMenuActionCheCODE
LOW⚡packages/tldraw/api-report.api.md4347export function TldrawUiMenuContextProvider({ type, sourceId, children, }: TLUiMenuContextProviderProps): JSX.Element;CODE
LOWpackages/tldraw/api-report.api.md662export function CenteredTopPanelContainer({ maxWidth, ignoreRightWidth, stylePanelWidth, marginBetweenZones, squeezeAmouCODE
LOWpackages/tldraw/api-report.api.md681export function centerSelectionAroundPoint(editor: Editor, position: VecLike): void;CODE
LOWpackages/tldraw/api-report.api.md802export function ConvertToBookmarkMenuItem(): JSX.Element;CODE
LOWpackages/tldraw/api-report.api.md1131export function DefaultActionsMenuContent(): JSX.Element;CODE
LOWpackages/tldraw/api-report.api.md1148export function DefaultContextMenuContent(): JSX.Element;CODE
LOWpackages/tldraw/api-report.api.md1172export function DefaultFollowingIndicator(): JSX.Element | null;CODE
LOWpackages/tldraw/api-report.api.md1379export function DefaultKeyboardShortcutsDialogContent(): JSX.Element;CODE
LOWpackages/tldraw/api-report.api.md1397export function DefaultNoteShapeAttribution({ name, firstName, color, scale, variant, }: TLNoteShapeAttributionProps): JCODE
LOWpackages/tldraw/api-report.api.md1423export function DefaultPeopleMenuFacePile({ userIds, userName, userColor, }: TLUiPeopleMenuFacePileProps): JSX.Element;CODE
599 more matches not shown…
Over-Commented Block270 hits · 204 pts
SeverityFileLineSnippetContext
LOWsocket.yml1version: 2COMMENT
LOWinternal/scripts/i18n-fix-strings.ts1import { Key, LokaliseApi } from '@lokalise/node-api'COMMENT
LOWinternal/scripts/publish-patch.ts61COMMENT
LOWinternal/scripts/i18n-extract.ts1import { execFileSync } from 'child_process'COMMENT
LOWinternal/scripts/deploy-dotcom.ts281 env.MULTIPLAYER_SERVER = `https://${previewId}-tldraw-multiplayer.tldraw.workers.dev`COMMENT
LOWinternal/scripts/i18n-upload-strings.ts1import fs from 'fs'COMMENT
LOWinternal/scripts/lib/didAnyPackageChange.ts61 filePath: stringCOMMENT
LOWinternal/scripts/lib/publishing.ts141 // short-lived publish token automatically.COMMENT
LOWpackages/tldraw/src/test/TldrawEditor.test.tsx121 // shapeUtils={[GroupShapeUtil]}COMMENT
LOWpackages/tldraw/src/test/TldrawEditor.test.tsx141 // ErrorFallback: ({ error }) => {COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx941COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx1061COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx1101 expect(editor.getFocusedGroupId()).toBe(editor.getCurrentPageId())COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx1141 // group C │ │COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx1281COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx1721 beforeEach(() => {COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx1841COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx1941 w: 130,COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx1961// // │ │ └───┘ └───┘ │ │ └───┘ └───┘ │ │COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx1981// editor.select(groupAId, groupBId)COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx2001// editor.select(groupAId)COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx2021// editor.select(ids.boxA)COMMENT
LOWpackages/tldraw/src/test/groups.test.tsx2041 // │ group A group B │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts341 //COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts361 })COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts381 expect(roundedPageBounds(ids.boxA)).toMatchObject({ x: 0, y: 0, w: 5, h: 5 })COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts401 // └──────────────────────────────────────────────────────────────────OCOMMENT
LOWpackages/tldraw/src/test/resizing.test.ts421 // │ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts441 expect(roundedPageBounds(ids.boxB)).toMatchObject({ x: 20, y: 40, w: 10, h: 20 })COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts461COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts481 w: 60,COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts501COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts581 // │ │ │ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts601 // │ │ │ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts621 // │ │ │ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts641 // │ │ A │ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts681 // │ ┌───┐ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts701 // │ ┌──────────┐ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts721 })COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1241COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1281 `)COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1321 // x ┌────────────────────┐COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1361 // │ │ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1381 // │ │ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1401 // │ │ │ X │ │ │ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1421 expect(editor.getShape(ids.boxX)).toMatchObject({ x: 80, y: 80, props: { w: 80, h: 80 } })COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1461describe('snapping while resizing from center', () => {COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1541 })COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1581 // 40 │ │COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1601 [COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1641 ]COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1681 // 20 └───┘COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1741 "20,20 60,20 80,20 120,20",COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1781 // 0 ┌───┐COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1821 //COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1841 })COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1901 })COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts1961 ]COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts2001 // 40 ┌──────────────────┐COMMENT
LOWpackages/tldraw/src/test/resizing.test.ts2021 "120,40 120,60 120,80 120,120",COMMENT
210 more matches not shown…
Structural Annotation Overuse67 hits · 109 pts
SeverityFileLineSnippetContext
LOWinternal/scripts/profile-typescript.ts52 // Step 1: Count files being processedCOMMENT
LOWinternal/scripts/profile-typescript.ts66 // Step 2: Calculate tsbuildinfo cache sizeCOMMENT
LOWinternal/scripts/profile-typescript.ts101 // Step 3: Run extended diagnosticsCOMMENT
LOWinternal/scripts/profile-typescript.ts130 // Step 4: Generate trace fileCOMMENT
LOWinternal/scripts/profile-typescript.ts179 // Step 5: Generate markdown reportCOMMENT
LOWinternal/scripts/profile-tsserver.ts66 // Step 1: Get project infoCOMMENT
LOWinternal/scripts/profile-tsserver.ts91 // Step 2: Check for existing TSServer logsCOMMENT
LOWinternal/scripts/profile-tsserver.ts118 // Step 3: Start a TSServer instance for profilingCOMMENT
LOWinternal/scripts/profile-tsserver.ts249 // Step 4: Generate reportCOMMENT
LOWpackages/tldraw/src/lib/shapes/shared/PathBuilder.tsx282 // Step 1: Compute (x1', y1') - transform from ellipse coordinate system to unit circleCOMMENT
LOWpackages/tldraw/src/lib/shapes/shared/PathBuilder.tsx296 // Step 2: Compute (cx', cy') - center of ellipse in transformed systemCOMMENT
LOW⚡packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx310 // Step 3: Compute (cx, cy) from (cx', cy') - transform back to original coordinate systemCOMMENT
LOW⚡packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx314 // Step 4: Compute the start and end anglesCOMMENT
LOW…or/managers/SpatialIndexManager/SpatialIndexManager.ts152 // Step 1: seed the dirty set from the record diffs.COMMENT
LOW…or/managers/SpatialIndexManager/SpatialIndexManager.ts206 // Step 2: a moved record moves the page transforms of all itsCOMMENT
LOW…or/managers/SpatialIndexManager/SpatialIndexManager.ts222 // Step 3: expand to a fixpoint. Any shape whose bounds may have changedCOMMENT
LOW…or/managers/SpatialIndexManager/SpatialIndexManager.ts240 // Step 4: recheck only the dirty shapes' bounds. The batch stays emptyCOMMENT
LOW⚡…gent/shared/format/convertFocusedShapeToTldrawShape.ts673 // Step 1: Find the best anchor point on the shapeCOMMENT
LOW⚡…gent/shared/format/convertFocusedShapeToTldrawShape.ts679 // Step 2: Convert anchor point to normalized coordinates (0-1 range within shape bounds)COMMENT
LOW⚡…gent/shared/format/convertFocusedShapeToTldrawShape.ts685 // Step 3: Clamp normalized coordinates to valid range [0, 1]COMMENT
LOW⚡…gent/shared/format/convertFocusedShapeToTldrawShape.ts691 // Step 4: Validate that the clamped anchor point is still within the shape geometry. This is necessary because the aboCOMMENT
LOWskills/review-docs/SKILL.md86## Step 1: Initial evaluationCOMMENT
LOWskills/review-docs/SKILL.md188## Step 2: Summarize and prompt userCOMMENT
LOWskills/review-docs/SKILL.md219## Step 3: Triage (before improvement)COMMENT
LOWskills/review-docs/SKILL.md230## Step 4: ImproveCOMMENT
LOWskills/review-docs/SKILL.md296## Step 5: Verification evaluationCOMMENT
LOWskills/review-docs/SKILL.md371## Step 6: LoopCOMMENT
LOWskills/pr-walkthrough/SKILL.md31### Step 1: Understand the PRCOMMENT
LOWskills/pr-walkthrough/SKILL.md56### Step 2: Write the narrationCOMMENT
LOWskills/pr-walkthrough/SKILL.md68### Step 3: Generate audio and timestampsCOMMENT
LOWskills/pr-walkthrough/SKILL.md111### Step 4: Write the manifestCOMMENT
LOWskills/pr-walkthrough/SKILL.md117### Step 5: Render the videoCOMMENT
LOWskills/skill-creator/SKILL.md215### Step 1: Understanding the Skill with Concrete ExamplesCOMMENT
LOWskills/skill-creator/SKILL.md232### Step 2: Planning the Reusable Skill ContentsCOMMENT
LOWskills/skill-creator/SKILL.md256### Step 3: Initializing the SkillCOMMENT
LOWskills/skill-creator/SKILL.md279### Step 4: Edit the SkillCOMMENT
LOWskills/skill-creator/SKILL.md320### Step 5: Packaging a SkillCOMMENT
LOWskills/skill-creator/SKILL.md346### Step 6: IterateCOMMENT
LOWskills/tldraw-migrate/SKILL.md44## Step 1: Understand the environmentCOMMENT
LOWskills/tldraw-migrate/SKILL.md57## Step 2: Upgrade packagesCOMMENT
LOWskills/tldraw-migrate/SKILL.md66## Step 3: Identify all TypeScript errorsCOMMENT
LOWskills/tldraw-migrate/SKILL.md82## Step 4: Fix errors in order of impactCOMMENT
LOWskills/tldraw-migrate/SKILL.md96## Step 5: Fix deprecationsCOMMENT
LOWskills/tldraw-migrate/SKILL.md126## Step 6: VerifyCOMMENT
LOWskills/tldraw-migrate/SKILL.md149## Step 7: ReportCOMMENT
LOWapps/mcp-app/.claude/skills/add-app-to-server/SKILL.md58## Step 1: Analyze Existing ToolsCOMMENT
LOWapps/mcp-app/.claude/skills/add-app-to-server/SKILL.md77## Step 2: Add DependenciesCOMMENT
LOWapps/mcp-app/.claude/skills/add-app-to-server/SKILL.md88## Step 3: Set Up the Build PipelineCOMMENT
LOWapps/mcp-app/.claude/skills/add-app-to-server/SKILL.md143## Step 4: Convert Tools to App ToolsCOMMENT
LOWapps/mcp-app/.claude/skills/add-app-to-server/SKILL.md192## Step 5: Register ResourcesCOMMENT
LOWapps/mcp-app/.claude/skills/add-app-to-server/SKILL.md221## Step 6: Build the UICOMMENT
LOWapps/mcp-app/.claude/skills/convert-web-app/SKILL.md63## Step 1: Analyze the Existing Web AppCOMMENT
LOWapps/mcp-app/.claude/skills/convert-web-app/SKILL.md90## Step 2: Investigate CSP RequirementsCOMMENT
LOWapps/mcp-app/.claude/skills/convert-web-app/SKILL.md111## Step 3: Set Up the MCP ServerCOMMENT
LOWapps/mcp-app/.claude/skills/convert-web-app/SKILL.md201## Step 4: Adapt the Build PipelineCOMMENT
LOWapps/mcp-app/.claude/skills/convert-web-app/SKILL.md252## Step 5: Add MCP App Initialization Alongside Existing LogicCOMMENT
LOWapps/mcp-app/.claude/skills/convert-web-app/SKILL.md407## Step 6: Add Host Styling Integration (MCP Mode Only)COMMENT
LOWapps/dotcom/sync-worker/src/adminRoutes.ts1218 // Step 1: Find all groups the user is the only owner ofCOMMENT
LOWapps/dotcom/sync-worker/src/adminRoutes.ts1253 // Step 2: Soft delete groups (the cleanup_deleted_group_trigger will soft delete their files)COMMENT
LOWapps/dotcom/sync-worker/src/adminRoutes.ts1284 // Step 5: Hard delete groups and user in a transactionCOMMENT
7 more matches not shown…
Hallucination Indicators6 hits · 60 pts
SeverityFileLineSnippetContext
CRITICAL…ages/tldraw/src/lib/ui/hooks/useCollaborationStatus.ts18 return editor.store.props.collaboration.status.get()CODE
CRITICALpackages/editor/src/lib/editor/Editor.ts986 const user = this.store.props.users.currentUser.get()CODE
CRITICALpackages/editor/src/lib/editor/Editor.ts4445 const user = this.store.props.users.currentUser.get()CODE
CRITICALpackages/editor/src/lib/editor/Editor.ts6847 const binding = this.store.schema.types.binding.create({CODE
CRITICALapps/dotcom/client/src/tla/utils/slurping.tsx88 if (this.opts.editor.store.query.records('shape').get().length === 0) {CODE
CRITICAL…rs/attribution-timeline/AttributionTimelineExample.tsx101 const user = editor.store.props.users.currentUser.get()CODE
Verbosity Indicators35 hits · 60 pts
SeverityFileLineSnippetContext
LOWinternal/scripts/profile-typescript.ts52 // Step 1: Count files being processedCOMMENT
LOWinternal/scripts/profile-typescript.ts66 // Step 2: Calculate tsbuildinfo cache sizeCOMMENT
LOWinternal/scripts/profile-typescript.ts101 // Step 3: Run extended diagnosticsCOMMENT
LOWinternal/scripts/profile-typescript.ts130 // Step 4: Generate trace fileCOMMENT
LOWinternal/scripts/profile-typescript.ts179 // Step 5: Generate markdown reportCOMMENT
LOWinternal/scripts/profile-tsserver.ts66 // Step 1: Get project infoCOMMENT
LOWinternal/scripts/profile-tsserver.ts91 // Step 2: Check for existing TSServer logsCOMMENT
LOWinternal/scripts/profile-tsserver.ts118 // Step 3: Start a TSServer instance for profilingCOMMENT
LOWinternal/scripts/profile-tsserver.ts249 // Step 4: Generate reportCOMMENT
LOW…w/src/lib/tools/SelectTool/childStates/EditingShape.ts73 // In the case where on pointer down we hit a shape's label, we need to check if the user is dragging.COMMENT
LOW…es/tldraw/src/lib/tools/SelectTool/childStates/Idle.ts642 // we need to check if the canvas was initially selecting something before continuing.COMMENT
LOWpackages/tldraw/src/lib/shapes/shared/PathBuilder.tsx282 // Step 1: Compute (x1', y1') - transform from ellipse coordinate system to unit circleCOMMENT
LOWpackages/tldraw/src/lib/shapes/shared/PathBuilder.tsx296 // Step 2: Compute (cx', cy') - center of ellipse in transformed systemCOMMENT
LOW⚡packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx310 // Step 3: Compute (cx, cy) from (cx', cy') - transform back to original coordinate systemCOMMENT
LOW⚡packages/tldraw/src/lib/shapes/shared/PathBuilder.tsx314 // Step 4: Compute the start and end anglesCOMMENT
LOWpackages/tlschema/src/records/TLBinding.ts78 ? // if it's a default binding type we need to check if it's been overriddenCODE
LOWpackages/tlschema/src/records/TLShape.ts107 ? // if it's a default shape type we need to check if it's been overriddenCODE
LOW…or/managers/SpatialIndexManager/SpatialIndexManager.ts152 // Step 1: seed the dirty set from the record diffs.COMMENT
LOW…or/managers/SpatialIndexManager/SpatialIndexManager.ts206 // Step 2: a moved record moves the page transforms of all itsCOMMENT
LOW…or/managers/SpatialIndexManager/SpatialIndexManager.ts222 // Step 3: expand to a fixpoint. Any shape whose bounds may have changedCOMMENT
LOW…or/managers/SpatialIndexManager/SpatialIndexManager.ts240 // Step 4: recheck only the dirty shapes' bounds. The batch stays emptyCOMMENT
LOW⚡…gent/shared/format/convertFocusedShapeToTldrawShape.ts673 // Step 1: Find the best anchor point on the shapeCOMMENT
LOW⚡…gent/shared/format/convertFocusedShapeToTldrawShape.ts679 // Step 2: Convert anchor point to normalized coordinates (0-1 range within shape bounds)COMMENT
LOW⚡…gent/shared/format/convertFocusedShapeToTldrawShape.ts685 // Step 3: Clamp normalized coordinates to valid range [0, 1]COMMENT
LOW⚡…gent/shared/format/convertFocusedShapeToTldrawShape.ts691 // Step 4: Validate that the clamped anchor point is still within the shape geometry. This is necessary because the aboCOMMENT
LOWapps/dotcom/sync-worker/src/adminRoutes.ts1218 // Step 1: Find all groups the user is the only owner ofCOMMENT
LOWapps/dotcom/sync-worker/src/adminRoutes.ts1253 // Step 2: Soft delete groups (the cleanup_deleted_group_trigger will soft delete their files)COMMENT
LOWapps/dotcom/sync-worker/src/adminRoutes.ts1284 // Step 5: Hard delete groups and user in a transactionCOMMENT
LOW…les/e2e/tests/test-a11y-style-panel-navigation.spec.ts32 // Step 1: Press Enter to start editing the labelCOMMENT
LOW⚡…les/e2e/tests/test-a11y-style-panel-navigation.spec.ts43 // Step 2: Press Escape to exit editing modeCOMMENT
LOW⚡…les/e2e/tests/test-a11y-style-panel-navigation.spec.ts50 // Step 3: Press Cmd+Enter to focus the style panelCOMMENT
LOW…les/e2e/tests/test-a11y-style-panel-navigation.spec.ts63 // Step 4: Use arrow keys to navigate to a different color (assuming color buttons are first)COMMENT
LOW⚡…les/e2e/tests/test-a11y-style-panel-navigation.spec.ts76 // Step 5: Press Enter to select the colorCOMMENT
LOW⚡…les/e2e/tests/test-a11y-style-panel-navigation.spec.ts79 // Step 6: Press Escape to return focus to the shape. The Escape keydownCOMMENT
LOW⚡…les/e2e/tests/test-a11y-style-panel-navigation.spec.ts84 // Step 7: Press Enter again to edit the label. Selecting a colour above makesCOMMENT
Fake / Example Data31 hits · 37 pts
SeverityFileLineSnippetContext
LOWpackages/validate/DOCS.md566 phone: '555-1234',CODE
LOWpackages/state/README.md95console.log(fullName.get()) // "John Doe"CODE
LOWpackages/state/README.md98console.log(fullName.get()) // "Jane Doe" - automatically updated!CODE
LOWpackages/state/DOCS.md135console.log(fullName.get()) // "John Doe"CODE
LOWpackages/state/DOCS.md141console.log(fullName.get()) // "Jane Doe"CODE
LOW⚡packages/state/DOCS.md180console.log(user.getFullName()) // "John Doe"CODE
LOW⚡packages/state/DOCS.md183console.log(user.getFullName()) // "Jane Doe"CODE
LOW⚡packages/state/DOCS.md191console.log(fullNameComputed.get()) // "John Doe"CODE
LOWpackages/state/src/lib/Computed.ts186 * console.log(fullName.get()) // "John Doe"COMMENT
LOWpackages/state/src/lib/Computed.ts188 * console.log(fullName.get()) // "Jane Doe"COMMENT
LOW⚡packages/state/src/lib/__tests__/transactions.test.ts30 expect(name).toBe('John Doe')CODE
LOW⚡packages/state/src/lib/__tests__/transactions.test.ts37 expect(name).toBe('John Doe')CODE
LOW⚡packages/state/src/lib/__tests__/transactions.test.ts41 expect(name).toBe('John Doe')CODE
LOW⚡packages/state/src/lib/__tests__/transactions.test.ts47 expect(name).toBe('John Doe')CODE
LOW⚡packages/state/src/lib/__tests__/transactions.test.ts56 expect(fullName.get()).toBe('John Doe')CODE
LOW⚡packages/state/src/lib/__tests__/transactions.test.ts57 expect(name).toBe('John Doe')CODE
LOWpackages/state/src/lib/__tests__/transactions.test.ts222 expect(fullName.get()).toBe('John Doe')CODE
LOWpackages/dotcom-shared/src/mutators.test.ts24 email: 'test@test.com',CODE
LOWpackages/worker-shared/src/bookmarks.test.ts204 author: 'John Doe',CODE
LOWpackages/worker-shared/src/bookmarks.test.ts240 author: 'John Doe',CODE
LOWpackages/store/src/lib/StoreListeners.test.ts211 const visit = Visit.create({ visitorName: 'John Doe' })CODE
LOWpackages/store/src/lib/Store.test.ts200 store.put([Author.create({ name: 'J.R.R Tolkein' }), Visit.create({ visitorName: 'John Doe' })])CODE
LOWpackages/store/src/lib/Store.test.ts275 Visit.create({ visitorName: 'John Doe', id: Visit.createId('doe') }),CODE
LOWpackages/store/src/lib/StoreSchema.ts374 * { id: 'book:1', typeName: 'book', title: '', author: 'Jane Doe' },COMMENT
LOWapps/dotcom/sync-worker/src/utils/featureFlags.test.ts234 expect(parseAllowlistEmails(['a@example.com', 'b@example.org'])).toEqual([CODE
LOWapps/dotcom/sync-worker/src/utils/featureFlags.test.ts236 'b@example.org',CODE
LOW…rc/examples/shapes/tools/layout-bindings/snapshot.json122 "placeholder": falseCODE
LOW…rc/examples/shapes/tools/layout-bindings/snapshot.json134 "placeholder": falseCODE
LOW…rc/examples/shapes/tools/layout-bindings/snapshot.json146 "placeholder": falseCODE
LOW…rc/examples/shapes/tools/layout-bindings/snapshot.json158 "placeholder": falseCODE
LOW…rc/examples/shapes/tools/layout-bindings/snapshot.json170 "placeholder": falseCODE
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMpackages/utils/src/lib/version.test.ts417 // This test checks that the system is robust against different global contextsCOMMENT
MEDIUM.github/workflows/e2e-device.yml9# It currently covers multi-touch gestures (pinch), but the harness is meant toCOMMENT
MEDIUMapps/examples/e2e/tests/test-page-menu.spec.ts287 // Wait for edit mode and use robust input handlingCOMMENT
MEDIUMapps/examples/e2e/tests/test-page-menu.spec.ts316 // Wait for edit mode and use robust input handlingCOMMENT
Redundant / Tautological Comments7 hits · 10 pts
SeverityFileLineSnippetContext
LOW.github/workflows/i18n-download-strings.yml62 # Check if there are any changes to JSON filesCOMMENT
LOW…s/update-release-notes/scripts/get-changelog-status.sh52# Check if the archive file already existsCOMMENT
LOW…s/update-release-notes/scripts/get-changelog-status.sh61# Check if next.mdx has content (more than just frontmatter)COMMENT
LOWapps/mcp-app/wrangler.toml28# Set this to the public URL of the worker. Used for constructing absolute image URLs.COMMENT
LOWapps/dotcom/snapshot-state.sh49# Check if volume existsCOMMENT
LOWapps/dotcom/restore-state.sh61# Check if dev-app is runningCOMMENT
LOWapps/dotcom/restore-state.sh102 # Check if containers are using the volumeCOMMENT
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHpackages/tlschema/src/records/TLPageState.ts142 // rather than replace it, I've added another migration below that fixes it.COMMENT
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHapps/dotcom/client/public/robots.txt16# include providing AI-generated search summaries.COMMENT
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHpackages/tldraw/src/test/testutils/pretty.ts30 print() {CODE
Example Usage Blocks3 hits · 4 pts
SeverityFileLineSnippetContext
LOWskills/pr-walkthrough/video/render.sh10# Usage:COMMENT
LOWskills/pr-walkthrough/scripts/make-video.sh4# Usage:COMMENT
LOWskills/pr-walkthrough/scripts/generate-audio.sh7# Usage:COMMENT