AI Slop Code RIsk Monitor

titanwings/colleague-skill

Distilly — Distill how they think into reusable Skills for any Agent or Bot. Formerly Colleague Skill(原同事 Skill).

15.6 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for titanwings/colleague-skill, a Python project with 25,472 GitHub stars. SynthScan examined 23,215 lines of code across 104 source files, recording 242 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 15.6 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

15.6
Adjusted Signal
15.6
Raw Pattern Score
100%
Time Factor
2026-09-22
Last Push
25.5K
Stars
Python
Language
23.2K
Lines of Code
104
Files
242
Pattern Hits
2026-10-12
Scan Date
0.12
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 30.0/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 14.4/100 · LOW

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

Agent Over-Engineering Ratio 38.4/100 · MEDIUM

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

PR Review Velocity Impact 54.1/100 · HIGH

Which changes need focused human review? 242 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 12MEDIUM 30LOW 200

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 242 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers95 hits · 100 pts
SeverityFileLineSnippetContext
LOWtools/skill_presets.py196def normalize_research_profile(character: str | None, research_profile: str | None) -> str:CODE
LOWtools/skill_presets.py213def get_research_profile_preset(character: str | None, research_profile: str | None = None) -> dict:CODE
LOWtools/skill_presets.py266def resolve_existing_storage_root(CODE
LOWtools/install_generated_skill_common.py52def render_installed_markdown(skill_dir: Path, artifact_name: str, command_name: str) -> str:CODE
LOWtools/slack_auto_collector.py398def fetch_messages_from_channel(CODE
LOWtools/install_openclaw_generated_skill.py12def default_openclaw_skills_dir() -> Path:CODE
LOWtools/feishu_browser.py35def get_default_chrome_profile() -> str:CODE
LOW⚡tools/install_claude_generated_skill.py17def default_claude_skills_dir() -> Path:CODE
LOW⚡tools/install_claude_generated_skill.py22def default_claude_commands_dir() -> Path:CODE
LOW⚡tools/install_claude_generated_skill.py27def should_install_command_shim(system_name: str | None = None) -> bool:CODE
LOWtools/skill_schema.py171def read_existing_artifact_names(skill_dir: Path) -> dict[str, str]:CODE
LOWtools/skill_schema.py337def enrich_existing_skill_meta(CODE
LOWtools/dingtalk_auto_collector.py487def get_default_chrome_profile() -> str:CODE
LOWtools/research/merge_research.py40def collect_structured_section_metrics(text: str) -> dict:CODE
LOWtools/research/merge_research.py77def collect_source_weight_distribution(text: str) -> Counter:CODE
LOWtools/research/merge_research.py106def count_potential_long_quote_lines(text: str) -> int:CODE
LOWtools/research/quality_check.py63def extract_summary_percentage(summary_text: str, label: str) -> int:CODE
LOWtools/research/transcribe_audio.py80def transcribe_with_faster_whisper(audio_path: Path, model_name: str, language: Optional[str]) -> str:CODE
LOWtools/research/transcribe_audio.py116def transcribe_with_openai_whisper(audio_path: Path, model_name: str, language: Optional[str]) -> str:CODE
LOWtools/research/transcribe_audio.py143def transcribe_with_openai_api(audio_path: Path, language: Optional[str]) -> str:CODE
LOWtests/test_skill_entrypoint_docs.py48 def _assert_readme_support_contract(self, content: str, source: str) -> None:CODE
LOWtests/test_skill_entrypoint_docs.py72 def _assert_readme_quick_start(CODE
LOWtests/test_skill_entrypoint_docs.py99 def test_root_skill_uses_distilly_entrypoint(self) -> None:CODE
LOWtests/test_skill_entrypoint_docs.py140 def test_readme_quick_start_and_install_detail_contract(self) -> None:CODE
LOWtests/test_skill_entrypoint_docs.py203 def test_repo_examples_live_under_skills_colleague(self) -> None:CODE
LOWtests/test_skill_entrypoint_docs.py209 def test_multilingual_readmes_list_hosts_without_invocation_tutorials(self) -> None:CODE
LOWtests/test_skill_entrypoint_docs.py237 def test_non_chinese_docs_call_the_product_lark(self) -> None:CODE
LOWtests/test_skill_entrypoint_docs.py251 def test_non_chinese_surfaces_do_not_mix_chinese_copy(self) -> None:CODE
LOWtests/test_skill_entrypoint_docs.py300 def test_code_uses_new_names_with_explicit_legacy_fallbacks(self) -> None:CODE
LOWtests/test_skill_writer.py26 def test_slugify_produces_portable_kebab_case(self) -> None:CODE
LOWtests/test_skill_writer.py31 def test_create_skill_rejects_unsafe_slug_before_writing(self) -> None:CODE
LOWtests/test_skill_writer.py44 def test_legacy_path_segments_are_windows_safe(self) -> None:CODE
LOWtests/test_skill_writer.py52 def test_create_colleague_uses_portable_names_and_adds_engine_schema(self) -> None:CODE
LOWtests/test_skill_writer.py128 def test_create_relationship_uses_character_preset_metadata(self) -> None:CODE
LOWtests/test_skill_writer.py162 def test_create_skill_renders_chinese_chrome_when_language_is_zh_cn(self) -> None:CODE
LOWtests/test_skill_writer.py190 def test_work_only_skill_replaces_persona_handoff(self) -> None:CODE
LOWtests/test_skill_writer.py270 def test_create_celebrity_adds_research_dirs_and_toolchain(self) -> None:CODE
LOWtests/test_skill_writer.py313 def test_create_celebrity_budget_unfriendly_embeds_profile_config(self) -> None:CODE
LOWtests/test_skill_writer.py352 def test_create_celebrity_accepts_string_profile_from_runtime_meta(self) -> None:CODE
LOWtests/test_skill_writer.py375 def test_existing_dot_skill_metadata_keeps_legacy_engine_identifiers(self) -> None:CODE
LOWtests/test_skill_writer.py406 def test_update_preserves_names_from_legacy_meta_without_artifacts(self) -> None:CODE
LOWtests/test_skill_writer.py445 def test_update_rejects_traversal_in_stored_version_before_backup(self) -> None:CODE
LOWtests/test_skill_writer.py470 def test_update_regenerates_manifest_and_archives_artifacts(self) -> None:CODE
LOWtests/test_skill_writer.py500 def test_update_accepts_multiple_persona_corrections_in_one_payload(self) -> None:CODE
LOWtests/test_skill_writer.py542 def test_update_replaces_existing_markdown_sections_instead_of_appending_duplicates(self) -> None:CODE
LOWtests/test_skill_writer.py616 def test_backup_and_rollback_include_manifest(self) -> None:CODE
LOWtests/test_skill_writer.py638 def test_version_manager_can_still_resolve_legacy_colleagues_root(self) -> None:CODE
LOWtests/test_skill_writer.py659 def test_character_prompt_bundles_exist(self) -> None:CODE
LOWtests/test_config_migration.py29 def test_collectors_read_legacy_config_and_save_new_config_privately(self) -> None:CODE
LOWtests/test_install_generated_skill.py43 def test_default_skills_dirs_cover_all_documented_hosts(self) -> None:CODE
LOWtests/test_install_generated_skill.py68 def test_install_rewrites_only_the_legacy_copy_to_canonical_name(self) -> None:CODE
LOWtests/test_install_generated_skill.py96 def test_install_rejects_ancestor_or_descendant_destinations(self) -> None:CODE
LOW⚡tests/test_xquik_public_posts.py58 def test_build_query_accepts_username_with_at_prefix(self) -> None:CODE
LOW⚡tests/test_xquik_public_posts.py61 def test_build_query_rejects_invalid_username(self) -> None:CODE
LOW⚡tests/test_xquik_public_posts.py65 def test_validate_limit_rejects_unbounded_collection(self) -> None:CODE
LOW⚡tests/test_xquik_public_posts.py71 def test_normalize_post_canonicalizes_url_and_metrics(self) -> None:CODE
LOW⚡tests/test_xquik_public_posts.py79 def test_normalize_post_truncates_long_form_text(self) -> None:CODE
LOW⚡tests/test_xquik_public_posts.py88 def test_normalize_post_accepts_current_normalized_contract(self) -> None:CODE
LOW⚡tests/test_xquik_public_posts.py100 def test_normalize_post_removes_terminal_control_characters(self) -> None:CODE
LOW⚡tests/test_xquik_public_posts.py108 def test_normalize_post_rejects_non_x_source_url(self) -> None:CODE
35 more matches not shown…
Decorative Section Separators28 hits · 82 pts
SeverityFileLineSnippetContext
MEDIUMtools/feishu_auto_collector.py64# ─── 配置 ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/feishu_auto_collector.py129# ─── Token ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/feishu_auto_collector.py200# ─── 用户搜索 ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/feishu_auto_collector.py368# ─── 消息记录 ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/feishu_auto_collector.py666# ─── 文档采集 ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/feishu_auto_collector.py777# ─── 多维表格 ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/feishu_auto_collector.py832# ─── 主流程 ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/feishu_mcp_client.py49# ─── 配置管理 ────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/feishu_mcp_client.py94# ─── MCP 调用封装 ─────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/feishu_mcp_client.py153# ─── 功能函数 ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/feishu_mcp_client.py257# ─── CLI ─────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/slack_auto_collector.py43# ─── 依赖检查 ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/slack_auto_collector.py55# ─── 常量 ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/slack_auto_collector.py73# ─── 错误类型 ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/slack_auto_collector.py87# ─── 配置管理 ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/slack_auto_collector.py159# ─── Slack Client 封装(带速率限制重试)─────────────────────────────────────────COMMENT
MEDIUMtools/slack_auto_collector.py239# ─── 用户搜索 ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/slack_auto_collector.py331# ─── 频道发现 ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/slack_auto_collector.py396# ─── 消息采集 ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/slack_auto_collector.py493# ─── 主采集流程 ────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/slack_auto_collector.py652# ─── CLI 入口 ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/dingtalk_auto_collector.py50# ─── 配置 ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/dingtalk_auto_collector.py94# ─── Token ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/dingtalk_auto_collector.py144# ─── 用户搜索 ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/dingtalk_auto_collector.py217# ─── 文档采集 ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/dingtalk_auto_collector.py369# ─── 多维表格 ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMtools/dingtalk_auto_collector.py485# ─── 消息记录(浏览器方案)────────────────────────────────────────────────────COMMENT
MEDIUMtools/dingtalk_auto_collector.py673# ─── 主流程 ───────────────────────────────────────────────────────────────────STRING
Cross-Language Confusion8 hits · 38 pts
SeverityFileLineSnippetContext
HIGHtools/feishu_browser.py148 if (cells.length === 0) return null;CODE
HIGHtools/feishu_browser.py164 row.push(grid[r] && grid[r][c] ? grid[r][c] : '');CODE
HIGHtools/feishu_browser.py166 rows.push(row);CODE
HIGHtools/feishu_browser.py264 results.push({{ sender, content, time }});CODE
HIGHtools/feishu_browser.py320 print("错误:请先安装 Playwright:pip install playwright && playwright install chromium", file=sys.stderr)STRING
HIGHtools/dingtalk_auto_collector.py91 print(" pip3 install playwright && playwright install chromium")CODE
HIGHtools/dingtalk_auto_collector.py512 "请运行:pip3 install playwright && playwright install chromium\n"CODE
HIGHtools/dingtalk_auto_collector.py630 results.push({{ sender, content, time }});CODE
Unused Imports35 hits · 34 pts
SeverityFileLineSnippetContext
LOWtools/install_codex_skill.py4CODE
LOWtools/feishu_auto_collector.py42CODE
LOWtools/install_generated_skill.py4CODE
LOWtools/version_manager.py9CODE
LOWtools/skill_presets.py9CODE
LOWtools/install_codex_generated_skill.py4CODE
LOWtools/install_generated_skill_common.py4CODE
LOWtools/feishu_mcp_client.py34CODE
LOWtools/feishu_mcp_client.py42CODE
LOWtools/install_hermes_skill.py4CODE
LOWtools/slack_auto_collector.py33CODE
LOWtools/feishu_parser.py19CODE
LOWtools/install_openclaw_generated_skill.py4CODE
LOWtools/feishu_browser.py24CODE
LOWtools/feishu_browser.py28CODE
LOWtools/install_claude_generated_skill.py4CODE
LOWtools/skill_schema.py6CODE
LOWtools/dingtalk_auto_collector.py27CODE
LOWtools/dingtalk_auto_collector.py515CODE
LOWtools/install_openclaw_skill.py4CODE
LOWtools/skill_writer.py9CODE
LOWtools/research/merge_research.py13CODE
LOWtools/research/quality_check.py4CODE
LOWtools/research/xquik_public_posts.py4CODE
LOWtools/research/srt_to_transcript.py4CODE
LOWtools/research/transcribe_audio.py30CODE
LOWtests/test_skill_writer.py1CODE
LOWtests/test_config_migration.py1CODE
LOWtests/test_install_generated_skill.py1CODE
LOWtests/test_xquik_public_posts.py1CODE
LOWtests/test_install_claude_generated_skill.py1CODE
LOWtests/test_cli_lifecycle.py1CODE
LOWtests/test_research_tools.py1CODE
LOWtests/test_install_openclaw_and_codex.py1CODE
LOWtests/test_install_hermes_skill.py1CODE
Structural Annotation Overuse20 hits · 33 pts
SeverityFileLineSnippetContext
LOWSKILL.md843### Step 0: Confirm the character familyCOMMENT
LOWSKILL.md860### Step 1: Basic Info CollectionCOMMENT
LOWSKILL.md881### Step 2: Source Material ImportCOMMENT
LOWSKILL.md1139### Step 3: Analyze Source MaterialCOMMENT
LOWSKILL.md1324### Step 4: Generate and PreviewCOMMENT
LOWSKILL.md1352### Step 5: Write FilesCOMMENT
LOW⚡tools/feishu_auto_collector.py847 # Step 1: 搜索用户COMMENT
LOW⚡tools/feishu_auto_collector.py853 # Step 2: 采集消息记录COMMENT
LOW⚡tools/feishu_auto_collector.py864 # Step 3: 采集文档COMMENT
LOW⚡tools/slack_auto_collector.py602 # Step 1: 搜索用户COMMENT
LOW⚡tools/slack_auto_collector.py612 # Step 2: 找共同频道COMMENT
LOW⚡tools/slack_auto_collector.py617 # Step 3: 采集消息COMMENT
LOW⚡tools/dingtalk_auto_collector.py690 # Step 1: 搜索用户STRING
LOW⚡tools/dingtalk_auto_collector.py698 # Step 2: 文档STRING
LOW⚡tools/dingtalk_auto_collector.py709 # Step 3: 多维表格STRING
LOW⚡tools/dingtalk_auto_collector.py720 # Step 4: 消息记录(浏览器方案)STRING
LOW⚡prompts/celebrity/persona_builder.md158### Step 1: Classify the QuestionCOMMENT
LOW⚡prompts/celebrity/persona_builder.md164### Step 2: Research DimensionsCOMMENT
LOW⚡prompts/celebrity/persona_builder.md173### Step 3: Apply FrameworkCOMMENT
LOW⚡prompts/celebrity/persona_builder.md178### Step 4: Calibrate ConfidenceCOMMENT
Excessive Try-Catch Wrapping25 hits · 23 pts
SeverityFileLineSnippetContext
LOW⚡tools/feishu_auto_collector.py861 except Exception as e:CODE
LOW⚡tools/feishu_auto_collector.py872 except Exception as e:CODE
LOWtools/feishu_auto_collector.py466 except Exception:CODE
LOWtools/feishu_auto_collector.py477 except Exception:CODE
LOWtools/feishu_auto_collector.py540 except Exception:CODE
LOWtools/feishu_auto_collector.py551 except Exception:CODE
LOWtools/email_parser.py63 except Exception:CODE
LOWtools/email_parser.py88 except Exception:CODE
LOWtools/email_parser.py97 except Exception:CODE
LOWtools/email_parser.py108 except Exception:CODE
LOWtools/feishu_mcp_client.py207 except Exception:CODE
LOWtools/slack_auto_collector.py628 except Exception as e:CODE
LOWtools/feishu_browser.py64 except Exception as e:CODE
LOWtools/feishu_browser.py105 except Exception:CODE
LOWtools/feishu_browser.py123 except Exception:CODE
LOWtools/feishu_browser.py137 except Exception:CODE
LOWtools/feishu_browser.py206 except Exception as e:STRING
LOWtools/dingtalk_auto_collector.py318 except Exception:CODE
LOWtools/dingtalk_auto_collector.py531 except Exception as e:CODE
LOWtools/dingtalk_auto_collector.py581 except Exception as e:CODE
LOW⚡tools/dingtalk_auto_collector.py706 except Exception as e:STRING
LOW⚡tools/dingtalk_auto_collector.py717 except Exception as e:STRING
LOW⚡tools/dingtalk_auto_collector.py730 except Exception as e:STRING
LOWtools/skill_writer.py461 except Exception:CODE
LOWtools/research/transcribe_audio.py211 except Exception as exc:CODE
Empty Error Handlers4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHtools/feishu_auto_collector.py477except Exception:CODE
HIGHtools/feishu_auto_collector.py551except Exception:CODE
HIGHtools/dingtalk_auto_collector.py318except Exception:CODE
HIGHtools/research/xquik_public_posts.py354except OSError:CODE
Verbosity Indicators10 hits · 15 pts
SeverityFileLineSnippetContext
LOW⚡tools/feishu_auto_collector.py847 # Step 1: 搜索用户COMMENT
LOW⚡tools/feishu_auto_collector.py853 # Step 2: 采集消息记录COMMENT
LOW⚡tools/feishu_auto_collector.py864 # Step 3: 采集文档COMMENT
LOW⚡tools/slack_auto_collector.py602 # Step 1: 搜索用户COMMENT
LOW⚡tools/slack_auto_collector.py612 # Step 2: 找共同频道COMMENT
LOW⚡tools/slack_auto_collector.py617 # Step 3: 采集消息COMMENT
LOW⚡tools/dingtalk_auto_collector.py690 # Step 1: 搜索用户STRING
LOW⚡tools/dingtalk_auto_collector.py698 # Step 2: 文档STRING
LOW⚡tools/dingtalk_auto_collector.py709 # Step 3: 多维表格STRING
LOW⚡tools/dingtalk_auto_collector.py720 # Step 4: 消息记录(浏览器方案)STRING
Deep Nesting15 hits · 12 pts
SeverityFileLineSnippetContext
LOWtools/feishu_auto_collector.py240CODE
LOWtools/feishu_auto_collector.py418CODE
LOWtools/feishu_auto_collector.py489CODE
LOWtools/feishu_auto_collector.py569CODE
LOWtools/feishu_auto_collector.py779CODE
LOWtools/email_parser.py70CODE
LOWtools/feishu_mcp_client.py155CODE
LOWtools/feishu_mcp_client.py259CODE
LOWtools/feishu_browser.py71CODE
LOWtools/feishu_browser.py85CODE
LOWtools/dingtalk_auto_collector.py225CODE
LOWtools/dingtalk_auto_collector.py394CODE
LOWtools/dingtalk_auto_collector.py499CODE
LOWtools/research/merge_research.py40CODE
LOWtests/test_skill_writer.py659CODE
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_research_tools.py107## agentic protocolCOMMENT
MEDIUMtests/test_research_tools.py225## agentic protocolCOMMENT