将冰冷的离别化为温暖的 Skill,欢迎加入数字生命1.0!Transforming cold farewells into warm skills? It's giving rebirth era. Welcome to Digital Life 1.0. 🫶
This report presents the forensic synthetic code analysis of titanwings/colleague-skill, a Python project with 20,275 GitHub stars. SynthScan v2.0 examined 21,374 lines of code across 95 source files, recording 192 pattern matches distributed across 9 syntactic categories. The overall adjusted score of 13.7 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 192 distinct pattern matches across 9 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 | tools/feishu_auto_collector.py | 63 | # ─── 配置 ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/feishu_auto_collector.py | 126 | # ─── Token ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/feishu_auto_collector.py | 197 | # ─── 用户搜索 ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/feishu_auto_collector.py | 365 | # ─── 消息记录 ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/feishu_auto_collector.py | 663 | # ─── 文档采集 ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/feishu_auto_collector.py | 774 | # ─── 多维表格 ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/feishu_auto_collector.py | 829 | # ─── 主流程 ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/feishu_mcp_client.py | 48 | # ─── 配置管理 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/feishu_mcp_client.py | 90 | # ─── MCP 调用封装 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/feishu_mcp_client.py | 149 | # ─── 功能函数 ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/feishu_mcp_client.py | 253 | # ─── CLI ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/slack_auto_collector.py | 43 | # ─── 依赖检查 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/slack_auto_collector.py | 55 | # ─── 常量 ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/slack_auto_collector.py | 72 | # ─── 错误类型 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/slack_auto_collector.py | 86 | # ─── 配置管理 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/slack_auto_collector.py | 156 | # ─── Slack Client 封装(带速率限制重试)───────────────────────────────────────── | COMMENT |
| MEDIUM | tools/slack_auto_collector.py | 236 | # ─── 用户搜索 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/slack_auto_collector.py | 328 | # ─── 频道发现 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/slack_auto_collector.py | 393 | # ─── 消息采集 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/slack_auto_collector.py | 490 | # ─── 主采集流程 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/slack_auto_collector.py | 649 | # ─── CLI 入口 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/dingtalk_auto_collector.py | 49 | # ─── 配置 ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/dingtalk_auto_collector.py | 91 | # ─── Token ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/dingtalk_auto_collector.py | 141 | # ─── 用户搜索 ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/dingtalk_auto_collector.py | 214 | # ─── 文档采集 ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/dingtalk_auto_collector.py | 366 | # ─── 多维表格 ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/dingtalk_auto_collector.py | 482 | # ─── 消息记录(浏览器方案)──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/dingtalk_auto_collector.py | 670 | # ─── 主流程 ─────────────────────────────────────────────────────────────────── | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/skill_presets.py | 195 | def normalize_research_profile(character: str | None, research_profile: str | None) -> str: | CODE |
| LOW | tools/skill_presets.py | 212 | def get_research_profile_preset(character: str | None, research_profile: str | None = None) -> dict: | CODE |
| LOW | tools/skill_presets.py | 265 | def resolve_existing_storage_root( | CODE |
| LOW | tools/install_generated_skill_common.py | 52 | def render_installed_markdown(skill_dir: Path, artifact_name: str, command_name: str) -> str: | CODE |
| LOW | tools/slack_auto_collector.py | 395 | def fetch_messages_from_channel( | CODE |
| LOW | tools/install_openclaw_generated_skill.py | 12 | def default_openclaw_skills_dir() -> Path: | CODE |
| LOW | tools/feishu_browser.py | 35 | def get_default_chrome_profile() -> str: | CODE |
| LOW⚡ | tools/install_claude_generated_skill.py | 17 | def default_claude_skills_dir() -> Path: | CODE |
| LOW⚡ | tools/install_claude_generated_skill.py | 22 | def default_claude_commands_dir() -> Path: | CODE |
| LOW⚡ | tools/install_claude_generated_skill.py | 27 | def should_install_command_shim(system_name: str | None = None) -> bool: | CODE |
| LOW | tools/dingtalk_auto_collector.py | 484 | def get_default_chrome_profile() -> str: | CODE |
| LOW | tools/research/merge_research.py | 40 | def collect_structured_section_metrics(text: str) -> dict: | CODE |
| LOW | tools/research/merge_research.py | 77 | def collect_source_weight_distribution(text: str) -> Counter: | CODE |
| LOW | tools/research/merge_research.py | 106 | def count_potential_long_quote_lines(text: str) -> int: | CODE |
| LOW | tools/research/quality_check.py | 63 | def extract_summary_percentage(summary_text: str, label: str) -> int: | CODE |
| LOW | tools/research/transcribe_audio.py | 80 | def transcribe_with_faster_whisper(audio_path: Path, model_name: str, language: Optional[str]) -> str: | CODE |
| LOW | tools/research/transcribe_audio.py | 116 | def transcribe_with_openai_whisper(audio_path: Path, model_name: str, language: Optional[str]) -> str: | CODE |
| LOW | tools/research/transcribe_audio.py | 143 | def transcribe_with_openai_api(audio_path: Path, language: Optional[str]) -> str: | CODE |
| LOW | tests/test_skill_entrypoint_docs.py | 9 | def test_root_skill_uses_dot_skill_entrypoint(self) -> None: | CODE |
| LOW | tests/test_skill_entrypoint_docs.py | 41 | def test_readme_and_install_use_dot_skill_paths(self) -> None: | CODE |
| LOW | tests/test_skill_entrypoint_docs.py | 70 | def test_repo_examples_live_under_skills_colleague(self) -> None: | CODE |
| LOW | tests/test_skill_entrypoint_docs.py | 76 | def test_multilingual_readmes_include_dot_skill_and_research_toolchain(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 25 | def test_create_colleague_keeps_legacy_names_and_adds_engine_schema(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 88 | def test_create_relationship_uses_character_preset_metadata(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 122 | def test_create_skill_renders_chinese_chrome_when_language_is_zh_cn(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 150 | def test_create_celebrity_adds_research_dirs_and_toolchain(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 193 | def test_create_celebrity_budget_unfriendly_embeds_profile_config(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 232 | def test_create_celebrity_accepts_string_profile_from_runtime_meta(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 255 | def test_update_regenerates_manifest_and_archives_artifacts(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 285 | def test_update_accepts_multiple_persona_corrections_in_one_payload(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 327 | def test_update_replaces_existing_markdown_sections_instead_of_appending_duplicates(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 401 | def test_backup_and_rollback_include_manifest(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 422 | def test_version_manager_can_still_resolve_legacy_colleagues_root(self) -> None: | CODE |
| LOW | tests/test_skill_writer.py | 443 | def test_character_prompt_bundles_exist(self) -> None: | CODE |
| LOW | tests/test_install_claude_generated_skill.py | 21 | def test_install_generated_skill_writes_claude_skill_folder(self) -> None: | CODE |
| LOW | tests/test_install_claude_generated_skill.py | 57 | def test_install_generated_skill_can_write_windows_command_shim(self) -> None: | CODE |
| LOW | tests/test_install_claude_generated_skill.py | 92 | def test_windows_detection_only_enables_command_shim_on_windows(self) -> None: | CODE |
| LOW | tests/test_cli_lifecycle.py | 40 | def test_default_colleague_cli_uses_skills_colleague_root(self) -> None: | CODE |
| LOW | tests/test_cli_lifecycle.py | 81 | def test_character_lifecycle_via_cli(self) -> None: | CODE |
| LOW | tests/test_cli_lifecycle.py | 308 | def test_cli_can_install_generated_skill_into_supported_host_paths(self) -> None: | CODE |
| LOW | tests/test_research_tools.py | 19 | def test_clean_subtitle_text_removes_timestamps_and_duplicates(self) -> None: | CODE |
| LOW | tests/test_research_tools.py | 36 | def test_convert_file_writes_transcript(self) -> None: | STRING |
| LOW | tests/test_research_tools.py | 49 | def test_merge_research_writes_summary(self) -> None: | STRING |
| LOW | tests/test_research_tools.py | 97 | def test_evaluate_skill_text_detects_expected_signals(self) -> None: | STRING |
| LOW | tests/test_research_tools.py | 134 | def test_source_grounding_rejects_generic_homepages(self) -> None: | STRING |
| LOW | tests/test_research_tools.py | 163 | def test_budget_unfriendly_profile_requires_deeper_research_metrics(self) -> None: | STRING |
| LOW | tests/test_research_tools.py | 215 | def test_budget_unfriendly_profile_passes_with_full_review_chain(self) -> None: | STRING |
| LOW | tests/test_install_openclaw_and_codex.py | 21 | def test_openclaw_and_codex_repo_installers_copy_repo_layout(self) -> None: | CODE |
| LOW | tests/test_install_openclaw_and_codex.py | 40 | def test_openclaw_generated_skill_installer_writes_host_skill_folder(self) -> None: | CODE |
| LOW | tests/test_install_openclaw_and_codex.py | 74 | def test_codex_generated_skill_installer_writes_host_skill_folder(self) -> None: | CODE |
| LOW | tests/test_install_hermes_skill.py | 17 | def test_install_skill_copies_repo_layout(self) -> None: | CODE |
| LOW | tests/test_install_hermes_skill.py | 30 | def test_install_skill_dry_run_does_not_write(self) -> None: | CODE |
| LOW | tests/test_install_hermes_skill.py | 40 | def test_install_skill_dry_run_allows_existing_destination(self) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/feishu_browser.py | 148 | if (cells.length === 0) return null; | CODE |
| HIGH | tools/feishu_browser.py | 164 | row.push(grid[r] && grid[r][c] ? grid[r][c] : ''); | CODE |
| HIGH | tools/feishu_browser.py | 166 | rows.push(row); | CODE |
| HIGH | tools/feishu_browser.py | 264 | results.push({{ sender, content, time }}); | CODE |
| HIGH | tools/feishu_browser.py | 320 | print("错误:请先安装 Playwright:pip install playwright && playwright install chromium", file=sys.stderr) | STRING |
| HIGH | tools/dingtalk_auto_collector.py | 88 | print(" pip3 install playwright && playwright install chromium") | CODE |
| HIGH | tools/dingtalk_auto_collector.py | 509 | "请运行:pip3 install playwright && playwright install chromium\n" | CODE |
| HIGH | tools/dingtalk_auto_collector.py | 627 | results.push({{ sender, content, time }}); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | SKILL.md | 807 | ### Step 0: Confirm the character family | COMMENT |
| LOW | SKILL.md | 824 | ### Step 1: Basic Info Collection | COMMENT |
| LOW | SKILL.md | 845 | ### Step 2: Source Material Import | COMMENT |
| LOW | SKILL.md | 1103 | ### Step 3: Analyze Source Material | COMMENT |
| LOW | SKILL.md | 1276 | ### Step 4: Generate and Preview | COMMENT |
| LOW | SKILL.md | 1304 | ### Step 5: Write Files | COMMENT |
| LOW⚡ | tools/feishu_auto_collector.py | 844 | # Step 1: 搜索用户 | COMMENT |
| LOW⚡ | tools/feishu_auto_collector.py | 850 | # Step 2: 采集消息记录 | COMMENT |
| LOW⚡ | tools/feishu_auto_collector.py | 861 | # Step 3: 采集文档 | COMMENT |
| LOW⚡ | tools/slack_auto_collector.py | 599 | # Step 1: 搜索用户 | COMMENT |
| LOW⚡ | tools/slack_auto_collector.py | 609 | # Step 2: 找共同频道 | COMMENT |
| LOW⚡ | tools/slack_auto_collector.py | 614 | # Step 3: 采集消息 | COMMENT |
| LOW⚡ | tools/dingtalk_auto_collector.py | 687 | # Step 1: 搜索用户 | STRING |
| LOW⚡ | tools/dingtalk_auto_collector.py | 695 | # Step 2: 文档 | STRING |
| LOW⚡ | tools/dingtalk_auto_collector.py | 706 | # Step 3: 多维表格 | STRING |
| LOW⚡ | tools/dingtalk_auto_collector.py | 717 | # Step 4: 消息记录(浏览器方案) | STRING |
| LOW⚡ | prompts/celebrity/persona_builder.md | 158 | ### Step 1: Classify the Question | COMMENT |
| LOW⚡ | prompts/celebrity/persona_builder.md | 164 | ### Step 2: Research Dimensions | COMMENT |
| LOW⚡ | prompts/celebrity/persona_builder.md | 173 | ### Step 3: Apply Framework | COMMENT |
| LOW⚡ | prompts/celebrity/persona_builder.md | 178 | ### Step 4: Calibrate Confidence | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/install_codex_skill.py | 4 | CODE | |
| LOW | tools/feishu_auto_collector.py | 42 | CODE | |
| LOW | tools/version_manager.py | 9 | CODE | |
| LOW | tools/skill_presets.py | 9 | CODE | |
| LOW | tools/install_codex_generated_skill.py | 4 | CODE | |
| LOW | tools/install_generated_skill_common.py | 4 | CODE | |
| LOW | tools/feishu_mcp_client.py | 34 | CODE | |
| LOW | tools/feishu_mcp_client.py | 42 | CODE | |
| LOW | tools/install_hermes_skill.py | 4 | CODE | |
| LOW | tools/slack_auto_collector.py | 33 | CODE | |
| LOW | tools/feishu_parser.py | 19 | CODE | |
| LOW | tools/install_openclaw_generated_skill.py | 4 | CODE | |
| LOW | tools/feishu_browser.py | 24 | CODE | |
| LOW | tools/feishu_browser.py | 28 | CODE | |
| LOW | tools/install_claude_generated_skill.py | 4 | CODE | |
| LOW | tools/skill_schema.py | 6 | CODE | |
| LOW | tools/dingtalk_auto_collector.py | 27 | CODE | |
| LOW | tools/dingtalk_auto_collector.py | 512 | CODE | |
| LOW | tools/install_openclaw_skill.py | 4 | CODE | |
| LOW | tools/skill_writer.py | 9 | CODE | |
| LOW | tools/research/merge_research.py | 13 | CODE | |
| LOW | tools/research/quality_check.py | 4 | CODE | |
| LOW | tools/research/srt_to_transcript.py | 4 | CODE | |
| LOW | tools/research/transcribe_audio.py | 30 | CODE | |
| LOW | tests/test_skill_writer.py | 1 | CODE | |
| LOW | tests/test_install_claude_generated_skill.py | 1 | CODE | |
| LOW | tests/test_cli_lifecycle.py | 1 | CODE | |
| LOW | tests/test_research_tools.py | 1 | CODE | |
| LOW | tests/test_install_openclaw_and_codex.py | 1 | CODE | |
| LOW | tests/test_install_hermes_skill.py | 1 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/feishu_auto_collector.py | 858 | except Exception as e: | CODE |
| LOW⚡ | tools/feishu_auto_collector.py | 869 | except Exception as e: | CODE |
| LOW | tools/feishu_auto_collector.py | 463 | except Exception: | CODE |
| LOW | tools/feishu_auto_collector.py | 474 | except Exception: | CODE |
| LOW | tools/feishu_auto_collector.py | 537 | except Exception: | CODE |
| LOW | tools/feishu_auto_collector.py | 548 | except Exception: | CODE |
| LOW | tools/email_parser.py | 63 | except Exception: | CODE |
| LOW | tools/email_parser.py | 88 | except Exception: | CODE |
| LOW | tools/email_parser.py | 97 | except Exception: | CODE |
| LOW | tools/email_parser.py | 108 | except Exception: | CODE |
| LOW | tools/feishu_mcp_client.py | 203 | except Exception: | CODE |
| LOW | tools/slack_auto_collector.py | 625 | except Exception as e: | CODE |
| LOW | tools/feishu_browser.py | 64 | except Exception as e: | CODE |
| LOW | tools/feishu_browser.py | 105 | except Exception: | CODE |
| LOW | tools/feishu_browser.py | 123 | except Exception: | CODE |
| LOW | tools/feishu_browser.py | 137 | except Exception: | CODE |
| LOW | tools/feishu_browser.py | 206 | except Exception as e: | STRING |
| LOW | tools/dingtalk_auto_collector.py | 315 | except Exception: | CODE |
| LOW | tools/dingtalk_auto_collector.py | 528 | except Exception as e: | CODE |
| LOW | tools/dingtalk_auto_collector.py | 578 | except Exception as e: | CODE |
| LOW⚡ | tools/dingtalk_auto_collector.py | 703 | except Exception as e: | STRING |
| LOW⚡ | tools/dingtalk_auto_collector.py | 714 | except Exception as e: | STRING |
| LOW⚡ | tools/dingtalk_auto_collector.py | 727 | except Exception as e: | STRING |
| LOW | tools/skill_writer.py | 411 | except Exception: | CODE |
| LOW | tools/research/transcribe_audio.py | 211 | except Exception as exc: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/feishu_auto_collector.py | 844 | # Step 1: 搜索用户 | COMMENT |
| LOW⚡ | tools/feishu_auto_collector.py | 850 | # Step 2: 采集消息记录 | COMMENT |
| LOW⚡ | tools/feishu_auto_collector.py | 861 | # Step 3: 采集文档 | COMMENT |
| LOW⚡ | tools/slack_auto_collector.py | 599 | # Step 1: 搜索用户 | COMMENT |
| LOW⚡ | tools/slack_auto_collector.py | 609 | # Step 2: 找共同频道 | COMMENT |
| LOW⚡ | tools/slack_auto_collector.py | 614 | # Step 3: 采集消息 | COMMENT |
| LOW⚡ | tools/dingtalk_auto_collector.py | 687 | # Step 1: 搜索用户 | STRING |
| LOW⚡ | tools/dingtalk_auto_collector.py | 695 | # Step 2: 文档 | STRING |
| LOW⚡ | tools/dingtalk_auto_collector.py | 706 | # Step 3: 多维表格 | STRING |
| LOW⚡ | tools/dingtalk_auto_collector.py | 717 | # Step 4: 消息记录(浏览器方案) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/feishu_auto_collector.py | 237 | CODE | |
| LOW | tools/feishu_auto_collector.py | 415 | CODE | |
| LOW | tools/feishu_auto_collector.py | 486 | CODE | |
| LOW | tools/feishu_auto_collector.py | 566 | CODE | |
| LOW | tools/feishu_auto_collector.py | 776 | CODE | |
| LOW | tools/email_parser.py | 70 | CODE | |
| LOW | tools/feishu_mcp_client.py | 151 | CODE | |
| LOW | tools/feishu_mcp_client.py | 255 | CODE | |
| LOW | tools/feishu_browser.py | 71 | CODE | |
| LOW | tools/feishu_browser.py | 85 | CODE | |
| LOW | tools/dingtalk_auto_collector.py | 222 | CODE | |
| LOW | tools/dingtalk_auto_collector.py | 391 | CODE | |
| LOW | tools/dingtalk_auto_collector.py | 496 | CODE | |
| LOW | tools/skill_writer.py | 111 | CODE | |
| LOW | tools/research/merge_research.py | 40 | CODE | |
| LOW | tests/test_skill_writer.py | 443 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_research_tools.py | 107 | ## agentic protocol | COMMENT |
| MEDIUM | tests/test_research_tools.py | 225 | ## agentic protocol | COMMENT |