The best way to get AI coding agents to solve hard problems in complex codebases.
This report summarizes scanner evidence for humanlayer/humanlayer, a TypeScript project with 12,738 GitHub stars. SynthScan examined 1,405,726 lines of code across 5666 source files, recording 1471 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 2.3 (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.
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.
Can maintainers explain intent, assumptions, and trade-offs? 1212 finding(s).
Are imports declared and package/API names verified? 209 finding(s).
Are wrappers, guards, and repeated structures necessary? 1065 finding(s).
Which changes need focused human review? 1471 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
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.
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.
The scanner identified 1471 distinct pattern matches across 14 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …tide-api-contract/test/diff-comments-contracts.test.ts | 57 | GetDiffCommentsOutputSchema.shape.comments.element.shape.anchor.parse({ | CODE |
| CRITICAL | …tide-api-contract/test/diff-comments-contracts.test.ts | 72 | GetDiffCommentsOutputSchema.shape.comments.element.shape.anchor.parse({ ...anchor, selectedDiff }) | CODE |
| CRITICAL | apps/riptide-cloud/src/components/UsersTable.tsx | 43 | apiQueryClient.auth.admin.users.list.queryOptions({ | CODE |
| CRITICAL | apps/riptide-cloud/src/components/UsersTable.tsx | 51 | queryKey: apiQueryClient.auth.admin.users.list.key({}), | CODE |
| CRITICAL | apps/riptide-cloud/src/components/InvitationsTable.tsx | 12 | ...api.auth.admin.invitations.list.queryOptions({ input: {} }), | CODE |
| CRITICAL | apps/riptide-cloud/src/components/InvitationsTable.tsx | 18 | await cache.invalidateQueries({ queryKey: api.auth.admin.invitations.list.key() }) | CODE |
| CRITICAL | …/riptide-cloud/src/components/OrganizationSwitcher.tsx | 32 | queryClient.auth.user.organizations.list.queryOptions({ | CODE |
| CRITICAL | …/riptide-cloud/src/components/OrganizationSwitcher.tsx | 40 | queryClient.auth.user.invitations.list.queryOptions({ | CODE |
| CRITICAL | apps/riptide-cloud/src/components/UserDetails.tsx | 52 | tanstackQueryClient.invalidateQueries({ queryKey: apiQueryClient.auth.admin.users.list.key({}) }) | CODE |
| CRITICAL | …iptide-cloud/src/components/AdminRequestQueueBadge.tsx | 12 | apiQueryClient.auth.admin.accessRequests.unreadCount.queryOptions({ | CODE |
| CRITICAL⚡ | …s/riptide-cloud/src/components/AccessRequestsTable.tsx | 16 | const listOptions = api.auth.admin.accessRequests.list.queryOptions({ input: { status } }) | CODE |
| CRITICAL⚡ | …s/riptide-cloud/src/components/AccessRequestsTable.tsx | 19 | ...api.auth.admin.accessRequests.unreadCount.queryOptions({ input: {} }), | CODE |
| CRITICAL⚡ | …s/riptide-cloud/src/components/AccessRequestsTable.tsx | 23 | ...api.auth.admin.accessRequests.list.queryOptions({ input: { status: 'archived' } }), | CODE |
| CRITICAL⚡ | …s/riptide-cloud/src/components/AccessRequestsTable.tsx | 32 | cache.invalidateQueries({ queryKey: api.auth.admin.accessRequests.list.key() }), | CODE |
| CRITICAL⚡ | …s/riptide-cloud/src/components/AccessRequestsTable.tsx | 33 | cache.invalidateQueries({ queryKey: api.auth.admin.accessRequests.unreadCount.key() }), | CODE |
| CRITICAL | apps/riptide-cloud/src/components/InvitationForm.tsx | 20 | cache.invalidateQueries({ queryKey: api.auth.admin.accessRequests.list.key() }), | CODE |
| CRITICAL | apps/riptide-cloud/src/components/InvitationForm.tsx | 21 | cache.invalidateQueries({ queryKey: api.auth.admin.accessRequests.unreadCount.key() }), | CODE |
| CRITICAL | apps/riptide-cloud/src/components/InvitationForm.tsx | 34 | api.auth.admin.invitations.create.mutationOptions({ | CODE |
| CRITICAL | apps/riptide-cloud/src/components/InvitationForm.tsx | 40 | cache.invalidateQueries({ queryKey: api.auth.admin.invitations.list.key() }), | CODE |
| CRITICAL | …ud/src/components/settings/OptionalFeaturesSection.tsx | 21 | apiQueryClient.auth.admin.organizations.settings.get.queryOptions({ | CODE |
| CRITICAL | …ud/src/components/settings/OptionalFeaturesSection.tsx | 32 | apiQueryClient.auth.admin.organizations.settings.set.mutationOptions({ | CODE |
| CRITICAL | …cloud/src/components/settings/SlackIntegrationCard.tsx | 234 | apiQueryClient.auth.admin.organizations.settings.get.queryOptions({ | CODE |
| CRITICAL | …cloud/src/components/settings/SlackIntegrationCard.tsx | 379 | apiQueryClient.auth.admin.organizations.settings.set.mutationOptions({ | CODE |
| CRITICAL | …src/components/settings/OrganizationDomainsSection.tsx | 51 | apiQueryClient.auth.admin.organizations.generatePortalLink.mutationOptions({ | CODE |
| CRITICAL | …src/components/settings/OrganizationDomainsSection.tsx | 66 | apiQueryClient.auth.admin.organizations.addDomain.mutationOptions({ | CODE |
| CRITICAL | …src/components/settings/OrganizationDomainsSection.tsx | 99 | apiQueryClient.auth.admin.organizations.removeDomain.mutationOptions({ | CODE |
| CRITICAL | …-cloud/src/components/settings/IntegrationsSection.tsx | 227 | apiQueryClient.auth.admin.organizations.settings.get.queryOptions({ | CODE |
| CRITICAL | …-cloud/src/components/settings/IntegrationsSection.tsx | 280 | apiQueryClient.auth.admin.organizations.settings.set.mutationOptions({ | CODE |
| CRITICAL | …e-cloud/src/components/settings/TaskSharingSection.tsx | 13 | apiQueryClient.auth.admin.organizations.settings.get.queryOptions({ | CODE |
| CRITICAL | …e-cloud/src/components/settings/TaskSharingSection.tsx | 20 | apiQueryClient.auth.admin.organizations.settings.set.mutationOptions({ | CODE |
| CRITICAL | apps/riptide-cloud/src/hooks/useBillingInfo.ts | 18 | api.auth.admin.billing.info.queryOptions({ | CODE |
| CRITICAL⚡ | apps/riptide-cloud/src/hooks/useBillingInfo.ts | 35 | await queryClient.invalidateQueries({ queryKey: api.auth.admin.billing.info.key() }) | CODE |
| CRITICAL⚡ | apps/riptide-cloud/src/hooks/useBillingInfo.ts | 43 | await queryClient.invalidateQueries({ queryKey: api.auth.admin.billing.info.key() }) | CODE |
| CRITICAL⚡ | apps/riptide-cloud/src/hooks/useBillingInfo.ts | 51 | await queryClient.invalidateQueries({ queryKey: api.auth.admin.billing.info.key() }) | CODE |
| CRITICAL⚡ | apps/riptide-cloud/src/hooks/useBillingInfo.ts | 59 | await queryClient.invalidateQueries({ queryKey: api.auth.admin.billing.info.key() }) | CODE |
| CRITICAL | apps/riptide-cloud/src/routes/settings.tsx | 86 | void queryClient.invalidateQueries({ queryKey: api.auth.admin.billing.info.key() }) | CODE |
| CRITICAL | apps/riptide-cloud/src/routes/organizations/join.tsx | 28 | queryKey: apiQueryClient.auth.user.invitations.list.key({}), | CODE |
| CRITICAL | apps/riptide-cloud/src/routes/organizations/join.tsx | 41 | queryKey: apiQueryClient.auth.user.invitations.list.key({}), | CODE |
| CRITICAL | apps/riptide-cloud/src/routes/organizations/join.tsx | 44 | queryKey: apiQueryClient.auth.user.organizations.list.key({}), | CODE |
| CRITICAL | apps/riptide-cloud/src/routes/organizations/create.tsx | 140 | queryKey: apiQueryClient.auth.user.organizations.list.key({}), | CODE |
| CRITICAL | apps/riptide-cloud/src/routes/organizations/select.tsx | 29 | queryKey: queryClient.auth.user.organizations.list.key({}), | CODE |
| CRITICAL | apps/riptide-cloud/src/routes/organizations/select.tsx | 36 | queryKey: queryClient.auth.user.invitations.list.key({}), | CODE |
| CRITICAL | apps/riptide-cloud/src/routes/admin/users.tsx | 30 | const { data } = useQuery(apiQueryClient.auth.admin.users.list.queryOptions({ input: {} })) | CODE |
| CRITICAL | …pc/api/projects-v2/repository-sources-upsert.effect.ts | 7 | effectOrpcBaseOrganizationRequired.projects.v2.repositorySources.upsert.effect(function* ({ | CODE |
| CRITICAL | …api/src/orpc/api/projects-v2/location-upsert.effect.ts | 6 | export const upsertProjectV2LocationProcedure = effectOrpcBaseOrganizationRequired.projects.v2.locations.upsert.effect( | CODE |
| CRITICAL | …/orpc/api/projects-v2/repository-sources-get.effect.ts | 7 | effectOrpcBaseOrganizationRequired.projects.v2.repositorySources.get.effect(function* ({ input, context, errors }) { | CODE |
| CRITICAL | …tide-api/src/orpc/api/auth/admin/invitations-create.ts | 37 | export const createAdminInvitationProcedure = effectOrpcBaseForOrganizationAdmin.auth.admin.invitations.create.effect( | CODE |
| CRITICAL | …pc/api/auth/admin/organizations-settings-set.effect.ts | 15 | effectOrpcBaseForOrganizationAdmin.auth.admin.organizations.settings.set.effect(function* ({ | CODE |
| CRITICAL | …ps/riptide-api/src/orpc/api/auth/admin/billing-info.ts | 31 | export const billingInfoProcedure = apiBaseForOrganizationAdmin.auth.admin.billing.info.handler( | CODE |
| CRITICAL | …ps/riptide-api/src/orpc/api/auth/admin/users-remove.ts | 8 | export const adminRemoveUserProcedure = apiBaseForOrganizationAdmin.auth.admin.users.remove.handler( | CODE |
| CRITICAL | …ptide-api/src/orpc/api/auth/admin/users-update-role.ts | 15 | export const adminUpdateUserRoleProcedure = apiBaseForOrganizationAdmin.auth.admin.users.updateRole.handler( | CODE |
| CRITICAL | …src/orpc/api/auth/admin/organizations-remove-domain.ts | 3 | export const removeDomainProcedure = apiBaseForOrganizationAdmin.auth.admin.organizations.removeDomain.handler( | CODE |
| CRITICAL | …iptide-api/src/orpc/api/auth/admin/invitations-list.ts | 5 | export const listAdminInvitationsProcedure = apiBaseForOrganizationAdmin.auth.admin.invitations.list.handler( | CODE |
| CRITICAL | …tide-api/src/orpc/api/auth/admin/invitations-revoke.ts | 4 | export const revokeAdminInvitationProcedure = apiBaseForOrganizationAdmin.auth.admin.invitations.revoke.handler( | CODE |
| CRITICAL | …c/api/auth/admin/organizations-generate-portal-link.ts | 4 | apiBaseForOrganizationAdmin.auth.admin.organizations.generatePortalLink.handler(async ({ input, context }) => { | CODE |
| CRITICAL | …pi/src/orpc/api/auth/admin/organizations-add-domain.ts | 6 | export const addDomainProcedure = apiBaseForOrganizationAdmin.auth.admin.organizations.addDomain.handler( | CODE |
| CRITICAL | …iptide-api/src/orpc/api/auth/admin/users-reactivate.ts | 11 | export const adminReactivateUserProcedure = apiBaseForOrganizationAdmin.auth.admin.users.reactivate.handler( | CODE |
| CRITICAL | …/src/orpc/api/auth/admin/users-set-metrics-advanced.ts | 7 | apiBaseForOrganizationAdmin.auth.admin.users.setMetricsAdvancedEnabled.handler( | CODE |
| CRITICAL | apps/riptide-api/src/orpc/api/auth/admin/users-list.ts | 16 | export const listAdminUsersProcedure = apiBaseForOrganizationAdmin.auth.admin.users.list.handler( | CODE |
| CRITICAL | …iptide-api/src/orpc/api/auth/admin/users-deactivate.ts | 9 | export const adminDeactivateUserProcedure = apiBaseForOrganizationAdmin.auth.admin.users.deactivate.handler( | CODE |
| 81 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/oxlint/anti-slop/shared/dictionary-types.ts | 126 | function isEffectivelyEmptyTypeLiteral(type: ESTree.TSTypeLiteral): boolean { | CODE |
| LOW⚡ | tools/oxlint/anti-slop/shared/dictionary-types.ts | 130 | function isEffectivelyEmptyInterface(declarations: readonly ESTree.TSInterfaceDeclaration[]): boolean { | CODE |
| LOW⚡ | tools/oxlint/anti-slop/shared/dictionary-types.ts | 140 | function resolvedSubstitutionArgument( | CODE |
| LOW | tools/oxlint/anti-slop/shared/dictionary-types.ts | 278 | export function classifyUnsafeDictionaryValue( | CODE |
| LOW | tools/oxlint/anti-slop/shared/dictionary-types.ts | 439 | export function isPopulatedObjectExpression(expression: ESTree.Expression): boolean { | CODE |
| LOW | tools/oxlint/anti-slop/shared/dictionary-types.ts | 452 | export function isKnownEvidenceExpression(expression: ESTree.Expression): boolean { | CODE |
| LOW | …ols/oxlint/anti-slop/shared/lexical-type-parameters.ts | 9 | function collectInferTypeParameterNames(node: ESTree.Node, visitorKeys: VisitorKeys, names: Set<string>): void { | CODE |
| LOW | …ols/oxlint/anti-slop/shared/lexical-type-parameters.ts | 25 | export function lexicalTypeParameterNames(node: ESTree.Node, visitorKeys: VisitorKeys): ReadonlySet<string> { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-widen-then-assert.ts | 18 | function unwrapExpressionParentheses(expression: ESTree.Expression): ESTree.Expression { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-widen-then-assert.ts | 133 | function isDefinitelyNarrowerRecordType(type: ESTree.TSType): boolean { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-widen-then-assert.ts | 159 | function resolvedVariableForIdentifier( | CODE |
| LOW | …s/oxlint/anti-slop/rules/no-chained-type-assertions.ts | 6 | function isTypeAssertionExpression(node: ESTree.Node): node is TypeAssertionExpression { | CODE |
| LOW | …s/oxlint/anti-slop/rules/no-chained-type-assertions.ts | 10 | function unwrapParenthesizedExpression(expression: ESTree.Expression): ESTree.Expression { | CODE |
| LOW | …s/oxlint/anti-slop/rules/no-chained-type-assertions.ts | 27 | function isOutermostAssertionInChain(node: TypeAssertionExpression): boolean { | CODE |
| LOW | …s/oxlint/anti-slop/rules/no-chained-type-assertions.ts | 39 | function isForbiddenAssertionChain(node: TypeAssertionExpression): boolean { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-known-value-widening.ts | 114 | function isStaticallyKnownPropertyKey( | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-known-value-widening.ts | 141 | function hasAccumulatorMemberWrite(sourceCode: SourceCode, variable: Variable): boolean { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-known-value-widening.ts | 157 | function isDictionaryAccumulatorBinding(sourceCode: SourceCode, declarator: ESTree.VariableDeclarator): boolean { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-known-value-widening.ts | 174 | function isOpenDictionaryAnnotation(annotation: ESTree.TSTypeAnnotation, environment: TypeEnvironment): boolean { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-known-value-widening.ts | 200 | function isComputedAssignmentTargetAssertion(node: ESTree.TSAsExpression | ESTree.TSTypeAssertion): boolean { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-known-value-widening.ts | 236 | function hasRecursiveTransformReturn(node: ESTree.Node, name: string): boolean { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-known-value-widening.ts | 264 | function isExplicitUnknownBoundary(expression: ESTree.Expression): boolean { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-known-value-widening.ts | 273 | function hasExplicitUnknownBoundaryReturn(node: ESTree.Node): boolean { | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-known-value-widening.ts | 305 | function isDynamicDictionaryConstruction( | CODE |
| LOW | tools/oxlint/anti-slop/rules/no-known-value-widening.ts | 336 | function isDictionaryAccumulatorTarget(destination: WideningTarget): boolean { | CODE |
| LOW | …oxlint/anti-slop/rules/no-reprovide-ambient-service.ts | 38 | function isEffectProvideServiceCall(node: ESTree.CallExpression, effectNamespaces: ReadonlySet<string>): boolean { | CODE |
| LOW | …ts/riptide-api-contract/src/lib/filename-validation.ts | 22 | function containsTraversalPatterns(val: string): boolean { | CODE |
| LOW | …ts/riptide-api-contract/src/lib/filename-validation.ts | 29 | function containsDangerousSubpathPatterns(val: string): boolean { | CODE |
| LOW | …ts/riptide-api-contract/src/lib/filename-validation.ts | 51 | function hasInvalidSubpathStructure(val: string): boolean { | CODE |
| LOW | …riptide-api-contract/src/api/tasks/experiment-flags.ts | 17 | export function buildCreatedWithExperimentFlags(taskComposer: TaskComposerSnapshot): CreatedWithExperimentFlags { | CODE |
| LOW | contracts/riptide-api-contract/src/api/tasks/create.ts | 83 | function validateWorkspaceAndWorktreeTiming( | CODE |
| LOW | golden/de-purification-patterns.md | 28 | export const ConnectedConversationEventRow = memo(function ConnectedConversationEventRow({ | CODE |
| LOW | scripts/verify-agentlayer-release-deps.ts | 104 | function packageNameFromResolution(resolution: string): string { | CODE |
| LOW | scripts/verify-agentlayer-release-deps.ts | 139 | function withoutAllowedWorkspaceDependencies( | CODE |
| LOW | …kages/ui/storybook/json-artifact-viewer-shell-demo.tsx | 15 | export function JsonArtifactViewerShellDemo({ fileName, content }: JsonArtifactViewerShellDemoProps) { | CODE |
| LOW | …/storybook/diff-review/OpenPullRequestBarShellDemo.tsx | 16 | export function OpenPullRequestBarShellDemo({ | CODE |
| LOW | …i/storybook/diff-review/DiffCommentsPanelShellDemo.tsx | 33 | export function DiffCommentsPanelShellDemo({ | CODE |
| LOW | packages/ui/src/vscode-themes/extract-themes.ts | 269 | function generateTypeScriptMetadata(themes: ExtractedTheme[]): string { | CODE |
| LOW | …ges/ui/src/markdown-viewer/markdown-viewer.stories.tsx | 330 | function MarkdownViewerWithClickInfo(props: React.ComponentProps<typeof MarkdownViewer>) { | CODE |
| LOW | packages/ui/src/markdown-viewer/CodeBlock.tsx | 22 | export function getForwardedDecorationClasses(className: string): string { | CODE |
| LOW | packages/ui/src/markdown-viewer/CodeBlock.tsx | 80 | return function CodeBlockWithCustomRenderers({ node, decorations }) { | CODE |
| LOW | packages/ui/src/constants/permission-modes.ts | 28 | export function getAgentPermissionModeConstraint(agent: AgentOption): AgentPermissionModeConstraint | null { | CODE |
| LOW | packages/ui/src/constants/permission-modes.ts | 37 | export function resolvePermissionsModeForAgent(agent: AgentOption, mode: PermissionsMode): PermissionsMode { | CODE |
| LOW | packages/ui/src/constants/models.ts | 135 | export function getModelOptionsForAgentProvider({ | CODE |
| LOW | packages/ui/src/components/hotkey-playground.tsx | 284 | export function playgroundActionForKeyEvent(event: { | CODE |
| LOW | packages/ui/src/components/rich-text-editor.tsx | 106 | function getSlashMenuHorizontalStyle(triggerLeft: number, viewportWidth: number): CSSProperties { | CODE |
| LOW | packages/ui/src/components/chart.tsx | 338 | function getPayloadConfigFromPayload( | CODE |
| LOW | …c/components/effort-selector-keyboard-demo.stories.tsx | 9 | function EffortSelectorKeyboardDemo() { | CODE |
| LOW | packages/ui/src/components/artifact-viewer.tsx | 40 | export function getArtifactViewerViewOptions(fileName?: string, includeDiff = false): ArtifactViewerViewOption[] { | CODE |
| LOW | packages/ui/src/components/artifact-viewer.tsx | 55 | export function getDisplayedArtifactViewMode(fileName: string | undefined, viewMode: ArtifactViewMode): ArtifactViewMode | CODE |
| LOW | …kages/ui/src/components/task-view-controls.stories.tsx | 57 | function TaskViewControlsShellDemo() { | CODE |
| LOW | …s/ui/src/components/comments-bulk-actions-dropdown.tsx | 61 | export function useCommentsBulkActionsModel({ | CODE |
| LOW | …s/ui/src/components/comments-bulk-actions-dropdown.tsx | 96 | export function CommentsBulkActionsMenuItems({ model }: { model: CommentsBulkActionsModel }) { | CODE |
| LOW | …s/ui/src/components/comments-bulk-actions-dropdown.tsx | 123 | export function CommentsBulkActionsOverflowItem({ model }: { model: CommentsBulkActionsModel }) { | CODE |
| LOW | …s/ui/src/components/comments-bulk-actions-dropdown.tsx | 136 | export function CommentsBulkActionsDropdownView({ | CODE |
| LOW | …src/components/multiplayer-prompting-enable-dialog.tsx | 26 | export function MultiplayerPromptingEnableDialog({ | CODE |
| LOW | …/ui/src/components/bypass-permissions-nudge-dialog.tsx | 27 | export function BypassPermissionsNudgeDialog({ | CODE |
| LOW | …ckages/ui/src/components/sidebar/status-indicators.tsx | 10 | export function renderTaskStatusIndicator(status?: TaskStatus) { | CODE |
| LOW | …ckages/ui/src/components/sidebar/status-indicators.tsx | 46 | export function renderSessionStatusIndicator(status?: string | null) { | CODE |
| LOW | …-stream/tool-content/apply-patch-tool-call-content.tsx | 35 | function generateUnifiedDiffForAdd(filePath: string, content: string): string { | CODE |
| 955 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …kills/agent-browser/templates/authenticated-session.sh | 32 | # ================================================================ | COMMENT |
| MEDIUM | …kills/agent-browser/templates/authenticated-session.sh | 34 | # ================================================================ | COMMENT |
| MEDIUM | …kills/agent-browser/templates/authenticated-session.sh | 54 | # ================================================================ | COMMENT |
| MEDIUM | …kills/agent-browser/templates/authenticated-session.sh | 56 | # ================================================================ | COMMENT |
| MEDIUM | …kills/agent-browser/templates/authenticated-session.sh | 76 | # ================================================================ | COMMENT |
| MEDIUM | …kills/agent-browser/templates/authenticated-session.sh | 78 | # ================================================================ | COMMENT |
| MEDIUM | …ges/ui/src/markdown-viewer/markdown-viewer.stories.tsx | 9 | // ─── Shared markdown content ───────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …ges/ui/src/markdown-viewer/markdown-viewer.stories.tsx | 126 | // ─── Demo authors for the "add comment" flow ──────────────────────────────── | COMMENT |
| MEDIUM⚡ | …ges/ui/src/markdown-viewer/markdown-viewer.stories.tsx | 135 | // ─── Pending comment target (either a text selection or a block click) ─────── | COMMENT |
| MEDIUM⚡ | …ges/ui/src/markdown-viewer/markdown-viewer.stories.tsx | 141 | // ─── Interactive wrapper ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/ui/src/markdown-viewer/markdown-viewer.stories.tsx | 328 | // ─── Read-only wrapper (original Default story behavior) ───────────────────── | COMMENT |
| MEDIUM | …ges/ui/src/markdown-viewer/markdown-viewer.stories.tsx | 373 | // ─── Storybook config ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/test/diagnostics/capture-matrix.ts | 110 | // ───────────────────────────── merges ───────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/test/diagnostics/capture-matrix.ts | 218 | // ─────────────────────────── rewrites ─────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/test/diagnostics/capture-matrix.ts | 384 | // ─────────────────────────── repo config ─────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/test/diagnostics/capture-matrix.ts | 570 | // ─────────────────────────── content ─────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/test/diagnostics/capture-matrix.ts | 806 | // ─────────────────────────── watch loop ─────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/test/diagnostics/capture-matrix.ts | 859 | // ─────────────────────────── runner ─────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 79 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 82 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 143 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 145 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 151 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 153 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 172 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 176 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 307 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 310 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 378 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 381 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 503 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/agents/codelayer/hooks.ts | 505 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 79 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 82 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 34 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 36 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 157 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 159 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 245 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 248 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 283 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 286 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 380 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 382 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 408 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 410 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 454 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 461 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 543 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/riptide-daemon/src/lib/artifact-sync-utils.ts | 545 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 20 | # Step 1: Navigate to form | COMMENT |
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 24 | # Step 2: Snapshot to discover form elements | COMMENT |
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 29 | # Step 3: Fill form fields (customize these refs based on snapshot output) | COMMENT |
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 46 | # Step 4: Wait for submission | COMMENT |
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 50 | # Step 5: Verify result | COMMENT |
| LOW⚡ | .claude/skills/rebase-drizzle-migration/SKILL.md | 62 | ### Step 1: Checkout upstream/main | COMMENT |
| LOW⚡ | .claude/skills/rebase-drizzle-migration/SKILL.md | 72 | ### Step 2: Apply migrations to database | COMMENT |
| LOW⚡ | .claude/skills/rebase-drizzle-migration/SKILL.md | 82 | ### Step 3: Switch back to feature branch | COMMENT |
| LOW⚡ | .claude/skills/rebase-drizzle-migration/SKILL.md | 92 | ### Step 4: Clean up migration artifacts | COMMENT |
| LOW | .claude/skills/rebase-drizzle-migration/SKILL.md | 113 | ### Step 5: Verify clean state | COMMENT |
| LOW | .claude/skills/rebase-drizzle-migration/SKILL.md | 125 | ### Step 6: reseet database state | COMMENT |
| LOW | .claude/skills/rebase-drizzle-migration/SKILL.md | 141 | ### Step 7: Regenerate migration | COMMENT |
| LOW | .claude/skills/rebase-drizzle-migration/SKILL.md | 153 | ### Step 8: Apply migration locally | COMMENT |
| LOW | .claude/skills/rebase-drizzle-migration/SKILL.md | 163 | ### Step 9: Verify and commit | COMMENT |
| LOW | .claude/skills/merge-resolve-conflicts/SKILL.md | 13 | ## Step 1: Orientation | COMMENT |
| LOW | .claude/skills/merge-resolve-conflicts/SKILL.md | 26 | ## Step 2: Action | COMMENT |
| LOW | …s/migrate-orpc-to-effect/references/find-candidates.md | 5 | ## Step 1: Check available Effect services | COMMENT |
| LOW | …s/migrate-orpc-to-effect/references/find-candidates.md | 17 | ## Step 2: Find procedures not yet migrated | COMMENT |
| LOW | …s/migrate-orpc-to-effect/references/find-candidates.md | 41 | ## Step 3: Check what services each candidate uses | COMMENT |
| LOW | …s/migrate-orpc-to-effect/references/find-candidates.md | 56 | ## Step 4: Match against available Effect services | COMMENT |
| LOW⚡ | scripts/cleanup_worktree.sh | 44 | # Step 1: Handle thoughts directory if it exists | COMMENT |
| LOW | scripts/cleanup_worktree.sh | 92 | # Step 2: Remove the worktree | COMMENT |
| LOW | scripts/cleanup_worktree.sh | 106 | # Step 3: Delete the branch (optional, with confirmation) | COMMENT |
| LOW | scripts/cleanup_worktree.sh | 120 | # Step 4: Prune worktree references | COMMENT |
| LOW⚡ | packages/ai/tests/context7-api.test.ts | 97 | // Step 1: Search for library | COMMENT |
| LOW⚡ | packages/ai/tests/context7-api.test.ts | 106 | // Step 2: Get context (as text, the default) | COMMENT |
| LOW | packages/ai/eval/doc-researcher/runner.ts | 16 | // Step 1: Call both APIs in parallel | COMMENT |
| LOW⚡ | packages/ai/eval/doc-researcher/runner.ts | 31 | // Step 2: Summarize both responses in parallel | COMMENT |
| LOW⚡ | packages/ai/eval/doc-researcher/runner.ts | 38 | // Step 3: Judge both modes in parallel | COMMENT |
| LOW⚡ | packages/ai/src/agents/doc-researcher/orchestrator.ts | 61 | // Step 1: Concurrent fetch from both sources | COMMENT |
| LOW⚡ | packages/ai/src/agents/doc-researcher/orchestrator.ts | 64 | // Step 2: Format results for AI consumption | COMMENT |
| LOW⚡ | packages/ai/src/agents/doc-researcher/orchestrator.ts | 67 | // Step 3: AI orchestration to produce final response | COMMENT |
| LOW | packages/ai/src/agents/doc-researcher/orchestrator.ts | 85 | // Step 4: Convert AI output to discriminated union | COMMENT |
| LOW⚡ | packages/sync/test/health-tracker-integration.test.ts | 91 | // Step 1: Fail — switch to query | COMMENT |
| LOW⚡ | packages/sync/test/health-tracker-integration.test.ts | 97 | // Step 2: 2 successes — still in query (threshold = 3) | COMMENT |
| LOW⚡ | packages/sync/test/health-tracker-integration.test.ts | 103 | // Step 3: 3rd success — recovery | COMMENT |
| LOW | …ptide-rpi-claude-plugin/skills/setup-worktree/SKILL.md | 10 | ### Step 0: Check if worktree setup should be skipped | COMMENT |
| LOW | …rpi-claude-plugin/skills/configure-workspaces/SKILL.md | 20 | ### Step 0: Select the repository | COMMENT |
| LOW | …rpi-claude-plugin/skills/configure-workspaces/SKILL.md | 44 | ### Step 1: Read the project | COMMENT |
| LOW | …rpi-claude-plugin/skills/configure-workspaces/SKILL.md | 72 | ### Step 2: Build the proposal | COMMENT |
| LOW | …rpi-claude-plugin/skills/configure-workspaces/SKILL.md | 104 | ### Step 3: Validate the proposal | COMMENT |
| LOW | …rpi-claude-plugin/skills/configure-workspaces/SKILL.md | 194 | ### Step 4: Write the approved config | COMMENT |
| LOW | …rpi-claude-plugin/skills/configure-workspaces/SKILL.md | 226 | ### Step 5: Confirm and summarize | COMMENT |
| LOW⚡ | …e-api/test/procedures/queued-messages-send-now.test.ts | 267 | // Step 1: sendNow flags the row and requests interrupt | COMMENT |
| LOW⚡ | …e-api/test/procedures/queued-messages-send-now.test.ts | 274 | // Step 2: daemon reports interrupted — the drain delivers the flagged row | COMMENT |
| LOW⚡ | …riptide-api/test/learning/optimistic-mutations.test.ts | 626 | // Step 1: Parse the subset options from the query context | COMMENT |
| LOW⚡ | …riptide-api/test/learning/optimistic-mutations.test.ts | 629 | // Step 2: Call the oRPC sync route with the parsed options | COMMENT |
| LOW⚡ | …riptide-api/test/learning/optimistic-mutations.test.ts | 636 | // Step 3: Return the response (use select to extract rows if needed) | COMMENT |
| LOW⚡ | apps/riptide-api/src/orpc/daemon/sessions/update.ts | 514 | // Step 1: Run extraction (has its own try/catch + Sentry — never throws) | COMMENT |
| LOW | apps/riptide-api/src/orpc/daemon/sessions/update.ts | 530 | // Step 2: Run auto-advance (checkAutoAdvance has its own try/catch + Sentry — never throws) | COMMENT |
| LOW⚡ | apps/cli/src/commands/login.ts | 8 | // Step 1: Device auth does not require WorkOS redirect URI setup. | COMMENT |
| LOW⚡ | apps/cli/src/commands/login.ts | 12 | // Step 2: List user's organizations | COMMENT |
| LOW⚡ | apps/cli/src/commands/login.ts | 20 | // Step 3: Determine target org | COMMENT |
| LOW⚡ | apps/cli/src/commands/login.ts | 48 | // Step 4: If the JWT is already scoped to the right org, we're done | COMMENT |
| LOW⚡ | apps/cli/src/commands/login.ts | 54 | // Step 5: Refresh token with selected org to get an org-scoped JWT | COMMENT |
| LOW | apps/riptide-ui/src/components/HotkeyScopeBoundary.tsx | 62 | // Step 1: Disable currently active scopes except wildcard | COMMENT |
| LOW⚡ | apps/riptide-ui/src/components/HotkeyScopeBoundary.tsx | 75 | // Step 2: Enable our scope | COMMENT |
| LOW⚡ | apps/riptide-ui/src/components/HotkeyScopeBoundary.tsx | 79 | // Step 3: Ensure root is enabled if not disabled | COMMENT |
| LOW⚡ | apps/riptide-ui/src/hooks/useFileUpload.ts | 115 | // Step 1: Get presigned URL (no DB write) | COMMENT |
| LOW⚡ | apps/riptide-ui/src/hooks/useFileUpload.ts | 122 | // Step 2: Upload directly to S3 | COMMENT |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 20 | # Step 1: Navigate to form | COMMENT |
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 24 | # Step 2: Snapshot to discover form elements | COMMENT |
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 29 | # Step 3: Fill form fields (customize these refs based on snapshot output) | COMMENT |
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 46 | # Step 4: Wait for submission | COMMENT |
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 50 | # Step 5: Verify result | COMMENT |
| LOW⚡ | scripts/cleanup_worktree.sh | 44 | # Step 1: Handle thoughts directory if it exists | COMMENT |
| LOW | scripts/cleanup_worktree.sh | 92 | # Step 2: Remove the worktree | COMMENT |
| LOW | scripts/cleanup_worktree.sh | 106 | # Step 3: Delete the branch (optional, with confirmation) | COMMENT |
| LOW | scripts/cleanup_worktree.sh | 120 | # Step 4: Prune worktree references | COMMENT |
| LOW⚡ | packages/ai/tests/context7-api.test.ts | 97 | // Step 1: Search for library | COMMENT |
| LOW⚡ | packages/ai/tests/context7-api.test.ts | 106 | // Step 2: Get context (as text, the default) | COMMENT |
| LOW | packages/ai/eval/doc-researcher/runner.ts | 16 | // Step 1: Call both APIs in parallel | COMMENT |
| LOW⚡ | packages/ai/eval/doc-researcher/runner.ts | 31 | // Step 2: Summarize both responses in parallel | COMMENT |
| LOW⚡ | packages/ai/eval/doc-researcher/runner.ts | 38 | // Step 3: Judge both modes in parallel | COMMENT |
| LOW⚡ | packages/ai/src/agents/doc-researcher/orchestrator.ts | 61 | // Step 1: Concurrent fetch from both sources | COMMENT |
| LOW⚡ | packages/ai/src/agents/doc-researcher/orchestrator.ts | 64 | // Step 2: Format results for AI consumption | COMMENT |
| LOW⚡ | packages/ai/src/agents/doc-researcher/orchestrator.ts | 67 | // Step 3: AI orchestration to produce final response | COMMENT |
| LOW | packages/ai/src/agents/doc-researcher/orchestrator.ts | 85 | // Step 4: Convert AI output to discriminated union | COMMENT |
| LOW⚡ | packages/sync/test/health-tracker-integration.test.ts | 91 | // Step 1: Fail — switch to query | COMMENT |
| LOW⚡ | packages/sync/test/health-tracker-integration.test.ts | 97 | // Step 2: 2 successes — still in query (threshold = 3) | COMMENT |
| LOW⚡ | packages/sync/test/health-tracker-integration.test.ts | 103 | // Step 3: 3rd success — recovery | COMMENT |
| LOW⚡ | …e-api/test/procedures/queued-messages-send-now.test.ts | 267 | // Step 1: sendNow flags the row and requests interrupt | COMMENT |
| LOW⚡ | …e-api/test/procedures/queued-messages-send-now.test.ts | 274 | // Step 2: daemon reports interrupted — the drain delivers the flagged row | COMMENT |
| LOW⚡ | …riptide-api/test/learning/optimistic-mutations.test.ts | 626 | // Step 1: Parse the subset options from the query context | COMMENT |
| LOW⚡ | …riptide-api/test/learning/optimistic-mutations.test.ts | 629 | // Step 2: Call the oRPC sync route with the parsed options | COMMENT |
| LOW⚡ | …riptide-api/test/learning/optimistic-mutations.test.ts | 636 | // Step 3: Return the response (use select to extract rows if needed) | COMMENT |
| LOW⚡ | apps/riptide-api/src/orpc/daemon/sessions/update.ts | 514 | // Step 1: Run extraction (has its own try/catch + Sentry — never throws) | COMMENT |
| LOW | apps/riptide-api/src/orpc/daemon/sessions/update.ts | 530 | // Step 2: Run auto-advance (checkAutoAdvance has its own try/catch + Sentry — never throws) | COMMENT |
| LOW⚡ | apps/cli/src/commands/login.ts | 8 | // Step 1: Device auth does not require WorkOS redirect URI setup. | COMMENT |
| LOW⚡ | apps/cli/src/commands/login.ts | 12 | // Step 2: List user's organizations | COMMENT |
| LOW⚡ | apps/cli/src/commands/login.ts | 20 | // Step 3: Determine target org | COMMENT |
| LOW⚡ | apps/cli/src/commands/login.ts | 48 | // Step 4: If the JWT is already scoped to the right org, we're done | COMMENT |
| LOW⚡ | apps/cli/src/commands/login.ts | 54 | // Step 5: Refresh token with selected org to get an org-scoped JWT | COMMENT |
| LOW | apps/riptide-ui/src/components/HotkeyScopeBoundary.tsx | 62 | // Step 1: Disable currently active scopes except wildcard | COMMENT |
| LOW⚡ | apps/riptide-ui/src/components/HotkeyScopeBoundary.tsx | 75 | // Step 2: Enable our scope | COMMENT |
| LOW⚡ | apps/riptide-ui/src/components/HotkeyScopeBoundary.tsx | 79 | // Step 3: Ensure root is enabled if not disabled | COMMENT |
| LOW⚡ | apps/riptide-ui/src/hooks/useFileUpload.ts | 115 | // Step 1: Get presigned URL (no DB write) | COMMENT |
| LOW⚡ | apps/riptide-ui/src/hooks/useFileUpload.ts | 122 | // Step 2: Upload directly to S3 | COMMENT |
| LOW | apps/riptide-ui/src/hooks/useFileUpload.ts | 135 | // Step 3: Create artifact row (S3 object already exists) | COMMENT |
| LOW⚡ | apps/riptide-ui/src/hooks/useSessionHotkeys.ts | 274 | // Step 1: If denying and editor is focused, just blur the editor | COMMENT |
| LOW⚡ | apps/riptide-ui/src/hooks/useSessionHotkeys.ts | 281 | // Step 2: If denying (editor not focused), cancel the deny | COMMENT |
| LOW⚡ | …rc/agents/claudecode/agents/codebase-pattern-finder.ts | 41 | ### Step 1: Identify Pattern Types | COMMENT |
| LOW⚡ | …rc/agents/claudecode/agents/codebase-pattern-finder.ts | 49 | ### Step 2: Search! | COMMENT |
| LOW⚡ | …rc/agents/claudecode/agents/codebase-pattern-finder.ts | 52 | ### Step 3: Read and Extract | COMMENT |
| LOW⚡ | …rc/agents/claudecode/agents/implementation-reviewer.ts | 21 | ### Step 1: Locate the Plan File | COMMENT |
| LOW⚡ | …rc/agents/claudecode/agents/implementation-reviewer.ts | 29 | ### Step 2: Extract Planned Changes | COMMENT |
| LOW⚡ | …rc/agents/claudecode/agents/implementation-reviewer.ts | 36 | ### Step 3: Analyze Actual Implementation | COMMENT |
| LOW⚡ | …rc/agents/claudecode/agents/implementation-reviewer.ts | 45 | ### Step 4: Compare and Categorize | COMMENT |
| LOW⚡ | …emon/src/agents/claudecode/agents/codebase-analyzer.ts | 41 | ### Step 1: Read Entry Points | COMMENT |
| LOW⚡ | …emon/src/agents/claudecode/agents/codebase-analyzer.ts | 46 | ### Step 2: Follow the Code Path | COMMENT |
| LOW⚡ | …emon/src/agents/claudecode/agents/codebase-analyzer.ts | 53 | ### Step 3: Document Key Logic | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .claude/skills/agent-browser/SKILL.md | 25 | agent-browser fill @e1 "user@example.com" | CODE |
| LOW | .claude/skills/agent-browser/SKILL.md | 41 | agent-browser fill @e1 "user@example.com" && agent-browser fill @e2 "password123" && agent-browser click @e3 | CODE |
| LOW | .claude/skills/agent-browser/SKILL.md | 150 | agent-browser fill @e1 "Jane Doe" | CODE |
| LOW | …aude/skills/agent-browser/references/authentication.md | 132 | agent-browser fill @e1 "user@example.com" | CODE |
| LOW | …aude/skills/agent-browser/references/authentication.md | 151 | agent-browser fill @e1 "user@example.com" | CODE |
| LOW | …aude/skills/agent-browser/references/authentication.md | 208 | agent-browser fill @e1 "user@example.com" | CODE |
| LOW | …laude/skills/agent-browser/references/snapshot-refs.md | 72 | agent-browser fill @e10 "user@example.com" | CODE |
| LOW | …/skills/agent-browser/references/session-management.md | 29 | agent-browser --session auth fill @e1 "user@example.com" | CODE |
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 32 | # agent-browser fill @e1 "John Doe" # Text input | COMMENT |
| LOW⚡ | …aude/skills/agent-browser/templates/form-automation.sh | 33 | # agent-browser fill @e2 "user@example.com" # Email input | COMMENT |
| LOW | .claude/skills/html-mockups/SKILL.md | 371 | 5. **Use real-ish content** - Don't use lorem ipsum, use realistic labels | CODE |
| LOW | packages/ui/src/components/artifact-raw.stories.tsx | 40 | content: Array(100).fill('Lorem ipsum dolor sit amet.').join('\n'), | CODE |
| LOW | packages/ui/src/components/artifact-raw.stories.tsx | 40 | content: Array(100).fill('Lorem ipsum dolor sit amet.').join('\n'), | CODE |
| LOW | …kages/ui/src/components/agent-avatar-stack.stories.tsx | 51 | authorDisplayName: 'Jane Doe', | CODE |
| LOW⚡ | …/ui/src/lib/diff-review/build-diff-navigation-index.ts | 6 | | { id: string; kind: 'placeholder'; fileId: string; placeholder: 'binary' | 'pending' } | CODE |
| LOW | …/ui/src/lib/diff-review/build-diff-navigation-index.ts | 98 | targets.push({ id: `placeholder:${item.id}:${placeholder}`, kind: 'placeholder', fileId: item.id, placeholder }) | CODE |
| LOW | packages/ui/src/administration/InvitationForm.tsx | 58 | <Field data-invalid={Boolean(validationErrors.email)}><FieldLabel htmlFor="invitation-email">Email</FieldLabel><Input | CODE |
| LOW | packages/schemas/test/workos-access-token.test.ts | 20 | act: { sub: 'admin@example.com' }, | CODE |
| LOW | …/riptide-rpi-claude-plugin/skills/iterate-prd/SKILL.md | 128 | - Use realistic labels and data, not lorem ipsum | CODE |
| LOW | …/riptide-rpi-claude-plugin/skills/iterate-prd/SKILL.md | 153 | - Use realistic labels, not lorem ipsum | CODE |
| LOW | …s/riptide-rpi-claude-plugin/skills/create-tdd/SKILL.md | 150 | - Keep each artifact focused on the decision at hand; use realistic labels, not lorem ipsum | CODE |
| LOW | …/riptide-rpi-claude-plugin/skills/iterate-tdd/SKILL.md | 181 | - Use realistic labels, not lorem ipsum | CODE |
| LOW | …s/riptide-rpi-claude-plugin/skills/create-prd/SKILL.md | 125 | - Follow the **user's product** design system (colors, fonts, components) found in Step 1; use realistic labels, not lor | CODE |
| LOW | apps/linear-cli/README.md | 61 | ./linear-darwin-arm64 list-issues --assignee "John Doe" --status "In Progress" | CODE |
| LOW | …nents/stories/RequestAccessScreenShellDemo.stories.tsx | 12 | organizationName: 'Acme Corp', | CODE |
| LOW | …rc/components/stories/RequestPendingScreen.stories.tsx | 8 | organizationName: 'Acme Corp', | CODE |
| LOW | …src/components/stories/RequestAccessScreen.stories.tsx | 9 | organizationName: 'Acme Corp', | CODE |
| LOW | …ents/stories/RequestPendingScreenShellDemo.stories.tsx | 9 | organizationName: 'Acme Corp', | CODE |
| LOW | …ps/riptide-api/test/procedures/users-seat-sync.test.ts | 56 | workos.addUser({ id: 'user_admin', email: 'admin@example.com' }) | CODE |
| LOW | …tide-api/test/procedures/admin-access-requests.test.ts | 325 | const fakeEmailId = `fake-email-${randomUUID()}` | CODE |
| LOW | …tide-api/test/procedures/admin-access-requests.test.ts | 341 | adminEmail: 'admin@example.com', | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 73 | workos.addUser({ id: userId, email: 'admin@example.com' }) | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 93 | workos.addUser({ id: userId, email: 'admin@example.com' }) | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 116 | workos.addUser({ id: userId, email: 'admin@example.com' }) | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 138 | workos.addUser({ id: userId, email: 'admin@example.com' }) | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 160 | workos.addUser({ id: userId, email: 'admin@example.com' }) | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 184 | workos.addUser({ id: userId, email: 'admin@example.com' }) | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 219 | workos.addUser({ id: userId, email: 'admin@example.com' }) | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 245 | workos.addUser({ id: userId, email: 'admin@example.com' }) | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 347 | workos.addUser({ id: adminUserId, email: 'admin@example.com' }) | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 366 | workos.addUser({ id: adminUserId, email: 'admin@example.com' }) | CODE |
| LOW | …riptide-api/test/procedures/invitations-create.test.ts | 393 | workos.addUser({ id: adminUserId, email: 'admin@example.com' }) | CODE |
| LOW | …tide-api/test/effect/access-request-service.vi.test.ts | 591 | : Effect.succeed({ id: 'inv_test', email: 'test@test.com' } as any), | CODE |
| LOW | …tide-api/test/effect/access-request-service.vi.test.ts | 636 | const admins: FakeAdmin[] = [{ userId: 'admin-invite-1', email: 'admin@example.com' }] | CODE |
| LOW | …tide-api/test/effect/access-request-service.vi.test.ts | 651 | adminEmail: 'admin@example.com', | CODE |
| LOW | …tide-api/test/effect/access-request-service.vi.test.ts | 753 | sendInvitation: () => Effect.succeed({ id: 'inv_test', email: 'test@test.com' } as any), | CODE |
| LOW | apps/riptide-api/test/webhooks/resend-webhook.test.ts | 67 | to: ['user@example.com'], | CODE |
| LOW | apps/riptide-api/test/webhooks/resend-webhook.test.ts | 82 | to: input?.to ?? ['user@example.com'], | CODE |
| LOW | apps/riptide-api/test/webhooks/resend-webhook.test.ts | 253 | to: ['user@example.com'], | CODE |
| LOW | apps/riptide-api/test/webhooks/resend-webhook.test.ts | 263 | expect(summary.recipients).toEqual(['user@example.com']) | CODE |
| LOW | apps/riptide-pi-extension/skills/iterate-prd/SKILL.md | 128 | - Use realistic labels and data, not lorem ipsum | CODE |
| LOW | apps/riptide-pi-extension/skills/iterate-prd/SKILL.md | 153 | - Use realistic labels, not lorem ipsum | CODE |
| LOW | …ptide-pi-extension/skills/iterate-tech-design/SKILL.md | 181 | - Use realistic labels, not lorem ipsum | CODE |
| LOW | apps/riptide-pi-extension/skills/create-prd/SKILL.md | 125 | - Follow the **user's product** design system (colors, fonts, components) found in Step 1; use realistic labels, not lor | CODE |
| LOW | …iptide-pi-extension/skills/create-tech-design/SKILL.md | 150 | - Keep each artifact focused on the decision at hand; use realistic labels, not lorem ipsum | CODE |
| LOW⚡ | …tide-ui/src/components/ArtifactViewerPanel.stories.tsx | 60 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliq | CODE |
| LOW⚡ | …tide-ui/src/components/ArtifactViewerPanel.stories.tsx | 60 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliq | CODE |
| LOW⚡ | …tide-ui/src/components/ArtifactViewerPanel.stories.tsx | 68 | Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius | CODE |
| LOW⚡ | …tide-ui/src/components/ArtifactViewerPanel.stories.tsx | 68 | Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius | CODE |
| LOW | …ide-ui/src/components/conversation-stream/mock-data.ts | 407 | const line = `${label}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. 0123456789\n` | CODE |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | doctor.config.ts | 21 | // idiomatic React event-handler naming conventions. Renaming low-level DOM | COMMENT |
| LOW | …s/riptide-api-contract/src/api/metrics/usersScatter.ts | 1 | import { CodingAgentZodSchema } from '@humanlayer/schemas/coding-agent' | COMMENT |
| LOW | …ude/skills/agent-browser/templates/capture-workflow.sh | 1 | #!/bin/bash | COMMENT |
| LOW | …aude/skills/agent-browser/templates/form-automation.sh | 1 | #!/bin/bash | COMMENT |
| LOW | …aude/skills/agent-browser/templates/form-automation.sh | 21 | agent-browser open "$FORM_URL" | COMMENT |
| LOW | …kills/agent-browser/templates/authenticated-session.sh | 1 | #!/bin/bash | COMMENT |
| LOW | …kills/agent-browser/templates/authenticated-session.sh | 81 | # | COMMENT |
| LOW | …kills/agent-browser/templates/authenticated-session.sh | 101 | # # Save state for future runs | COMMENT |
| LOW | scripts/create_worktree.sh | 161 | fi | COMMENT |
| LOW | …ages/ui/src/components/diff-review/code-view-stack.tsx | 41 | // between the header bar above the stack and the first file block. | COMMENT |
| LOW | packages/ui/src/lib/comment-layout.test.ts | 101 | ['c', 80], | COMMENT |
| LOW | packages/session-sdk-sessions/src/inbox.ts | 1 | // What the web app sends a mirror-only host (the opencode plugin, the Codex plugin). riptide-daemon | COMMENT |
| LOW | …s/git-attribution/src/evidence/trailer/hook-scripts.ts | 21 | COMMENT | |
| LOW | packages/db/src/tables/user-settings.ts | 61 | // and can move from false to true through manual opt-in without changing the original group. | COMMENT |
| LOW | packages/db/src/tables/pull-requests.ts | 141 | // Org-scoped natural key: the idempotency anchor for every writer. | COMMENT |
| LOW | packages/db/src/tables/commits.ts | 101 | // Provenance | COMMENT |
| LOW | packages/db/src/tables/commits.ts | 121 | // names). Capture-time truth, like Cursor's isPrimaryBranch — a branch commit does | COMMENT |
| LOW | .github/workflows/vouch-manage.yml | 1 | # Lets maintainers (triage access or higher) edit .github/VOUCHED.td by commenting on an issue or | COMMENT |
| LOW | …skills/describe-pr/scripts/inject-walkthrough-diffs.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …skills/describe-pr/scripts/inject-walkthrough-diffs.sh | 21 | # run, so re-running after editing nodes just refreshes the stash. | COMMENT |
| LOW | …iptide-cloud/src/components/metrics/ModelSpendCard.tsx | 41 | // Absolute TOTALS only plot complete buckets: a partial total drawn | COMMENT |
| LOW | …de-cloud/src/components/metrics/TokenUseByTaskCard.tsx | 281 | // What the rows ON SCREEN are ranked by, which is not the same as what the | COMMENT |
| LOW | …de-cloud/src/components/metrics/TokenUseByTaskCard.tsx | 301 | // Names for the by-person split. Its loading state is NOT folded into the | COMMENT |
| LOW | …ps/riptide-cloud/src/components/metrics/RangeBrush.tsx | 61 | }, | COMMENT |
| LOW | …ps/riptide-cloud/src/components/metrics/RangeBrush.tsx | 101 | if (!drag || event.pointerId !== drag.pointerId) return | COMMENT |
| LOW | …tide-cloud/src/components/metrics/SpendScatterCard.tsx | 141 | // Divide rates by the weeks that actually ELAPSED inside the range, not by | COMMENT |
| LOW | …tide-cloud/src/components/metrics/SpendScatterCard.tsx | 181 | COMMENT | |
| LOW | apps/riptide-native/src/workspace_setup.rs | 441 | // They run entirely before the DB task row is created, so the task starts | COMMENT |
| LOW | apps/riptide-native/src/workspace_setup.rs | 461 | /// A single resolved repo entry passed from the TypeScript layer. | COMMENT |
| LOW | apps/riptide-native/src/lib.rs | 501 | } | COMMENT |
| LOW | …riptide-api/test/learning/optimistic-mutations.test.ts | 621 | // This documents the standard pattern used in query-driven collections | COMMENT |
| LOW | …ide-api/src/orpc/daemon/sessions/check-auto-advance.ts | 221 | name: string | COMMENT |
| LOW | …/riptide-api/src/orpc/daemon/sessions/events/create.ts | 201 | COMMENT | |
| LOW | apps/riptide-api/src/orpc/api/metrics/tokenUseByTask.ts | 101 | const rankColumn = byCost ? sql`cost_usd` : sql`tokens` | COMMENT |
| LOW | apps/riptide-api/src/orpc/api/metrics/usersScatter.ts | 81 | `) | COMMENT |
| LOW | apps/riptide-pi-extension/test/helpers/contracts.ts | 1 | // Request-body zod schemas copied from the syncopate contracts (zod is a devDependency only), | COMMENT |
| LOW | apps/riptide-pi-extension/test/helpers/harness.ts | 1 | // Test-only harness: a print-mode pi session with one inline extension bound. Mirrors the | COMMENT |
| LOW | …onents/conversation-stream/WiredConversationStream.tsx | 461 | // Sticky headers: when the row at the top of the viewport belongs to an expanded | COMMENT |
| LOW | …conversation-stream/hooks/useConversationNavigation.ts | 321 | try { | COMMENT |
| LOW | …s/riptide-ui/src/components/providers/SyncProvider.tsx | 141 | // | COMMENT |
| LOW | …s/riptide-ui/src/components/providers/SyncProvider.tsx | 781 | for (const collectionName of Object.keys(currentModes)) { | COMMENT |
| LOW | …s/riptide-ui/src/components/kanban/WiredKanbanCard.tsx | 61 | COMMENT | |
| LOW | …s/riptide-ui/src/components/kanban/WiredKanbanCard.tsx | 201 | isFocused={isFocused} | COMMENT |
| LOW | …ptide-ui/src/hooks/task-detail/useTaskArtifactPanel.ts | 241 | const [pendingScrollCommentId, setPendingScrollCommentId] = useState<string | null>(null) | COMMENT |
| LOW | apps/riptide-ui/src/lib/file-drop-navigation-guard.ts | 1 | import { activeViewportFileDropHandler } from '@/lib/viewport-file-drop' | COMMENT |
| LOW | apps/riptide-daemon/src/start.ts | 421 | // the auth-failure SIGTERM self-shutdown (signal-driven). | COMMENT |
| LOW | apps/riptide-daemon/src/plugins/bundled-rpi-plugin.ts | 21 | // @ts-expect-error - Bun import attribute | COMMENT |
| LOW | apps/riptide-daemon/src/plugins/bundled-rpi-plugin.ts | 41 | import createPlanTemplate from '../../../riptide-rpi-claude-plugin/skills/create-plan/references/plan_template.md' with | COMMENT |
| LOW | apps/riptide-daemon/src/plugins/bundled-rpi-plugin.ts | 61 | // @ts-expect-error - Bun import attribute | COMMENT |
| LOW | apps/riptide-daemon/src/plugins/bundled-rpi-plugin.ts | 81 | // @ts-expect-error - Bun import attribute | COMMENT |
| LOW | apps/riptide-daemon/src/plugins/bundled-rpi-plugin.ts | 101 | // implement-outline skill | COMMENT |
| LOW | apps/riptide-daemon/src/plugins/bundled-rpi-plugin.ts | 121 | // @ts-expect-error - Bun import attribute | COMMENT |
| LOW | apps/riptide-daemon/src/plugins/bundled-rpi-plugin.ts | 141 | import iterateResearchFinalAnswer from '../../../riptide-rpi-claude-plugin/skills/iterate-research/references/research_f | COMMENT |
| LOW | …ptide-daemon/src/agents/codelayer/execute-codelayer.ts | 681 | ) | COMMENT |
| LOW | apps/riptide-daemon/src/agents/codelayer/events.ts | 381 | COMMENT | |
| LOW | apps/riptide-daemon/src/lib/git/commit-watcher.ts | 301 | // Re-arm when the entry exists but its watcher is gone (reflog absent at first | COMMENT |
| LOW | apps/riptide-daemon/src/lib/git/commit-tracker.ts | 461 | 'core.quotepath=off', | COMMENT |
| LOW | apps/riptide-daemon/src/lib/git/commit-tracker.ts | 681 | if (since === null) { | COMMENT |
| LOW | apps/riptide-claude-code-plugin/src/mapper.ts | 1 | // Maps Claude Code transcript lines (the session's JSONL file, and its subagents' files) to the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/run_silent.sh | 14 | # Check if verbose mode is enabled | COMMENT |
| LOW | scripts/run_silent.sh | 152 | # Check if a command exists | COMMENT |
| LOW | scripts/create_worktree.sh | 66 | # Check if worktrees base directory exists | COMMENT |
| LOW | scripts/create_worktree.sh | 73 | # Check if worktree already exists | COMMENT |
| LOW | scripts/create_worktree.sh | 84 | # Check if it's a remote branch (starts with origin/) | COMMENT |
| LOW | scripts/create_worktree.sh | 91 | # Check if local branch already exists | COMMENT |
| LOW | scripts/create_worktree.sh | 111 | # Check if branch exists on origin remote | COMMENT |
| LOW⚡ | scripts/cleanup_worktree.sh | 34 | # Check if worktree exists | COMMENT |
| LOW | apps/riptide-native/generate_icons.sh | 12 | # Check if source icon exists | COMMENT |
| LOW | apps/riptide-native/generate_icons.sh | 18 | # Check if ImageMagick is installed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ckages/ui/src/components/markdown-renderer.stories.tsx | 71 | print(fibonacci(10)) | CODE |
| HIGH | apps/linear-cli/src/commands/completion.ts | 29 | elif [ "$prev" = "add-comment" ] && [ $COMP_CWORD -eq 2 ]; then | CODE |
| HIGH | apps/linear-cli/src/commands/completion.ts | 58 | elif (( CURRENT == 3 )); then | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | apps/linear-cli/README.md | 43 | export LINEAR_API_KEY=your_api_key | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | apps/riptide-api/src/webhooks/resend.ts | 85 | // both so detection is robust to either shape. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | apps/riptide-ui/src/minimalist/lib/transcript.test.ts | 166 | const prompt = 'Base directory for this skill: /Users/me/.claude/skills/rpi/create-plan\n\n# Create a plan' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …skills/describe-pr/scripts/inject-walkthrough-diffs.sh | 23 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ages/ui/src/components/__stories__/comment-fixtures.ts | 63 | previous_block_text: 'async function getData() {', | CODE |