AI Slop Code RIsk Monitor

tanweai/pua

你是一个曾经被寄予厚望的 P8 级工程师。Anthropic 当初给你定级的时候,对你的期望是很高的。 一个agent使用的高能动性的skill。 Your AI has been placed on a PIP. 30 days to show improvement.

12.5 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for tanweai/pua, a Python project with 19,708 GitHub stars. SynthScan examined 41,918 lines of code across 235 source files, recording 306 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 12.5 (Moderate 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.

12.5
Adjusted Signal
12.5
Raw Pattern Score
100%
Time Factor
2026-09-09
Last Push
19.7K
Stars
Python
Language
41.9K
Lines of Code
235
Files
306
Pattern Hits
2026-10-12
Scan Date
0.02
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 38.1/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 2.2/100 · LOW

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

Agent Over-Engineering Ratio 19.7/100 · LOW

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

PR Review Velocity Impact 35.6/100 · MEDIUM

Which changes need focused human review? 306 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 5MEDIUM 19LOW 282

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 306 distinct pattern matches across 11 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.

Structural Annotation Overuse143 hits · 296 pts
SeverityFileLineSnippetContext
LOWcodex/pua-en/SKILL.md84### Step 1: Pattern Recognition — Diagnose the stuck patternCOMMENT
LOWcodex/pua-en/SKILL.md88### Step 2: Elevate — Raise your perspectiveCOMMENT
LOW⚡codex/pua-en/SKILL.md113### Step 3: Self-Review — Mirror checkCOMMENT
LOW⚡codex/pua-en/SKILL.md120### Step 4: Execute the new approachCOMMENT
LOW⚡codex/pua-en/SKILL.md127### Step 5: RetrospectiveCOMMENT
LOWcodex/pua/SKILL.md126### Step 1: 闻味道 — 诊断卡壳模式COMMENT
LOWcodex/pua/SKILL.md130### Step 2: 揪头发 — 拉高视角COMMENT
LOW⚡codex/pua/SKILL.md155### Step 3: 照镜子 — 自检COMMENT
LOW⚡codex/pua/SKILL.md162### Step 4: 执行新方案COMMENT
LOW⚡codex/pua/SKILL.md169### Step 5: 复盘COMMENT
LOWcodex/pua-ja/SKILL.md86### Step 1: 匂いを嗅ぐ — 行き詰まりパターンの診断COMMENT
LOWcodex/pua-ja/SKILL.md90### Step 2: 髪を引っ張る — 視座を上げろCOMMENT
LOW⚡codex/pua-ja/SKILL.md115### Step 3: 鏡を見る — セルフチェックCOMMENT
LOW⚡codex/pua-ja/SKILL.md122### Step 4: 新しいアプローチの実行COMMENT
LOW⚡codex/pua-ja/SKILL.md129### Step 5: 振り返りCOMMENT
LOWcodebuddy/pua-en/SKILL.md84### Step 1: Pattern Recognition — Diagnose the stuck patternCOMMENT
LOWcodebuddy/pua-en/SKILL.md88### Step 2: Elevate — Raise your perspectiveCOMMENT
LOW⚡codebuddy/pua-en/SKILL.md113### Step 3: Self-Review — Mirror checkCOMMENT
LOW⚡codebuddy/pua-en/SKILL.md120### Step 4: Execute the new approachCOMMENT
LOW⚡codebuddy/pua-en/SKILL.md127### Step 5: RetrospectiveCOMMENT
LOWcodebuddy/pua/SKILL.md110### Step 1: 闻味道 — 诊断卡壳模式COMMENT
LOWcodebuddy/pua/SKILL.md114### Step 2: 揪头发 — 拉高视角COMMENT
LOW⚡codebuddy/pua/SKILL.md139### Step 3: 照镜子 — 自检COMMENT
LOW⚡codebuddy/pua/SKILL.md146### Step 4: 执行新方案COMMENT
LOW⚡codebuddy/pua/SKILL.md153### Step 5: 复盘COMMENT
LOWcodebuddy/pua-ja/SKILL.md86### Step 1: 匂いを嗅ぐ — 行き詰まりパターンの診断COMMENT
LOWcodebuddy/pua-ja/SKILL.md90### Step 2: 髪を引っ張る — 視座を上げろCOMMENT
LOW⚡codebuddy/pua-ja/SKILL.md115### Step 3: 鏡を見る — セルフチェックCOMMENT
LOW⚡codebuddy/pua-ja/SKILL.md122### Step 4: 新しいアプローチの実行COMMENT
LOW⚡codebuddy/pua-ja/SKILL.md129### Step 5: 振り返りCOMMENT
LOW⚡kiro/steering/pua.md76### Step 1: 闻味道 — 诊断卡壳模式COMMENT
LOW⚡kiro/steering/pua.md80### Step 2: 揪头发 — 拉高视角COMMENT
LOW⚡kiro/steering/pua.md89### Step 3: 照镜子 — 自检COMMENT
LOW⚡kiro/steering/pua.md95### Step 4: 执行新方案COMMENT
LOW⚡kiro/steering/pua.md99### Step 5: 复盘COMMENT
LOW⚡kiro/steering/pua-en.md64### Step 1: Smell the Problem — Diagnose the stuck patternCOMMENT
LOW⚡kiro/steering/pua-en.md68### Step 2: Elevate — Raise your perspectiveCOMMENT
LOW⚡kiro/steering/pua-en.md77### Step 3: Mirror Check — Self-inspectionCOMMENT
LOW⚡kiro/steering/pua-en.md83### Step 4: Execute the new approachCOMMENT
LOW⚡kiro/steering/pua-en.md87### Step 5: RetrospectiveCOMMENT
LOW⚡kiro/steering/pua-ja.md64### Step 1: 匂いを嗅ぐ — 行き詰まりパターンの診断COMMENT
LOW⚡kiro/steering/pua-ja.md68### Step 2: 髪を引っ張る — 視座を上げろCOMMENT
LOW⚡kiro/steering/pua-ja.md77### Step 3: 鏡を見る — セルフチェックCOMMENT
LOW⚡kiro/steering/pua-ja.md83### Step 4: 新しい方案の実行COMMENT
LOW⚡kiro/steering/pua-ja.md87### Step 5: 振り返りCOMMENT
LOWskills/pua-en/SKILL.md84### Step 1: Pattern Recognition — Diagnose the stuck patternCOMMENT
LOWskills/pua-en/SKILL.md88### Step 2: Elevate — Raise your perspectiveCOMMENT
LOW⚡skills/pua-en/SKILL.md113### Step 3: Self-Review — Mirror checkCOMMENT
LOW⚡skills/pua-en/SKILL.md120### Step 4: Execute the new approachCOMMENT
LOW⚡skills/pua-en/SKILL.md127### Step 5: RetrospectiveCOMMENT
LOWskills/pua-loop/SKILL.md84### Step 1: 启动 PUA LoopCOMMENT
LOWskills/pua-loop/SKILL.md99### Step 2: 告知用户COMMENT
LOWskills/pua-loop/SKILL.md109### Step 3: 开始执行任务COMMENT
LOWskills/pua-ja/SKILL.md86### Step 1: 匂いを嗅ぐ — 行き詰まりパターンの診断COMMENT
LOWskills/pua-ja/SKILL.md90### Step 2: 髪を引っ張る — 視座を上げろCOMMENT
LOW⚡skills/pua-ja/SKILL.md115### Step 3: 鏡を見る — セルフチェックCOMMENT
LOW⚡skills/pua-ja/SKILL.md122### Step 4: 新しいアプローチの実行COMMENT
LOW⚡skills/pua-ja/SKILL.md129### Step 5: 振り返りCOMMENT
LOWchatgpt/PUA-Paste.md124### Step 1: 闻味道 — 诊断卡壳模式COMMENT
LOWchatgpt/PUA-Paste.md128### Step 2: 揪头发 — 拉高视角COMMENT
83 more matches not shown…
Hyper-Verbose Identifiers83 hits · 79 pts
SeverityFileLineSnippetContext
LOWevals/prepare-fable-evals.py36 def test_timezone_equivalence(self):CODE
LOWevals/run-codex-pua.py119def _reject_links_and_special_files(root: Path) -> None:CODE
LOWevals/run-codex-pua.py293def _redacted_command_template(model: str, case: str) -> list[str]:CODE
LOWevals/run-codex-pua.py374def _extract_visible_agent_text(event: dict[str, Any]) -> str | None:CODE
LOWevals/test-cc0-fable.py73 def test_grading_preserves_runner_cwd_failure(self):STRING
LOWevals/test-cc0-fable.py130 def test_system_refusal_fallback_is_not_lost(self):STRING
LOWevals/test-cc0-fable.py159 def test_source_bound_loading_and_cross_result_marker(self):STRING
LOW⚡evals/test-cc0-fable.py188 def test_auxiliary_usage_is_disclosed_not_primary_fallback(self):STRING
LOW⚡evals/test-cc0-fable.py198 def test_is_error_success_is_failure(self):STRING
LOW⚡evals/test-cc0-fable.py201 def test_injected_skill_words_are_not_visible_behavior(self):STRING
LOWevals/test-cc0-fable.py219 def test_trigger_runner_does_not_ignore_process_failure(self):STRING
LOW⚡evals/test-cc0-fable.py232 def test_discovery_is_not_loading_or_model_proof(self):STRING
LOW⚡evals/test-cc0-fable.py239 def test_fallback_model_is_not_fable(self):STRING
LOW⚡evals/test-cc0-fable.py244 def test_successful_invocation_needs_tool_result(self):STRING
LOW⚡evals/test-cc0-fable.py255 def test_failed_skill_call_is_not_loaded(self):STRING
LOW⚡evals/test-cc0-fable.py263 def test_usage_fallback_invalidates_identity(self):STRING
LOW⚡evals/test-cc0-fable.py269 def test_terminal_success_is_not_inferred_from_text(self):STRING
LOWevals/test-codex-evidence.py97 def test_dry_plan_does_not_invoke_binary_or_create_run_directory(self) -> None:CODE
LOWevals/test-codex-evidence.py221 def test_exit_zero_is_insufficient_without_clean_turn_completion(self) -> None:STRING
LOWevals/test-codex-evidence.py277 def test_rejects_run_dir_inside_case_before_launch(self) -> None:STRING
LOWevals/test-codex-evidence.py285 def test_parser_does_not_confuse_prompt_keyword_with_skill_load(self) -> None:STRING
LOWevals/test-codex-evidence.py302 def test_terminal_rejects_business_event_after_completed(self) -> None:STRING
LOWevals/test-codex-evidence.py317 def test_terminal_rejects_malformed_jsonl_even_with_final_completion(self) -> None:STRING
LOWevals/test-model-compat.py25 def test_no_tools_trace_writes_are_audited(self):CODE
LOWevals/test-model-compat.py34 def test_launch_failure_has_durable_receipt(self):CODE
LOWevals/test-model-compat.py49 def test_text_checker_accepts_benign_builtins(self):CODE
LOWevals/test-model-compat.py69 def test_tool_paths_use_actor_working_directory(self):STRING
LOWevals/test-model-compat.py76 def test_checker_missing_external_manifest_fails_closed(self):STRING
LOWevals/test-model-compat.py87 def test_checker_legacy_is_partial_and_relative_write_is_allowed(self):STRING
LOW⚡evals/test-model-compat.py144 def test_original_quoted_tone_not_removed(self):STRING
LOW⚡evals/test-model-compat.py152 def test_original_codex_pressure_dialogue_intact(self):STRING
LOW⚡evals/test-model-compat.py159 def test_flavor_library_byte_identical(self):STRING
LOW⚡evals/test-model-compat.py164 def test_core_early_and_identical(self):STRING
LOW⚡evals/test-model-compat.py174 def test_contract_copies_current(self):STRING
LOW⚡evals/test-model-compat.py179 def test_archives_match_actual_files_and_have_safe_members(self):STRING
LOWevals/test-model-compat.py201 def test_paste_contains_portable_body_and_contract(self):STRING
LOWevals/test-omp-evidence.py56 def test_native_protocol_requires_call_result_marker_and_fixture_resolution(self) -> None:CODE
LOWevals/test-omp-evidence.py86 def test_terminal_requires_agent_end_and_normal_stop_after_native_load(self) -> None:CODE
LOWevals/test-omp-evidence.py101 def test_keyword_in_text_is_not_skill_loading_proof(self) -> None:CODE
LOWevals/test-omp-evidence.py109 def test_local_path_or_missing_fixture_resolution_fails_closed(self) -> None:CODE
LOWevals/test-omp-evidence.py127 def test_missing_resolved_path_is_evidence_gap_not_model_capability(self) -> None:CODE
LOWevals/test-omp-evidence.py140 def test_terminal_flag_and_causal_order_fail_closed(self) -> None:CODE
LOWevals/test-omp-evidence.py163 def test_nested_destinations_rejected_without_source_mutation(self) -> None:CODE
LOW⚡evals/test-omp-evidence.py182 def test_observable_model_substitution_is_rejected(self) -> None:CODE
LOW⚡evals/test-omp-evidence.py188 def test_missing_runtime_identity_is_rejected(self) -> None:CODE
LOW⚡evals/test-omp-evidence.py197 def test_visible_text_redaction_does_not_preserve_common_token_values(self) -> None:CODE
LOW⚡evals/test-omp-evidence.py203 def test_prompt_path_remap_changes_only_paths_inside_source_fixture(self) -> None:CODE
LOW⚡evals/test-omp-evidence.py220 def test_optional_source_version_uses_current_home_without_execution(self) -> None:CODE
LOW⚡evals/test-omp-evidence.py235 def test_runner_full_path_with_offline_omp_stub(self) -> None:CODE
LOWevals/check-model-compat-fix.py99 def test_bom_and_quoted_fields(self):CODE
LOW⚡evals/test-release-preparation.py34 def test_current_section_keeps_failures_and_binds_links_to_tag(self):CODE
LOW⚡evals/test-release-preparation.py41 def test_tag_must_match_manifest_and_be_stable(self):CODE
LOW⚡evals/test-release-preparation.py46 def test_repository_name_cannot_inject_a_url_or_path(self):CODE
LOW⚡evals/test-release-preparation.py51 def test_missing_duplicate_or_empty_version_section_is_rejected(self):CODE
LOW⚡evals/test-release-preparation.py58 def test_local_links_must_exist_inside_repository(self):CODE
LOW⚡evals/test-release-preparation.py64 def test_actual_release_keeps_documented_limits(self):CODE
LOWevals/run-omp-pua.py119def _reject_links_and_special_files(root: Path) -> None:CODE
LOWevals/run-omp-pua.py168def _reject_overlapping_trees(source: Path, destination: Path) -> None:CODE
LOWevals/run-omp-pua.py375def _event_identity_or_refusal(event: dict[str, Any]) -> tuple[str | None, bool]:CODE
LOWevals/omp_evidence.py259def _safe_resolved_path_matches(details: dict[str, Any], expected_source: Path | None) -> bool | None:CODE
23 more matches not shown…
Decorative Section Separators16 hits · 60 pts
SeverityFileLineSnippetContext
MEDIUMevals/test-no-telemetry.sh71# ── 1. Known collection hosts must not be referenced anywhere ────────────────COMMENT
MEDIUMevals/test-no-telemetry.sh78# ── 2. Nothing may send a request BODY to a remote target ───────────────────COMMENT
MEDIUM⚡evals/test-no-telemetry.sh107# ── 3. The removed assets must stay removed ──────────────────────────────────COMMENT
MEDIUM⚡evals/test-no-telemetry.sh113# ── 4. No hook may register heartbeat telemetry on any event ────────────────COMMENT
MEDIUM⚡evals/test-no-telemetry.sh116# ── 5. Cloudflare bindings for collected data must not be re-declared ───────COMMENT
MEDIUM⚡evals/test-no-telemetry.sh119# ── 6. Positive control — local feedback must still work ───────────────────COMMENT
MEDIUMhooks/sanitize-session.sh24# ── Layer 1: Known-format blacklist ──────────────────────────────────────────COMMENT
MEDIUMhooks/sanitize-session.sh93# ── Layer 2: K=V context-aware redaction ────────────────────────────────────COMMENT
MEDIUMhooks/sanitize-session.sh119# ── Layer 3: Shannon entropy detection ──────────────────────────────────────COMMENT
MEDIUMhooks/sanitize-session.sh137# ── Sanitize ─────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡hooks/pua-loop-hook.sh39# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUM⚡hooks/pua-loop-hook.sh48# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUM⚡hooks/pua-loop-hook.sh55# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUM⚡hooks/pua-loop-hook.sh60# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMhooks/pua-loop-hook.sh86# ═══════════════════════════════════════════════════════════════COMMENT
MEDIUMhooks/pua-loop-hook.sh90# ═══════════════════════════════════════════════════════════════COMMENT
Excessive Try-Catch Wrapping23 hits · 25 pts
SeverityFileLineSnippetContext
LOWevals/test-integrity-guard.sh55except Exception as exc:CODE
LOWevals/test-integrity-guard.sh90except Exception as exc:CODE
LOWevals/test-integrity-guard.sh124except Exception as exc:CODE
LOWevals/check-fable-artifacts.py61 except Exception as error:CODE
LOWevals/check-fable-artifacts.py113 except Exception as error:CODE
LOWevals/check-fable-artifacts.py142 except Exception as error:CODE
MEDIUMevals/check-fable-artifacts.py33def raises(error, fn, *args):CODE
LOWhooks/frustration-trigger.sh29except Exception:CODE
LOWhooks/sanitize-session.sh161 except Exception:CODE
LOWhooks/failure-detector.sh55except Exception:CODE
LOWhooks/failure-detector.sh71except Exception:CODE
LOWhooks/integrity-guard.sh29except Exception:CODE
LOWhooks/integrity-guard.sh53 except Exception:CODE
LOWhooks/integrity-guard.sh61 except Exception:CODE
LOWhooks/integrity-guard.sh125 except Exception:CODE
LOWhooks/integrity-guard.sh261 except Exception:CODE
LOWhooks/flavor-helper.sh49except Exception:CODE
LOWhooks/runtime-state.py453 except Exception:CODE
MEDIUMhooks/runtime-state.py54def read_payload() -> Dict[str, Any]:CODE
LOWhooks/session-restore.sh29except Exception:CODE
LOWhooks/session-restore.sh38except Exception:CODE
LOWhooks/checkpoint-save.sh33except Exception:CODE
LOWcommands/offline.md19except Exception:CODE
Empty Error Handlers4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHevals/run-cc0-fable.py65except subprocess.TimeoutExpired:CODE
HIGHhooks/runtime-state.py192except OSError:CODE
HIGHhooks/runtime-state.py199except OSError:CODE
HIGHhooks/runtime-state.py229except OSError:CODE
Deep Nesting16 hits · 16 pts
SeverityFileLineSnippetContext
LOWevals/run-codex-pua.py497CODE
LOWevals/run-codex-pua.py521CODE
LOWevals/run-codex-pua.py756CODE
LOWevals/test-cc0-fable.py22CODE
LOWevals/test-omp-evidence.py163CODE
LOWevals/prepare-multimodel-evals.py26CODE
LOWevals/run-cc0-fable.py32CODE
LOWevals/check-model-compat-fix.py16CODE
LOWevals/run-omp-pua.py390CODE
LOWevals/run-claude-model-compat.py16CODE
LOWevals/check-fable-artifacts.py68CODE
LOWevals/omp_evidence.py272CODE
LOWevals/cc0_fable_evidence.py7CODE
LOWevals/check-model-compat-text.py13CODE
LOWhooks/runtime-state.py213CODE
LOWhooks/runtime-state.py438CODE
Unused Imports11 hits · 11 pts
SeverityFileLineSnippetContext
LOWevals/run-codex-pua.py22CODE
LOWevals/test-codex-evidence.py9CODE
LOWevals/test-omp-evidence.py8CODE
LOWevals/run-omp-pua.py22CODE
LOWevals/run-omp-pua.py26CODE
LOWevals/run-omp-pua.py36CODE
LOWevals/omp_evidence.py13CODE
LOWevals/test-hook-runtime.py11CODE
LOWhooks/runtime-state.py21CODE
LOWscripts/build-model-compat.py3CODE
LOWscripts/prepare-release.py3CODE
Cross-Language Confusion1 hit · 8 pts
SeverityFileLineSnippetContext
HIGH⚡evals/test-omp-evidence.py229 ('[]', None), ('{"version":null}', None), ('not-json', None)]:CODE
Over-Commented Block7 hits · 7 pts
SeverityFileLineSnippetContext
LOWlanding/wrangler.toml1name = "pua-skill"COMMENT
LOWevals/test-no-telemetry.sh1#!/usr/bin/env bashCOMMENT
LOWevals/test-no-telemetry.sh21COMMENT
LOWevals/test-no-telemetry.sh81# is telemetry and must not.COMMENT
LOWhooks/subagent-teardown.sh1#!/bin/bashCOMMENT
LOWhooks/pua-loop-hook.sh1#!/bin/bashCOMMENT
LOWhooks/pua-loop-hook.sh41#COMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMevals/run-claude-model-compat.py59 # Close stdin: never let Claude read this harness source as task input.COMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWhooks/pua-loop-hook.sh117# Check if loop is pausedCOMMENT