AI Slop Code RIsk Monitor

handsomestWei/patent-disclosure-skill

中国专利.skill:专利点挖掘与交底书(发明/实用/外观)编写,通俗解读专利,嗅探政策动向,辅助审查答复。

23.1 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for handsomestWei/patent-disclosure-skill, a Python project with 11,295 GitHub stars. SynthScan examined 77,393 lines of code across 453 source files, recording 1231 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 23.1 (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.

23.1
Adjusted Signal
23.1
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
11.3K
Stars
Python
Language
77.4K
Lines of Code
453
Files
1.2K
Pattern Hits
2026-10-12
Scan Date
0.31
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 32.7/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 26.9/100 · MEDIUM

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

Agent Over-Engineering Ratio 52.7/100 · HIGH

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

PR Review Velocity Impact 72.0/100 · HIGH

Which changes need focused human review? 1231 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 142MEDIUM 14LOW 1075

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 1231 distinct pattern matches across 13 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 Identifiers467 hits · 460 pts
SeverityFileLineSnippetContext
LOWscripts/generate-star-history.py372def remove_old_versioned_outputs(output: pathlib.Path, keep: pathlib.Path) -> None:STRING
LOWscripts/generate-star-history.py383def update_readme_cache_buster(STRING
LOWskills/patent-reader/tools/patent_type.py117def infer_patent_type_from_pub(pub: str | None) -> str | None:CODE
LOWskills/patent-reader/tools/patent_type.py132def infer_patent_type_from_biblio(text: str | None) -> str | None:CODE
LOWskills/patent-reader/tools/patent_type.py146def resolve_reader_patent_type(CODE
LOWskills/patent-reader/tools/patent_type.py211def google_patents_websearch_query(CODE
LOWskills/patent-reader/tools/shared/common.py38def persisted_vault_config_path() -> Path:CODE
LOWskills/patent-reader/tools/shared/common.py90def detect_obsidian_installed() -> dict:CODE
LOWskills/patent-reader/tools/shared/common.py140def _parse_obsidian_json_vaults(cfg_path: Path) -> list[dict]:CODE
LOWskills/patent-reader/tools/shared/common.py169def candidate_default_vault_paths() -> list[Path]:CODE
LOWskills/patent-reader/tools/shared/common.py322def probe_obsidian_environment() -> dict:CODE
LOWskills/patent-reader/tools/shared/common.py684def load_ipc_application_hints() -> list[dict]:CODE
LOWskills/patent-reader/tools/shared/common.py879def extract_application_number(text: str) -> str:CODE
LOWskills/patent-reader/tools/shared/common.py916def extract_cited_pub_numbers(text: str, self_pub: str = "") -> list[str]:CODE
LOWskills/patent-reader/tools/shared/common.py930def organizations_from_assignees(assignees: list[str]) -> list[str]:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_parse.py66def extract_class_codes_from_html(html: str) -> tuple[list[str], list[str]]:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_parse.py121def select_hits_for_disclosure(CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_parse.py165def backfill_hits_for_disclosure(CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_parse.py222def _extract_abstract_from_item_html(item_html: str) -> str | None:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_parse.py255def normalize_application_number(value: str | None) -> str | None:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_parse.py393def _parse_overview_card_layout(html: str) -> list[EpubSearchHit]:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_parse.py491def _parse_search_result_fallback_links(html: str) -> list[EpubSearchHit]:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_crawler.py139def open_epub_advanced_search(page: Page) -> None:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_crawler.py199def apply_epub_advanced_type_filter(page: Page, patent_type: str = TYPE_ALL) -> None:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_crawler.py227def wait_for_epub_advanced_ready(page: Page, *, max_wait_sec: float | None = None) -> None:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_crawler.py365def search_epub_keyword_with_page(CODE
LOWskills/patent-reader/tools/extract/figure_extract.py144def _count_text_chars_in_bbox(page, bbox: tuple[float, float, float, float]) -> int:CODE
LOWskills/patent-reader/tools/extract/figure_extract.py225def _estimate_bbox_near_caption(CODE
LOWskills/patent-reader/tools/extract/figure_extract.py516def extract_patent_pdf_figures(CODE
LOW…lls/patent-reader/tools/extract/extract_patent_text.py197def extract_background_snippets(text: str) -> list[str]:CODE
LOWskills/patent-reader/tools/extract/fetch_patent_pdf.py113def extract_pdf_urls_from_html(html: str, pub: str) -> list[str]:CODE
LOWskills/patent-reader/tools/vault/obsidian_glossary.py121def _glossary_file_matches_term(path: Path, term: str) -> bool:CODE
LOWskills/patent-reader/tools/vault/obsidian_glossary.py158def append_glossary_backlinks(CODE
LOWskills/patent-reader/tools/vault/obsidian_glossary.py250def _normalize_glossary_backlink_section(body: str) -> tuple[str, bool]:CODE
LOWskills/patent-reader/tools/vault/obsidian_glossary.py286def repair_glossary_backlinks(vault: Path, glossary_dir: str) -> int:CODE
LOWskills/patent-reader/tools/vault/obsidian_glossary.py306def purge_spurious_patent_notes(vault: Path, papers_dir: str) -> list[str]:CODE
LOWskills/patent-reader/tools/vault/obsidian_glossary.py395def _fill_glossary_definition(path: Path, term: str, definition: str) -> bool:CODE
LOWskills/patent-reader/tools/vault/schema_vault.py91def render_structure_section_md(schema: dict) -> str:CODE
LOWskills/patent-reader/tools/vault/schema_vault.py140def render_appearance_section_md(schema: dict) -> str:CODE
LOWskills/patent-reader/tools/vault/schema_vault.py211def upsert_appearance_section(content: str, section_md: str) -> str:CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py138def sanitize_user_facing_titles(content: str) -> str:CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py216def sanitize_internal_tool_leakage(content: str) -> str:CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py269def harvest_glossary_from_note(content: str) -> list[dict]:CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py303def merge_glossary_candidates(CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py359def copy_source_pdf_to_note_dir(CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py536def harvest_narrative_from_note(content: str) -> dict[str, str]:CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py590def _strip_stale_figure_blocks(content: str) -> str:CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py56def split_cn_description_paragraphs(text: str) -> dict[str, str]:CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py77def description_text_from_raw_sections(raw_sections_path: Path) -> str:CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py95def load_description_paragraphs(workdir: Path | None) -> dict[str, str]:CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py122def write_description_paragraphs_json(CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py193def parse_cited_paragraph_numbers(content: str) -> list[str]:CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py201def paragraph_anchor_basename(pub: str) -> str:CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py214def render_paragraph_anchor_note(CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py283def format_citation_wikilinks(pub: str, start: str, end: str | None = None) -> str:CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py289def upgrade_legacy_citation_wikilinks(content: str, *, pub: str) -> str:CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py303def wikilink_description_citations(content: str, *, pub: str) -> str:CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py319def ensure_desc_paragraphs_nav(content: str, *, pub: str) -> str:CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py348def materialize_description_paragraphs(CODE
LOWskills/patent-reader/tools/vault/obsidian_bootstrap.py129def _repair_index_glossary_dataview(index_path: Path, glossary_dir: str) -> bool:CODE
407 more matches not shown…
Cross-File Repetition57 hits · 285 pts
SeverityFileLineSnippetContext
HIGHskills/patent-reader/tools/browser.py0启动 chromium 内核浏览器。 返回 ``(browser, label)``,label 为 ``chrome`` / ``msedge`` / ``chromium``。 全部失败时抛出 runtimeerror,文案含安装提示(STRING
HIGHskills/patent-disclosure/tools/browser.py0启动 chromium 内核浏览器。 返回 ``(browser, label)``,label 为 ``chrome`` / ``msedge`` / ``chromium``。 全部失败时抛出 runtimeerror,文案含安装提示(STRING
HIGHskills/patent-search/tools/browser.py0启动 chromium 内核浏览器。 返回 ``(browser, label)``,label 为 ``chrome`` / ``msedge`` / ``chromium``。 全部失败时抛出 runtimeerror,文案含安装提示(STRING
HIGHskills/patent-reader/tools/browser.py0本机浏览器自己的 ua,只把无头标记 ``headlesschrome`` 换成 ``chrome``。 版本号须与真实内核一致:写死旧版本时,公布站放行页面却拒绝表单提交(http 400)。STRING
HIGHskills/patent-disclosure/tools/browser.py0本机浏览器自己的 ua,只把无头标记 ``headlesschrome`` 换成 ``chrome``。 版本号须与真实内核一致:写死旧版本时,公布站放行页面却拒绝表单提交(http 400)。STRING
HIGHskills/patent-search/tools/browser.py0本机浏览器自己的 ua,只把无头标记 ``headlesschrome`` 换成 ``chrome``。 版本号须与真实内核一致:写死旧版本时,公布站放行页面却拒绝表单提交(http 400)。STRING
HIGHskills/patent-reader/tools/browser.py0尝试实际启动(无界面)。供 ``--probe`` 与 agent 判断是否需要下 chromium。STRING
HIGHskills/patent-disclosure/tools/browser.py0尝试实际启动(无界面)。供 ``--probe`` 与 agent 判断是否需要下 chromium。STRING
HIGHskills/patent-search/tools/browser.py0尝试实际启动(无界面)。供 ``--probe`` 与 agent 判断是否需要下 chromium。STRING
HIGHskills/patent-reader/tools/stdio_utf8.py0windows 终端 utf-8:当前进程 stdio + 子进程 pythonutf8。 powershell 5 会把写入 stderr 标成 nativecommanderror,但退出码仍可能是 0。 agent 应以退出码和机读前STRING
HIGHskills/patent-disclosure/tools/stdio_utf8.py0windows 终端 utf-8:当前进程 stdio + 子进程 pythonutf8。 powershell 5 会把写入 stderr 标成 nativecommanderror,但退出码仍可能是 0。 agent 应以退出码和机读前STRING
HIGHskills/patent-docket/tools/stdio_utf8.py0windows 终端 utf-8:当前进程 stdio + 子进程 pythonutf8。 powershell 5 会把写入 stderr 标成 nativecommanderror,但退出码仍可能是 0。 agent 应以退出码和机读前STRING
HIGHskills/patent-application/tools/stdio_utf8.py0windows 终端 utf-8:当前进程 stdio + 子进程 pythonutf8。 powershell 5 会把写入 stderr 标成 nativecommanderror,但退出码仍可能是 0。 agent 应以退出码和机读前STRING
HIGHskills/patent-search/tools/stdio_utf8.py0windows 终端 utf-8:当前进程 stdio + 子进程 pythonutf8。 powershell 5 会把写入 stderr 标成 nativecommanderror,但退出码仍可能是 0。 agent 应以退出码和机读前STRING
HIGHskills/patent-oa/tools/stdio_utf8.py0windows 终端 utf-8:当前进程 stdio + 子进程 pythonutf8。 powershell 5 会把写入 stderr 标成 nativecommanderror,但退出码仍可能是 0。 agent 应以退出码和机读前STRING
HIGHskills/patent-reader/tools/patent_type.py0由中国公开号/公告号文献种类码推断 invention|utility_model|design。 无法识别(非 cn 形态、缺种类字母等)时返回 none。STRING
HIGHskills/patent-disclosure/tools/patent_type.py0由中国公开号/公告号文献种类码推断 invention|utility_model|design。 无法识别(非 cn 形态、缺种类字母等)时返回 none。STRING
HIGHskills/patent-search/tools/patent_type.py0由中国公开号/公告号文献种类码推断 invention|utility_model|design。 无法识别(非 cn 形态、缺种类字母等)时返回 none。STRING
HIGHskills/patent-reader/tools/patent_type.py0解读/交底共用:解析最终类型与依据。 优先级:用户显式声明(非 all)> 公开号种类码 > 著录关键词。STRING
HIGHskills/patent-disclosure/tools/patent_type.py0解读/交底共用:解析最终类型与依据。 优先级:用户显式声明(非 all)> 公开号种类码 > 著录关键词。STRING
HIGHskills/patent-search/tools/patent_type.py0解读/交底共用:解析最终类型与依据。 优先级:用户显式声明(非 all)> 公开号种类码 > 著录关键词。STRING
HIGHskills/patent-reader/tools/patent_type.py0构造供 websearch / 浏览器使用的 google patents 倾向查询串(非官方 api)。 ``class_codes``:发明/实用用 ``cpc=b01j20/low``;外观把洛迦诺号当补充词(无稳定 loc 字段)。STRING
HIGHskills/patent-disclosure/tools/patent_type.py0构造供 websearch / 浏览器使用的 google patents 倾向查询串(非官方 api)。 ``class_codes``:发明/实用用 ``cpc=b01j20/low``;外观把洛迦诺号当补充词(无稳定 loc 字段)。STRING
HIGHskills/patent-search/tools/patent_type.py0构造供 websearch / 浏览器使用的 google patents 倾向查询串(非官方 api)。 ``class_codes``:发明/实用用 ``cpc=b01j20/low``;外观把洛迦诺号当补充词(无稳定 loc 字段)。STRING
HIGHskills/patent-reader/tools/crawl/cnipa_epub_parse.py0第二轮不足 ``min_keep`` 时,从第一轮池里按同一分类号回补。 返回 ``(hits, reason)``:``primary_enough`` / ``backfilled`` / ``still_short``。 不把分类号明STRING
HIGH…ills/patent-disclosure/tools/crawl/cnipa_epub_parse.py0第二轮不足 ``min_keep`` 时,从第一轮池里按同一分类号回补。 返回 ``(hits, reason)``:``primary_enough`` / ``backfilled`` / ``still_short``。 不把分类号明STRING
HIGHskills/patent-search/tools/cnipa_parse.py0第二轮不足 ``min_keep`` 时,从第一轮池里按同一分类号回补。 返回 ``(hits, reason)``:``primary_enough`` / ``backfilled`` / ``still_short``。 不把分类号明STRING
HIGHskills/patent-reader/tools/crawl/cnipa_epub_parse.py0从单条 ``div.item`` 内 ``dt`` 摘要对应的 ``dd`` 中抽取全文(含折叠 span)。STRING
HIGH…ills/patent-disclosure/tools/crawl/cnipa_epub_parse.py0从单条 ``div.item`` 内 ``dt`` 摘要对应的 ``dd`` 中抽取全文(含折叠 span)。STRING
HIGHskills/patent-search/tools/cnipa_parse.py0从单条 ``div.item`` 内 ``dt`` 摘要对应的 ``dd`` 中抽取全文(含折叠 span)。STRING
HIGHskills/patent-reader/tools/crawl/cnipa_epub_parse.py0extract a ``dt``/``dd`` value from the publication-card layout.STRING
HIGH…ills/patent-disclosure/tools/crawl/cnipa_epub_parse.py0extract a ``dt``/``dd`` value from the publication-card layout.STRING
HIGHskills/patent-search/tools/cnipa_parse.py0extract a ``dt``/``dd`` value from the publication-card layout.STRING
HIGHskills/patent-reader/tools/crawl/cnipa_epub_parse.py0normalize a chinese application number to ``yyyy...n.check`` form.STRING
HIGH…ills/patent-disclosure/tools/crawl/cnipa_epub_parse.py0normalize a chinese application number to ``yyyy...n.check`` form.STRING
HIGHskills/patent-search/tools/cnipa_parse.py0normalize a chinese application number to ``yyyy...n.check`` form.STRING
HIGHskills/patent-reader/tools/crawl/cnipa_epub_parse.py0return the result count displayed by cnipa when the page exposes it.STRING
HIGH…ills/patent-disclosure/tools/crawl/cnipa_epub_parse.py0return the result count displayed by cnipa when the page exposes it.STRING
HIGHskills/patent-search/tools/cnipa_parse.py0return the result count displayed by cnipa when the page exposes it.STRING
HIGHskills/patent-reader/tools/crawl/cnipa_epub_parse.py0解析「公布公告」检索结果列表页 html。 兼容常见表格行 / 带链接的条目(站点改版时需调整正则或选择器)。STRING
HIGH…ills/patent-disclosure/tools/crawl/cnipa_epub_parse.py0解析「公布公告」检索结果列表页 html。 兼容常见表格行 / 带链接的条目(站点改版时需调整正则或选择器)。STRING
HIGHskills/patent-search/tools/cnipa_parse.py0解析「公布公告」检索结果列表页 html。 兼容常见表格行 / 带链接的条目(站点改版时需调整正则或选择器)。STRING
HIGHskills/patent-reader/tools/crawl/cnipa_epub_parse.py0新版「公布模式」结果页:无表格行,每条为 ``div.item``,题名在 ``h1.title``, 详情 url 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/cn…"`` STRING
HIGH…ills/patent-disclosure/tools/crawl/cnipa_epub_parse.py0新版「公布模式」结果页:无表格行,每条为 ``div.item``,题名在 ``h1.title``, 详情 url 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/cn…"`` STRING
HIGHskills/patent-search/tools/cnipa_parse.py0新版「公布模式」结果页:无表格行,每条为 ``div.item``,题名在 ``h1.title``, 详情 url 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/cn…"`` STRING
HIGHskills/patent-reader/tools/crawl/cnipa_epub_crawler.py0(titles) => { const t = document.title.trim(); if (t === titles.nohit) return true; if (t !== titles.result) return falsSTRING
HIGHskills/patent-disclosure/tools/crawl/cnipa_epub_nav.py0(titles) => { const t = document.title.trim(); if (t === titles.nohit) return true; if (t !== titles.result) return falsSTRING
HIGHskills/patent-search/tools/cnipa_crawler.py0(titles) => { const t = document.title.trim(); if (t === titles.nohit) return true; if (t !== titles.result) return falsSTRING
HIGHskills/patent-reader/tools/crawl/cnipa_epub_crawler.py0({id, checked}) => { const el = document.getelementbyid(id); if (!el) return; el.checked = checked; el.dispatchevent(newSTRING
HIGHskills/patent-disclosure/tools/crawl/cnipa_epub_nav.py0({id, checked}) => { const el = document.getelementbyid(id); if (!el) return; el.checked = checked; el.dispatchevent(newSTRING
HIGHskills/patent-search/tools/cnipa_crawler.py0({id, checked}) => { const el = document.getelementbyid(id); if (!el) return; el.checked = checked; el.dispatchevent(newSTRING
HIGHskills/patent-disclosure/tools/md_to_docx.py0匹配 ``\\(...\\)`` + 紧随的公式 png 注释;返回 (start,end,latex,alt,src)。STRING
HIGHskills/patent-application/tools/md_to_docx.py0匹配 ``\\(...\\)`` + 紧随的公式 png 注释;返回 (start,end,latex,alt,src)。STRING
HIGHskills/patent-oa/tools/md_to_docx.py0匹配 ``\\(...\\)`` + 紧随的公式 png 注释;返回 (start,end,latex,alt,src)。STRING
HIGHskills/patent-disclosure/tools/md_to_docx.py0按列分隔符 ``|`` 拆分表格行,忽略 ``\\(...\\)``、``$...$``、``<!-- -->`` 与 ``\\|`` 内的竖线。STRING
HIGHskills/patent-application/tools/md_to_docx.py0按列分隔符 ``|`` 拆分表格行,忽略 ``\\(...\\)``、``$...$``、``<!-- -->`` 与 ``\\|`` 内的竖线。STRING
HIGHskills/patent-oa/tools/md_to_docx.py0按列分隔符 ``|`` 拆分表格行,忽略 ``\\(...\\)``、``$...$``、``<!-- -->`` 与 ``\\|`` 内的竖线。STRING
Unused Imports315 hits · 282 pts
SeverityFileLineSnippetContext
LOWscripts/generate-star-history.py4CODE
LOWskills/patent-reader/tools/browser.py13CODE
LOWskills/patent-reader/tools/stdio_utf8.py6CODE
LOWskills/patent-reader/tools/patent_type.py3CODE
LOWskills/patent-reader/tools/shared/common.py2CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_parse.py7CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_crawler.py41CODE
LOW…patent-reader/tools/analyze/validate_claim_features.py8CODE
LOW…ls/patent-reader/tools/analyze/build_context_anchor.py12CODE
LOW…lls/patent-reader/tools/analyze/build_claim_mermaid.py8CODE
LOWskills/patent-reader/tools/analyze/lint_patent_note.py10CODE
LOW…s/patent-reader/tools/analyze/validate_public_clues.py12CODE
LOW…lls/patent-reader/tools/analyze/validate_claim_tree.py12CODE
LOWskills/patent-reader/tools/analyze/claim_features.py2CODE
LOWskills/patent-reader/tools/extract/figure_extract.py10CODE
LOW…lls/patent-reader/tools/extract/extract_patent_text.py18CODE
LOW…/patent-reader/tools/extract/extract_patent_figures.py14CODE
LOW…/patent-reader/tools/extract/extract_patent_figures.py57CODE
LOWskills/patent-reader/tools/extract/fetch_patent_pdf.py22CODE
LOW…ills/patent-reader/tools/extract/fetch_design_views.py26CODE
LOWskills/patent-reader/tools/vault/link_patent_notes.py18CODE
LOWskills/patent-reader/tools/vault/build_patent_canvas.py14CODE
LOWskills/patent-reader/tools/vault/obsidian_glossary.py2CODE
LOWskills/patent-reader/tools/vault/schema_vault.py3CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py13CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py10CODE
LOWskills/patent-reader/tools/vault/obsidian_bootstrap.py2CODE
LOWskills/patent-reader/tools/vault/obsidian_claims.py2CODE
LOW…ills/patent-reader/tools/vault/obsidian_frontmatter.py2CODE
LOWskills/patent-reader/tools/vault/check_obsidian_env.py15CODE
LOWskills/patent-reader/tools/vault/note_cites.py5CODE
LOW…/patent-reader/tools/vault/materialize_public_clues.py16CODE
LOWskills/patent-reader/tools/vault/patent_link.py2CODE
LOWskills/patent-reader/tools/vault/obsidian_paths.py2CODE
LOWskills/patent-reader/tools/vault/obsidian.py13CODE
LOWskills/patent-reader/tools/vault/obsidian.py16CODE
LOWskills/patent-reader/tools/vault/obsidian.py16CODE
LOWskills/patent-reader/tools/vault/obsidian.py16CODE
LOWskills/patent-reader/tools/vault/obsidian.py16CODE
LOWskills/patent-reader/tools/vault/obsidian.py16CODE
LOWskills/patent-reader/tools/vault/obsidian.py16CODE
LOWskills/patent-reader/tools/vault/obsidian.py16CODE
LOWskills/patent-reader/tools/vault/obsidian.py25CODE
LOWskills/patent-reader/tools/vault/obsidian.py25CODE
LOWskills/patent-reader/tools/vault/obsidian.py26CODE
LOWskills/patent-reader/tools/vault/obsidian.py26CODE
LOWskills/patent-reader/tools/vault/obsidian.py26CODE
LOWskills/patent-reader/tools/vault/obsidian.py26CODE
LOWskills/patent-reader/tools/vault/obsidian.py26CODE
LOWskills/patent-reader/tools/vault/obsidian.py26CODE
LOWskills/patent-reader/tools/vault/obsidian.py26CODE
LOWskills/patent-reader/tools/vault/obsidian.py26CODE
LOWskills/patent-reader/tools/vault/obsidian.py36CODE
LOWskills/patent-reader/tools/vault/obsidian.py36CODE
LOWskills/patent-reader/tools/vault/obsidian.py36CODE
LOWskills/patent-reader/tools/vault/obsidian.py36CODE
LOWskills/patent-reader/tools/vault/obsidian.py36CODE
LOWskills/patent-reader/tools/vault/obsidian.py36CODE
LOWskills/patent-reader/tools/vault/obsidian.py36CODE
LOWskills/patent-reader/tools/vault/obsidian.py36CODE
255 more matches not shown…
Empty Error Handlers54 hits · 250 pts
SeverityFileLineSnippetContext
HIGHskills/patent-reader/tools/browser.py146except Exception:CODE
HIGHskills/patent-reader/tools/stdio_utf8.py22except (OSError, ValueError, TypeError):CODE
HIGHskills/patent-reader/tools/shared/common.py710except Exception:CODE
HIGHskills/patent-reader/tools/shared/common.py105except OSError:CODE
HIGHskills/patent-reader/tools/crawl/cnipa_epub_crawler.py157except Exception:CODE
HIGHskills/patent-reader/tools/extract/figure_extract.py95except Exception:CODE
HIGH…ills/patent-reader/tools/extract/fetch_design_views.py216except Exception:CODE
HIGH…atent-reader/tools/vault/write_patent_obsidian_note.py993except (OSError, json.JSONDecodeError):CODE
HIGHskills/patent-reader/tools/vault/obsidian_bootstrap.py522except (json.JSONDecodeError, OSError):CODE
HIGHskills/patent-reader/tools/vault/obsidian_bootstrap.py540except (json.JSONDecodeError, OSError, TypeError):CODE
HIGHskills/patent-reader/tools/vault/obsidian_bootstrap.py486except OSError:CODE
HIGHskills/patent-disclosure/tools/md_to_docx.py1075except (AttributeError, KeyError):CODE
HIGHskills/patent-disclosure/tools/step_to_views.py213except Exception:CODE
HIGHskills/patent-disclosure/tools/mermaid_render.py125except Exception:CODE
HIGHskills/patent-disclosure/tools/mermaid_render.py117except Exception:CODE
HIGHskills/patent-disclosure/tools/browser.py146except Exception:CODE
HIGHskills/patent-disclosure/tools/stdio_utf8.py22except (OSError, ValueError, TypeError):CODE
HIGH…ills/patent-disclosure/tools/structure_lineart_gate.py306except Exception:CODE
HIGHskills/patent-disclosure/tools/pptx_to_md.py127except (AttributeError, ValueError):CODE
HIGHskills/patent-disclosure/tools/svg_screenshot.py293except Exception:CODE
HIGHskills/patent-disclosure/tools/svg_screenshot.py298except Exception:CODE
HIGHskills/patent-disclosure/tools/svg_screenshot.py302except Exception:CODE
HIGHskills/patent-disclosure/tools/crawl/cnipa_epub_wait.py140except ValueError:CODE
HIGHskills/patent-disclosure/tools/crawl/cnipa_epub_nav.py325except (PlaywrightTimeoutError, Error):CODE
HIGHskills/patent-disclosure/tools/crawl/cnipa_epub_nav.py142except Error:CODE
HIGHskills/patent-disclosure/tools/crawl/cnipa_epub_nav.py192except Exception:CODE
HIGH…ls/patent-disclosure/tools/crawl/cnipa_epub_crawler.py403except OSError:CODE
HIGH…ls/patent-disclosure/tools/crawl/cnipa_epub_crawler.py499except Exception:CODE
HIGHskills/patent-docket/tools/stdio_utf8.py22except (OSError, ValueError, TypeError):CODE
HIGHskills/patent-application/tools/md_to_docx.py1058except (AttributeError, KeyError):CODE
HIGHskills/patent-application/tools/stdio_utf8.py22except (OSError, ValueError, TypeError):CODE
HIGHskills/patent-search/tools/browser.py146except Exception:CODE
HIGHskills/patent-search/tools/stdio_utf8.py22except (OSError, ValueError, TypeError):CODE
HIGHskills/patent-search/tools/cnipa_crawler.py420except (PlaywrightTimeoutError, Error):CODE
HIGHskills/patent-search/tools/cnipa_crawler.py632except (PlaywrightTimeoutError, Error):CODE
HIGHskills/patent-search/tools/cnipa_crawler.py817except (TypeError, ValueError):CODE
HIGHskills/patent-search/tools/cnipa_crawler.py822except (TypeError, ValueError):CODE
HIGHskills/patent-search/tools/cnipa_crawler.py431except Error:CODE
HIGHskills/patent-search/tools/cnipa_crawler.py467except Exception:CODE
HIGHskills/patent-search/tools/cnipa_crawler.py760except Exception:CODE
HIGHskills/patent-search/tools/cnipa_crawler.py769except (PlaywrightTimeoutError, Error):CODE
HIGHskills/patent-map/tools/serve_map.py48except CONNECTION_ERRORS:CODE
HIGHskills/patent-map/tools/serve_map.py54except CONNECTION_ERRORS:CODE
HIGHskills/patent-map/tools/serve_map.py76except CONNECTION_ERRORS:CODE
HIGHskills/patent-map/tools/serve_map.py94except CONNECTION_ERRORS:CODE
HIGHskills/patent-map/tools/vault_index.py35except OSError:CODE
HIGHskills/patent-map/tools/map_cache.py31except Exception:CODE
HIGHskills/patent-oa/tools/store.py159except sqlite3.OperationalError:CODE
HIGHskills/patent-oa/tools/md_to_docx.py1066except (AttributeError, KeyError):CODE
HIGHskills/patent-oa/tools/config.py106except Exception:CODE
HIGHskills/patent-oa/tools/stdio_utf8.py22except (OSError, ValueError, TypeError):CODE
HIGHskills/patent-oa/tools/refresh_vault.py43except Exception:CODE
HIGHskills/patent-oa/tools/ingest_case.py197except Exception:CODE
HIGHskills/patent-oa/tools/vault_layout.py183except OSError:CODE
Cross-Language Confusion31 hits · 194 pts
SeverityFileLineSnippetContext
HIGH…ills/patent-reader/tools/extract/fetch_design_views.py296 "img", "els => els.map(e => e.currentSrc || e.src || '')"CODE
HIGHskills/patent-disclosure/tools/mermaid_render.py71 return null;CODE
HIGHskills/patent-disclosure/tools/mermaid_render.py73 return String(e && e.message ? e.message : e);CODE
HIGHskills/patent-disclosure/tools/crawl/cnipa_epub_nav.py291 total: m ? Number.parseInt(m[1], 10) : null,CODE
HIGH…ls/patent-disclosure/tools/crawl/cnipa_epub_crawler.py288 body: body.toString(),CODE
HIGHskills/patent-disclosure/tests/test_cnipa_epub_chain.py5需已安装:pip install -r skills/patent-disclosure/tools/crawl/requirements-cnipa.txt && python -m playwright install chromiumSTRING
HIGH⚡skills/patent-search/tools/cnipa_crawler.py130 if (!wanted.length) return null;CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py133 if (!el) return null;CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py140 return null;CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py146 const text = compact(el.innerText || el.textContent || '');CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py147 if (!text || text.length > 24) continue;CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py148 if (!wanted.some((n) => text === n || text.startsWith(n))) continue;CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py159 const inRow = row && row.querySelector('input[type="text"], input:not([type]), textarea');CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py163 for (let i = 0; i < 4 && sib; i += 1) {CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py164 const hit = sib.matches && sib.matches('input, textarea')CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py166 : sib.querySelector && sib.querySelector('input[type="text"], textarea');CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py172 return null;CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py205 const n = Number.parseInt((el && el.textContent) || "", 10);CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py206 return Number.isFinite(n) ? n : null;CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py210 const n = Number.parseInt((el && el.textContent) || "", 10);CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py211 if (Number.isFinite(n) && previous != null && n !== previous) return true;CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py271 return element.disabled || element.hasAttribute("disabled") ||CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py278 const text = (element.innerText || element.value || "").replace(/\\s+/g, "").trim();CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py288 return {found: true, label: text || title || aria || rel || "next"};CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py320 return {clicked: true, label: text || title || aria || rel || "next"};CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py330 const size = Number.parseInt((sizeEl && sizeEl.value) || (per && per[1]) || "", 10);CODE
HIGH⚡skills/patent-search/tools/cnipa_crawler.py332 total_pages: pages ? Number.parseInt(pages[1].replace(/,/g, ""), 10) : null,CODE
HIGHskills/patent-search/tools/cnipa_crawler.py253 (totalScriptMatch ? Number.parseInt(totalScriptMatch[1], 10) : null),CODE
HIGHskills/patent-search/tools/cnipa_crawler.py302 return element.disabled || element.hasAttribute("disabled") ||CODE
HIGHskills/patent-search/tools/cnipa_crawler.py309 const text = (element.innerText || element.value || "").replace(/\\s+/g, "").trim();CODE
HIGHskills/patent-oa/tools/store.py83 case_id text not null,CODE
Excessive Try-Catch Wrapping128 hits · 134 pts
SeverityFileLineSnippetContext
LOWscripts/generate-star-history.py178 except Exception:CODE
LOWskills/patent-reader/tools/browser.py101 except Exception as e:CODE
LOWskills/patent-reader/tools/browser.py133 except Exception:CODE
LOWskills/patent-reader/tools/browser.py146 except Exception:CODE
LOWskills/patent-reader/tools/browser.py185 except Exception as e:CODE
MEDIUMskills/patent-reader/tools/browser.py40def playwright_installed() -> bool:CODE
LOWskills/patent-reader/tools/shared/common.py710 except Exception:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_crawler.py157 except Exception:CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_crawler.py431 except Exception as e:CODE
LOWskills/patent-reader/tools/extract/figure_extract.py71 except Exception:CODE
LOWskills/patent-reader/tools/extract/figure_extract.py95 except Exception:CODE
LOWskills/patent-reader/tools/extract/figure_extract.py363 except Exception:CODE
LOWskills/patent-reader/tools/extract/figure_extract.py411 except Exception:CODE
LOWskills/patent-reader/tools/extract/figure_extract.py464 except Exception:CODE
LOWskills/patent-reader/tools/extract/fetch_patent_pdf.py438 except Exception as e:CODE
LOW…ills/patent-reader/tools/extract/fetch_design_views.py157 except Exception:CODE
LOW…ills/patent-reader/tools/extract/fetch_design_views.py216 except Exception:CODE
LOW…ills/patent-reader/tools/extract/fetch_design_views.py421 except Exception as e:CODE
LOWskills/patent-reader/tools/vault/clue_vault.py394 except Exception:CODE
LOWskills/patent-reader/tools/vault/clue_vault.py404 except Exception:CODE
LOWskills/patent-chart/tools/emit_chart.py1119 except Exception as exc:CODE
LOW…s/patent-disclosure/tools/structure_callout_overlay.py38 except Exception as exc:CODE
LOWskills/patent-disclosure/tools/md_to_docx.py153 except Exception:CODE
LOWskills/patent-disclosure/tools/md_to_docx.py452 except Exception:CODE
LOWskills/patent-disclosure/tools/md_to_docx.py491 except Exception:CODE
LOWskills/patent-disclosure/tools/formula_eval.py240 except Exception as exc:CODE
LOWskills/patent-disclosure/tools/bootstrap_cad_venv.py192 except Exception as e:CODE
LOWskills/patent-disclosure/tools/step_to_views.py49 except Exception as e:CODE
LOWskills/patent-disclosure/tools/step_to_views.py61 except Exception as e:CODE
LOWskills/patent-disclosure/tools/step_to_views.py112 except Exception as e:CODE
LOWskills/patent-disclosure/tools/step_to_views.py164 except Exception as e:CODE
LOWskills/patent-disclosure/tools/step_to_views.py190 except Exception as e:CODE
LOWskills/patent-disclosure/tools/step_to_views.py213 except Exception:CODE
LOWskills/patent-disclosure/tools/step_to_views.py275 except Exception:CODE
LOWskills/patent-disclosure/tools/step_to_views.py396 except Exception:CODE
LOWskills/patent-disclosure/tools/step_to_views.py517 except Exception as e:CODE
LOW…s/patent-disclosure/tools/structure_lineart_compose.py33 except Exception as exc:CODE
LOW…s/patent-disclosure/tools/structure_lineart_compose.py558 except Exception as exc:CODE
LOW⚡skills/patent-disclosure/tools/mermaid_render.py107 except Exception:CODE
LOW⚡skills/patent-disclosure/tools/mermaid_render.py117 except Exception:CODE
LOW⚡skills/patent-disclosure/tools/mermaid_render.py125 except Exception:CODE
LOWskills/patent-disclosure/tools/mermaid_render.py258 except Exception as e:CODE
LOWskills/patent-disclosure/tools/mermaid_render.py317 except Exception as e:CODE
LOW…ls/patent-disclosure/tools/structure_callout_layout.py143 except Exception as exc:CODE
LOW…ls/patent-disclosure/tools/structure_callout_layout.py447 except Exception as exc:CODE
LOWskills/patent-disclosure/tools/docx_to_md.py74 except Exception as e:CODE
LOWskills/patent-disclosure/tools/design_lineart_gate.py44 except Exception:CODE
LOWskills/patent-disclosure/tools/design_lineart_gate.py230 except Exception:CODE
LOWskills/patent-disclosure/tools/image_gen.py261 except Exception:CODE
LOWskills/patent-disclosure/tools/browser.py101 except Exception as e:CODE
LOWskills/patent-disclosure/tools/browser.py133 except Exception:CODE
LOWskills/patent-disclosure/tools/browser.py146 except Exception:CODE
LOWskills/patent-disclosure/tools/browser.py185 except Exception as e:CODE
MEDIUMskills/patent-disclosure/tools/browser.py40def playwright_installed() -> bool:CODE
LOW…ills/patent-disclosure/tools/structure_lineart_gate.py44 except Exception:CODE
LOW…ills/patent-disclosure/tools/structure_lineart_gate.py306 except Exception:CODE
LOW…ills/patent-disclosure/tools/structure_lineart_gate.py345 except Exception:CODE
LOWskills/patent-disclosure/tools/pptx_to_md.py86 except Exception as e:CODE
LOWskills/patent-disclosure/tools/pptx_to_md.py111 except Exception as e:CODE
MEDIUMskills/patent-disclosure/tools/pptx_to_md.py21def _require_pptx():CODE
68 more matches not shown…
Deep Nesting129 hits · 122 pts
SeverityFileLineSnippetContext
LOWscripts/generate-star-history.py112CODE
LOWskills/patent-reader/tools/shared/common.py90CODE
LOWskills/patent-reader/tools/shared/common.py187CODE
LOWskills/patent-reader/tools/shared/common.py221CODE
LOWskills/patent-reader/tools/shared/common.py435CODE
LOWskills/patent-reader/tools/shared/common.py535CODE
LOWskills/patent-reader/tools/shared/common.py605CODE
LOWskills/patent-reader/tools/shared/common.py684CODE
LOWskills/patent-reader/tools/shared/common.py760CODE
LOWskills/patent-reader/tools/shared/common.py856CODE
LOWskills/patent-reader/tools/crawl/cnipa_epub_crawler.py301CODE
LOWskills/patent-reader/tools/analyze/lint_patent_note.py63CODE
LOWskills/patent-reader/tools/extract/figure_extract.py161CODE
LOWskills/patent-reader/tools/extract/fetch_patent_pdf.py201CODE
LOW…ills/patent-reader/tools/extract/fetch_design_views.py128CODE
LOW…ills/patent-reader/tools/extract/fetch_design_views.py222CODE
LOWskills/patent-reader/tools/vault/obsidian_glossary.py12CODE
LOWskills/patent-reader/tools/vault/obsidian_glossary.py423CODE
LOWskills/patent-reader/tools/vault/schema_vault.py37CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py536CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py622CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py720CODE
LOWskills/patent-reader/tools/vault/obsidian_bootstrap.py414CODE
LOWskills/patent-reader/tools/vault/obsidian_claims.py51CODE
LOW…ills/patent-reader/tools/vault/obsidian_frontmatter.py124CODE
LOWskills/patent-reader/tools/vault/note_cites.py390CODE
LOWskills/patent-reader/tools/vault/patent_link.py231CODE
LOWskills/patent-reader/tools/vault/patent_link.py563CODE
LOWskills/patent-reader/tools/vault/clue_vault.py202CODE
LOWskills/patent-reader/tools/vault/clue_vault.py713CODE
LOWskills/patent-reader/tools/vault/clue_vault.py827CODE
LOWskills/patent-reader/tools/vault/clue_vault.py996CODE
LOWskills/patent-reader/tools/vault/clue_vault.py1525CODE
LOWskills/patent-reader/tools/vault/obsidian_canvas.py74CODE
LOWskills/patent-chart/tools/highlights.py173CODE
LOWskills/patent-chart/tools/emit_chart.py104CODE
LOWskills/patent-chart/tools/emit_chart.py295CODE
LOWskills/patent-chart/tools/emit_chart.py353CODE
LOWskills/patent-chart/tools/emit_chart.py650CODE
LOWskills/patent-chart/tools/emit_chart.py806CODE
LOW…s/patent-disclosure/tools/structure_callout_overlay.py111CODE
LOWskills/patent-disclosure/tools/md_to_docx.py232CODE
LOWskills/patent-disclosure/tools/md_to_docx.py456CODE
LOWskills/patent-disclosure/tools/md_to_docx.py495CODE
LOWskills/patent-disclosure/tools/md_to_docx.py533CODE
LOWskills/patent-disclosure/tools/md_to_docx.py562CODE
LOWskills/patent-disclosure/tools/md_to_docx.py879CODE
LOWskills/patent-disclosure/tools/md_to_docx.py1056CODE
LOWskills/patent-disclosure/tools/step_to_views.py95CODE
LOW…s/patent-disclosure/tools/structure_lineart_compose.py147CODE
LOW…s/patent-disclosure/tools/structure_lineart_compose.py274CODE
LOW…s/patent-disclosure/tools/structure_lineart_compose.py361CODE
LOWskills/patent-disclosure/tools/mermaid_render.py227CODE
LOWskills/patent-disclosure/tools/mermaid_render.py443CODE
LOW…ls/patent-disclosure/tools/structure_callout_layout.py58CODE
LOW…ls/patent-disclosure/tools/structure_callout_layout.py173CODE
LOWskills/patent-disclosure/tools/latex_delimiters.py82CODE
LOWskills/patent-disclosure/tools/latex_delimiters.py123CODE
LOWskills/patent-disclosure/tools/check_formula_plan.py105CODE
LOWskills/patent-disclosure/tools/image_gen.py251CODE
69 more matches not shown…
Over-Commented Block20 hits · 20 pts
SeverityFileLineSnippetContext
LOWrequirements.txt1# Used by skills/patent-disclosure/tools/md_to_docx.py, docx_to_md.py, pptx_to_md.py,COMMENT
LOWrequirements.txt21# only if no system browser: python -m playwright install chromiumCOMMENT
LOW.github/workflows/update-star-history.yml1# Update star history (orphan branch)COMMENT
LOWskills/patent-reader/tools/crawl/requirements-cnipa.txt1# CNIPA gazette crawl (cnipa_epub_crawler.py / cnipa_epub_parse.py).COMMENT
LOWskills/patent-disclosure/tools/gen_demo_snap_step.py101#{a+2}=PRODUCT('demo_snap_plate','demo_snap_plate','teaching STEP for cad_scan / step_to_views',(#{a+3}));COMMENT
LOWskills/patent-disclosure/tools/requirements-step.txt1# CadQuery/OCP: STEP -> SVG. Install ONLY into tools/cad-envCOMMENT
LOW…lls/patent-disclosure/tools/crawl/cnipa_epub_wait.yaml1# 国知局公布公告(epub.cnipa.gov.cn)Playwright 等待与第二轮收口上限。COMMENT
LOW…lls/patent-disclosure/tools/crawl/cnipa_epub_wait.yaml21# 调大:偶发 JS 慢;调小:门闩一直不放时更快判失败。COMMENT
LOW…s/patent-disclosure/tools/crawl/requirements-cnipa.txt1# CNIPA gazette crawl (cnipa_epub_search.py / cnipa_epub_crawler.py).COMMENT
LOW…ls/patent-disclosure/tools/crawl/cnipa_epub_crawler.py181 wait_for_epub_advanced_ready,COMMENT
LOW…ls/patent-disclosure/tools/crawl/cnipa_epub_crawler.py241COMMENT
LOW…isclosure/references/schemas/design_around.schema.yaml1# 突围路径(全面覆盖 / 等同列表,不改稿)COMMENT
LOW…ferences/schemas/structure_callout_anchors.schema.yaml41#COMMENT
LOW…ferences/schemas/structure_lineart_compose.schema.yaml41# - slot 缺省:assembly 则跟 crop_box 或铺满画布;exploded 则自动网格。COMMENT
LOW…atent-disclosure/references/schemas/matrix.schema.yaml1# 技术功效矩阵COMMENT
LOW…-disclosure/references/schemas/family_plan.schema.yaml1# 保护型 1+N 族树COMMENT
LOW…nt-disclosure/references/schemas/decompose.schema.yaml1# 技术分解(保护型 1+N 底稿)COMMENT
LOWskills/patent-application/references/promo_terms.yaml1# 申请文件 · 宣传性措辞词库COMMENT
LOWskills/patent-search/tools/requirements-cnipa.txt1# CNIPA bibliographic search (skills/patent-search). Same playwright as root requirements.txt.COMMENT
LOWskills/patent-oa/docs/embedding.config.yaml1# 审查答复 · 向量嵌入配置(仓库模板种子)COMMENT
Decorative Section Separators6 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUM…ls/patent-disclosure/tools/crawl/cnipa_epub_crawler.py185# ---------------------------------------------------------------------------COMMENT
MEDIUM…ls/patent-disclosure/tools/crawl/cnipa_epub_crawler.py187# ---------------------------------------------------------------------------COMMENT
MEDIUM…ls/patent-disclosure/tools/crawl/cnipa_epub_crawler.py615# ---------------------------------------------------------------------------COMMENT
MEDIUM…ls/patent-disclosure/tools/crawl/cnipa_epub_crawler.py617# ---------------------------------------------------------------------------COMMENT
MEDIUMskills/patent-search/tests/test_cnipa_search.py37# ---------------------------------------------------------------------------COMMENT
MEDIUMskills/patent-search/tests/test_cnipa_search.py43# ---------------------------------------------------------------------------COMMENT
Fake / Example Data10 hits · 10 pts
SeverityFileLineSnippetContext
LOWskills/patent-reader/tools/extract/figure_extract.py337 return "placeholder"CODE
LOWskills/patent-reader/tools/extract/figure_extract.py484 "decision": "placeholder",CODE
LOWskills/patent-reader/tools/extract/figure_extract.py486 f"嵌入图{img_index + 1}", page_number, fname, "placeholder", qualityCODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py448 if decision == "placeholder" and status == "review":CODE
LOW…atent-reader/tools/vault/write_patent_obsidian_note.py510 "decision": "placeholder",CODE
LOW…s/patent-disclosure/tools/structure_lineart_compose.py212 if source not in {"crop", "image", "placeholder"}:CODE
LOW…s/patent-disclosure/tools/structure_lineart_compose.py393 source = str(item.get("source") or "placeholder")CODE
LOW…ent-disclosure/tests/test_structure_lineart_compose.py106 "source": "placeholder",CODE
LOW…ent-disclosure/tests/test_structure_lineart_compose.py146 self.assertIn('data-source="placeholder"', text)CODE
LOW…ent-disclosure/tests/test_structure_lineart_compose.py173 "source": "placeholder",CODE
AI Structural Patterns7 hits · 7 pts
SeverityFileLineSnippetContext
LOWskills/patent-reader/tools/shared/common.py532CODE
LOWskills/patent-reader/tools/vault/desc_paragraphs.py300CODE
LOWskills/patent-reader/tools/vault/patent_link.py775CODE
LOWskills/patent-reader/tools/vault/clue_vault.py74CODE
LOWskills/patent-reader/tools/vault/obsidian_canvas.py74CODE
LOWskills/patent-disclosure/tools/math_render.py111CODE
LOWskills/patent-oa/tools/config.py386CODE
Modern Structural Boilerplate5 hits · 5 pts
SeverityFileLineSnippetContext
LOWskills/patent-reader/tools/vault/obsidian.py102__all__ = [CODE
LOWskills/patent-disclosure/tools/md_to_docx.py789def _set_paragraph_num_id(paragraph, num_id: int) -> None:CODE
LOWskills/patent-disclosure/tools/crawl/cnipa_epub_nav.py329def _settle_after_load(page: Page) -> None:CODE
LOWskills/patent-application/tools/md_to_docx.py772def _set_paragraph_num_id(paragraph, num_id: int) -> None:CODE
LOWskills/patent-oa/tools/md_to_docx.py780def _set_paragraph_num_id(paragraph, num_id: int) -> None:CODE
Modern AI Meta-Vocabulary2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMskills/patent-disclosure/SKILL.md41围栏:Step 8 之后只在交付回复 **`## 交付后请确认`** 第 3 条询问。口径见 `prompts/fence/guardrails.md`。立项说明直接写 `outputs/{案件}/fence/专利布局.md`(章节见 `pCODE
MEDIUMskills/patent-exam-policy/prompts/intake.md353. 展示 **`## 交付后请确认`**(见 guardrails);**不要**把「全部采纳」当成默认下一步CODE