Repository Analysis

jackwener/OpenCLI

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

4.6 Likely human-written View on GitHub
4.6
Adjusted Score
4.6
Raw Score
100%
Time Factor
2026-05-28
Last Push
23,091
Stars
JavaScript
Language
293,960
Lines of Code
1908
Files
810
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 1HIGH 8MEDIUM 197LOW 604

Pattern Findings

810 matches across 14 categories. Click a row to expand file-level details.

Decorative Section Separators193 hits · 592 pts
SeverityFileLineSnippet
MEDIUMautoresearch/eval-skill.ts24// ── Types ──────────────────────────────────────────────────────────
MEDIUMautoresearch/eval-skill.ts42// ── Task Definitions (inline, to avoid YAML dependency) ────────────
MEDIUMautoresearch/eval-skill.ts95// ── Run Task ───────────────────────────────────────────────────────
MEDIUMautoresearch/eval-skill.ts191// ── Main ───────────────────────────────────────────────────────────
MEDIUMextension/src/background.ts66// ─── Console log forwarding ──────────────────────────────────────────
MEDIUMextension/src/background.ts94// ─── WebSocket connection ────────────────────────────────────────────
MEDIUMextension/src/background.ts198// ─── Browser target leases ───────────────────────────────────────────
MEDIUMextension/src/background.ts880// ─── Lifecycle events ────────────────────────────────────────────────
MEDIUMextension/src/background.ts922// ─── Popup status API ───────────────────────────────────────────────
MEDIUMextension/src/background.ts964// ─── Command dispatcher ─────────────────────────────────────────────
MEDIUMextension/src/background.ts1026// ─── Action handlers ─────────────────────────────────────────────────
MEDIUM…erpowers/plans/2026-03-31-daemon-lifecycle-redesign.md560 // ── Built-in: daemon ──────────────────────────────────────────────────────
MEDIUMscripts/postinstall.js23// ── Completion script content ──────────────────────────────────────────────
MEDIUMscripts/postinstall.js58// ── Helpers ────────────────────────────────────────────────────────────────
MEDIUMscripts/postinstall.js74// ── Main ───────────────────────────────────────────────────────────────────
MEDIUMscripts/postinstall.js146 // ── Spotify credentials template ────────────────────────────────────
MEDIUMscripts/postinstall.js162 // ── Browser Bridge setup hint ───────────────────────────────────────
MEDIUMclis/twitter/trending.js3// ── CLI definition ────────────────────────────────────────────────────
MEDIUMclis/twitter/timeline.js5// ── Twitter GraphQL constants ──────────────────────────────────────────
MEDIUMclis/twitter/timeline.js140// ── CLI definition ────────────────────────────────────────────────────
MEDIUMclis/twitter/thread.js5// ── Twitter GraphQL constants ──────────────────────────────────────────
MEDIUMclis/twitter/thread.js102// ── CLI definition ────────────────────────────────────────────────────
MEDIUMclis/twitter/utils.js234// ── Engagement scoring (P3) ────────────────────────────────────────────
MEDIUMclis/twitter/search.js6// ── Public-search operator surface ─────────────────────────────────────
MEDIUMclis/weread-official/utils.js148// ── Formatting helpers ──────────────────────────────────────────────────────
MEDIUMclis/weread-official/utils.js208// ── Deep links ──────────────────────────────────────────────────────────────
MEDIUMclis/weread-official/utils.js243// ── Argument validation ─────────────────────────────────────────────────────
MEDIUMclis/weread-official/utils.js288// ── Empty-result helper ────────────────────────────────────────────────────
MEDIUMclis/weread-official/book.js57 // ── info section ────────────────────────────────────────────────────
MEDIUMclis/weread-official/book.js85 // ── chapters section ────────────────────────────────────────────────
MEDIUMclis/weread-official/book.js108 // ── progress section ────────────────────────────────────────────────
MEDIUMclis/spotify/spotify.js9// ── Credentials ───────────────────────────────────────────────────────────────
MEDIUMclis/spotify/spotify.js31// ── Token storage ─────────────────────────────────────────────────────────────
MEDIUMclis/spotify/spotify.js78// ── Spotify API helper ────────────────────────────────────────────────────────
MEDIUMclis/spotify/spotify.js105// ── Commands ──────────────────────────────────────────────────────────────────
MEDIUMclis/boss/utils.js3// ── Constants ───────────────────────────────────────────────────────────────
MEDIUMclis/boss/utils.js10// ── Core helpers ────────────────────────────────────────────────────────────
MEDIUMclis/boss/utils.js140// ── Convenience helpers ─────────────────────────────────────────────────────
MEDIUMclis/boss/utils.js197// ── UI automation helpers ───────────────────────────────────────────────────
MEDIUMclis/boss/utils.js287// ── Geek-side helpers ────────────────────────────────────────────────────────
MEDIUMclis/youtube/transcript-group.js70// ── Sentence grouping ─────────────────────────────────────────────────────
MEDIUMclis/youtube/transcript-group.js104// ── Speaker grouping ──────────────────────────────────────────────────────
MEDIUMclis/coupang/product.js50 // ── Source 1: JSON-LD Product schema ─────────────────────────────
MEDIUMclis/coupang/product.js126 // ── Source 3: DOM fallback ───────────────────────────────────────
MEDIUMclis/mubu/notes.js5// ── 日期工具 ──────────────────────────────────────────────
MEDIUMclis/mubu/notes.js105// ── API 工具 ──────────────────────────────────────────────
MEDIUMclis/mubu/notes.js156// ── 命令 ──────────────────────────────────────────────────
MEDIUMclis/xiaoe/xiaoe.test.js46// ─── Registration contract ──────────────────────────────────────────
MEDIUMclis/xiaoe/xiaoe.test.js86// ─── content.js helpers ────────────────────────────────────────────
MEDIUMclis/xiaoe/xiaoe.test.js178// ─── catalog.js helpers ────────────────────────────────────────────
MEDIUMclis/xiaoe/xiaoe.test.js254// ─── courses.js helper ─────────────────────────────────────────────
MEDIUMclis/xiaoe/xiaoe.test.js295// ─── buildScript invariants (anti-pattern regression guards) ──────
MEDIUMclis/xiaoe/xiaoe.test.js331// ─── Wire tests for the func form ─────────────────────────────────
MEDIUMclis/xiaohongshu/publish.js86 // ── Primary: CDP DOM.setFileInputFiles ──────────────────────────────
MEDIUMclis/xiaohongshu/publish.js114 // ── Fallback: legacy base64 DataTransfer injection ─────────────────
MEDIUMclis/xiaohongshu/publish.js500 // ── Validate inputs ────────────────────────────────────────────────────────
MEDIUMclis/xiaohongshu/publish.js513 // ── Step 1: Navigate to publish page ──────────────────────────────────────
MEDIUMclis/xiaohongshu/publish.js522 // ── Step 2: Select 图文 (image+text) note type if tabs are present ─────────
MEDIUMclis/xiaohongshu/publish.js533 // ── Step 3: Upload images ──────────────────────────────────────────────────
MEDIUMclis/xiaohongshu/publish.js543 // ── Step 3b: Wait for editor form to render ───────────────────────────────
133 more matches not shown…
Hyper-Verbose Identifiers449 hits · 446 pts
SeverityFileLineSnippet
LOWextension/src/cdp.ts420function registerFrameTargetCleanup(): void {
LOWextension/src/cdp.ts630function getOrCreateNetworkCaptureEntry(tabId: number, requestId: string, fallback?: {
LOWextension/src/cdp.ts630function getOrCreateNetworkCaptureEntry(tabId: number, requestId: string, fallback?: {
LOWextension/src/background.ts538function getOwnedContainerGroupTitles(role: OwnedWindowRole): string[] {
LOWextension/src/background.ts551async function focusOwnedWindowIfRequested(windowId: number, mode: WindowMode): Promise<void> {
LOWextension/src/background.ts557async function toOwnedContainerDiscoveryCandidate(group: chrome.tabGroups.TabGroup): Promise<OwnedContainerDiscoveryCand
LOWextension/src/background.ts573function selectOwnedContainerDiscoveryCandidate(candidates: OwnedContainerDiscoveryCandidate[]): OwnedContainerDiscovery
LOWextension/src/background.ts582async function discoverOwnedContainerFromTabGroup(role: OwnedWindowRole): Promise<{ windowId: number; groupId: number }
LOWextension/src/background.ts610async function ensureOwnedContainerTabGroup(role: OwnedWindowRole, windowId: number, tabIds: Array<number | undefined>):
LOWextension/src/background.ts626async function ensureOwnedContainerTabGroupUnlocked(role: OwnedWindowRole, windowId: number, ids: number[]): Promise<voi
LOWextension/src/background.ts662async function ensureOwnedContainerWindow(
LOWextension/src/background.ts676async function ensureOwnedContainerWindowUnlocked(
LOWextension/src/background.ts751async function findReusableOwnedContainerTab(windowId: number): Promise<number | undefined> {
LOWextension/src/background.ts777async function createOwnedTabLeaseUnlocked(leaseKey: string, initialUrl?: string): Promise<ResolvedTab> {
LOWextension/src/background.ts1043function normalizeUrlForComparison(url?: string): string {
LOWextension/src/background.ts1070function enumerateCrossOriginFrames(tree: any): Array<{ index: number; frameId: string; url: string; name: string }> {
LOWextension/src/background.ts1605function stripOpenCliFrameRoutingParams(params: Record<string, unknown>, stripFrameId: boolean): Record<string, unknown>
LOWextension/src/background.ts1645async function handleNetworkCaptureStart(cmd: Command, leaseKey: string): Promise<Result> {
LOWextension/src/background.ts1730async function reconcileTargetLeaseRegistry(): Promise<void> {
LOWtests/e2e/browser-auth-helpers.ts8export async function expectGracefulAuthFailure(args: string[]) {
LOWtests/e2e/browser-public.test.ts36function isBrowserBridgeUnavailable(result: CliResult): boolean {
LOWtests/e2e/browser-public.test.ts94function expectNonEmptyDataOrSkipEnv(data: any[] | null, label: string): data is any[] {
LOWtests/e2e/browser-public.test.ts120function countTiebaReplyFloorOverlap(left: any[] | null, right: any[] | null): number {
LOWtests/e2e/browser-public.test.ts145async function getTiebaReadCandidateOrSkip(
LOWtests/e2e/browser-public.test.ts236async function expectImdbDataOrChallengeSkip(args: string[], label: string): Promise<any[] | null> {
LOWtests/e2e/public-commands.test.ts12function isExpectedChineseSiteRestriction(code: number, stderr: string): boolean {
LOWtests/e2e/public-commands.test.ts26function isExpectedApplePodcastsRestriction(code: number, stderr: string): boolean {
LOWtests/e2e/public-commands.test.ts32function isExpectedGoogleRestriction(code: number, stderr: string): boolean {
LOWclis/ctrip/hotel-search.js70function assertCheckinBeforeCheckout(checkin, checkout) {
LOWclis/twitter/download.js149function normalizeUserMediaOperation(operation) {
LOWclis/twitter/download.js160function normalizeUserByScreenNameOperation(operation) {
LOWclis/twitter/tweets.js99function normalizeUserTweetsOperation(operation) {
LOWclis/twitter/tweets.js110function normalizeUserByScreenNameOperation(operation) {
LOWclis/twitter/post.js37function isUnsupportedInsertTextError(err) {
LOWclis/twitter/post.js146async function attachImagesViaDataTransfer(page, absPaths) {
LOWclis/twitter/lists.js78export function getListsManagementInstructions(data) {
LOWclis/twitter/bookmark-folder.js86export function parseBookmarkFolderTimeline(data, seen) {
LOWclis/twitter/utils.js202export function isRecoverableFileInputError(error) {
LOWclis/twitter/utils.js207export async function waitForComposerMediaReady(page, expectedCount = 1) {
LOWclis/twitter/shared.js75export function buildTwitterArticleScopeSource(tweetId) {
LOWclis/twitter/shared.js105export function normalizeTwitterScreenName(value) {
LOWclis/twitter/shared.js137function normalizeOperationFallback(fallback) {
LOWclis/twitter/shared.js162export function looksLikePrivateTwitterTimeline(data) {
LOWclis/twitter/shared.js168export function normalizeTwitterGraphqlPayload(value) {
LOWclis/twitter/shared.js184export function sanitizeTwitterOperationMetadata(resolved, fallback) {
LOWclis/twitter/shared.js208export async function resolveTwitterOperationMetadata(page, operationName, fallback) {
LOWclis/twitter/search.js184function buildSearchTimelineRequest(operation, rawQuery, product, count, cursor) {
LOWclis/gitee/trending.js201function collectProjectsFromUnknown(value, out, seen, depth) {
LOWclis/gitee/trending.js233function collectProjectsFromCapture(entries) {
LOWclis/amazon/rankings.js12function normalizeVisibleCategoryLinks(links) {
LOWclis/amazon/rankings.js30export function normalizeRankingCandidate(candidate, context) {
LOWclis/amazon/offer.js32function isDeliveryLocationBlocked(text) {
LOWclis/amazon/discussion.js4function normalizeDiscussionPayload(payload) {
LOWclis/amazon/discussion.js40async function readCurrentDiscussionPayload(page, limit) {
LOWclis/amazon/shared.js273export function extractReviewCountFromCardText(text) {
LOWclis/gemini/deep-research-result.js13async function resolveDeepResearchExportResponse(page, timeoutSeconds) {
LOWclis/gemini/deep-research.js13function parseDeepResearchProgress(text) {
LOWclis/gemini/utils.js38function buildGeminiComposerLocatorScript() {
LOWclis/gemini/utils.js81export function parseGeminiTitleMatchMode(value, fallback = 'contains') {
LOWclis/gemini/utils.js87export function parseGeminiConversationUrl(value) {
389 more matches not shown…
Verbosity Indicators89 hits · 158 pts
SeverityFileLineSnippet
LOWautoresearch/save-adapters/zhihu-search-detail.ts18 // Step 1: Navigate
LOWautoresearch/save-adapters/zhihu-search-detail.ts21 // Step 2: Search API — filter results by type, extract question IDs
LOWautoresearch/save-adapters/zhihu-search-detail.ts33 // Step 3: For each result, fetch question stats (answer_count, follower_count)
LOWautoresearch/save-adapters/zhihu-search-detail.ts47 // Step 4: Format output
LOWautoresearch/save-adapters/xhs-note-comments.ts18 // Step 1: Navigate to note detail page
LOWautoresearch/save-adapters/xhs-note-comments.ts21 // Step 2: Extract note metadata (title, author, likes)
LOWautoresearch/save-adapters/xhs-note-comments.ts29 // Step 3: Scroll the note container to trigger comment loading
LOWautoresearch/save-adapters/xhs-note-comments.ts37 // Step 4: Extract comments from DOM
LOWautoresearch/save-adapters/xhs-note-comments.ts54 // Step 5: Merge note meta + comments into unified output
LOWautoresearch/save-adapters/zhihu-question-full.ts18 // Step 1: Navigate to question page
LOWautoresearch/save-adapters/zhihu-question-full.ts21 // Step 2: Fetch question detail
LOWautoresearch/save-adapters/zhihu-question-full.ts29 // Step 3: Fetch top answers
LOWautoresearch/save-adapters/zhihu-question-full.ts38 // Step 4: Fetch related questions
LOWautoresearch/save-adapters/zhihu-question-full.ts46 // Step 5: Merge three layers into unified output
LOWautoresearch/save-adapters/xhs-search-full.ts18 // Step 1: Navigate to search page
LOWautoresearch/save-adapters/xhs-search-full.ts20 // Step 2: Wait for async render via MutationObserver
LOWautoresearch/save-adapters/xhs-search-full.ts28 // Step 3: Scroll 3x to load more content
LOWautoresearch/save-adapters/xhs-search-full.ts33 // Step 4: Extract from DOM with deduplication
LOWautoresearch/save-adapters/xhs-explore-deep.ts16 // Step 1: Navigate to explore page
LOWautoresearch/save-adapters/xhs-explore-deep.ts18 // Step 2: Wait for initial content via MutationObserver
LOWautoresearch/save-adapters/xhs-explore-deep.ts26 // Step 3: Multi-round adaptive scroll (early stop when no new content)
LOWautoresearch/save-adapters/xhs-explore-deep.ts35 // Step 4: Extract with noteId deduplication + parse likes as integers
LOWautoresearch/save-adapters/xhs-explore-deep.ts57 // Step 5: Sort by likes descending
LOWautoresearch/save-adapters/xhs-explore-deep.ts59 // Step 6: Slice and format
LOWautoresearch/save-adapters/zhihu-hot-detail.ts16 // Step 1: Navigate
LOWautoresearch/save-adapters/zhihu-hot-detail.ts19 // Step 2: Fetch hot list (handle 16+ digit IDs)
LOWautoresearch/save-adapters/zhihu-hot-detail.ts29 // Step 3: For each hot question, fetch its top answer
LOWautoresearch/save-adapters/zhihu-hot-detail.ts46 // Step 4: Format output
LOWclis/pixiv/illusts.js29 // Step 1: get all illust IDs
LOWclis/pixiv/illusts.js38 // Step 2: batch fetch details (Pixiv supports up to ~48 IDs per request)
LOWclis/pixiv/illusts.test.js33 // Step 1: profile/all returns illust IDs
LOWclis/pixiv/illusts.test.js39 // Step 2: batch detail response
LOWclis/twitter/reply-dm.js26 // Step 1: Navigate to messages to get conversation list
LOWclis/twitter/reply-dm.js29 // Step 2: Collect conversations with scroll-to-load
LOWclis/twitter/reply-dm.js101 // Step 3: Iterate through conversations and send message
LOWclis/twitter/unretweet.js55 // Step 1: click Unretweet button → opens menu
LOWclis/twitter/unretweet.js58 // Step 2: wait for and click the confirm menu item. The confirm
LOWclis/twitter/retweet.js55 // Step 1: click Retweet button → opens menu
LOWclis/twitter/retweet.js58 // Step 2: wait for and click the confirm menu item. The confirm
LOWclis/twitter/accept.js29 // Step 1: Navigate to DM requests page
LOWclis/twitter/accept.js32 // Step 2: Get conversations with scroll-to-load
LOWclis/twitter/accept.js90 // Step 3: Find first unvisited conversation with keyword match in preview
LOWclis/twitter/accept.js102 // Step 4: Click this conversation to open it
LOWclis/twitter/accept.js119 // Step 5: Read full chat content and find Accept button
LOWclis/jimeng/generate.js28 // Step 1: Count existing images before generation
LOWclis/jimeng/generate.js31 // Step 2: Clear and set prompt
LOWclis/jimeng/generate.js45 // Step 3: Click generate
LOWclis/jimeng/generate.js50 // Step 4: Wait for new images to appear
LOWclis/jimeng/generate.js66 // Step 5: Extract image URLs (use thumbnail URLs which are accessible)
LOWclis/chatgpt-app/ax.js243// Step 1: Click the "Options" button to open the popover (support English, Simplified and Traditional Chinese UI)
LOWclis/chatgpt-app/ax.js254// Step 2: Find the popover that appeared, search ONLY within it
LOWclis/chatgpt-app/ax.js260// Step 3: If legacy, click "Legacy models" to expand submenu
LOWclis/chatgpt-app/ax.js270// Step 4: Click the target model button within the popover (prefix match)
LOWclis/youtube/transcript.js462 // Step 2: Fetch caption XML and parse segments
LOWclis/youtube/transcript.js564 // Step 3: Fetch chapters (for grouped mode)
LOWclis/youtube/transcript.js641 // Step 4: Format output based on mode
LOWclis/youtube/comments.js33 // Step 1: Get comment continuation token
LOWclis/youtube/comments.js59 // Step 2: Fetch comments
LOWclis/weibo/delete.js74 // Step 1: resolve mblogid / idstr to canonical idstr via /show.
LOWclis/weibo/delete.js95 // Step 2: destroy. Weibo requires X-Xsrf-Token (double-submit CSRF token).
29 more matches not shown…
Fake / Example Data39 hits · 46 pts
SeverityFileLineSnippet
LOWautoresearch/eval-skill.ts74 { name: "form-fill-basic", task: "Fill the Customer Name with 'OpenCLI' and Telephone with '555-0100'. Do not submit."
LOWautoresearch/browse-tasks.json445 "opencli browser eval \"var n=document.querySelector('[name=custname]');n.value='Alice';n.dispatchEvent(new Event(
LOWdocs/adapters/browser/linkedin.md74opencli linkedin connect https://www.linkedin.com/in/example/ --expected-name "Jane Doe" --note "quick note" --send
LOWdocs/adapters/browser/linkedin.md78opencli linkedin safe-send --thread-url https://www.linkedin.com/messaging/thread/abc/ --expected-name "Jane Doe" --mess
LOWclis/reuters/reuters.test.js63 authors: [{ name: 'Jane Doe' }, { name: 'Bob Smith' }],
LOWclis/producthunt/utils.test.js29 expect(posts[0].author).toBe('Jane Doe');
LOWclis/linkedin-learning/search.test.js29 expect(parseAuthors([{ firstName: 'Jane', lastName: 'Doe' }])).toBe('Jane Doe');
LOWclis/linkedin/connect.test.js77 expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true
LOWclis/linkedin/connect.test.js79 expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', pending: true, connectA
LOWclis/linkedin/connect.test.js81 expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/' }, 'Jane Doe', 'https://
LOWclis/linkedin/connect.test.js86 expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', alreadyConnected: true
LOWclis/linkedin/connect.test.js88 expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', pending: true }, 'Jane
LOWclis/linkedin/connect.test.js90 expect(assessProfileSafety({ name: 'Wrong Person', url: 'https://www.linkedin.com/in/wrong/', connectAvailable:
LOWclis/linkedin/connect.test.js95 const result = assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/?mini=true', conne
LOWclis/linkedin/connect.test.js96 expect(result).toMatchObject({ ok: true, blockReason: 'verified', actualValue: 'Jane Doe', connectable: true });
LOWclis/linkedin/connect.test.js105 const page = makeFakePage({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true,
LOWclis/linkedin/connect.test.js108 'expected-name': 'Jane Doe',
LOWclis/linkedin/connect.test.js111 expect(rows[0]).toMatchObject({ status: 'connectable_dry_run', recipient: 'Jane Doe', reason: 'verified', connec
LOWclis/linkedin/connect.test.js117 const page = makeFakePage({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', alreadyConnected: true,
LOWclis/linkedin/connect.test.js120 'expected-name': 'Jane Doe',
LOWclis/linkedin/connect.test.js123 expect(rows[0]).toMatchObject({ status: 'not_connectable', recipient: 'Jane Doe', reason: 'already_connected', c
LOWclis/linkedin/connect.test.js131 'expected-name': 'Jane Doe',
LOWclis/linkedin/connect.test.js144 'expected-name': 'Jane Doe',
LOWclis/linkedin/connect.test.js152 const page = makeFakePage({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true,
LOWclis/linkedin/connect.test.js156 'expected-name': 'Jane Doe',
LOWclis/linkedin/connect.test.js164 { name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, connectHref: '/preload
LOWclis/linkedin/connect.test.js165 { found: true, matchedName: 'Jane Doe', matchedUrl: 'https://www.linkedin.com/in/jane/' },
LOWclis/linkedin/connect.test.js169 'expected-name': 'Jane Doe',
LOWclis/linkedin/connect.test.js173 expect(rows[0]).toMatchObject({ status: 'sent_verified', recipient: 'Jane Doe', reason: 'sent_invitation_verifie
LOWclis/linkedin/connect.test.js180 { name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, connectHref: '/preload
LOWclis/linkedin/connect.test.js187 'expected-name': 'Jane Doe',
LOWclis/linkedin/connect.test.js191 expect(rows[0]).toMatchObject({ status: 'sent_verified', recipient: 'Jane Doe', reason: 'sent_invitation_verifie
LOWclis/linkedin/connect.test.js199 { name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, connectHref: '/preload
LOWclis/linkedin/connect.test.js206 'expected-name': 'Jane Doe',
LOWclis/linkedin/connect.test.js210 expect(rows[0]).toMatchObject({ status: 'send_unverified', recipient: 'Jane Doe', reason: 'sent_invitation_not_f
LOWclis/linkedin/connect.test.js47 expect(matchInvitationName('Jane Q. Doe', 'Jane Doe')).toBe(true);
LOWclis/linkedin/connect.test.js48 expect(matchInvitationName('Janet Doe', 'Jane Doe')).toBe(false);
LOWclis/linkedin/salesnav-message.test.js142 { status: 200, json: { data: { fullName: 'Jane Doe', defaultPosition: { title: 'QA', companyName: 'Acme' }, degree
LOWclis/linkedin/salesnav-message.test.js153 recipient: 'Jane Doe',
Cross-Language Confusion (JS/TS)6 hits · 40 pts
SeverityFileLineSnippet
HIGHclis/chatgpt-app/ax.js61print(String(data: data, encoding: .utf8)!)
HIGHclis/chatgpt-app/ax.js180print("Sent")
HIGHclis/chatgpt-app/ax.js276print("Selected: \\(target)")
HIGHclis/chatgpt-app/ax.js309 print("false"); exit(0)
HIGHclis/chatgpt-app/ax.js313 print("false"); exit(0)
HIGHclis/chatgpt-app/ax.js316print(targets.contains(where: { hasButton(win, desc: $0) }) ? "true" : "false")
Over-Commented Block24 hits · 24 pts
SeverityFileLineSnippet
LOWdesigns/self-repair-protocol.md141
LOWclis/dblp/author.js1// dblp author — resolve an author name to a PID and list their publications
LOWclis/openalex/utils.js1// Shared helpers for the OpenAlex (`api.openalex.org`) adapter.
LOWclis/hupu/hot.js1// Hupu hot/home threads — public SSR HTML scrape via in-page DOM walk.
LOWclis/eastmoney/kuaixun.js1// eastmoney kuaixun — 7x24 real-time market news feed.
LOWclis/facebook/notifications.test.js1// Facebook notifications — unit tests for pure helpers + JSDOM fixture
LOWclis/facebook/notifications.js1// Facebook notifications — pulls the rendered notification feed from
LOWclis/facebook/notifications.js21// - Upfront `--limit` validation: positive integer in [1, 100], no
LOWclis/xiaoe/catalog.js1// Xiaoe (小鹅通) catalog — list chapters + sections of a course / column
LOWclis/xiaoe/courses.js1// Xiaoe (小鹅通) purchased-courses list — pulls "已购内容" tab cards from
LOWclis/xiaoe/content.js1// Xiaoe (小鹅通) content extractor — pulls rendered article text from a
LOWclis/xiaoe/xiaoe.test.js1// Xiaoe adapter contract + helper tests.
LOWclis/reddit/home.js61 await page.goto('https://www.reddit.com');
LOWclis/reddit/read.js141 const postId = normalizeRedditPostId(kwargs['post-id']);
LOWclis/chatgpt/utils.js101 }
LOWclis/tiktok/follow.js1// Follow a TikTok user via in-page button click + state verification.
LOWclis/tiktok/comment.js1// Post a comment on a TikTok video via in-page button click + state
LOWclis/tiktok/unfollow.js1// Unfollow a TikTok user via in-page button click + state verification.
LOWclis/tiktok/utils.js161}
LOWsrc/cli.ts1121 captured_at: new Date().toISOString(),
LOWsrc/browser/stealth.ts181 return fn;
LOWsrc/browser/stealth.ts221
LOWsrc/browser/stealth.ts261 // When DevTools or CDP debugger is attached, Chrome may alter the
LOWsrc/download/article-download.ts81// ============================================================
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippet
CRITICAL…lls/opencli-adapter-author/references/api-discovery.md242opencli browser eval "window.__pinia.state.value.someStore.someMethod({...})"
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippet
HIGHclis/hf/paper.js3// AI-generated keyword list HF curates.
AI Slop Vocabulary3 hits · 7 pts
SeverityFileLineSnippet
MEDIUMsrc/browser/shape-filter.ts64 // it as a raw segment list (keeps us robust to unexpected input).
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>
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>
Magic Placeholder Names1 hit · 5 pts
SeverityFileLineSnippet
HIGHdocs/adapters/browser/pubmed.md48export NCBI_API_KEY=YOUR_API_KEY
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippet
MEDIUMautoresearch/commands/run.ts46## Scope (files you can modify)
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippet
LOWscripts/check-doc-coverage.sh8# Usage:
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippet
LOWscripts/check-doc-coverage.sh45 # Check if doc exists in browser/ or desktop/ subdirectories
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippet
LOWsrc/daemon.ts191async function handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void> {