SkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.
This report presents the forensic synthetic code analysis of microsoft/SkillOpt, a Python project with 12,703 GitHub stars. SynthScan v2.0 examined 71,716 lines of code across 309 source files, recording 1073 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 21.9 places this repository in the Moderate 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).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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 1073 distinct pattern matches across 13 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 |
|---|---|---|---|---|
| MEDIUM⚡ | requirements.txt | 1 | # ── Core ────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | requirements.txt | 10 | # ── Optional: ALFWorld benchmark ────────────────── | COMMENT |
| MEDIUM⚡ | requirements.txt | 14 | # ── Optional: Claude model backend ──────────────── | COMMENT |
| MEDIUM⚡ | requirements.txt | 17 | # ── Optional: Qwen local model (via vLLM) ──────── | COMMENT |
| MEDIUM⚡ | requirements.txt | 26 | # ── Optional: WebUI dashboard ──────────────────── | COMMENT |
| MEDIUM⚡ | requirements.txt | 29 | # ── Optional: Documentation site ───────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 28 | # ─── Config helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 174 | # ─── Training process management ──────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 435 | # ─── Pipeline Stage HTML ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 466 | # ─── Gradio UI ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 478 | # ── Tab 1: Configure & Launch ──────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 554 | # ── Tab 2: Monitor ─────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_webui/app.py | 585 | # ── Tab 3: Results ─────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 44 | # ── cross-platform path resolution (Linux + Windows + macOS) ────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 104 | # ── workspace auto-detection ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 149 | # ── helpers ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 213 | # ── task identity + outcome extraction (fuel for the validation gate) ───────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 331 | # ── source 1: Devin ATIF-v1.7 transcripts ──────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 412 | # ── source 2: agentmemory ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 438 | # ── source 3: skill files (.devin/skills) ───────────────────────────────────── | COMMENT |
| MEDIUM | plugins/devin/harvest_devin.py | 473 | # ── main ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/claude-code/scripts/install-cron.sh | 17 | # ── SkillOpt-Sleep nightly cycle ──────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/claude-code/scripts/install-cron.sh | 29 | # ──────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | plugins/openclaw/skillopt_sleep_openclaw.py | 84 | # ── Backend implementation ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 34 | # ── ConstantScheduler ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 79 | # ── LinearScheduler ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 165 | # ── CosineScheduler ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 267 | # ── AutonomousScheduler ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 298 | # ── build_scheduler factory ────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_scheduler.py | 332 | # ── Abstract base class ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_types.py | 8 | # ── Edit ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_types.py | 140 | # ── Patch ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_types.py | 251 | # ── RolloutResult ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/guide/new-benchmark.md | 239 | # ── Lifecycle ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/guide/new-benchmark.md | 248 | # ── Env construction ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/guide/new-benchmark.md | 266 | # ── The rollout method (reflect is inherited) ─────────────────────── | COMMENT |
| MEDIUM | docs/sleep/examples/runner.py | 32 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | docs/reference/api.md | 30 | # ── Lifecycle hooks (have defaults; override only if needed) ──────── | COMMENT |
| MEDIUM | docs/reference/api.md | 40 | # ── Abstract methods (subclasses MUST implement) ──────────────────── | COMMENT |
| MEDIUM | configs/features/soft_gate.yaml | 1 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | configs/features/soft_gate.yaml | 3 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | configs/features/soft_gate.yaml | 33 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_spreadsheetbench.sh | 2 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_spreadsheetbench.sh | 8 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_searchqa.sh | 2 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_searchqa.sh | 9 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/eval_only.py | 45 | # ── Reuse registry from train.py ─────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/eval_only.py | 125 | # ── CLI ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 34 | # ── Environment registry ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 121 | # ── CLI ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/train.py | 510 | # ── Main ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_alfworld.sh | 2 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/run_alfworld.sh | 13 | # ────────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/handoff_backend.py | 83 | # ── prompt/answer plumbing ──────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/handoff_backend.py | 103 | # ── handoff file emission ───────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/cycle.py | 126 | # ── live skill/memory docs ─────────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/cycle.py | 144 | # ── 1+2. harvest + mine (unless seed_tasks injected) ───────────────── | COMMENT |
| MEDIUM | skillopt_sleep/cycle.py | 223 | # ── 3+4. replay + consolidate (gate), with opt-in dream + recall ────── | COMMENT |
| MEDIUM | skillopt_sleep/cycle.py | 266 | # ── 5. stage (unless dry-run) ──────────────────────────────────────── | COMMENT |
| MEDIUM | skillopt_sleep/cycle.py | 317 | # ── 6. adopt (opt-in) ──────────────────────────────────────────── | COMMENT |
| 160 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/devin/harvest_devin.py | 67 | def _devin_transcript_candidates() -> List[str]: | CODE |
| LOW | plugins/devin/harvest_devin.py | 106 | def _workspaces_from_registry(storage_root: str) -> List[tuple]: | CODE |
| LOW | plugins/devin/harvest_devin.py | 333 | def harvest_devin_transcripts( | CODE |
| LOW⚡ | tests/test_json_utils.py | 47 | def test_no_json_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 50 | def test_empty_string_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 53 | def test_malformed_json_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 59 | def test_json_with_escaped_chars(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 63 | def test_only_fence_with_no_json_syntax(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 75 | def test_two_top_level_objects(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 78 | def test_brace_inside_quoted_prose_is_ignored(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 83 | def test_real_object_after_quoted_brace(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 95 | def test_two_top_level_arrays(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 98 | def test_array_inside_object_is_ignored(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 101 | def test_bracket_inside_quoted_prose_is_ignored(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 104 | def test_unmatched_prose_brace_does_not_hide_later_array(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 108 | def test_many_unmatched_braces_scan_linearly(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 145 | def test_json_string_values_with_quotes_still_repair(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 152 | def test_no_warning_on_quoted_prose(self, recwarn: pytest.WarningsRecorder) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 159 | def test_no_warning_on_plain_text(self, recwarn: pytest.WarningsRecorder) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 165 | def test_trailing_comma_repaired_when_available(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 170 | def test_two_malformed_objects_too_ambiguous(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 205 | def test_no_array_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 208 | def test_empty_string_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 211 | def test_malformed_array_returns_none(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 221 | def test_object_not_confused_with_array(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 226 | def test_ignores_prose_brackets_before_valid_array(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 230 | def test_multiple_valid_arrays_are_ambiguous(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 234 | def test_nested_object_array_not_confused_with_array_answer(self) -> None: | CODE |
| LOW⚡ | tests/test_json_utils.py | 238 | def test_unmatched_prose_brace_before_valid_array(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 25 | def test_code_fence_takes_precedence(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 33 | def test_broken_fence_falls_back_to_bare(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 127 | def test_prose_pseudo_json_returns_none(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 133 | def test_single_quoted_and_backticked_prose_returns_none(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 187 | def test_code_fence_takes_precedence(self) -> None: | CODE |
| LOW | tests/test_json_utils.py | 194 | def test_broken_fence_falls_back_to_bare(self) -> None: | CODE |
| LOW | tests/test_sleep_engine.py | 44 | def test_protected_region_roundtrip(self): | CODE |
| LOW | tests/test_sleep_engine.py | 72 | def test_digest_real_transcript_if_present(self): | CODE |
| LOW | tests/test_sleep_engine.py | 98 | def test_digest_codex_archived_session_sanitizes_and_skips_meta(self): | CODE |
| LOW | tests/test_sleep_engine.py | 139 | def test_harvest_codex_filters_project_and_cli_source(self): | CODE |
| LOW | tests/test_sleep_engine.py | 184 | def test_cli_exposes_limits_progress_and_target_skill_path(self): | CODE |
| LOW | tests/test_sleep_engine.py | 219 | def test_cli_report_payload_includes_rejected_edits(self): | CODE |
| LOW | tests/test_sleep_engine.py | 236 | def test_tasks_file_roundtrip_and_split_assignment(self): | CODE |
| LOW | tests/test_sleep_engine.py | 259 | def test_cfg_uses_tasks_file_target_skill_path_metadata(self): | CODE |
| LOW | tests/test_sleep_engine.py | 289 | def test_cmd_run_uses_tasks_file_without_harvest(self): | CODE |
| LOW | tests/test_sleep_engine.py | 344 | def test_cmd_run_refuses_unreviewed_tasks_file_for_real_backend(self): | CODE |
| LOW | tests/test_sleep_engine.py | 403 | def test_split_stable_and_nonempty(self): | CODE |
| LOW | tests/test_sleep_engine.py | 412 | def test_dream_never_in_val_or_test(self): | CODE |
| LOW | tests/test_sleep_engine.py | 428 | def test_target_filter_prefers_matching_skill_terms(self): | CODE |
| LOW | tests/test_sleep_engine.py | 721 | def test_codex_auth_error_surfaces_not_scored_as_response(self): | CODE |
| LOW | tests/test_sleep_engine.py | 749 | def test_codex_attempt_with_tools_surfaces_error_not_silent(self): | CODE |
| LOW | tests/test_sleep_engine.py | 786 | def test_budget_exhaustion_and_plan(self): | CODE |
| LOW | tests/test_sleep_engine.py | 798 | def test_contrastive_reflect_with_stub(self): | CODE |
| LOW | tests/test_sleep_engine.py | 817 | def test_protected_field_roundtrip(self): | CODE |
| LOW | tests/test_sleep_engine.py | 837 | def test_run_slow_update_with_stub_backend(self): | CODE |
| LOW | tests/test_sleep_engine.py | 863 | def test_tool_called_judge_via_replay(self): | CODE |
| LOW | tests/test_sleep_engine.py | 888 | def test_cycle_stage_then_adopt_with_backup(self): | CODE |
| LOW | tests/test_sleep_engine.py | 915 | def test_cycle_can_target_repo_scoped_skill_path(self): | CODE |
| LOW | tests/test_sleep_engine.py | 951 | def test_parse_jsonl_concatenates_assistant_messages(self): | CODE |
| LOW | tests/test_sleep_engine.py | 962 | def test_parse_jsonl_ignores_non_assistant_and_blank(self): | CODE |
| LOW | tests/test_sleep_engine.py | 978 | def test_isolated_home_by_default(self): | CODE |
| 270 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/devin/harvest_devin.py | 31 | CODE | |
| LOW | plugins/devin/harvest_devin.py | 40 | CODE | |
| LOW | plugins/devin/judge.py | 23 | CODE | |
| LOW | plugins/devin/mcp_server.py | 21 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 10 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 15 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 16 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 16 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 18 | CODE | |
| LOW | plugins/openclaw/slash_sleep.py | 16 | CODE | |
| LOW | plugins/openclaw/slash_sleep.py | 24 | CODE | |
| LOW | plugins/openclaw/run_sleep.py | 17 | CODE | |
| LOW | plugins/copilot/mcp_server.py | 18 | CODE | |
| LOW | plugins/copilot/skillopt/mcp_server.py | 23 | CODE | |
| LOW | tests/test_json_utils.py | 2 | CODE | |
| LOW | tests/test_sleep_engine.py | 7 | CODE | |
| LOW | tests/test_sleep_engine.py | 1338 | CODE | |
| LOW | tests/test_claude_backend_tempdir.py | 2 | CODE | |
| LOW | tests/test_azure_openai_compat.py | 14 | CODE | |
| LOW | tests/test_azure_openai_compat.py | 32 | CODE | |
| LOW | tests/test_scheduler.py | 20 | CODE | |
| LOW | tests/test_scoring.py | 2 | CODE | |
| LOW | tests/test_openai_compatible_backend.py | 3 | CODE | |
| LOW | tests/test_gate.py | 8 | CODE | |
| LOW | tests/test_semantic_density.py | 2 | CODE | |
| LOW | tests/test_handoff_backend.py | 3 | CODE | |
| LOW | tests/test_skill_aware_reflection.py | 14 | CODE | |
| LOW | tests/test_qwen_backend.py | 3 | CODE | |
| LOW | tests/test_types.py | 2 | CODE | |
| LOW | scripts/eval_only.py | 14 | CODE | |
| LOW | scripts/train.py | 15 | CODE | |
| LOW | scripts/materialize_searchqa.py | 3 | CODE | |
| LOW | skillopt_sleep/mine.py | 15 | CODE | |
| LOW | skillopt_sleep/mine.py | 21 | CODE | |
| LOW | skillopt_sleep/handoff_backend.py | 29 | CODE | |
| LOW | skillopt_sleep/cycle.py | 10 | CODE | |
| LOW | skillopt_sleep/slow_update.py | 21 | CODE | |
| LOW | skillopt_sleep/slow_update.py | 23 | CODE | |
| LOW | skillopt_sleep/backend.py | 21 | CODE | |
| LOW | skillopt_sleep/consolidate.py | 9 | CODE | |
| LOW | skillopt_sleep/consolidate.py | 13 | CODE | |
| LOW | skillopt_sleep/config.py | 12 | CODE | |
| LOW | skillopt_sleep/llm_miner.py | 19 | CODE | |
| LOW | skillopt_sleep/llm_miner.py | 21 | CODE | |
| LOW | skillopt_sleep/llm_miner.py | 22 | CODE | |
| LOW | skillopt_sleep/memory.py | 8 | CODE | |
| LOW | skillopt_sleep/tasks_file.py | 2 | CODE | |
| LOW | skillopt_sleep/budget.py | 8 | CODE | |
| LOW | skillopt_sleep/__init__.py | 17 | CODE | |
| LOW | skillopt_sleep/dream.py | 17 | CODE | |
| LOW | skillopt_sleep/types.py | 9 | CODE | |
| LOW | skillopt_sleep/replay.py | 10 | CODE | |
| LOW | skillopt_sleep/judges.py | 20 | CODE | |
| LOW | skillopt_sleep/rollout.py | 16 | CODE | |
| LOW | skillopt_sleep/rollout.py | 19 | CODE | |
| LOW | skillopt_sleep/harvest.py | 16 | CODE | |
| LOW | skillopt_sleep/gate.py | 9 | CODE | |
| LOW | skillopt_sleep/scheduler.py | 18 | CODE | |
| LOW | skillopt_sleep/harvest_sources.py | 2 | CODE | |
| LOW | skillopt_sleep/staging.py | 8 | CODE | |
| 140 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skillopt_webui/app.py | 112 | except Exception as exc: | CODE |
| LOW | skillopt_webui/app.py | 223 | except Exception as e: | CODE |
| LOW | skillopt_webui/app.py | 526 | except Exception as e: | CODE |
| LOW | skillopt_webui/app.py | 617 | except Exception: | CODE |
| LOW | skillopt_webui/app.py | 627 | except Exception: | CODE |
| LOW | plugins/devin/harvest_devin.py | 121 | except Exception: | CODE |
| LOW | plugins/devin/harvest_devin.py | 346 | except Exception: | CODE |
| LOW | plugins/devin/harvest_devin.py | 377 | except Exception: | CODE |
| LOW | plugins/devin/judge.py | 102 | except Exception as exc: # network/auth/parse — degrade gracefully | CODE |
| LOW | plugins/devin/mcp_server.py | 116 | except Exception as exc: | CODE |
| LOW | plugins/devin/mcp_server.py | 174 | except Exception as e: | CODE |
| LOW | plugins/devin/mcp_server.py | 230 | except Exception: | CODE |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 62 | except Exception as e: | CODE |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 80 | except Exception: | CODE |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 174 | except Exception: | STRING |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 273 | except Exception as e: | STRING |
| LOW | plugins/copilot/mcp_server.py | 119 | except Exception as e: | CODE |
| LOW | plugins/copilot/mcp_server.py | 170 | except Exception: | CODE |
| LOW | plugins/copilot/skillopt/mcp_server.py | 95 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | plugins/copilot/skillopt/mcp_server.py | 219 | except Exception: | CODE |
| LOW | docs/sleep/examples/watchdog.py | 39 | except Exception as e: | CODE |
| LOW | docs/sleep/examples/watchdog.py | 49 | except Exception as e: | CODE |
| LOW | skillopt_sleep/mine.py | 303 | except Exception: | CODE |
| LOW | skillopt_sleep/cycle.py | 50 | except Exception: | CODE |
| LOW | skillopt_sleep/cycle.py | 189 | except Exception: | CODE |
| LOW | skillopt_sleep/cycle.py | 309 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 268 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 410 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 637 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 648 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 706 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 723 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 755 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 814 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 822 | except Exception as exc: | CODE |
| LOW | skillopt_sleep/backend.py | 838 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 927 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | skillopt_sleep/backend.py | 933 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 952 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1008 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1037 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1043 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1056 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1151 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1163 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1397 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1407 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | skillopt_sleep/backend.py | 1506 | except Exception: | CODE |
| LOW | skillopt_sleep/backend.py | 1511 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | skillopt_sleep/config.py | 146 | except Exception: | CODE |
| LOW | skillopt_sleep/config.py | 158 | except Exception: | CODE |
| LOW | skillopt_sleep/harvest.py | 60 | except Exception: | CODE |
| LOW | skillopt_sleep/scheduler.py | 38 | except Exception: | CODE |
| LOW | skillopt_sleep/scheduler.py | 47 | except Exception: | CODE |
| MEDIUM | skillopt_sleep/scheduler.py | 34 | def _read_crontab() -> str: | CODE |
| LOW | skillopt_sleep/__main__.py | 45 | except Exception: | CODE |
| LOW | skillopt_sleep/__main__.py | 261 | except Exception: | CODE |
| LOW | skillopt_sleep/__main__.py | 294 | except Exception: | CODE |
| LOW | skillopt_sleep/state.py | 50 | except Exception: | CODE |
| LOW | skillopt_sleep/experiments/gbrain_bench.py | 49 | except Exception: | CODE |
| 80 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skillopt_webui/app.py | 468 | CODE | |
| LOW | skillopt_webui/app.py | 253 | CODE | |
| LOW | skillopt_webui/app.py | 306 | CODE | |
| LOW | skillopt_webui/app.py | 599 | CODE | |
| LOW | plugins/devin/harvest_devin.py | 333 | CODE | |
| LOW | plugins/openclaw/skillopt_sleep_openclaw.py | 25 | CODE | |
| LOW | scripts/eval_only.py | 209 | CODE | |
| LOW | scripts/train.py | 380 | CODE | |
| LOW | skillopt_sleep/mine.py | 137 | CODE | |
| LOW | skillopt_sleep/slow_update.py | 75 | CODE | |
| LOW | skillopt_sleep/backend.py | 414 | CODE | |
| LOW | skillopt_sleep/backend.py | 1064 | CODE | |
| LOW | skillopt_sleep/consolidate.py | 87 | CODE | |
| LOW | skillopt_sleep/llm_miner.py | 108 | CODE | |
| LOW | skillopt_sleep/llm_miner.py | 116 | CODE | |
| LOW | skillopt_sleep/memory.py | 73 | CODE | |
| LOW | skillopt_sleep/harvest.py | 51 | CODE | |
| LOW | skillopt_sleep/harvest.py | 66 | CODE | |
| LOW | skillopt_sleep/harvest.py | 199 | CODE | |
| LOW | skillopt_sleep/__main__.py | 380 | CODE | |
| LOW | skillopt_sleep/harvest_codex.py | 40 | CODE | |
| LOW | skillopt_sleep/harvest_codex.py | 123 | CODE | |
| LOW | skillopt_sleep/experiments/gbrain_bench.py | 39 | CODE | |
| LOW | skillopt_sleep/experiments/sweep.py | 78 | CODE | |
| LOW | skillopt_sleep/experiments/report.py | 16 | CODE | |
| LOW | skillopt/gradient/aggregate.py | 70 | CODE | |
| LOW | skillopt/gradient/reflect.py | 65 | CODE | |
| LOW | skillopt/gradient/reflect.py | 112 | CODE | |
| LOW | skillopt/gradient/reflect.py | 472 | CODE | |
| LOW | skillopt/optimizer/slow_update.py | 111 | CODE | |
| LOW | skillopt/optimizer/slow_update.py | 159 | CODE | |
| LOW | skillopt/optimizer/slow_update.py | 240 | CODE | |
| LOW | skillopt/optimizer/clip.py | 25 | CODE | |
| LOW | skillopt/utils/json_utils.py | 9 | CODE | |
| LOW | skillopt/utils/json_utils.py | 74 | CODE | |
| LOW | skillopt/model/azure_openai.py | 356 | CODE | |
| LOW | skillopt/model/azure_openai.py | 439 | CODE | |
| LOW | skillopt/model/azure_openai.py | 575 | CODE | |
| LOW | skillopt/model/claude_backend.py | 83 | CODE | |
| LOW | skillopt/model/codex_harness.py | 144 | CODE | |
| LOW | skillopt/model/codex_harness.py | 320 | CODE | |
| LOW | skillopt/model/codex_harness.py | 725 | CODE | |
| LOW | skillopt/model/codex_harness.py | 950 | CODE | |
| LOW | skillopt/model/codex_backend.py | 104 | CODE | |
| LOW | skillopt/model/codex_backend.py | 280 | CODE | |
| LOW | skillopt/envs/alfworld/adapter.py | 319 | CODE | |
| LOW | skillopt/envs/alfworld/rollout.py | 148 | CODE | |
| LOW | skillopt/envs/livemathematicianbench/rollout.py | 111 | CODE | |
| LOW | skillopt/envs/livemathematicianbench/rollout.py | 290 | CODE | |
| LOW | skillopt/envs/_template/loader_template.py | 52 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/react_agent.py | 168 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/adapter.py | 92 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/rollout.py | 108 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/rollout.py | 213 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/rollout.py | 453 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/rollout.py | 587 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/rollout.py | 841 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/codegen_agent.py | 88 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/codegen_agent.py | 338 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/codegen_agent.py | 503 | CODE | |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skillopt_sleep/backend.py | 1549 | CODE | |
| LOW | skillopt_sleep/consolidate.py | 87 | CODE | |
| LOW | skillopt_sleep/dream.py | 99 | CODE | |
| LOW | skillopt_sleep/experiments/run_experiment.py | 124 | CODE | |
| LOW | skillopt_sleep/experiments/run_experiment.py | 52 | CODE | |
| LOW | skillopt/gradient/reflect.py | 256 | CODE | |
| LOW | skillopt/gradient/reflect.py | 366 | CODE | |
| LOW | skillopt/gradient/reflect.py | 472 | CODE | |
| LOW | skillopt/datasets/base.py | 236 | CODE | |
| LOW | skillopt/model/minimax_backend.py | 263 | CODE | |
| LOW | skillopt/model/qwen_backend.py | 255 | CODE | |
| LOW | skillopt/model/qwen_backend.py | 413 | CODE | |
| LOW | skillopt/model/qwen_backend.py | 439 | CODE | |
| LOW | skillopt/model/openai_compatible_backend.py | 276 | CODE | |
| LOW | skillopt/model/openai_compatible_backend.py | 302 | CODE | |
| LOW | skillopt/model/openai_compatible_backend.py | 364 | CODE | |
| LOW | skillopt/model/__init__.py | 209 | CODE | |
| LOW | skillopt/model/__init__.py | 281 | CODE | |
| LOW | skillopt/model/__init__.py | 357 | CODE | |
| LOW | skillopt/model/__init__.py | 477 | CODE | |
| LOW | skillopt/model/__init__.py | 520 | CODE | |
| LOW | skillopt/model/__init__.py | 588 | CODE | |
| LOW | skillopt/model/azure_openai.py | 600 | CODE | |
| LOW | skillopt/model/azure_openai.py | 788 | CODE | |
| LOW | skillopt/model/azure_openai.py | 816 | CODE | |
| LOW | skillopt/model/azure_openai.py | 845 | CODE | |
| LOW | skillopt/model/backend_config.py | 91 | CODE | |
| LOW | skillopt/model/router.py | 196 | CODE | |
| LOW | skillopt/envs/alfworld/adapter.py | 66 | CODE | |
| LOW | skillopt/envs/alfworld/rollout.py | 148 | CODE | |
| LOW | skillopt/envs/alfworld/dataloader.py | 14 | CODE | |
| LOW | skillopt/envs/livemathematicianbench/adapter.py | 42 | CODE | |
| LOW | skillopt/envs/livemathematicianbench/rollout.py | 111 | CODE | |
| LOW | skillopt/envs/livemathematicianbench/rollout.py | 290 | CODE | |
| LOW | skillopt/envs/livemathematicianbench/dataloader.py | 151 | CODE | |
| LOW | skillopt/envs/_template/env_template.py | 32 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/react_agent.py | 359 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/adapter.py | 29 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/rollout.py | 587 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/rollout.py | 841 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/codegen_agent.py | 402 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/codegen_agent.py | 503 | CODE | |
| LOW | skillopt/envs/spreadsheetbench/dataloader.py | 14 | CODE | |
| LOW | skillopt/envs/officeqa/adapter.py | 12 | CODE | |
| LOW | skillopt/envs/officeqa/tool_runtime.py | 441 | CODE | |
| LOW | skillopt/envs/officeqa/rollout.py | 140 | CODE | |
| LOW | skillopt/envs/officeqa/rollout.py | 717 | CODE | |
| LOW | skillopt/envs/officeqa/rollout.py | 510 | CODE | |
| LOW | skillopt/envs/officeqa/rollout.py | 718 | CODE | |
| LOW | skillopt/envs/docvqa/adapter.py | 10 | CODE | |
| LOW | skillopt/envs/docvqa/rollout.py | 261 | CODE | |
| LOW | skillopt/envs/searchqa/adapter.py | 16 | CODE | |
| LOW | skillopt/envs/searchqa/rollout.py | 360 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skillopt_sleep/__init__.py | 19 | __all__ = ["__version__"] | CODE |
| LOW⚡ | skillopt_sleep/state.py | 69 | def set_last_harvest(self, project: str, iso_ts: str) -> None: | CODE |
| LOW⚡ | skillopt_sleep/state.py | 76 | def set_slow_memory(self, content: str) -> None: | CODE |
| LOW | skillopt/optimizer/select.py | 4 | __all__ = ["rank_and_select"] | CODE |
| LOW | skillopt/datasets/base.py | 83 | def set_out_root(self, out_root: str) -> None: | CODE |
| LOW | skillopt/model/minimax_backend.py | 296 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW | skillopt/model/minimax_backend.py | 300 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/qwen_backend.py | 473 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/qwen_backend.py | 477 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/qwen_backend.py | 482 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/openai_compatible_backend.py | 432 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/openai_compatible_backend.py | 438 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/openai_compatible_backend.py | 444 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/__init__.py | 619 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/__init__.py | 627 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/__init__.py | 635 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW | skillopt/model/azure_openai.py | 882 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW | skillopt/model/azure_openai.py | 898 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW | skillopt/model/azure_openai.py | 909 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/claude_backend.py | 362 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/claude_backend.py | 367 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/claude_backend.py | 373 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW | skillopt/model/backend_config.py | 49 | def set_optimizer_backend(backend: str) -> None: | CODE |
| LOW | skillopt/model/backend_config.py | 64 | def set_target_backend(backend: str) -> None: | CODE |
| LOW⚡ | skillopt/model/router.py | 181 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/router.py | 186 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/router.py | 191 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/codex_backend.py | 652 | def set_target_deployment(deployment: str) -> None: | CODE |
| LOW⚡ | skillopt/model/codex_backend.py | 658 | def set_reasoning_effort(effort: str | None) -> None: | CODE |
| LOW⚡ | skillopt/model/codex_backend.py | 663 | def set_optimizer_deployment(deployment: str) -> None: | CODE |
| LOW | skillopt/envs/alfworld/__init__.py | 5 | __all__ = ["ALFWorldAdapter"] | CODE |
| LOW | skillopt/envs/spreadsheetbench/__init__.py | 5 | __all__ = ["SpreadsheetBenchAdapter"] | CODE |
| LOW | skillopt/engine/__init__.py | 9 | __all__ = ["ReflACTTrainer"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | skillopt/envs/alfworld/reflect.py | 0 | searchqa reflect stage. prompts are now loaded from .md files by the base adapter. | STRING |
| HIGH | skillopt/envs/livemathematicianbench/reflect.py | 0 | searchqa reflect stage. prompts are now loaded from .md files by the base adapter. | STRING |
| HIGH | skillopt/envs/spreadsheetbench/reflect.py | 0 | searchqa reflect stage. prompts are now loaded from .md files by the base adapter. | STRING |
| HIGH | skillopt/envs/searchqa/reflect.py | 0 | searchqa reflect stage. prompts are now loaded from .md files by the base adapter. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | skillopt_sleep/backend.py | 481 | # user for the range" rule scores 0 because the harness can't run VBA and | COMMENT |
| MEDIUM | skillopt_sleep/consolidate.py | 57 | # be robust if a split is empty: fall back so a night still does something, | COMMENT |
| MEDIUM | skillopt_sleep/rollout.py | 123 | # single-shot reflect uses — prevents harness-violating rules like "return VBA" | COMMENT |
| LOW⚡ | skillopt/envs/_template/env_template.py | 78 | # Dataset-backed envs typically just pass items straight through. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 21 | # backends (Claude/Qwen). Without it extract_json() falls back safely and | COMMENT |
| LOW | plugins/claude-code/scripts/install-cron.sh | 21 | # (unless you pass --auto-adopt below). | COMMENT |
| LOW | configs/features/soft_gate.yaml | 1 | # ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| LOW | configs/features/soft_gate.yaml | 21 | # `soft` or `mixed` lets these partial improvements be accepted. | COMMENT |
| LOW | scripts/run_alfworld.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | skillopt_sleep/backend.py | 601 | self.last_call_error = combined[:500] | COMMENT |
| LOW | skillopt/utils/json_utils.py | 201 | # JSON strict json.loads rejects — unescaped ASCII quotes inside CJK string | COMMENT |
| LOW | skillopt/envs/_template/config_template.yaml | 1 | # ────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/run_spreadsheetbench.sh | 5 | # Usage: | COMMENT |
| LOW⚡ | scripts/run_searchqa.sh | 5 | # Usage: | COMMENT |
| LOW⚡ | scripts/run_alfworld.sh | 9 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/guide/new-backend.md | 120 | ## Step 1: implement the module contract | COMMENT |
| LOW | docs/guide/new-backend.md | 153 | ## Step 2: register and route the backend | COMMENT |
| LOW | docs/guide/new-backend.md | 177 | ## Step 3: test the integration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_sleep_engine.py | 1222 | self.assertIn("placeholder", res.rejected_edits[0].content) | CODE |