Browser Harness | Self-healing harness that enables LLMs to complete any task.
This report presents the forensic synthetic code analysis of browser-use/browser-harness, a Python project with 15,957 GitHub stars. SynthScan v2.0 examined 38,609 lines of code across 160 source files, recording 265 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 8.2 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 265 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent-workspace/domain-skills/wellfound/scraping.md | 417 | def dismiss_wellfound_login_modal(): | STRING |
| LOW | …workspace/domain-skills/job-boards/indeed-glassdoor.md | 399 | def dismiss_glassdoor_login_modal(): | STRING |
| LOW | agent-workspace/domain-skills/booking-com/scraping.md | 524 | def get_hotel_urls_for_country(cc: str, lang: str = "en-gb", max_shards: int = 2) -> list[str]: | STRING |
| LOW | agent-workspace/domain-skills/glassdoor/scraping.md | 361 | def dismiss_glassdoor_login_modal(): | STRING |
| LOW | agent-workspace/domain-skills/weread/read.md | 165 | def pick_book_from_new_ranking(): | STRING |
| LOW⚡ | tests/unit/test_ipc.py | 4 | def test_runtime_stem_uses_name_in_shared_runtime_dir(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_ipc.py | 11 | def test_runtime_stem_uses_bare_name_in_isolated_runtime_dir(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_ipc.py | 18 | def test_tmp_stem_uses_name_in_shared_tmp_dir(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_ipc.py | 38 | def test_identify_returns_pid_for_well_formed_ping_reply(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_ipc.py | 44 | def test_identify_rejects_boolean_pid(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_ipc.py | 53 | def test_identify_rejects_boolean_false_pid(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_ipc.py | 60 | def test_identify_returns_none_when_pid_field_missing(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_ipc.py | 69 | def test_identify_handles_non_dict_ping_payload(monkeypatch): | CODE |
| LOW | tests/unit/test_ipc.py | 80 | def test_identify_returns_none_when_pong_is_not_true(monkeypatch): | CODE |
| LOW | tests/unit/test_ipc.py | 86 | def test_identify_rejects_zero_and_negative_pids(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_ipc.py | 105 | def test_ping_returns_true_for_well_formed_pong(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_ipc.py | 111 | def test_ping_handles_non_dict_payload(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_ipc.py | 123 | def test_ping_returns_false_when_pong_field_is_missing_or_not_true(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_admin.py | 23 | def test_local_chrome_mode_is_false_when_env_provides_remote_cdp(): | CODE |
| LOW⚡ | tests/unit/test_admin.py | 27 | def test_local_chrome_mode_is_false_when_process_env_provides_remote_cdp(monkeypatch): | CODE |
| LOW⚡ | tests/unit/test_admin.py | 33 | def test_handshake_timeout_needs_chrome_remote_debugging_prompt(): | CODE |
| LOW | tests/unit/test_admin.py | 45 | def test_stale_websocket_does_not_open_chrome_inspect(): | CODE |
| LOW | tests/unit/test_admin.py | 51 | def test_daemon_endpoint_names_discovers_valid_socket_names(tmp_path, monkeypatch): | CODE |
| LOW | tests/unit/test_admin.py | 63 | def test_daemon_endpoint_names_with_bh_runtime_dir_returns_local_name_when_sock_exists(tmp_path, monkeypatch): | CODE |
| LOW | tests/unit/test_admin.py | 74 | def test_daemon_endpoint_names_with_bh_runtime_dir_returns_empty_when_sock_missing(tmp_path, monkeypatch): | CODE |
| LOW | tests/unit/test_admin.py | 84 | def test_daemon_endpoint_names_with_shared_bh_runtime_dir_discovers_named_sockets(tmp_path, monkeypatch): | CODE |
| LOW | tests/unit/test_admin.py | 97 | def test_active_browser_connections_counts_only_healthy_daemons(monkeypatch): | CODE |
| LOW | tests/unit/test_admin.py | 112 | def test_active_browser_connections_skips_daemons_reporting_cdp_disconnected(monkeypatch): | CODE |
| LOW | tests/unit/test_admin.py | 125 | def test_browser_connections_returns_attached_page(monkeypatch): | CODE |
| LOW | tests/unit/test_admin.py | 141 | def test_chrome_running_detects_helium_on_linux(monkeypatch): | CODE |
| LOW | tests/unit/test_admin.py | 164 | def test_doctor_probe_preserves_snap_bin_env_symlink(monkeypatch, tmp_path): | CODE |
| LOW | tests/unit/test_admin.py | 183 | def test_doctor_probe_preserves_snap_bin_path_symlink(monkeypatch, tmp_path): | CODE |
| LOW | tests/unit/test_admin.py | 207 | def test_run_doctor_prints_snap_detect_on_linux_when_probe_is_snap(monkeypatch, capsys): | CODE |
| LOW | tests/unit/test_admin.py | 228 | def test_run_doctor_skips_snap_detect_on_non_linux(monkeypatch, capsys): | CODE |
| LOW | tests/unit/test_admin.py | 246 | def test_run_doctor_reports_bad_stored_cloud_auth_without_crashing(monkeypatch, capsys): | CODE |
| LOW | tests/unit/test_admin.py | 264 | def test_run_doctor_fix_snap_prints_steps(capsys): | CODE |
| LOW | tests/unit/test_admin.py | 273 | def test_run_doctor_prints_active_browser_connections_and_active_pages(monkeypatch, capsys): | CODE |
| LOW | tests/unit/test_admin.py | 300 | def test_doctor_page_output_truncates_long_text(monkeypatch, capsys): | CODE |
| LOW | tests/unit/test_admin.py | 323 | def test_start_remote_daemon_stops_created_browser_when_daemon_start_fails(monkeypatch): | CODE |
| LOW | tests/unit/test_admin.py | 350 | def test_start_remote_daemon_stops_created_browser_when_daemon_start_is_interrupted(monkeypatch, exc_type): | CODE |
| LOW | tests/unit/test_admin.py | 377 | def test_stop_cloud_browser_swallows_baseexception_from_stop_request(monkeypatch, exc_type): | CODE |
| LOW | tests/unit/test_admin.py | 382 | def test_start_remote_daemon_does_not_stop_created_browser_on_success(monkeypatch): | CODE |
| LOW | tests/unit/test_admin.py | 406 | def test_restart_daemon_does_not_signal_when_daemon_unreachable(monkeypatch, tmp_path): | CODE |
| LOW | tests/unit/test_admin.py | 432 | def test_restart_daemon_signals_pid_returned_by_identify_not_pid_file(monkeypatch, tmp_path): | CODE |
| LOW | tests/unit/test_admin.py | 487 | def test_restart_daemon_sends_shutdown_to_pre_upgrade_daemon_without_pid_in_ping(monkeypatch, tmp_path): | CODE |
| LOW | tests/unit/test_admin.py | 525 | def test_restart_daemon_skips_sigterm_if_pid_was_reused_during_wait(monkeypatch, tmp_path): | CODE |
| LOW | tests/unit/test_admin.py | 570 | def test_restart_daemon_sigterms_via_start_time_fingerprint_when_socket_gone(monkeypatch, tmp_path): | CODE |
| LOW | tests/unit/test_admin.py | 615 | def test_restart_daemon_skips_sigterm_when_start_time_changed_during_wait(monkeypatch, tmp_path): | CODE |
| LOW | tests/unit/test_admin.py | 653 | def test_process_start_time_returns_stable_fingerprint_for_self(): | CODE |
| LOW | tests/unit/test_admin.py | 668 | def test_process_start_time_returns_none_for_invalid_pid(): | CODE |
| LOW | tests/unit/test_run.py | 35 | def test_no_args_interactive_stdin_prints_usage(): | CODE |
| LOW | tests/unit/test_run.py | 49 | def test_no_args_empty_stdin_prints_usage(): | CODE |
| LOW | tests/unit/test_run.py | 60 | def test_cloud_bootstrap_on_headless_server(monkeypatch): | CODE |
| LOW | tests/unit/test_run.py | 75 | def test_explicit_bu_cdp_url_blocks_cloud_bootstrap(monkeypatch): | CODE |
| LOW | tests/unit/test_run.py | 94 | def test_explicit_bu_cdp_ws_blocks_cloud_bootstrap(monkeypatch): | CODE |
| LOW | tests/unit/test_run.py | 112 | def test_empty_bu_cdp_url_does_not_block_bootstrap(monkeypatch): | CODE |
| LOW | tests/unit/test_run.py | 130 | def test_bad_stored_cloud_auth_does_not_bootstrap_or_crash(monkeypatch): | CODE |
| LOW | tests/unit/test_run.py | 145 | def test_both_bu_cdp_url_and_bu_cdp_ws_set_blocks_bootstrap(monkeypatch): | CODE |
| LOW | tests/unit/test_run.py | 164 | def test_explicit_endpoint_does_not_break_daemon_alive_short_circuit(monkeypatch): | CODE |
| LOW | tests/unit/test_run.py | 182 | def test_explicit_endpoint_does_not_break_local_chrome_short_circuit(monkeypatch): | CODE |
| 57 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent-workspace/domain-skills/spotify/scraping.md | 76 | except Exception as e: | CODE |
| LOW | agent-workspace/domain-skills/quora/scraping.md | 75 | except Exception: | CODE |
| LOW | agent-workspace/domain-skills/quora/scraping.md | 112 | except Exception: | CODE |
| LOW | agent-workspace/domain-skills/musicbrainz/scraping.md | 254 | except Exception: | CODE |
| LOW | agent-workspace/domain-skills/crossref/scraping.md | 116 | except Exception as e: | CODE |
| MEDIUM | agent-workspace/domain-skills/crossref/scraping.md | 105 | def fetch_work(doi): | CODE |
| LOW | agent-workspace/domain-skills/dev-to/scraping.md | 276 | except Exception as e: | CODE |
| LOW | agent-workspace/domain-skills/youtube/scraping.md | 56 | except Exception as e: | CODE |
| LOW | agent-workspace/domain-skills/ebay/scraping.md | 227 | except Exception: | CODE |
| LOW | agent-workspace/domain-skills/stackoverflow/scraping.md | 76 | except Exception as e: | CODE |
| LOW | agent-workspace/domain-skills/github/scraping.md | 166 | except Exception as e: | STRING |
| LOW | agent-workspace/domain-skills/zillow/scraping.md | 286 | except Exception: | CODE |
| LOW | agent-workspace/domain-skills/itch-io/scraping.md | 320 | except Exception: | CODE |
| LOW | src/browser_harness/auth.py | 236 | except Exception: | CODE |
| LOW | src/browser_harness/auth.py | 310 | except Exception: | CODE |
| LOW | src/browser_harness/run.py | 11 | except Exception: pass | CODE |
| LOW | src/browser_harness/run.py | 220 | except Exception: | CODE |
| LOW | src/browser_harness/run.py | 256 | except Exception as exc: | CODE |
| MEDIUM | src/browser_harness/run.py | 88 | def _cloud_auth_configured(): | CODE |
| LOW | src/browser_harness/telemetry.py | 78 | except Exception: | CODE |
| LOW | src/browser_harness/telemetry.py | 184 | except Exception: | CODE |
| LOW | src/browser_harness/telemetry.py | 233 | except Exception: | CODE |
| LOW | src/browser_harness/telemetry.py | 282 | except Exception: | CODE |
| MEDIUM | src/browser_harness/telemetry.py | 52 | def _load_config() -> dict: | CODE |
| LOW | src/browser_harness/admin.py | 341 | except Exception: pass | CODE |
| LOW | src/browser_harness/admin.py | 433 | except Exception: | CODE |
| LOW | src/browser_harness/admin.py | 516 | except Exception as e: | CODE |
| LOW | src/browser_harness/admin.py | 655 | except Exception: | CODE |
| LOW | src/browser_harness/admin.py | 701 | except Exception: | CODE |
| LOW | src/browser_harness/admin.py | 757 | except Exception: | CODE |
| LOW | src/browser_harness/admin.py | 773 | except Exception: | CODE |
| LOW | src/browser_harness/admin.py | 777 | except Exception: | CODE |
| MEDIUM | src/browser_harness/admin.py | 135 | def _log_tail(name): | CODE |
| MEDIUM | src/browser_harness/admin.py | 674 | def _cache_read(): | CODE |
| LOW | src/browser_harness/helpers.py | 168 | except Exception as e: | CODE |
| LOW | src/browser_harness/helpers.py | 292 | except Exception: pass | CODE |
| LOW | src/browser_harness/helpers.py | 301 | except Exception: pass | CODE |
| LOW | src/browser_harness/helpers.py | 319 | except Exception: | CODE |
| LOW | src/browser_harness/helpers.py | 345 | except Exception: | CODE |
| MEDIUM | src/browser_harness/helpers.py | 113 | def _runtime_evaluate(expression, session_id=None, await_promise=False): | CODE |
| LOW | src/browser_harness/daemon.py | 100 | except Exception: | CODE |
| LOW | src/browser_harness/daemon.py | 145 | except Exception as e: | CODE |
| LOW | src/browser_harness/daemon.py | 204 | except Exception as e: | CODE |
| LOW | src/browser_harness/daemon.py | 258 | except Exception as e: | CODE |
| LOW | src/browser_harness/daemon.py | 269 | except Exception as e: | CODE |
| LOW | src/browser_harness/daemon.py | 317 | except Exception: | CODE |
| LOW | src/browser_harness/daemon.py | 325 | except Exception: | CODE |
| LOW | src/browser_harness/daemon.py | 355 | except Exception: pass | CODE |
| LOW | src/browser_harness/daemon.py | 380 | except Exception as e: | CODE |
| LOW | src/browser_harness/daemon.py | 397 | except Exception as e: | CODE |
| LOW | src/browser_harness/daemon.py | 402 | except Exception: | CODE |
| LOW | src/browser_harness/daemon.py | 444 | except Exception as e: | CODE |
| MEDIUM | src/browser_harness/daemon.py | 97 | def _silent(coro): | CODE |
| MEDIUM | src/browser_harness/daemon.py | 252 | def enable_one(d): | CODE |
| MEDIUM | src/browser_harness/daemon.py | 349 | def disable_old(): | CODE |
| MEDIUM | src/browser_harness/daemon.py | 390 | def handler(reader, writer): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent-workspace/domain-skills/letterboxd/scraping.md | 121 | data = extract_film_data('the-godfather') | COMMENT |
| LOW | agent-workspace/domain-skills/letterboxd/scraping.md | 141 | # 'poster_url': 'https://a.ltrbxd.com/resized/film-poster/.../51818-the-godfather-0-230-0-345-crop.jpg...', | COMMENT |
| LOW | agent-workspace/domain-skills/openstreetmap/scraping.md | 21 | q = urllib.parse.quote(query) | COMMENT |
| LOW | agent-workspace/domain-skills/openstreetmap/scraping.md | 421 | COMMENT | |
| LOW | agent-workspace/domain-skills/steam/scraping.md | 21 | ) | COMMENT |
| LOW | agent-workspace/domain-skills/steam/scraping.md | 41 | # game["supported_languages"]-> HTML string with language list (use html.unescape()) | COMMENT |
| LOW | agent-workspace/domain-skills/steam/scraping.md | 441 | ```python | COMMENT |
| LOW | agent-workspace/domain-skills/steam/scraping.md | 481 | COMMENT | |
| LOW | agent-workspace/domain-skills/BOSS-zhipin/job-search.md | 241 | COMMENT | |
| LOW | agent-workspace/domain-skills/open-library/scraping.md | 81 | COMMENT | |
| LOW | agent-workspace/domain-skills/open-library/scraping.md | 181 | # editions_resp['entries'] == [...] (up to limit items) | COMMENT |
| LOW | agent-workspace/domain-skills/open-library/scraping.md | 241 | # book['title'] == 'The Great Gatsby' | COMMENT |
| LOW | agent-workspace/domain-skills/open-library/scraping.md | 281 | # author['name'] == 'J.R.R. Tolkien' | COMMENT |
| LOW | agent-workspace/domain-skills/open-library/scraping.md | 301 | #### Author search | COMMENT |
| LOW | agent-workspace/domain-skills/open-library/scraping.md | 381 | r = json.loads(http_get("https://openlibrary.org/subjects/science_fiction.json?limit=5")) | COMMENT |
| LOW | agent-workspace/domain-skills/duckduckgo/scraping.md | 341 | # r['infobox']['Founded'] == 'December 08, 2015' | COMMENT |
| LOW | agent-workspace/domain-skills/spotify/scraping.md | 21 | resource_type: 'track', 'album', 'playlist', or 'artist' | COMMENT |
| LOW | agent-workspace/domain-skills/spotify/scraping.md | 41 | # "version": "1.0", | COMMENT |
| LOW | agent-workspace/domain-skills/spotify/scraping.md | 201 | # entity keys: type, name, uri, id, title, artists, releaseDate, duration, | COMMENT |
| LOW | agent-workspace/domain-skills/spotify/scraping.md | 221 | # ---- ALBUM (includes full track list) ---- | COMMENT |
| LOW | agent-workspace/domain-skills/substack/scraping.md | 161 | # Free post (audience == "everyone"): | COMMENT |
| LOW | agent-workspace/domain-skills/substack/scraping.md | 221 | # { | COMMENT |
| LOW | agent-workspace/domain-skills/gutenberg/scraping.md | 61 | # [768] Wuthering Heights — Brontë, Emily (72,775) | COMMENT |
| LOW | agent-workspace/domain-skills/quora/scraping.md | 181 | # 'id': 'UXVlc3Rpb25AMDoyODYx', | COMMENT |
| LOW | agent-workspace/domain-skills/etsy/scraping.md | 261 | # product fields: | COMMENT |
| LOW | agent-workspace/domain-skills/youtube/scraping.md | 21 | Returns title, author, thumbnail URL, and embed iframe HTML. | COMMENT |
| LOW | agent-workspace/domain-skills/youtube/scraping.md | 141 | video = scrape_video("dQw4w9WgXcQ") | COMMENT |
| LOW | agent-workspace/domain-skills/youtube/scraping.md | 221 | COMMENT | |
| LOW | agent-workspace/domain-skills/ebay/scraping.md | 301 | # 'price': 74.99, | COMMENT |
| LOW | agent-workspace/domain-skills/ebay/scraping.md | 321 | ```python | COMMENT |
| LOW | agent-workspace/domain-skills/walmart/scraping.md | 281 | COMMENT | |
| LOW | agent-workspace/domain-skills/rawg/scraping.md | 81 | # game['rating_top'] -> 5 | COMMENT |
| LOW | agent-workspace/domain-skills/soundcloud/scraping.md | 21 | Works for: | COMMENT |
| LOW | agent-workspace/domain-skills/soundcloud/scraping.md | 101 | # track['created_at'] = "2007-09-22T14:45:46Z" | COMMENT |
| LOW | agent-workspace/domain-skills/soundcloud/scraping.md | 121 | # user['country_code'] = "DE" | COMMENT |
| LOW | …workspace/domain-skills/package-registries/npm-pypi.md | 141 | COMMENT | |
| LOW | agent-workspace/domain-skills/archive-org/scraping.md | 201 | # name, source ('original'|'derivative'|'metadata'), format, size (bytes as str), | COMMENT |
| LOW | agent-workspace/domain-skills/genius/scraping.md | 61 | return http_get(url, headers=headers) | COMMENT |
| LOW | agent-workspace/domain-skills/genius/scraping.md | 81 | # song["stats"]["accepted_annotations"] → 20 | COMMENT |
| LOW | agent-workspace/domain-skills/itch-io/scraping.md | 61 | if get(k) is not None | COMMENT |
| LOW | agent-workspace/domain-skills/itch-io/scraping.md | 141 | COMMENT | |
| LOW | agent-workspace/domain-skills/itch-io/scraping.md | 241 | COMMENT | |
| LOW | agent-workspace/domain-skills/itch-io/scraping.md | 261 | # Paid game: | COMMENT |
| LOW | agent-workspace/domain-skills/sec-edgar/scraping.md | 181 | break | COMMENT |
| LOW | src/browser_harness/_ipc.py | 141 | resp = request(c, token, {"meta": "ping"}) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | agent-workspace/domain-skills/wellfound/scraping.md | 313 | # Step 1: Load any Wellfound page so the session cookie + DataDome cookie are set | STRING |
| LOW⚡ | agent-workspace/domain-skills/wellfound/scraping.md | 318 | # Step 2: Extract CSRF token from meta tag | STRING |
| LOW⚡ | agent-workspace/domain-skills/wellfound/scraping.md | 325 | # Step 3: Execute GraphQL query via fetch() from within the browser | STRING |
| LOW | agent-workspace/domain-skills/ebay/scraping.md | 386 | # Step 1: Search | COMMENT |
| LOW | agent-workspace/domain-skills/ebay/scraping.md | 397 | # Step 2: Fetch details for top results (with delay) | COMMENT |
| LOW | agent-workspace/domain-skills/weather/scraping.md | 68 | ### Step 1: city name → coordinates (geocoding) | COMMENT |
| LOW | …nt-workspace/domain-skills/wayback-machine/scraping.md | 148 | # WARNING: This API is BROKEN — returns empty archived_snapshots | COMMENT |
| LOW | agent-workspace/domain-skills/pubmed/scraping.md | 13 | # Step 1: search → get PMIDs | COMMENT |
| LOW | agent-workspace/domain-skills/pubmed/scraping.md | 21 | # Step 2: fetch lightweight metadata for all PMIDs in one call | COMMENT |
| LOW | agent-workspace/domain-skills/pubmed/scraping.md | 233 | # Step 1: ESearch with usehistory=y — NCBI holds result set on server | COMMENT |
| LOW | agent-workspace/domain-skills/pubmed/scraping.md | 245 | # Step 2: EFetch pages using WebEnv (no re-searching) | COMMENT |
| LOW | agent-workspace/domain-skills/flipkart/shopping.md | 103 | # Step 1: Find and click the pincode input or "Change" link | COMMENT |
| LOW | agent-workspace/domain-skills/flipkart/shopping.md | 114 | # Step 2: Clear and type new pincode | COMMENT |
| LOW | agent-workspace/domain-skills/flipkart/shopping.md | 118 | # Step 3: Wait and read delivery estimate | COMMENT |
| LOW | agent-workspace/domain-skills/weread/read.md | 51 | ## Step 1: Login Flow | COMMENT |
| LOW | agent-workspace/domain-skills/weread/read.md | 94 | ## Step 2: Reading Progress Management | STRING |
| LOW | agent-workspace/domain-skills/weread/read.md | 202 | ## Step 3: Auto Reading | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ce/domain-skills/claude-ai/extract-share-transcript.py | 37 | if (u) turns.push({role: "user", text: u.innerText.trim()}); | CODE |
| HIGH | …ce/domain-skills/claude-ai/extract-share-transcript.py | 38 | else if (a) turns.push({role: "assistant", text: a.innerText.trim()}); | CODE |
| HIGH⚡ | tests/unit/test_ipc.py | 113 | replies with a list / scalar / null, ping() must return False rather than | STRING |
| HIGH | tests/unit/test_admin.py | 7 | def __init__(self, response=b'{"target_id":"target-1","session_id":"session-1","page":null}\n'): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ce/domain-skills/claude-ai/extract-share-transcript.py | 22 | new_tab(share_url) # noqa: F821 — provided by browser-harness | CODE |
| MEDIUM | src/browser_harness/auth.py | 31 | # escape hatch so a dedicated browser-harness client can be used once issued. | COMMENT |
| MEDIUM | src/browser_harness/_ipc.py | 12 | # then to the browser-harness runtime dir. | COMMENT |
| MEDIUM | src/browser_harness/admin.py | 386 | # restarts anything on its own; a follow-up `browser-harness` | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ace/domain-skills/browser-use-cloud/cleanup-zombies.py | 23 | CODE | |
| LOW | src/browser_harness/auth.py | 6 | CODE | |
| LOW | src/browser_harness/run.py | 13 | CODE | |
| LOW | src/browser_harness/run.py | 13 | CODE | |
| LOW | src/browser_harness/run.py | 13 | CODE | |
| LOW | src/browser_harness/run.py | 13 | CODE | |
| LOW | src/browser_harness/run.py | 31 | CODE | |
| LOW | src/browser_harness/paths.py | 2 | CODE | |
| LOW | src/browser_harness/telemetry.py | 3 | CODE | |
| LOW | src/browser_harness/daemon.py | 2 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | agent-workspace/domain-skills/tiktok/upload.md | 75 | ### 4. AI-generated content disclosure | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ace/domain-skills/browser-use-cloud/cleanup-zombies.py | 87 | CODE | |
| LOW | src/browser_harness/auth.py | 508 | CODE | |
| LOW | src/browser_harness/telemetry.py | 128 | CODE | |
| LOW | src/browser_harness/admin.py | 392 | CODE | |
| LOW | src/browser_harness/helpers.py | 400 | CODE | |
| LOW | src/browser_harness/daemon.py | 125 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | agent-workspace/domain-skills/rawg/scraping.md | 194 | All endpoints live at `https://api.rawg.io/api/`. Append `&key=YOUR_API_KEY` to every request. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent-workspace/domain-skills/duckduckgo/scraping.md | 96 | text, kind = ddg_answer("lorem ipsum") | CODE |
| LOW | agent-workspace/domain-skills/duckduckgo/scraping.md | 253 | - Random: `random number`, `generate password`, `lorem ipsum` | CODE |
| LOW | …space/domain-skills/centilebrain/generate-estimates.md | 67 | e.value='user@example.com'; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/browser_harness/telemetry.py | 237 | CODE |