AI Slop Code RIsk Monitor

JimLiu/baoyu-skills

4.4 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for JimLiu/baoyu-skills, a TypeScript project with 26,525 GitHub stars. SynthScan examined 103,889 lines of code across 683 source files, recording 322 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 4.4 (Low 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.

4.4
Adjusted Signal
4.4
Raw Pattern Score
100%
Time Factor
2026-09-10
Last Push
26.5K
Stars
TypeScript
Language
103.9K
Lines of Code
683
Files
322
Pattern Hits
2026-10-12
Scan Date
0.01
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 16.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 3.4/100 · LOW

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

Agent Over-Engineering Ratio 8.4/100 · LOW

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

PR Review Velocity Impact 16.4/100 · LOW

Which changes need focused human review? 322 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 9MEDIUM 2LOW 311

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 322 distinct pattern matches across 7 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 Overuse117 hits · 182 pts
SeverityFileLineSnippetContext
LOW.claude/skills/release-skills/SKILL.md46### Step 1: Detect Project ConfigurationCOMMENT
LOW.claude/skills/release-skills/SKILL.md118### Step 2: Analyze Changes Since Last TagCOMMENT
LOW.claude/skills/release-skills/SKILL.md146### Step 3: Determine Version BumpCOMMENT
LOW.claude/skills/release-skills/SKILL.md156### Step 4: Generate Multi-language ChangelogsCOMMENT
LOW.claude/skills/release-skills/SKILL.md246### Step 5: Group Changes by Skill/ModuleCOMMENT
LOW.claude/skills/release-skills/SKILL.md272### Step 6: Commit Each Skill/Module SeparatelyCOMMENT
LOW.claude/skills/release-skills/SKILL.md311### Step 7: Generate Changelog and Update VersionCOMMENT
LOW.claude/skills/release-skills/SKILL.md337### Step 8: User ConfirmationCOMMENT
LOW.claude/skills/release-skills/SKILL.md374### Step 9: Create Release Commit and Annotated TagCOMMENT
LOW.claude/skills/release-skills/SKILL.md403### Step 10: Publish Release Artifacts and GitHub ReleaseCOMMENT
LOWskills/baoyu-xhs-images/SKILL.md310### Step 0: Load EXTEND.md ⛔ BLOCKINGCOMMENT
LOWskills/baoyu-xhs-images/SKILL.md326### Step 1: Analyze Content → `analysis.md`COMMENT
LOWskills/baoyu-xhs-images/SKILL.md334### Step 2: Smart Confirm ⚠️ REQUIREDCOMMENT
LOWskills/baoyu-xhs-images/SKILL.md367### Step 3: Generate ImagesCOMMENT
LOWskills/baoyu-xhs-images/SKILL.md396### Step 4: Completion ReportCOMMENT
LOW…oyu-xhs-images/references/workflows/prompt-assembly.md191### Step 0: Resolve Style Preset (if `--preset` used)COMMENT
LOW…oyu-xhs-images/references/workflows/prompt-assembly.md202### Step 1: Load Style DefinitionCOMMENT
LOW…oyu-xhs-images/references/workflows/prompt-assembly.md226### Step 2: Load LayoutCOMMENT
LOW⚡…oyu-xhs-images/references/workflows/prompt-assembly.md238### Step 3: Format ContentCOMMENT
LOW⚡…oyu-xhs-images/references/workflows/prompt-assembly.md246### Step 4: Add Watermark (if applicable)COMMENT
LOW⚡…oyu-xhs-images/references/workflows/prompt-assembly.md251### Step 5: Visual Consistency — Reference Image ChainCOMMENT
LOW⚡…oyu-xhs-images/references/workflows/prompt-assembly.md261### Step 6: CombineCOMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts122 // Step 1: Find and click "写文章" buttonCOMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts161 // Step 2: Fill titleCOMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts217 // Step 3: Fill summary (导语)COMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts271 // Step 4: Insert HTML content into ProseMirror editorCOMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts385 // Step 5: Insert content imagesCOMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts706 // Step 6: Set cover imageCOMMENT
LOWskills/baoyu-infographic/SKILL.md212### Step 1: Setup & AnalyzeCOMMENT
LOWskills/baoyu-infographic/SKILL.md245### Step 2: Generate Structured Content → `structured-content.md`COMMENT
LOWskills/baoyu-infographic/SKILL.md257### Step 3: Recommend CombinationsCOMMENT
LOWskills/baoyu-infographic/SKILL.md267### Step 4: Confirm OptionsCOMMENT
LOWskills/baoyu-infographic/SKILL.md280### Step 5: Generate Prompt → `prompts/infographic.md`COMMENT
LOWskills/baoyu-infographic/SKILL.md295### Step 6: Generate ImageCOMMENT
LOWskills/baoyu-infographic/SKILL.md311### Step 7: Output SummaryCOMMENT
LOWskills/baoyu-cover-image/SKILL.md152### Step 0: Load Preferences ⛔ BLOCKINGCOMMENT
LOWskills/baoyu-cover-image/SKILL.md169### Step 1: Analyze ContentCOMMENT
LOWskills/baoyu-cover-image/SKILL.md187### Step 2: Confirm Options ⚠️COMMENT
LOWskills/baoyu-cover-image/SKILL.md200### Step 3: Create PromptCOMMENT
LOWskills/baoyu-cover-image/SKILL.md211### Step 4: Generate ImageCOMMENT
LOWskills/baoyu-cover-image/SKILL.md224### Step 5: Completion ReportCOMMENT
LOW…oyu-cover-image/references/workflow/confirm-options.md1# Step 2: Confirm OptionsCOMMENT
LOW…oyu-cover-image/references/workflow/prompt-template.md1# Step 3: Prompt TemplateCOMMENT
LOW…oyu-cover-image/references/workflow/prompt-template.md177### Step 1: Analyze ReferencesCOMMENT
LOW…oyu-cover-image/references/workflow/prompt-template.md185### Step 2: Embed in Prompt ⚠️ CRITICALCOMMENT
LOWskills/baoyu-wechat-summary/SKILL.md104### Step 1: Parse the user's requestCOMMENT
LOWskills/baoyu-wechat-summary/SKILL.md125### Step 2: Find the group + resolve folder pathCOMMENT
LOWskills/baoyu-wechat-summary/SKILL.md157### Step 3: Fetch messagesCOMMENT
LOWskills/baoyu-wechat-summary/SKILL.md369### Step 7: Save the digest file(s)COMMENT
LOWskills/baoyu-wechat-summary/SKILL.md383### Step 8: Save history (two files)COMMENT
LOWskills/baoyu-wechat-summary/SKILL.md457### Step 9: Backfill (user-triggered)COMMENT
LOWskills/baoyu-post-to-wechat/SKILL.md140### Step 0: Load PreferencesCOMMENT
LOWskills/baoyu-post-to-wechat/SKILL.md144### Step 1: Determine Input TypeCOMMENT
LOWskills/baoyu-post-to-wechat/SKILL.md158### Step 2: Select Publishing Method and ConfigureCOMMENT
LOWskills/baoyu-post-to-wechat/SKILL.md172### Step 3: Resolve Theme/Color and Validate MetadataCOMMENT
LOWskills/baoyu-post-to-wechat/SKILL.md189### Step 4: PublishCOMMENT
LOWskills/baoyu-post-to-wechat/SKILL.md225### Step 5: Completion ReportCOMMENT
LOWskills/baoyu-format-markdown/SKILL.md67### Step 1: Read & Detect Content TypeCOMMENT
LOWskills/baoyu-format-markdown/SKILL.md103### Step 2: Analyze Content (Reader's Perspective)COMMENT
LOWskills/baoyu-format-markdown/SKILL.md156### Step 3: Check/Create Frontmatter, Title & SummaryCOMMENT
57 more matches not shown…
Hyper-Verbose Identifiers177 hits · 182 pts
SeverityFileLineSnippetContext
LOWpackages/baoyu-chrome-cdp/src/index.ts137export function resolveSharedChromeProfileDir(options: ResolveSharedChromeProfileDirOptions = {}): string {CODE
LOWpackages/baoyu-chrome-cdp/src/index.ts211export async function findExistingChromeDebugPort(options: FindExistingChromeDebugPortOptions): Promise<number | null> {CODE
LOWpackages/baoyu-chrome-cdp/src/index.ts237export function getDefaultChromeUserDataDirs(channels: ChromeChannel[] = ["stable"]): string[] {CODE
LOWpackages/baoyu-chrome-cdp/src/index.ts277export async function discoverRunningChromeDebugPort(options: DiscoverRunningChromeOptions = {}): Promise<DiscoveredChroCODE
LOWpackages/baoyu-fetch/src/adapters/youtube/utils.ts123export function parseYouTubeDescriptionChapters(description?: string | null): YouTubeChapter[] {CODE
LOWpackages/baoyu-fetch/src/adapters/youtube/utils.ts169function renderDescriptionMarkdown(description: string): string {CODE
LOWpackages/baoyu-fetch/src/adapters/youtube/utils.ts183export function renderYouTubeTranscriptMarkdown({CODE
LOWpackages/baoyu-fetch/src/adapters/youtube/utils.ts238export function buildYouTubeThumbnailCandidates(videoId: string, listedUrls: string[]): string[] {CODE
LOWpackages/baoyu-fetch/src/adapters/youtube/transcript.ts101export async function extractYouTubeTranscriptDocument(CODE
LOWpackages/baoyu-fetch/src/adapters/hn/index.ts239function extractUnixSecondsFromAge(element: Element | null): number | undefined {CODE
LOWpackages/baoyu-fetch/src/adapters/x/article.ts407export function extractArticleDocumentFromPayload(CODE
LOWpackages/baoyu-fetch/src/adapters/x/payloads.ts4export function getRelevantXThreadEntries(context: AdapterContext) {CODE
LOWpackages/baoyu-fetch/src/adapters/x/payloads.ts17export async function prefetchRelevantXThreadBodies(context: AdapterContext): Promise<void> {CODE
LOWpackages/baoyu-fetch/src/adapters/x/shared.ts259function getVideoVariantContentType(variant: JsonObject): string {CODE
LOWpackages/baoyu-fetch/src/adapters/x/shared.ts264export function resolveBestXVideoVariantUrl(mediaInfo: unknown): string | undefined {CODE
LOWpackages/baoyu-fetch/src/adapters/x/session.ts28export function hasRequiredXSessionCookies(cookieMap: Record<string, string>): boolean {CODE
LOWpackages/baoyu-fetch/src/adapters/x/single.ts4export function extractSingleTweetDocumentFromPayload(CODE
LOWpackages/baoyu-fetch/src/adapters/x/index.ts24function extractDocumentFromPayloads(CODE
LOWpackages/baoyu-fetch/src/adapters/x/thread.ts64function collectTweetFromItemContent(CODE
LOWpackages/baoyu-fetch/src/adapters/x/thread.ts232export function extractThreadTweetsFromPayloads(CODE
LOWpackages/baoyu-fetch/src/adapters/x/thread.ts285export function extractThreadDocumentFromPayloads(CODE
LOWpackages/baoyu-fetch/src/browser/page-snapshot.ts101export async function captureNormalizedPageSnapshot(CODE
LOWpackages/baoyu-fetch/src/browser/interaction-gates.ts16export function detectInteractionGateFromSnapshot(snapshot: GateSnapshot): WaitForInteractionRequest | null {CODE
LOWpackages/baoyu-fetch/src/browser/profile.ts34export function resolveSharedChromeProfileDir(CODE
LOWpackages/baoyu-fetch/src/browser/profile.ts70export function shouldRetryChromeLaunchRecovery(options: {CODE
LOWpackages/baoyu-fetch/src/browser/profile.ts77export function findChromeProcessUsingProfile(profileDir: string): boolean {CODE
LOWpackages/baoyu-fetch/src/browser/profile.ts163export async function findExistingChromeDebugPort(CODE
LOWpackages/baoyu-fetch/src/commands/convert.ts87export function shouldKeepBrowserOpenAfterInteraction(options: {CODE
LOWpackages/baoyu-fetch/src/commands/convert.ts94export function shouldAutoContinueForceWait(CODE
LOWpackages/baoyu-fetch/src/commands/convert.ts194async function isInteractionSessionReady(CODE
LOWpackages/baoyu-fetch/src/extract/html-to-markdown.ts147export function extractTitleFromMarkdownDocument(markdown: string): string | undefined {CODE
LOWpackages/baoyu-fetch/src/extract/html-to-markdown.ts476function shouldCompareWithFallback(markdown: string): boolean {CODE
LOWpackages/baoyu-fetch/src/extract/html-to-markdown.ts481function hasMeaningfulMarkdownStructure(markdown: string): boolean {CODE
LOWpackages/baoyu-fetch/src/extract/html-to-markdown.ts496function shouldTryRemoteMarkdownFallback(CODE
LOWpackages/baoyu-fetch/src/extract/html-to-markdown.ts508function shouldPreferRemoteMarkdown(CODE
LOWpackages/baoyu-fetch/src/extract/html-to-markdown.ts524function buildRemoteFallbackReason(current: HtmlToMarkdownResult, html: string): string {CODE
LOWpackages/baoyu-fetch/src/extract/html-to-markdown.ts629function convertHtmlFragmentToMarkdown(html: string): string {CODE
LOWpackages/baoyu-fetch/src/media/media-utils.ts71export function resolveExtensionFromContentType(contentType: string): string | undefined {CODE
LOWpackages/baoyu-fetch/src/media/media-utils.ts75export function resolveKindFromContentType(contentType: string): MediaKind | undefined {CODE
LOWpackages/baoyu-fetch/src/media/markdown-media.ts95function formatMarkdownDestination(url: string): string {CODE
LOW⚡packages/baoyu-fetch/src/media/markdown-media.ts120function isParagraphWithSingleText(node: MarkdownAstNode | undefined, expectedValue: string): boolean {CODE
LOW⚡packages/baoyu-fetch/src/media/markdown-media.ts129function getSingleImageFromParagraph(node: MarkdownAstNode | undefined): MarkdownAstNode | null {CODE
LOW⚡packages/baoyu-fetch/src/media/markdown-media.ts137function extractBrokenLinkedImageDestination(node: MarkdownAstNode | undefined): string | null {CODE
LOWpackages/baoyu-fetch/src/media/markdown-media.ts161function collectLinkedImageReplacements(CODE
LOWpackages/baoyu-fetch/src/media/markdown-media.ts184function collectBrokenLinkedImageReplacements(CODE
LOWpackages/baoyu-fetch/src/media/markdown-media.ts241function normalizeLinkedImageMarkdown(markdown: string): string {CODE
LOWpackages/baoyu-fetch/src/media/markdown-media.ts255export function normalizeMarkdownMediaLinks(markdown: string): string {CODE
LOWpackages/baoyu-fetch/src/media/markdown-media.ts409export function rewriteMarkdownMediaLinks(CODE
LOWpackages/baoyu-md/src/mermaid-preprocess.ts48export async function preprocessMermaidInMarkdown(CODE
LOWpackages/baoyu-md/src/images.ts17export function replaceMarkdownImagesWithPlaceholders(CODE
LOWpackages/baoyu-md/src/images.ts150function parseObsidianImageWikilink(target: string): {CODE
LOWpackages/baoyu-md/src/images.ts167function hasExplicitImageExtension(value: string): boolean {CODE
LOWpackages/baoyu-md/src/images.ts261function buildAttachmentFallbackPath(imagePath: string, baseDir: string): string | undefined {CODE
LOWpackages/baoyu-md/src/document.ts74export function buildMarkdownDocumentMeta(CODE
LOWpackages/baoyu-md/src/renderer.ts91function parseFrontMatterAndContent(markdownText: string): ParseResult {CODE
LOWskills/baoyu-youtube-transcript/scripts/transcript.ts112function splitSnippetAtPunctuation(snippet: Snippet): { text: string; start: number; end: number }[] {CODE
LOWskills/baoyu-youtube-transcript/scripts/youtube.ts236export async function fetchTranscriptWithFallback(CODE
LOWskills/baoyu-youtube-transcript/scripts/youtube.ts327export function buildTranscriptListFromYtDlp(info: YtDlpInfo): TranscriptInfo[] {CODE
LOWskills/baoyu-post-to-weibo/scripts/weibo-utils.ts67export async function findExistingChromeDebugPort(profileDir: string): Promise<number | null> {CODE
LOWskills/baoyu-post-to-weibo/scripts/copy-to-clipboard.ts128function getMacSwiftClipboardSource(): string {CODE
117 more matches not shown…
Cross-Language Confusion (JS/TS)9 hits · 65 pts
SeverityFileLineSnippetContext
HIGH⚡packages/baoyu-fetch/src/utils/logger.ts15 print("info", message);CODE
HIGH⚡packages/baoyu-fetch/src/utils/logger.ts18 print("warn", message);CODE
HIGH⚡packages/baoyu-fetch/src/utils/logger.ts21 print("error", message);CODE
HIGH⚡packages/baoyu-fetch/src/utils/logger.ts25 print("debug", message);CODE
HIGH…ls/baoyu-danger-x-to-markdown/scripts/markdown.test.ts52print('hello from x article')CODE
HIGH⚡…ills/baoyu-url-to-markdown/scripts/lib/utils/logger.ts15 print("info", message);CODE
HIGH⚡…ills/baoyu-url-to-markdown/scripts/lib/utils/logger.ts18 print("warn", message);CODE
HIGH⚡…ills/baoyu-url-to-markdown/scripts/lib/utils/logger.ts21 print("error", message);CODE
HIGH⚡…ills/baoyu-url-to-markdown/scripts/lib/utils/logger.ts25 print("debug", message);CODE
Verbosity Indicators8 hits · 14 pts
SeverityFileLineSnippetContext
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts122 // Step 1: Find and click "写文章" buttonCOMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts161 // Step 2: Fill titleCOMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts217 // Step 3: Fill summary (导语)COMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts271 // Step 4: Insert HTML content into ProseMirror editorCOMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts385 // Step 5: Insert content imagesCOMMENT
LOWskills/baoyu-post-to-weibo/scripts/weibo-article.ts706 // Step 6: Set cover imageCOMMENT
LOW⚡skills/baoyu-image-gen/scripts/providers/jimeng.ts459 // Step 1: Submit taskCOMMENT
LOW⚡skills/baoyu-image-gen/scripts/providers/jimeng.ts462 // Step 2: Poll for result (returns image data directly)COMMENT
Fake / Example Data7 hits · 7 pts
SeverityFileLineSnippetContext
LOW…ls/baoyu-infographic/references/styles/ui-wireframe.md23- Placeholder "Lorem ipsum"CODE
LOWskills/baoyu-post-to-wechat/scripts/md-to-wechat.ts132 "placeholder": "WECHATIMGPH_1",CODE
LOWskills/baoyu-post-to-x/references/articles.md144 "placeholder": "XIMGPH_1",CODE
LOW…ls/baoyu-image-gen/scripts/providers/dashscope.test.ts269 useEnv(t, { DASHSCOPE_API_KEY: "fake-key" });CODE
LOW…ls/baoyu-image-gen/scripts/providers/dashscope.test.ts308 useEnv(t, { DASHSCOPE_API_KEY: "fake-key" });CODE
LOW…ls/baoyu-image-gen/scripts/providers/dashscope.test.ts346 useEnv(t, { DASHSCOPE_API_KEY: "fake-key" });CODE
LOWskills/baoyu-markdown-to-html/SKILL.md194 "placeholder": "MDTOHTMLIMGPH_1",CODE
Modern AI Meta-Vocabulary2 hits · 5 pts
SeverityFileLineSnippetContext
MEDIUMskills/baoyu-wechat-summary/SKILL.md3description: Summarizes WeChat group chat highlights into a structured digest using the local wx-cli binary (https://gitCODE
MEDIUMskills/baoyu-wechat-summary/references/profiles.md234## 5. Privacy guardrailsCOMMENT
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippetContext
LOWpackages/baoyu-md/src/code-themes/agate.min.css1pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!COMMENT
LOWskills/baoyu-post-to-x/scripts/md-to-html.ts141// `marked`'s emphasis tokenizer treats a closing `**`/`*` directly followed by aCOMMENT