AI Slop Code RIsk Monitor

jackwener/OpenCLI

Make Any Website into CLI & Use your logged-in browser by AI agent.

5.7 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for jackwener/OpenCLI, a JavaScript project with 30,019 GitHub stars. SynthScan examined 347,189 lines of code across 2383 source files, recording 1169 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 5.7 (Moderate 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.

5.7
Adjusted Signal
5.7
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
30.0K
Stars
JavaScript
Language
347.2K
Lines of Code
2.4K
Files
1.2K
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 13.6/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.7/100 · LOW

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

Agent Over-Engineering Ratio 18.0/100 · LOW

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

PR Review Velocity Impact 22.7/100 · LOW

Which changes need focused human review? 1169 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 4HIGH 3MEDIUM 283LOW 879

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 1169 distinct pattern matches across 15 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 Separators271 hits · 830 pts
SeverityFileLineSnippetContext
MEDIUMautoresearch/eval-skill.ts24// ── Types ──────────────────────────────────────────────────────────COMMENT
MEDIUMautoresearch/eval-skill.ts42// ── Task Definitions (inline, to avoid YAML dependency) ────────────COMMENT
MEDIUMautoresearch/eval-skill.ts95// ── Run Task ───────────────────────────────────────────────────────COMMENT
MEDIUMautoresearch/eval-skill.ts191// ── Main ───────────────────────────────────────────────────────────COMMENT
MEDIUMextension/src/background.ts80// ─── Console log forwarding ──────────────────────────────────────────COMMENT
MEDIUMextension/src/background.ts108// ─── WebSocket connection ────────────────────────────────────────────COMMENT
MEDIUMextension/src/background.ts226// ─── WebSocket keepalive ─────────────────────────────────────────────COMMENT
MEDIUMextension/src/background.ts277// ─── Browser target leases ───────────────────────────────────────────COMMENT
MEDIUMextension/src/background.ts1193// ─── Lifecycle events ────────────────────────────────────────────────COMMENT
MEDIUMextension/src/background.ts1266// ─── Popup status API ───────────────────────────────────────────────COMMENT
MEDIUMextension/src/background.ts1308// ─── Command dispatcher ─────────────────────────────────────────────COMMENT
MEDIUMextension/src/background.ts1374// ─── Action handlers ─────────────────────────────────────────────────COMMENT
MEDIUM…erpowers/plans/2026-03-31-daemon-lifecycle-redesign.md560 // ── Built-in: daemon ──────────────────────────────────────────────────────COMMENT
MEDIUMscripts/postinstall.js24// ── Completion script content ──────────────────────────────────────────────COMMENT
MEDIUMscripts/postinstall.js59// ── Helpers ────────────────────────────────────────────────────────────────COMMENT
MEDIUMscripts/postinstall.js75// ── Prune vendored test suites ─────────────────────────────────────────────COMMENT
MEDIUMscripts/postinstall.js91// ── Main ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMscripts/postinstall.js166 // ── Spotify credentials template ────────────────────────────────────COMMENT
MEDIUMscripts/postinstall.js182 // ── Browser Bridge setup hint ───────────────────────────────────────COMMENT
MEDIUMclis/twitter/trending.js3// ── CLI definition ────────────────────────────────────────────────────COMMENT
MEDIUMclis/twitter/timeline.js5// ── Twitter GraphQL constants ──────────────────────────────────────────COMMENT
MEDIUMclis/twitter/timeline.js140// ── CLI definition ────────────────────────────────────────────────────COMMENT
MEDIUMclis/twitter/thread.js6// ── Twitter GraphQL constants ──────────────────────────────────────────COMMENT
MEDIUMclis/twitter/thread.js103// ── CLI definition ────────────────────────────────────────────────────COMMENT
MEDIUMclis/twitter/utils.js234// ── Engagement scoring (P3) ────────────────────────────────────────────COMMENT
MEDIUMclis/twitter/search.js6// ── Public-search operator surface ─────────────────────────────────────COMMENT
MEDIUMclis/weread-official/utils.js148// ── Formatting helpers ──────────────────────────────────────────────────────COMMENT
MEDIUMclis/weread-official/utils.js208// ── Deep links ──────────────────────────────────────────────────────────────COMMENT
MEDIUMclis/weread-official/utils.js243// ── Argument validation ─────────────────────────────────────────────────────COMMENT
MEDIUMclis/weread-official/utils.js288// ── Empty-result helper ────────────────────────────────────────────────────COMMENT
MEDIUMclis/weread-official/book.js57 // ── info section ────────────────────────────────────────────────────COMMENT
MEDIUMclis/weread-official/book.js85 // ── chapters section ────────────────────────────────────────────────COMMENT
MEDIUMclis/weread-official/book.js108 // ── progress section ────────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.js105 // ── New chat (must happen before model/thinking selection) ──────COMMENT
MEDIUMclis/gemini/ask.js110 // ── Early validation: model format & thinking value ────────────COMMENT
MEDIUMclis/gemini/ask.js132 // thinking selection) ──────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.js168 // ── Model selection ──────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.js187 // ── Thinking validation and selection ──────────────────────────COMMENT
MEDIUMclis/gemini/models.js19// ── Shared helpers (embedded in browser scripts) ──────────────────────────COMMENT
MEDIUMclis/gemini/models.js247 // ── Parse models from menu items ──────────────────────────────────COMMENT
MEDIUMclis/gemini/models.js276 // ── Close the menu ────────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/models.js283// ── Exported script builders ──────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/models.js436// ── Command registration ──────────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/models.test.js215// ── DOM fixture tests (jsdom) ──────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js147// ── Command registration ─────────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js186// ── validateAskModelValue ────────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js258// ── gemini ask orchestration ─────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js265 // ── Baseline behavior (no --model) ───────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js302 // ── Omitted --model (no model change) ────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js334 // ── Valid model selection ────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js412 // ── Alias rejection ──────────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js460 // ── Invalid / unavailable model ──────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js523 // ── Browser Bridge envelope unwrap ───────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js558 // ── Ordering and state ───────────────────────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js588 // ── Model selection + --new interaction ──────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js615 // ── Valid thinking selection (current model matched) ─────────────COMMENT
MEDIUMclis/gemini/ask.test.js680 // ── Invalid thinking value (not standard or extended) ────────────COMMENT
MEDIUMclis/gemini/ask.test.js706 // ── Current-model-scoped validation ──────────────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js756 // ── Union fallback when current model unknown ────────────────────COMMENT
MEDIUMclis/gemini/ask.test.js792 // ── Graceful degradation when discovery returns empty ────────────COMMENT
211 more matches not shown…
Hyper-Verbose Identifiers566 hits · 546 pts
SeverityFileLineSnippetContext
LOWautoresearch/commands/run.ts25export function buildClaudeModifyInvocation(prompt: string) {CODE
LOWextension/src/cdp.ts519function registerFrameTargetCleanup(): void {CODE
LOWextension/src/cdp.ts743function getOrCreateNetworkCaptureEntry(tabId: number, requestId: string, fallback?: {CODE
LOWextension/src/cdp.ts743function getOrCreateNetworkCaptureEntry(tabId: number, requestId: string, fallback?: {CODE
LOWextension/src/background.ts639function getOwnedContainerGroupTitles(role: OwnedWindowRole): string[] {CODE
LOWextension/src/background.ts654async function focusOwnedWindowIfRequested(windowId: number, mode: WindowMode): Promise<void> {CODE
LOWextension/src/background.ts660async function toOwnedContainerGroupCandidate(group: chrome.tabGroups.TabGroup): Promise<OwnedContainerGroupCandidate | CODE
LOWextension/src/background.ts677function selectOwnedContainerGroupCandidate(candidates: OwnedContainerGroupCandidate[]): OwnedContainerGroupCandidate | CODE
LOWextension/src/background.ts687async function collectOwnedGroupCandidates(role: OwnedWindowRole): Promise<OwnedContainerGroupCandidate[]> {CODE
LOWextension/src/background.ts773function updateOwnedSessionWindowForTabs(role: OwnedWindowRole, tabIds: number[], windowId: number): void {CODE
LOWextension/src/background.ts799async function ensureCanonicalGroupTitle(role: OwnedWindowRole, group: OwnedContainerGroup): Promise<OwnedContainerGroupCODE
LOWextension/src/background.ts809async function convergeOwnedGroupDuplicates(CODE
LOWextension/src/background.ts868async function ensureOwnedContainerGroup(CODE
LOWextension/src/background.ts892async function ensureOwnedContainerGroupUnlocked(CODE
LOWextension/src/background.ts942async function ensureOwnedContainerWindow(CODE
LOWextension/src/background.ts956async function ensureOwnedContainerWindowUnlocked(CODE
LOWextension/src/background.ts1050async function findReusableOwnedContainerTab(windowId: number, ownedGroupId?: number | null): Promise<number | undefinedCODE
LOWextension/src/background.ts1086async function createOwnedTabLeaseUnlocked(leaseKey: string, initialUrl?: string): Promise<ResolvedTab> {CODE
LOWextension/src/background.ts1391function normalizeUrlForComparison(url?: string): string {CODE
LOWextension/src/background.ts1418function enumerateCrossOriginFrames(tree: any): Array<{ index: number; frameId: string; url: string; name: string }> {CODE
LOWextension/src/background.ts2052function stripOpenCliFrameRoutingParams(params: Record<string, unknown>, stripFrameId: boolean): Record<string, unknown>CODE
LOWextension/src/background.ts2092async function handleNetworkCaptureStart(cmd: Command, leaseKey: string): Promise<Result> {CODE
LOWextension/src/background.ts2174async function reconcileTargetLeaseRegistry(): Promise<void> {CODE
LOWtests/e2e/browser-auth-helpers.ts8export async function expectGracefulAuthFailure(args: string[]) {CODE
LOWtests/e2e/browser-public.test.ts38function isBrowserBridgeUnavailable(result: CliResult): boolean {CODE
LOWtests/e2e/browser-public.test.ts96function expectNonEmptyDataOrSkipEnv(data: any[] | null, label: string): data is any[] {CODE
LOWtests/e2e/browser-public.test.ts122function countTiebaReplyFloorOverlap(left: any[] | null, right: any[] | null): number {CODE
LOWtests/e2e/browser-public.test.ts147async function getTiebaReadCandidateOrSkip(CODE
LOWtests/e2e/browser-public.test.ts238async function expectImdbDataOrChallengeSkip(args: string[], label: string): Promise<any[] | null> {CODE
LOWtests/e2e/browser-ax-chrome.test.ts280function shouldFailOnBridgeUnavailable(): boolean {CODE
LOWtests/e2e/public-commands.test.ts12function isExpectedChineseSiteRestriction(code: number, stderr: string): boolean {CODE
LOWtests/e2e/public-commands.test.ts26function isExpectedApplePodcastsRestriction(code: number, stderr: string): boolean {CODE
LOWtests/e2e/public-commands.test.ts32function isExpectedGoogleRestriction(code: number, stderr: string): boolean {CODE
LOWclis/pixiv/utils.js100export function normalizePixivPositiveInteger(value, defaultValue, label, { min = 1, max = Number.MAX_SAFE_INTEGER } = {CODE
LOWclis/pixiv/utils.js125export function normalizePixivNonNegativeInteger(value, defaultValue, label, { max = Number.MAX_SAFE_INTEGER } = {}) {CODE
LOWclis/pixiv/utils.js129export function requirePixivPayloadObject(value, label) {CODE
LOWclis/ctrip/hotel-search.js62function assertCheckinBeforeCheckout(checkin, checkout) {CODE
LOWclis/ctrip/utils.js18function parseStrictDecimalInteger(name, raw) {CODE
LOWclis/ctrip/utils.js29export function parseStrictPositiveInteger(name, raw) {CODE
LOWclis/ctrip/utils.js625export function buildHotelDetailExtractJs() {CODE
LOWclis/ctrip/utils.js1069export function buildWaitForAttractionsJs(cityId) {CODE
LOWclis/twitter/download.js149function normalizeUserMediaOperation(operation) {CODE
LOWclis/twitter/download.js160function normalizeUserByScreenNameOperation(operation) {CODE
LOWclis/twitter/article.test.js17function createPageWithEvaluateResults(evaluateResults) {CODE
LOWclis/twitter/article.test.js60async function evaluateArticleFetchScript(script, payload) {CODE
LOWclis/twitter/user-timeline.js101function normalizeUserTweetsOperation(operation) {CODE
LOWclis/twitter/user-timeline.js112function normalizeUserByScreenNameOperation(operation) {CODE
LOWclis/twitter/user-timeline.js154export async function resolveUserTimelineContext(CODE
LOWclis/twitter/tweets.js95function normalizePageDelaySeconds(rawDelay) {CODE
LOWclis/twitter/mute-word.test.js9function createTransformedTwitterDomPage(html, transform, url = 'https://x.com/settings/add_muted_keyword') {CODE
LOWclis/twitter/mute-word.test.js13function createInspectableTransformedTwitterDomPage(html, transform, url = 'https://x.com/settings/add_muted_keyword') {CODE
LOWclis/twitter/auth.js15function unwrapTwitterEvaluateResult(value, label) {CODE
LOWclis/twitter/post.js38function isUnsupportedInsertTextError(err) {CODE
LOWclis/twitter/post.js185async function attachImagesViaDataTransfer(page, absPaths) {CODE
LOWclis/twitter/lists.js79export function getListsManagementInstructions(data) {CODE
LOWclis/twitter/bookmark-folder.js86export function parseBookmarkFolderTimeline(data, seen) {CODE
LOWclis/twitter/utils.js202export function isRecoverableFileInputError(error) {CODE
LOWclis/twitter/utils.js207export async function waitForComposerMediaReady(page, expectedCount = 1) {CODE
LOWclis/twitter/test-dom-utils.js19export function createInteractiveTwitterDomPage(html, url = 'https://x.com/alice/status/2040254679301718161') {CODE
LOWclis/twitter/shared.js89export function buildTwitterArticleScopeSource(tweetId) {CODE
506 more matches not shown…
Structural Annotation Overuse104 hits · 202 pts
SeverityFileLineSnippetContext
LOW⚡autoresearch/save-adapters/zhihu-search-detail.ts18 // Step 1: NavigateCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-search-detail.ts21 // Step 2: Search API — filter results by type, extract question IDsCOMMENT
LOWautoresearch/save-adapters/zhihu-search-detail.ts33 // Step 3: For each result, fetch question stats (answer_count, follower_count)COMMENT
LOWautoresearch/save-adapters/zhihu-search-detail.ts47 // Step 4: Format outputCOMMENT
LOW⚡autoresearch/save-adapters/xhs-note-comments.ts18 // Step 1: Navigate to note detail pageCOMMENT
LOW⚡autoresearch/save-adapters/xhs-note-comments.ts21 // Step 2: Extract note metadata (title, author, likes)COMMENT
LOW⚡autoresearch/save-adapters/xhs-note-comments.ts29 // Step 3: Scroll the note container to trigger comment loadingCOMMENT
LOW⚡autoresearch/save-adapters/xhs-note-comments.ts37 // Step 4: Extract comments from DOMCOMMENT
LOWautoresearch/save-adapters/xhs-note-comments.ts54 // Step 5: Merge note meta + comments into unified outputCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-question-full.ts18 // Step 1: Navigate to question pageCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-question-full.ts21 // Step 2: Fetch question detailCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-question-full.ts29 // Step 3: Fetch top answersCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-question-full.ts38 // Step 4: Fetch related questionsCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-question-full.ts46 // Step 5: Merge three layers into unified outputCOMMENT
LOW⚡autoresearch/save-adapters/xhs-search-full.ts18 // Step 1: Navigate to search pageCOMMENT
LOW⚡autoresearch/save-adapters/xhs-search-full.ts20 // Step 2: Wait for async render via MutationObserverCOMMENT
LOW⚡autoresearch/save-adapters/xhs-search-full.ts28 // Step 3: Scroll 3x to load more contentCOMMENT
LOW⚡autoresearch/save-adapters/xhs-search-full.ts33 // Step 4: Extract from DOM with deduplicationCOMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts16 // Step 1: Navigate to explore pageCOMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts18 // Step 2: Wait for initial content via MutationObserverCOMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts26 // Step 3: Multi-round adaptive scroll (early stop when no new content)COMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts35 // Step 4: Extract with noteId deduplication + parse likes as integersCOMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts57 // Step 5: Sort by likes descendingCOMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts59 // Step 6: Slice and formatCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-hot-detail.ts16 // Step 1: NavigateCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-hot-detail.ts19 // Step 2: Fetch hot list (handle 16+ digit IDs)COMMENT
LOW⚡autoresearch/save-adapters/zhihu-hot-detail.ts29 // Step 3: For each hot question, fetch its top answerCOMMENT
LOWautoresearch/save-adapters/zhihu-hot-detail.ts46 // Step 4: Format outputCOMMENT
LOWdocs/superpowers/plans/2026-03-28-perf-smart-wait.md463 // Step 1: Install fetch/XHR interceptor BEFORE triggerCOMMENT
LOWdocs/superpowers/plans/2026-03-28-perf-smart-wait.md466 // Step 2: Execute the trigger actionCOMMENT
LOW⚡docs/superpowers/plans/2026-03-28-perf-smart-wait.md480 // Step 3: Wait for network capture instead of fixed sleepCOMMENT
LOW⚡docs/superpowers/plans/2026-03-28-perf-smart-wait.md483 // Step 4: Retrieve captured dataCOMMENT
LOW⚡docs/superpowers/plans/2026-03-28-perf-smart-wait.md486 // Step 5: Select from response if specifiedCOMMENT
LOW⚡clis/pixiv/illusts.js29 // Step 1: get all illust IDsCOMMENT
LOW⚡clis/pixiv/illusts.js38 // Step 2: batch fetch details (Pixiv supports up to ~48 IDs per request)COMMENT
LOW⚡clis/pixiv/illusts.test.js33 // Step 1: profile/all returns illust IDsCOMMENT
LOW⚡clis/pixiv/illusts.test.js39 // Step 2: batch detail responseCOMMENT
LOW⚡clis/twitter/reply-dm.js26 // Step 1: Navigate to messages to get conversation listCOMMENT
LOW⚡clis/twitter/reply-dm.js29 // Step 2: Collect conversations with scroll-to-loadCOMMENT
LOWclis/twitter/reply-dm.js101 // Step 3: Iterate through conversations and send messageCOMMENT
LOW⚡clis/twitter/unretweet.js56 // Step 1: click Unretweet button → opens menuCOMMENT
LOW⚡clis/twitter/unretweet.js59 // Step 2: wait for and click the confirm menu item. The confirmCOMMENT
LOW⚡clis/twitter/retweet.js56 // Step 1: click Retweet button → opens menuCOMMENT
LOW⚡clis/twitter/retweet.js59 // Step 2: wait for and click the confirm menu item. The confirmCOMMENT
LOW⚡clis/twitter/accept.js29 // Step 1: Navigate to DM requests pageCOMMENT
LOW⚡clis/twitter/accept.js32 // Step 2: Get conversations with scroll-to-loadCOMMENT
LOWclis/twitter/accept.js90 // Step 3: Find first unvisited conversation with keyword match in previewCOMMENT
LOWclis/twitter/accept.js102 // Step 4: Click this conversation to open itCOMMENT
LOWclis/twitter/accept.js119 // Step 5: Read full chat content and find Accept buttonCOMMENT
LOWclis/gemini/models.js453 // Step 1: Open the picker menu (click the model-picker button).COMMENT
LOW⚡clis/gemini/models.js472 // Step 2: Wait for React to render the menu.COMMENT
LOW⚡clis/gemini/models.js475 // Step 3: Read model entries from the open menu.COMMENT
LOW⚡clis/gemini/models.js488 // Step 4: Close the menu. The current Gemini UI can show thinkingCOMMENT
LOW⚡clis/gemini/models.js493 // Step 5: Close the menu.COMMENT
LOW⚡clis/gemini/utils.js2144 // Step 1: Open the picker menu.COMMENT
LOW⚡clis/gemini/utils.js2149 // Step 2: Wait for React to render the menu.COMMENT
LOW⚡clis/gemini/utils.js2152 // Step 3: Click the thinking toggle to expand thinking options.COMMENT
LOW⚡clis/gemini/utils.js2157 // Step 4: Wait for the expanded thinking items to render.COMMENT
LOW⚡clis/gemini/utils.js2161 // Step 5: Select the requested thinking level (also closes the menu).COMMENT
LOW⚡clis/jimeng/generate.js28 // Step 1: Count existing images before generationCOMMENT
44 more matches not shown…
Verbosity Indicators93 hits · 184 pts
SeverityFileLineSnippetContext
LOW⚡autoresearch/save-adapters/zhihu-search-detail.ts18 // Step 1: NavigateCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-search-detail.ts21 // Step 2: Search API — filter results by type, extract question IDsCOMMENT
LOWautoresearch/save-adapters/zhihu-search-detail.ts33 // Step 3: For each result, fetch question stats (answer_count, follower_count)COMMENT
LOWautoresearch/save-adapters/zhihu-search-detail.ts47 // Step 4: Format outputCOMMENT
LOW⚡autoresearch/save-adapters/xhs-note-comments.ts18 // Step 1: Navigate to note detail pageCOMMENT
LOW⚡autoresearch/save-adapters/xhs-note-comments.ts21 // Step 2: Extract note metadata (title, author, likes)COMMENT
LOW⚡autoresearch/save-adapters/xhs-note-comments.ts29 // Step 3: Scroll the note container to trigger comment loadingCOMMENT
LOW⚡autoresearch/save-adapters/xhs-note-comments.ts37 // Step 4: Extract comments from DOMCOMMENT
LOWautoresearch/save-adapters/xhs-note-comments.ts54 // Step 5: Merge note meta + comments into unified outputCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-question-full.ts18 // Step 1: Navigate to question pageCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-question-full.ts21 // Step 2: Fetch question detailCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-question-full.ts29 // Step 3: Fetch top answersCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-question-full.ts38 // Step 4: Fetch related questionsCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-question-full.ts46 // Step 5: Merge three layers into unified outputCOMMENT
LOW⚡autoresearch/save-adapters/xhs-search-full.ts18 // Step 1: Navigate to search pageCOMMENT
LOW⚡autoresearch/save-adapters/xhs-search-full.ts20 // Step 2: Wait for async render via MutationObserverCOMMENT
LOW⚡autoresearch/save-adapters/xhs-search-full.ts28 // Step 3: Scroll 3x to load more contentCOMMENT
LOW⚡autoresearch/save-adapters/xhs-search-full.ts33 // Step 4: Extract from DOM with deduplicationCOMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts16 // Step 1: Navigate to explore pageCOMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts18 // Step 2: Wait for initial content via MutationObserverCOMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts26 // Step 3: Multi-round adaptive scroll (early stop when no new content)COMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts35 // Step 4: Extract with noteId deduplication + parse likes as integersCOMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts57 // Step 5: Sort by likes descendingCOMMENT
LOW⚡autoresearch/save-adapters/xhs-explore-deep.ts59 // Step 6: Slice and formatCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-hot-detail.ts16 // Step 1: NavigateCOMMENT
LOW⚡autoresearch/save-adapters/zhihu-hot-detail.ts19 // Step 2: Fetch hot list (handle 16+ digit IDs)COMMENT
LOW⚡autoresearch/save-adapters/zhihu-hot-detail.ts29 // Step 3: For each hot question, fetch its top answerCOMMENT
LOWautoresearch/save-adapters/zhihu-hot-detail.ts46 // Step 4: Format outputCOMMENT
LOW⚡clis/pixiv/illusts.js29 // Step 1: get all illust IDsCOMMENT
LOW⚡clis/pixiv/illusts.js38 // Step 2: batch fetch details (Pixiv supports up to ~48 IDs per request)COMMENT
LOW⚡clis/pixiv/illusts.test.js33 // Step 1: profile/all returns illust IDsCOMMENT
LOW⚡clis/pixiv/illusts.test.js39 // Step 2: batch detail responseCOMMENT
LOW⚡clis/twitter/reply-dm.js26 // Step 1: Navigate to messages to get conversation listCOMMENT
LOW⚡clis/twitter/reply-dm.js29 // Step 2: Collect conversations with scroll-to-loadCOMMENT
LOWclis/twitter/reply-dm.js101 // Step 3: Iterate through conversations and send messageCOMMENT
LOW⚡clis/twitter/unretweet.js56 // Step 1: click Unretweet button → opens menuCOMMENT
LOW⚡clis/twitter/unretweet.js59 // Step 2: wait for and click the confirm menu item. The confirmCOMMENT
LOW⚡clis/twitter/retweet.js56 // Step 1: click Retweet button → opens menuCOMMENT
LOW⚡clis/twitter/retweet.js59 // Step 2: wait for and click the confirm menu item. The confirmCOMMENT
LOW⚡clis/twitter/accept.js29 // Step 1: Navigate to DM requests pageCOMMENT
LOW⚡clis/twitter/accept.js32 // Step 2: Get conversations with scroll-to-loadCOMMENT
LOWclis/twitter/accept.js90 // Step 3: Find first unvisited conversation with keyword match in previewCOMMENT
LOWclis/twitter/accept.js102 // Step 4: Click this conversation to open itCOMMENT
LOWclis/twitter/accept.js119 // Step 5: Read full chat content and find Accept buttonCOMMENT
LOWclis/gemini/models.js453 // Step 1: Open the picker menu (click the model-picker button).COMMENT
LOW⚡clis/gemini/models.js472 // Step 2: Wait for React to render the menu.COMMENT
LOW⚡clis/gemini/models.js475 // Step 3: Read model entries from the open menu.COMMENT
LOW⚡clis/gemini/models.js488 // Step 4: Close the menu. The current Gemini UI can show thinkingCOMMENT
LOW⚡clis/gemini/models.js493 // Step 5: Close the menu.COMMENT
LOW⚡clis/gemini/utils.js2144 // Step 1: Open the picker menu.COMMENT
LOW⚡clis/gemini/utils.js2149 // Step 2: Wait for React to render the menu.COMMENT
LOW⚡clis/gemini/utils.js2152 // Step 3: Click the thinking toggle to expand thinking options.COMMENT
LOW⚡clis/gemini/utils.js2157 // Step 4: Wait for the expanded thinking items to render.COMMENT
LOW⚡clis/gemini/utils.js2161 // Step 5: Select the requested thinking level (also closes the menu).COMMENT
LOW⚡clis/jimeng/generate.js28 // Step 1: Count existing images before generationCOMMENT
LOW⚡clis/jimeng/generate.js31 // Step 2: Clear and set promptCOMMENT
LOW⚡clis/jimeng/generate.js45 // Step 3: Click generateCOMMENT
LOW⚡clis/jimeng/generate.js50 // Step 4: Wait for new images to appearCOMMENT
LOWclis/jimeng/generate.js66 // Step 5: Extract image URLs (use thumbnail URLs which are accessible)COMMENT
LOWclis/youtube/transcript.js462 // Step 2: Fetch caption XML and parse segmentsCOMMENT
33 more matches not shown…
Fake / Example Data64 hits · 68 pts
SeverityFileLineSnippetContext
LOWautoresearch/eval-skill.ts74 { name: "form-fill-basic", task: "Fill the Customer Name with 'OpenCLI' and Telephone with '555-0100'. Do not submit."CODE
LOWautoresearch/browse-tasks.json445 "opencli browser eval \"var n=document.querySelector('[name=custname]');n.value='Alice';n.dispatchEvent(new Event(CODE
LOWdocs/adapters/browser/linkedin.md74opencli linkedin connect https://www.linkedin.com/in/example/ --expected-name "Jane Doe" --note "quick note" --sendCODE
LOWdocs/adapters/browser/linkedin.md78opencli linkedin safe-send --thread-url https://www.linkedin.com/messaging/thread/abc/ --expected-name "Jane Doe" --messCODE
LOWclis/twitter/mute-word.js112 const placeholder = String(node.getAttribute('placeholder') || '').trim().toLowerCase();CODE
LOWclis/mercury/utils.js253 allInputs.find((field) => /yyyy|mm|dd|\\d{4}-\\d{2}-\\d{2}/i.test(field.getAttribute('placeholder') || ''));CODE
LOWclis/mercury/utils.js262 /category|select/i.test(\`\${field.getAttribute('placeholder') || ''} \${field.getAttribute('aria-label'CODE
LOWclis/pinterest/user.test.js14 full_name: 'Jane Doe',CODE
LOWclis/pinterest/user.test.js46 fullName: 'Jane Doe',CODE
LOWclis/reuters/reuters.test.js63 authors: [{ name: 'Jane Doe' }, { name: 'Bob Smith' }],CODE
LOWclis/producthunt/utils.test.js29 expect(posts[0].author).toBe('Jane Doe');CODE
LOWclis/doubao/utils.js122 placeholder: placeholderNode?.getAttribute('placeholder')CODE
LOWclis/linkedin-learning/search.test.js11 expect(parseAuthors([{ firstName: 'Jane', lastName: 'Doe' }])).toBe('Jane Doe');CODE
LOWclis/xiaohongshu/publish.js1095 const placeholder = (el.getAttribute('placeholder') || '').trim();CODE
LOWclis/slock/in-page.test.js344 globalThis.localStorage = { getItem: () => 'fake-token', setItem: () => {} };CODE
LOWclis/jike/comment.js49 const ph = ta.getAttribute('placeholder') || '';CODE
LOW⚡clis/linkedin/connect.test.js105 expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true CODE
LOW⚡clis/linkedin/connect.test.js107 expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', pending: true, connectACODE
LOW⚡clis/linkedin/connect.test.js109 expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/' }, 'Jane Doe', 'https://CODE
LOW⚡clis/linkedin/connect.test.js114 expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', alreadyConnected: true CODE
LOW⚡clis/linkedin/connect.test.js116 expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', pending: true }, 'Jane CODE
LOW⚡clis/linkedin/connect.test.js118 expect(assessProfileSafety({ name: 'Wrong Person', url: 'https://www.linkedin.com/in/wrong/', connectAvailable: CODE
LOW⚡clis/linkedin/connect.test.js123 const result = assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/?mini=true', conneCODE
LOW⚡clis/linkedin/connect.test.js124 expect(result).toMatchObject({ ok: true, blockReason: 'verified', actualValue: 'Jane Doe', connectable: true });CODE
LOW⚡clis/linkedin/connect.test.js130 const result = assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailablCODE
LOW⚡clis/linkedin/connect.test.js135 const result = assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailablCODE
LOW⚡clis/linkedin/connect.test.js184 const page = makeFakePage({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, CODE
LOW⚡clis/linkedin/connect.test.js187 'expected-name': 'Jane Doe',CODE
LOW⚡clis/linkedin/connect.test.js190 expect(rows[0]).toMatchObject({ status: 'connectable_dry_run', recipient: 'Jane Doe', reason: 'verified', connecCODE
LOW⚡clis/linkedin/connect.test.js196 const page = makeFakePage({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', alreadyConnected: true, CODE
LOW⚡clis/linkedin/connect.test.js199 'expected-name': 'Jane Doe',CODE
LOW⚡clis/linkedin/connect.test.js202 expect(rows[0]).toMatchObject({ status: 'not_connectable', recipient: 'Jane Doe', reason: 'already_connected', cCODE
LOW⚡clis/linkedin/connect.test.js210 'expected-name': 'Jane Doe',CODE
LOW⚡clis/linkedin/connect.test.js223 'expected-name': 'Jane Doe',CODE
LOW⚡clis/linkedin/connect.test.js231 const page = makeFakePage({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, CODE
LOW⚡clis/linkedin/connect.test.js235 'expected-name': 'Jane Doe',CODE
LOW⚡clis/linkedin/connect.test.js243 { name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, connectHref: '/preloadCODE
LOW⚡clis/linkedin/connect.test.js244 { found: true, matchedName: 'Jane Doe', matchedUrl: 'https://www.linkedin.com/in/jane/' },CODE
LOW⚡clis/linkedin/connect.test.js248 'expected-name': 'Jane Doe',CODE
LOW⚡clis/linkedin/connect.test.js252 expect(rows[0]).toMatchObject({ status: 'sent_verified', recipient: 'Jane Doe', reason: 'sent_invitation_verifieCODE
LOW⚡clis/linkedin/connect.test.js259 { name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, connectHref: '/preloadCODE
LOW⚡clis/linkedin/connect.test.js266 'expected-name': 'Jane Doe',CODE
LOW⚡clis/linkedin/connect.test.js270 expect(rows[0]).toMatchObject({ status: 'sent_verified', recipient: 'Jane Doe', reason: 'sent_invitation_verifieCODE
LOW⚡clis/linkedin/connect.test.js278 { name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, connectHref: '/preloadCODE
LOW⚡clis/linkedin/connect.test.js285 'expected-name': 'Jane Doe',CODE
LOW⚡clis/linkedin/connect.test.js289 expect(rows[0]).toMatchObject({ status: 'send_unverified', recipient: 'Jane Doe', reason: 'sent_invitation_not_fCODE
LOW⚡clis/linkedin/connect.test.js297 { name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: false, moreAvailable: true, CODE
LOW⚡clis/linkedin/connect.test.js298 { found: true, matchedName: 'Jane Doe', matchedUrl: 'https://www.linkedin.com/in/jane/' },CODE
LOW⚡clis/linkedin/connect.test.js302 'expected-name': 'Jane Doe',CODE
LOW⚡clis/linkedin/connect.test.js305 expect(rows[0]).toMatchObject({ status: 'sent_verified', recipient: 'Jane Doe', reason: 'sent_invitation_verifieCODE
LOW⚡clis/linkedin/connect.test.js312 [{ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: false, moreAvailable: true,CODE
LOW⚡clis/linkedin/connect.test.js317 'expected-name': 'Jane Doe',CODE
LOWclis/linkedin/connect.test.js63function evaluateProfileProbe(html, expectedName = 'Jane Doe') {CODE
LOWclis/linkedin/connect.test.js81 expect(matchInvitationName('Jane Q. Doe', 'Jane Doe')).toBe(true);CODE
LOWclis/linkedin/connect.test.js82 expect(matchInvitationName('Janet Doe', 'Jane Doe')).toBe(false);CODE
LOWclis/linkedin/connect.test.js155 expect(probe.name).toBe('Jane Doe');CODE
LOWclis/linkedin/salesnav-message.test.js142 { status: 200, json: { data: { fullName: 'Jane Doe', defaultPosition: { title: 'QA', companyName: 'Acme' }, degreeCODE
LOWclis/linkedin/salesnav-message.test.js153 recipient: 'Jane Doe',CODE
LOWsrc/browser/dom-snapshot.test.ts168 'placeholder', 'href', 'role', 'data-testid', 'autocomplete',CODE
LOWsrc/browser/dom-snapshot.test.ts294 expect(js).toContain('placeholder');CODE
4 more matches not shown…
Over-Commented Block49 hits · 46 pts
SeverityFileLineSnippetContext
LOWdesigns/self-repair-protocol.md141COMMENT
LOWextension/src/cdp.ts141 // Retry attach up to 3 times — other extensions (1Password, Playwright MCP Bridge)COMMENT
LOWextension/src/background.ts21let contextIdPromise: Promise<string> | null = null;COMMENT
LOWextension/src/background.ts341 idleDeadlineAt: number;COMMENT
LOWextension/src/background.ts1741COMMENT
LOWclis/dblp/author.js1// dblp author — resolve an author name to a PID and list their publicationsCOMMENT
LOWclis/wechat-channels/publish.js381 const targetDay = dt.getDate();COMMENT
LOWclis/semanticscholar/utils.js1// Shared helpers for the Semantic Scholar (`api.semanticscholar.org`) adapter.COMMENT
LOWclis/grok/utils.js241}COMMENT
LOWclis/openalex/utils.js1// Shared helpers for the OpenAlex (`api.openalex.org`) adapter.COMMENT
LOWclis/hupu/hot.js1// Hupu hot/home threads — public SSR HTML scrape via in-page DOM walk.COMMENT
LOWclis/weixin/download.js21//COMMENT
LOWclis/eastmoney/kuaixun.js1// eastmoney kuaixun — 7x24 real-time market news feed.COMMENT
LOWclis/facebook/notifications.test.js1// Facebook notifications — unit tests for pure helpers + JSDOM fixtureCOMMENT
LOWclis/facebook/notifications.js1// Facebook notifications — pulls the rendered notification feed fromCOMMENT
LOWclis/facebook/notifications.js21// - Upfront `--limit` validation: positive integer in [1, 100], noCOMMENT
LOWclis/xiaoe/catalog.js1// Xiaoe (小鹅通) catalog — list chapters + sections of a course / columnCOMMENT
LOWclis/xiaoe/courses.js1// Xiaoe (小鹅通) purchased-courses list — pulls "已购内容" tab cards fromCOMMENT
LOWclis/xiaoe/content.js1// Xiaoe (小鹅通) content extractor — pulls rendered article text from aCOMMENT
LOWclis/xiaoe/xiaoe.test.js1// Xiaoe adapter contract + helper tests.COMMENT
LOWclis/reddit/home.js61 await page.goto('https://www.reddit.com');COMMENT
LOWclis/reddit/read.js141 const postId = normalizeRedditPostId(kwargs['post-id']);COMMENT
LOWclis/xiaohongshu/ask.js261 return { ok: false, error: 'webpack_runtime_missing', page_url: location.href };COMMENT
LOWclis/xiaohongshu/ask.js441 const timeout = parseAskTimeout(kwargs?.timeout);COMMENT
LOWclis/chatgpt/utils.js181 return value;COMMENT
LOWclis/chatgpt/utils.js2561 };COMMENT
LOWclis/tiktok/follow.js1// Follow a TikTok user via in-page button click + state verification.COMMENT
LOWclis/tiktok/comment.js1// Post a comment on a TikTok video via in-page button click + stateCOMMENT
LOWclis/tiktok/unfollow.js1// Unfollow a TikTok user via in-page button click + state verification.COMMENT
LOWclis/tiktok/utils.js161}COMMENT
LOWclis/slock/attachment-download.js1// attachment-download.jsCOMMENT
LOWclis/slock/task-create.js1// task-create.jsCOMMENT
LOWclis/slock/api-base-canary.test.js1// api-base-canary.test.jsCOMMENT
LOWclis/slock/task-convert.js1// task-convert.jsCOMMENT
LOWclis/slock/server-override-canary.test.js1// server-override-canary.test.jsCOMMENT
LOWclis/slock/error-detail-canary.test.js1// error-detail-canary.test.jsCOMMENT
LOWclis/slock/site-session-canary.test.js1// site-session-canary.test.jsCOMMENT
LOWclis/slock/short-id-canary.test.js1// short-id-canary.test.jsCOMMENT
LOWclis/slock/attachment-upload.test.js81COMMENT
LOWclis/slock/in-page.js1import { UUID_RE } from './resolve.js';COMMENT
LOWclis/slock/in-page.js61 // etc.). Reading localStorage there throws SecurityError "Access is denied".COMMENT
LOWclis/slock/in-page.js141// other 404s in surrounding logic (threads-404 / channel-404 meanCOMMENT
LOWclis/slock/attachment-upload.js1// attachment-upload.jsCOMMENT
LOWclis/kimi/audit-extras.js1// Deep-audit gap closers for Kimi (kimi.com).COMMENT
LOWsrc/utils.ts81// or WAF challenge instead of JSON, the body starts with `<!DOCTYPE html>` orCOMMENT
LOWsrc/execution.ts401 }, { session, ...profileRouting, windowMode, surface: 'adapter', siteSession });COMMENT
LOWsrc/browser/stealth.ts181 return fn;COMMENT
LOWsrc/browser/stealth.ts221COMMENT
LOWsrc/browser/stealth.ts261 // When DevTools or CDP debugger is attached, Chrome may alter theCOMMENT
Hallucination Indicators4 hits · 40 pts
SeverityFileLineSnippetContext
CRITICALextension/src/background.test.ts1270 const createCalls = chrome.alarms.create.mock.calls.filter((c: unknown[]) => c[0] === alarmName);CODE
CRITICALextension/src/background.test.ts2171 const createGroupCalls = chrome.tabs.group.mock.calls.filter((call: any[]) => call[0]?.createProperties);CODE
CRITICALextension/src/background.test.ts2197 const createGroupCalls = chrome.tabs.group.mock.calls.filter((call: any[]) => call[0]?.createProperties);CODE
CRITICAL…lls/opencli-adapter-author/references/api-discovery.md270opencli browser eval "window.__pinia.state.value.someStore.someMethod({...})"CODE
Modern AI Meta-Vocabulary8 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMautoresearch/eval-save.ts123 // Phase 1: init — create scaffoldCOMMENT
MEDIUMautoresearch/eval-save.ts134 // Phase 2: write — overwrite scaffold with real adapter codeCOMMENT
MEDIUMdocs/adapters/browser/linkedin-learning.md27opencli linkedin-learning course https://www.linkedin.com/learning/agentic-ai-build-your-first-agentic-ai-systemCODE
MEDIUMclis/linkedin-learning/search.test.js51 url: 'https://www.linkedin.com/learning/agentic-ai-build-your-first-agentic-ai-system',CODE
MEDIUMclis/linkedin-learning/course.test.js15 expect(parseSlug('https://www.linkedin.com/learning/agentic-ai-build/?foo=1'))CODE
MEDIUMclis/linkedin-learning/course.test.js20 expect(() => parseSlug('https://evil.example/learning/agentic-ai-build')).toThrow(ArgumentError);CODE
MEDIUMclis/linkedin-learning/course.test.js50 expect(row.url).toBe('https://www.linkedin.com/learning/agentic-ai-build-your-first-agentic-ai-system');CODE
MEDIUMskills/opencli-usage/SKILL.md117opencli plugin create <name> # scaffold a new pluginCODE
Magic Placeholder Names2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHdocs/adapters/browser/pubmed.md68export NCBI_API_KEY=YOUR_API_KEYCODE
HIGHdocs/adapters/browser/minimax.md29export MINIMAX_API_KEY=<your-api-key>CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHclis/hf/paper.js3// AI-generated keyword list HF curates.COMMENT
AI Slop Vocabulary3 hits · 7 pts
SeverityFileLineSnippetContext
MEDIUMsrc/browser/shape-filter.ts64 // it as a raw segment list (keeps us robust to unexpected input).COMMENT
MEDIUM…r/__fixtures__/article-extract/wikipedia-markdown.html967<li id="cite&#95;note-commonmark.org-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-commonmark.org_30-0">^</a>CODE
MEDIUM…r/__fixtures__/article-extract/wikipedia-markdown.html967<li id="cite&#95;note-commonmark.org-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-commonmark.org_30-0">^</a>CODE
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMautoresearch/commands/run.ts71## Scope (files you can modify)COMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/check-doc-coverage.sh8# Usage:COMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/cli.ts2736 // TODO: implement data fetchingCOMMENT
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsrc/daemon.ts247async function handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void> {CODE