#123 by GitHub stars

handsomestWei/patent-disclosure-skill

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

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Nov 2, 2026 · +7 / −6 lines

Before Network or broad shell → After Network or broad shell

6935a14d342e → 9c1a3a051e86

- 3 description: "中国专利技能:挖掘专利点并撰写发明/实用新型/外观设计交底书;将已有交底改写为申请文件四件套;依据发明人材料衔接交底与申请;按著录项目检索公布公告;解读专利文献;基于已入库解读生成专利地图;对照审查政策撰写简报;辅助审查意见答复;编制权利要求对照表底稿(不构成法律意见)。| China patents: mine patent points and draft invention/utility-model/design disclosures; convert an existing disclosure into application documents; sequence disclosure and application from inventor materials; search CNIPA bibliographic records; interpret patent documents; generate a patent map from an interpreted vault; prepare examination-policy briefs; assist office-action responses; and prepare claim-chart worksheets (not legal opinions)."
- 4 version: "5.1.0"
+ 3 description: "中国专利技能:挖掘专利点并撰写发明/实用新型/外观设计交底书;将已有交底改写为申请文件四件套;依据发明人材料衔接交底与申请;按著录项目检索公布公告,点名海外时检索美欧日韩等海外专利;解读中国及海外专利文献;基于已入库解读生成专利地图;对照审查政策撰写简报;辅助审查意见答复;编制权利要求对照表底稿(不构成法律意见)。| China patents: mine patent points and draft invention/utility-model/design disclosures; convert an existing disclosure into application documents; sequence disclosure and application from inventor materials; search CNIPA bibliographic records, and overseas patents via Google Patents on request; interpret Chinese and overseas patent documents; generate a patent map from an interpreted vault; prepare examination-policy briefs; assist office-action responses; and prepare claim-chart worksheets (not legal opinions)."
+ 4 version: "5.2.0"
- 21 | **检索** | 公布站高级查询(发明人/申请人/分类号/名称/摘要等);单图或权要可先抽关键字再查 | `skills/patent-search/SKILL.md` |
- 22 | **解读** | 公开号 / PDF / 全文 → 通俗笔记 + 图谱 | `skills/patent-reader/SKILL.md` |
+ 21 | **检索** | 公布站高级查询(发明人/申请人/分类号/名称/摘要等);单图或权要可先抽关键字再查;点名海外时用 Google Patents 查美欧日韩等 | `skills/patent-search/SKILL.md` |
+ 22 | **解读** | 公开号(中国或海外)/ PDF / 全文 → 通俗笔记 + 图谱 | `skills/patent-reader/SKILL.md` |
- 39 | 读专利、给出公开号或 PDF 且目标是「读懂」;`/patent-read`、`/读专利` | 无 | 解读包(**优先**) | 不跑交底成文,不自动进对照表 |
+ 39 | 海外检索、查美国 / 欧洲 / 日本 / 韩国专利、PCT 检索、「包含某国」— **须点名** | 没提国家时走公布站 | 检索包海外旁路 | 不进交底查新;限流即停,不重试 |
+ 40 | 读专利、给出公开号(含海外号)或 PDF 且目标是「读懂」;`/patent-read`、`/读专利` | 无 | 解读包(**优先**) | 不跑交底成文,不自动进对照表;海外号不顺带做海外检索 |
- 55 按**能力总览**复述 9 项,每项一句并给出触发说法;说明**申请文件 / 案卷 / 专利地图 / 审查答复 / 政策简报 / 对照表须点名**才会进入。本节只用能力总览,不用交底的「交付后请确认」。
+ 56 按**能力总览**复述 9 项,每项一句并给出触发说法;说明**申请文件 / 案卷 / 专利地图 / 审查答复 / 政策简报 / 对照表 / 海外检索须点名**才会进入。本节只用能力总览,不用交底的「交付后请确认」。

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 6935a14d342e

No earlier version was observed for comparison.

Compare on GitHub

skills/patent-application/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

6935a14d342e → 9c1a3a051e86

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 6935a14d342e

No earlier version was observed for comparison.

Compare on GitHub

skills/patent-chart/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Local scripts

6935a14d342e → 9c1a3a051e86

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 6935a14d342e

No earlier version was observed for comparison.

Compare on GitHub

skills/patent-disclosure/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

6935a14d342e → 9c1a3a051e86

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 6935a14d342e

No earlier version was observed for comparison.

Compare on GitHub

skills/patent-docket/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Network or broad shell

6935a14d342e → 9c1a3a051e86

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 6935a14d342e

No earlier version was observed for comparison.

Compare on GitHub

skills/patent-exam-policy/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Instructions only → After Instructions only

6935a14d342e → 9c1a3a051e86

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Instructions only

First observation → 6935a14d342e

No earlier version was observed for comparison.

Compare on GitHub

skills/patent-map/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

6935a14d342e → 9c1a3a051e86

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 6935a14d342e

No earlier version was observed for comparison.

Compare on GitHub

skills/patent-oa/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

6935a14d342e → 9c1a3a051e86

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 6935a14d342e

No earlier version was observed for comparison.

Compare on GitHub

skills/patent-reader/SKILL.md

Week of Nov 2, 2026 · +7 / −6 lines

Before Network or broad shell → After Network or broad shell

6935a14d342e → 9c1a3a051e86

- 3 description: "中国专利通俗解读:公开号/PDF 成通俗笔记、图谱与 Obsidian 入库。"
+ 3 description: "专利通俗解读:中国或海外(美欧日韩等)公开号 / PDF 成通俗笔记、图谱与 Obsidian 入库。"
- 11 把公开号 / PDF / 全文读成通俗笔记、图谱,并可写入 Obsidian。独权拆成稳定特征行(`claim_features.json`),说明书段落可机读(`description_paragraphs.json`),给对照表当输入。
+ 11 把公开号 / PDF / 全文读成通俗笔记、图谱,并可写入 Obsidian。独权拆成稳定特征行(`claim_features.json`),说明书段落可机读(`description_paragraphs.json`),给对照表当输入。海外公开号(US / EP / WO / JP / KR 等)一次请求取结构化全文,机翻文献同时保留原文。
- 15 用户说读专利、给出公开号或 PDF 且目标是「读懂」,或 `/patent-read`、`/读专利`。对照表派工缺 `claim_features.json` 或 `description_paragraphs.json` 时由对照表点名进入。对照表只要这两份文件,不写笔记、不入库。
+ 15 用户说读专利、给出公开号或 PDF 且目标是「读懂」,或 `/patent-read`、`/读专利`。用户给的公开号本身是海外号,即按海外件读,不另需口令;只读这一件,不顺带做海外检索。对照表派工缺 `claim_features.json` 或 `description_paragraphs.json` 时由对照表点名进入。对照表只要这两份文件,不写笔记、不入库。
- 19 公开号、专利 PDF、或粘贴的权利要求/说明书。对照表派工时默认把从属权也拆进 `claim_features.json`,并保留 `description_paragraphs.json`。
+ 19 公开号(中国或海外)、专利 PDF、或粘贴的权利要求/说明书。对照表派工时默认把从属权也拆进 `claim_features.json`,并保留 `description_paragraphs.json`。
- 27 工具在本包 **`tools/`**(`extract/` · `analyze/` · `vault/`)。PDF:`tools/extract/fetch_patent_pdf.py`;入库:`tools/vault/write_patent_obsidian_note.py`。特征行校验:`tools/analyze/validate_claim_features.py`。
+ 27 工具在本包 **`tools/`**(`extract/` · `analyze/` · `vault/` · `google_patents/`)。中国件 PDF:`tools/extract/fetch_patent_pdf.py`;海外件全文:`tools/extract/fetch_gp_fulltext.py`;入库:`tools/vault/write_patent_obsidian_note.py`。特征行校验:`tools/analyze/validate_claim_features.py`。`tools/google_patents/` 与检索包同名目录内容一致,改动须同步两处。
+ 32 - Google Patents 请求不重试:限流(退出码 4 / 「限流」报错)即停止本轮取证,请用户稍后再试或提供 PDF。
- 35 工作区 **`outputs/patent_reader/`**:通俗笔记、图谱中间产物、`claim_features.json`、`description_paragraphs.json`(含 `source_url`)。有库则另写入 Obsidian。对话给出笔记路径。
+ 36 工作区 **`outputs/patent_reader/`**:通俗笔记、图谱中间产物、`claim_features.json`、`description_paragraphs.json`(含 `source_url`)。海外件另有 `source/{公开号}.gp_detail.json` 与 `fetch_gp_status.json`。有库则另写入 Obsidian。对话给出笔记路径。

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 6935a14d342e

No earlier version was observed for comparison.

Compare on GitHub

skills/patent-search/SKILL.md

Week of Nov 2, 2026 · +12 / −8 lines

Before Network or broad shell → After Network or broad shell

6935a14d342e → 9c1a3a051e86

- 3 description: "中国专利公布公告著录检索:发明人、申请人、分类号、名称、摘要;也可从单图或权利要求生成名称/摘要关键字后查询。"
+ 3 description: "专利著录检索:中国专利公布公告(发明人、申请人、分类号、名称、摘要;也可从单图或权利要求生成名称/摘要关键字后查询);用户点名海外时,用 Google Patents 检索美欧日韩等海外专利。"
- 11 公布站高级查询(发明人 / 申请人 / 分类号 / 名称 / 摘要等)。个人公开清单只是一种用法。单图或权要可先抽关键字再查。对照表派工时可按特征精排,另出覆盖旁路,**不改**列表报告。
+ 11 公布站高级查询(发明人 / 申请人 / 分类号 / 名称 / 摘要等)。个人公开清单只是一种用法。单图或权要可先抽关键字再查。对照表派工时可按特征精排,另出覆盖旁路,**不改**列表报告。用户点名海外 / 指定局时,走 Google Patents 海外检索旁路(`gp_search.py`)。
- 15 用户要按著录字段查公布公告、个人公开清单、以图或权要生成检索式,或 `/patent-search`。对照表派工或用户点名「按特征精排」时再走 `covers_rank.md`。
+ 15 用户要按著录字段查公布公告、个人公开清单、以图或权要生成检索式,或 `/patent-search`。对照表派工或用户点名「按特征精排」时再走 `covers_rank.md`。用户点名「海外检索」「查美国 / 欧洲 / 日本 / 韩国专利」「PCT 检索」「包含某国」时走 `global_search.md`;没提国家时仍走公布站。
- 19 至少一项:发明人、申请人、分类号、名称、摘要/简要说明、申请号或公开号。单图必须 `--type design|utility_model|invention`,不能 `all`;用户没说类型时看图推断并加 `--type-inferred`。权要按文本选类型,可用 `all`。
+ 19 至少一项:发明人、申请人、分类号、名称、摘要/简要说明、申请号或公开号。单图必须 `--type design|utility_model|invention`,不能 `all`;用户没说类型时看图推断并加 `--type-inferred`。权要按文本选类型,可用 `all`。海外检索至少一项:英文关键词、名称 / 摘要 / 权要字段、CPC、申请人、发明人;局别按用户点名。
- 23 **先 `Read` `prompts/patent_search.md`。** 用户给单图或权要时再 `Read` `prompts/derived_query.md`。对照表派工或用户点名「按特征精排」时再 `Read` `prompts/covers_rank.md`。翻页口径以该文件「默认少翻页 / 完整性门禁」为准。
+ 23 **先 `Read` `prompts/patent_search.md`。** 用户给单图或权要时再 `Read` `prompts/derived_query.md`。对照表派工或用户点名「按特征精排」时再 `Read` `prompts/covers_rank.md`。翻页口径以该文件「默认少翻页 / 完整性门禁」为准。用户点名海外时**只** `Read` `prompts/global_search.md`。
+ 32 python skills/patent-search/tools/gp_search.py -q "(battery OR cell) (thermal runaway)" --country US,EP,JP --after 2020
- 34 单独拷走本包时:`python tools/cnipa_search.py …`。改版式只动 `tools/emit_search_report.py`。机读前缀:`EPUB_SEARCH_MD:` / `EPUB_SEARCH_JSON:` / `EPUB_SEARCH_NOTE:` / `EPUB_SEARCH_INCOMPLETE:`。对话里给出 Markdown 路径。
+ 35 单独拷走本包时:`python tools/cnipa_search.py …` / `python tools/gp_search.py …`。改版式只动 `tools/emit_search_report.py`。机读前缀:`EPUB_SEARCH_MD:` / `EPUB_SEARCH_JSON:` / `EPUB_SEARCH_NOTE:` / `EPUB_SEARCH_INCOMPLETE:`;海外 `GP_SEARCH_MD:` / `GP_SEARCH_JSON:` / `GP_SEARCH_NOTE:` / `GP_SEARCH_ERROR:`。对话里给出 Markdown 路径。
+ 36 
+ 37 `tools/google_patents/` 与解读包同名目录内容一致,改动须同步两处。
- 39 - 本包只做公布站高级查询。单图或权要只生成公布站布尔式。覆盖精排是列表之后的可选旁路。
+ 42 - 本包只做公布站高级查询与点名后的 Google Patents 海外检索。单图或权要只生成公布站布尔式。覆盖精排是列表之后的可选旁路。
+ 43 - 海外检索每次运行一个请求、不重试;`gp_search.py` 退出码 4(限流)即结束本轮,细则见 `prompts/global_search.md`。
- 43 `outputs/patent-search/SEARCH-YYYYMMDD-HHMMSS.md`(及对应 json)。精排旁路另出 `SEARCH-*.covers.md` / `.covers.json`,不改列表报告。本包**不设**「交付后请确认」。
+ 47 `outputs/patent-search/SEARCH-YYYYMMDD-HHMMSS.md`(及对应 json)。公布站与海外检索同目录,海外报告标题为「海外检索」。精排旁路另出 `SEARCH-*.covers.md` / `.covers.json`,不改列表报告。本包**不设**「交付后请确认」。

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 6935a14d342e

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 9c1a3a051e867681ac25680eb606cdffd988fc2b

13kGitHub stars
484stars in 7 days
10skills in this repository
8commits in 30 days

Heat

7.9
  • Star growth, last 7 daysAhead of 96% of tracked repositories
  • Star growth, last 24 hoursAhead of 96% of tracked repositories
  • Rank movement, last 7 daysAhead of 85% of tracked repositories
  • Commits, last 30 daysAhead of 75% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 2, 2026Nov 6, 202613,025

Individual skills in this repository

How it works

patent-disclosure-skill

When your agent uses it

中国专利技能:挖掘专利点并撰写发明/实用新型/外观设计交底书;将已有交底改写为申请文件四件套;依据发明人材料衔接交底与申请;按著录项目检索公布公告,点名海外时检索美欧日韩等海外专利;解读中国及海外专利文献;基于已入库解读生成专利地图;对照审查政策撰写简报;辅助审查意见答复;编制权利要求对照表底稿(不构成法律意见)。| China patents: mine patent points and draft invention/utility-model/design disclosures; convert an existing disclosure into application documents; sequence disclosure and application from inventor materials; search CNIPA bibliographic records, and overseas patents via Google Patents on request; interpret Chinese and overseas patent documents; generate a patent map from an interpreted vault; prepare examination-policy briefs; assist office-action responses; and prepare claim-chart worksheets (not legal opinions).

What it loads into context

Frontmatter

332 tokens

Always available to the agent

SKILL.md

2,725 tokens

When the skill is activated

Reference documents

7,685 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 能力总览
  2. 路由判定表
  3. 通则
  4. 能力自述(用户问「你能做什么 / 还能做什么」时)
  5. 目录
  6. 环境与约定
  7. 执行前核对

Scripts executed separately

  • scripts/generate-star-history.py

Files

  • .github/workflows/update-star-history.ymlasset2,840 bytes
  • .gitignoreasset1,219 bytes
  • INSTALL.mddoc14,789 bytes
  • LICENSEasset1,070 bytes
  • README.mddoc10,900 bytes
  • SKILL.mdcore8,964 bytes
  • SKILL.mdcore8,964 bytes
  • SKILL.mdcore8,964 bytes
  • docs/thanks.jpgasset146,142 bytes
  • docs/效果例-cad提取等轴测投影图.pngasset72,832 bytes
  • docs/效果例-obs图谱.jpgasset120,459 bytes
  • docs/效果例-专利地图.jpgasset246,227 bytes
  • docs/效果例-初版生成.jpgasset233,396 bytes
  • docs/效果例-外观专利线稿.pngasset1,396,297 bytes
  • docs/效果例-实用新型专利线稿含部件序号引出线.pngasset1,188,778 bytes
  • docs/效果例-解读.jpgasset400,993 bytes
  • docs/效果例-迭代更新.jpgasset55,327 bytes
  • requirements.txtdoc1,138 bytes
  • scripts/generate-star-history.pyruns17,189 bytes
Read SKILL.md

# 中国专利技能

按用户意图 **`Read`** 对应入口的 `SKILL.md`,再按该流程执行。**先查「路由判定表」定去向,再看「通则」。**

## 能力总览

| 能力 | 做什么 | 入口 |
|------|--------|------|
| **交底** | 挖专利点 → 查新 → 成稿 → 迭代(发明 / 实用新型 / 外观);首篇定稿后可做保护型 1+N 专利布局 | `skills/patent-disclosure/SKILL.md` |
| **申请文件** | 已有交底 → 权要 / 说明书 / 摘要 / 附图 | `skills/patent-application/SKILL.md` |
| **案卷** | 按发明人/工程师给的材料一趟写出交底书和申请文件 | `skills/patent-docket/SKILL.md` |
| **检索** | 公布站高级查询(发明人/申请人/分类号/名称/摘要等);单图或权要可先抽关键字再查;点名海外时用 Google Patents 查美欧日韩等 | `skills/patent-search/SKILL.md` |
| **解读** | 公开号(中国或海外)/ PDF / 全文 → 通俗笔记 + 图谱 | `skills/patent-reader/SKILL.md` |
| **对照表** | 独权特征 vs 对比文件 / 产品 / 标准,逐格证据与强弱(须点名;底稿,非法律意见) | `skills/patent-chart/SKILL.md` |
View the complete source on GitHub

Skills included

  • patent-disclosure-skill
  • patent-application
  • patent-chart
  • patent-disclosure
  • patent-docket
  • patent-exam-policy
  • patent-map
  • patent-oa
  • patent-reader
  • patent-search

Repository facts

License
MIT
Created
Apr 7, 2026
Last pushed
Nov 5, 2026
Forks
1,400
Open issues
13
Project activity
Active

Rank over the last 12 weeks

Now #123 · best #123 · up 2 in 30 days

  1. #124 from Oct 21 to Oct 24
  2. #125 on Oct 25
  3. #123 from Oct 28 to Oct 29
  4. #125 from Oct 30 to Oct 31
  5. #124 from Nov 1 to Nov 3
  6. #123 since Nov 4
57 earlier periods
  1. #203 on Aug 2
  2. #202 from Aug 7 to Aug 9
  3. #207 on Aug 10
  4. #206 on Aug 11
  5. #204 on Aug 12
  6. #208 on Aug 13
  7. #209 on Aug 14
  8. #208 on Aug 15
  9. #206 on Aug 16
  10. #205 on Aug 17
  11. #207 on Aug 18
  12. #206 on Aug 19
  13. #203 on Aug 20
  14. #205 on Aug 21
  15. #203 on Aug 22
  16. #207 on Aug 23
  17. #206 from Aug 24 to Aug 25
  18. #205 on Aug 26
  19. #206 on Aug 27
  20. #203 on Aug 28
  21. #204 on Aug 29
  22. #191 on Aug 30
  23. #176 on Aug 31
  24. #166 on Sep 1
  25. #160 on Sep 2
  26. #161 on Sep 3
  27. #158 from Sep 4 to Sep 5
  28. #148 on Sep 6
  29. #143 on Sep 7
  30. #140 on Sep 8
  31. #138 on Sep 9
  32. #137 on Sep 10
  33. #133 from Sep 11 to Sep 12
  34. #132 from Sep 13 to Sep 14
  35. #131 on Sep 15
  36. #130 on Sep 16
  37. #131 on Sep 17
  38. #132 on Sep 18
  39. #130 from Sep 19 to Sep 23
  40. #128 on Sep 24
  41. #130 from Sep 25 to Sep 26
  42. #129 on Sep 27
  43. #130 from Sep 28 to Sep 29
  44. #129 from Sep 30 to Oct 1
  45. #126 on Oct 2
  46. #125 on Oct 3
  47. #124 on Oct 4
  48. #125 on Oct 5
  49. #123 on Oct 6
  50. #125 on Oct 7
  51. #124 from Oct 8 to Oct 9
  52. #125 on Oct 10
  53. #126 from Oct 11 to Oct 15
  54. #127 on Oct 16
  55. #126 on Oct 17
  56. #127 on Oct 18
  57. #125 from Oct 19 to Oct 20

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 89 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/patent-application/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/patent-disclosure/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:1 Analysis incomplete: physical or joined line exceeds character limit
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:7 Analysis incomplete: physical or joined line exceeds character limit
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:5 Analysis incomplete: physical or joined line exceeds character limit
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:2 Analysis incomplete: physical or joined line exceeds character limit
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:6 Analysis incomplete: physical or joined line exceeds character limit
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:9 [Credential-related source omitted]
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:12 [Credential-related source omitted]
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:10 [Credential-related source omitted]
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:13 Analysis incomplete: physical or joined line exceeds character limit
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:11 Analysis incomplete: physical or joined line exceeds character limit
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:267 [Credential-related source omitted]
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:265 Analysis incomplete: physical or joined line exceeds character limit
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:268 [Credential-related source omitted]
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:266 Analysis incomplete: physical or joined line exceeds character limit
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:272 [Credential-related source omitted]
  • skills/patent-disclosure/tools/vendor/mermaid.min.js:270 Analysis incomplete: physical or joined line exceeds character limit
Show all 1,392 signals by file

.github/workflows/update-star-history.yml

  • Network accessline 76
    [Credential-related source omitted]
  • Network accessline 77
    [Credential-related source omitted]
  • Network accessline 78
    [Credential-related source omitted]
  • Access to secretsline 78
    [Credential-related source omitted]

INSTALL.md

  • Network accessline 3
    本技能遵循 [AgentSkills](https://agentskills.io) 常见布局:仓库根目录即技能根目录,内含 `SKILL.md`。
  • Network accessline 20
    Cursor 支持 [Agent Skills](https://www.cursor.com/docs/context/skills) 约定:每个技能是一个**子文件夹**,内含根级 `SKILL.md`(`name` 字段须与文件夹名一致,本仓库为 `patent-disclosure-skill`)。可将**本仓库完整内容**(含各 `skills/patent-*` 子包)放在下列位置之一,重启 Cursor 后在 **Settings → Rules** 中查看是否
  • Network accessline 138
    若需使用交底轻量查新 **`skills/patent-disclosure/tools/crawl/cnipa_epub_search.py`**(一词一页)或著录检索 **`skills/patent-search/tools/cnipa_search.py`**([epub.cnipa.gov.cn](http://epub.cnipa.gov.cn/)):
  • Access to secretsline 196
    [Credential-related source omitted]

README.md

  • Network accessline 7
    [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
  • Network accessline 8
    [![Python 3.9+](https://img.shields.io/badge/Python-3.9%2B-blue.svg)](https://www.python.org/)
  • Network accessline 9
    [![Playwright](https://img.shields.io/badge/Playwright-mermaid%20%2B%20CNIPA-2EAD33.svg)](https://playwright.dev/)
  • Network accessline 10
    [![AgentSkills](https://img.shields.io/badge/AgentSkills-Standard-green)](https://agentskills.io)
  • Network accessline 36
    公开专利常把阅读门槛抬得很高:权要绕、术语密、落地语境散落在说明书与附图里。本技能把单篇读成通俗笔记与图谱,并入库 Obsidian;依托双链、图谱、插件与 Bases 等生态,陆续解读的专利可以沉淀成**只属于自己的私有专利知识库**——权要、术语、线索与附图彼此勾连,越读越厚。再叠上 [Obsidian CLI](https://help.obsidian.md/cli) 与库内外连接能力,检索、批处理、和外部工具接力都更容易:从单篇通俗笔记,走向可检索、可关联、可继续生
  • Network accessline 204
    </td> <td width="60%" valign="middle" align="center"> <img alt="Star History Chart" src="https://raw.githubusercontent.com/handsomestWei/patent-disclosure-skill/star-history/star-history.svg" width="100%" />
  • Network accessline 205
    <td width="60%" valign="middle" align="center"> <img alt="Star History Chart" src="https://raw.githubusercontent.com/handsomestWei/patent-disclosure-skill/star-history/star-history.svg" width="100%" /> </td>
  • Network accessline 206
    <img alt="Star History Chart" src="https://raw.githubusercontent.com/handsomestWei/patent-disclosure-skill/star-history/star-history.svg" width="100%" />
  • Network accessline 223
    MIT License © [handsomestWei](https://github.com/handsomestWei/)

SKILL.md

  • Broad permissionsline 1
    Read, Write, Edit, Grep, Glob, WebSearch, Bash

scripts/generate-star-history.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Network accessline 23
    GITHUB_API = "https://api.github.com"
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 50
    [Credential-related source omitted]
  • Access to secretsline 51
    [Credential-related source omitted]
  • Network accessline 121
    last_error: Exception | None = None     for attempt in range(retries + 1):         request = urllib.request.Request(url, headers=headers)
  • Network accessline 122
    for attempt in range(retries + 1):         request = urllib.request.Request(url, headers=headers)         try:
  • Network accessline 123
    request = urllib.request.Request(url, headers=headers)
  • Network accessline 124
    try:             with urllib.request.urlopen(request, timeout=45) as response:                 return json.loads(response.read().decode("utf-8"))
  • Network accessline 125
    with urllib.request.urlopen(request, timeout=45) as response:
  • Network accessline 343
    return f'''<svg xmlns="http://www.w3.org/2000/svg" width="{width}" height="{height}" viewBox="0 0 {width} {height}" role="img" aria-labelledby="title desc">

skills/patent-application/tests/test_audit_claims.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tests/test_design_view_sync.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tests/test_emit_application_docx.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tests/test_invention_figures.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tests/test_lexicon.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tests/test_material_gate.py

  • Executable scriptline 1
    Executable file
  • Network accessline 63
    "$schema: structure.schema\nversion: 1\nparts:\n  - id: '1'\n    name: 壳体\n",             )             _write(case / "figs" / "assembly.svg", "<svg xmlns='http://www.w3.org/2000/svg'/>\n")
  • Network accessline 64
    )             _write(case / "figs" / "assembly.svg", "<svg xmlns='http://www.w3.org/2000/svg'/>\n")             _write(
  • Network accessline 65
    _write(case / "figs" / "assembly.svg", "<svg xmlns='http://www.w3.org/2000/svg'/>\n")
  • Network accessline 85
    "product_form: solid\nclaimed_faces: [主视]\n",             )             _write(case / "line.svg", "<svg xmlns='http://www.w3.org/2000/svg'/>\n")
  • Network accessline 86
    )             _write(case / "line.svg", "<svg xmlns='http://www.w3.org/2000/svg'/>\n")             _write(
  • Network accessline 87
    _write(case / "line.svg", "<svg xmlns='http://www.w3.org/2000/svg'/>\n")

skills/patent-application/tests/test_math_to_omml.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tests/test_numeral_register.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tests/test_plan_figures.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tests/test_support_and_antecedent.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tools/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tools/audit_claims.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-application/tools/check_design_views.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tools/check_numeral_register.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-application/tools/check_support.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-application/tools/compose_application_figure.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Network accessline 74
    return (         '<?xml version="1.0" encoding="UTF-8"?>\n'         f'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" '
  • Network accessline 75
    '<?xml version="1.0" encoding="UTF-8"?>\n'         f'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" '         f'width="170mm" height="120mm" viewBox="0 0 170 120">'
  • Network accessline 76
    f'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" '

skills/patent-application/tools/emit_application_docx.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-application/tools/iteration_dialog_log.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-application/tools/latex_delimiters.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-application/tools/lexicon.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-application/tools/material_gate.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-application/tools/math_to_omml.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Network accessline 20
    MATHML_NS = "{http://www.w3.org/1998/Math/MathML}"

skills/patent-application/tools/md_to_docx.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-application/tools/plan_figures.py

  • Executable scriptline 1
    Executable file

skills/patent-application/tools/render_invention_figures.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Network accessline 152
    vb_w, vb_h = (x1 - x0) + 2 * pad, (y1 - y0) + 2 * pad     body = (         f'<svg xmlns="http://www.w3.org/2000/svg" width="{vb_w:.2f}mm" height="{vb_h:.2f}mm" '
  • Network accessline 153
    body = (         f'<svg xmlns="http://www.w3.org/2000/svg" width="{vb_w:.2f}mm" height="{vb_h:.2f}mm" '         f'viewBox="{vb_x:.2f} {vb_y:.2f} {vb_w:.2f} {vb_h:.2f}">'
  • Network accessline 154
    f'<svg xmlns="http://www.w3.org/2000/svg" width="{vb_w:.2f}mm" height="{vb_h:.2f}mm" '

skills/patent-application/tools/stdio_utf8.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]

skills/patent-chart/tests/test_emit_chart.py

  • Executable scriptline 1
    Executable file
  • Network accessline 37
    "label": "CN216600001U",                 "pub_number": "CN216600001U",                 "source_url": "http://epub.cnipa.gov.cn/patent/CN216600001U",
  • Network accessline 38
    "pub_number": "CN216600001U",                 "source_url": "http://epub.cnipa.gov.cn/patent/CN216600001U",             }
  • Network accessline 39
    "source_url": "http://epub.cnipa.gov.cn/patent/CN216600001U",
  • Network accessline 50
    "quote": "壳体与端盖形成冷却空腔,并且在周向均布多条加强筋以承受热负荷。" * 2,                 "analysis": "对应:权要的冷却腔对应说明书里的冷却空腔。\n差别:对照未写端盖如何密封。\n依据:说明书 [0021]。",                 "source_url": "http://epub.cnipa.gov.cn/patent/CN216600001U",
  • Network accessline 51
    "analysis": "对应:权要的冷却腔对应说明书里的冷却空腔。\n差别:对照未写端盖如何密封。\n依据:说明书 [0021]。",                 "source_url": "http://epub.cnipa.gov.cn/patent/CN216600001U",                 "desc_para": "0021",
  • Network accessline 52
    "source_url": "http://epub.cnipa.gov.cn/patent/CN216600001U",
  • Network accessline 355
    "quote": "周向均布加强筋。",                 "analysis": "对应:仅加强筋片段。\n差别:未见密封圈。\n依据:说明书 [0021]。",                 "source_url": "http://epub.cnipa.gov.cn/patent/CN216600001U",
  • Network accessline 356
    "analysis": "对应:仅加强筋片段。\n差别:未见密封圈。\n依据:说明书 [0021]。",                 "source_url": "http://epub.cnipa.gov.cn/patent/CN216600001U",                 "desc_para": "0021",
  • Network accessline 357
    "source_url": "http://epub.cnipa.gov.cn/patent/CN216600001U",

skills/patent-chart/tests/test_highlights.py

  • Executable scriptline 1
    Executable file

skills/patent-chart/tests/test_write_intake.py

  • Executable scriptline 1
    Executable file
  • Network accessline 47
    )         self.assertEqual(linked["right"][0]["kind"], "product")         self.assertEqual(linked["right"][0]["url"], "https://www.example.com/p/1")
  • Network accessline 49
    self.assertEqual(linked["right"][0]["url"], "https://www.example.com/p/1")
  • Network accessline 67
    "scene": "infringement",                 "left": {"pub_number": "CN1"},                 "right": [{"pub_number": "型号A", "url": "https://example.com/p"}],
  • Network accessline 68
    "left": {"pub_number": "CN1"},                 "right": [{"pub_number": "型号A", "url": "https://example.com/p"}],             },
  • Network accessline 69
    "right": [{"pub_number": "型号A", "url": "https://example.com/p"}],

skills/patent-chart/tools/emit_chart.py

  • Executable scriptline 1
    Executable file

skills/patent-chart/tools/highlights.py

  • Executable scriptline 1
    Executable file

skills/patent-chart/tools/write_intake.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-chart/tools/xlsx_minimal.py

  • Executable scriptline 1
    Executable file
  • Network accessline 278
    xml = (         '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'
  • Network accessline 279
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'         ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 280
    '<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'
  • Network accessline 281
    ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 312
    return (         '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<comments xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">'
  • Network accessline 313
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<comments xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">'         "<authors><author>对照表</author></authors>"
  • Network accessline 314
    '<comments xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">'
  • Network accessline 369
    workbook = (         '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'
  • Network accessline 370
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'         ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 371
    '<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'
  • Network accessline 372
    ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 375
    wb_rels = (         '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 376
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'         + "".join(
  • Network accessline 377
    '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 378
    + "".join(             f'<Relationship Id="rId{i}" '             'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" '
  • Network accessline 379
    f'<Relationship Id="rId{i}" '             'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" '             f'Target="worksheets/sheet{i}.xml"/>'
  • Network accessline 380
    'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" '
  • Network accessline 383
    )         + f'<Relationship Id="rId{len(sheets) + 1}" '         'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" '
  • Network accessline 384
    + f'<Relationship Id="rId{len(sheets) + 1}" '         'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" '         'Target="styles.xml"/>'
  • Network accessline 385
    'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" '
  • Network accessline 401
    content_types = (         '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'
  • Network accessline 402
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'         '<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relation
  • Network accessline 403
    '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'
  • Network accessline 413
    )     rels = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  • Network accessline 414
    rels = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">   <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/rel
  • Network accessline 415
    <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  • Network accessline 416
    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
  • Network accessline 428
    f"xl/worksheets/_rels/sheet{i}.xml.rels",                     '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'                     '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 429
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'                     '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'                     f'<Relationship Id="rId1" Type="http://schemas.o
  • Network accessline 430
    '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 431
    f'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing" Target="../drawings/vmlDrawing{i}.vml"/>'
  • Network accessline 432
    f'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" Target="../comments{i}.xml"/>'
  • Network accessline 486
    xf_count = HIGHLIGHT_XF_BASE + len(PALETTE)     return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
  • Network accessline 487
    return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">   <fonts count="10">
  • Network accessline 488
    <styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">

skills/patent-disclosure/README.md

  • Network accessline 17
    <tr><td nowrap width="1%"><strong>实用结构线稿</strong></td><td>成文前选用或生成结构线稿,并叠部件序号</td></tr> <tr><td nowrap width="1%"><strong>专利点</strong></td><td>候选点讨论与融合</td></tr> <tr><td nowrap width="1%"><strong>查新</strong></td><td><strong>优先</strong> <a h
  • Network accessline 18
    <tr><td nowrap width="1%"><strong>专利点</strong></td><td>候选点讨论与融合</td></tr> <tr><td nowrap width="1%"><strong>查新</strong></td><td><strong>优先</strong> <a href="http://epub.cnipa.gov.cn/">国知局 · 中国专利公布公告</a>;异常或无果时再换其他检索。著录写入交底第一章</td></tr> <tr>
  • Network accessline 19
    <tr><td nowrap width="1%"><strong>查新</strong></td><td><strong>优先</strong> <a href="http://epub.cnipa.gov.cn/">国知局 · 中国专利公布公告</a>;异常或无果时再换其他检索。著录写入交底第一章</td></tr>

skills/patent-disclosure/examples/example_batch_job_scheduler/knowledge/pkg/scheduler/heartbeat.go

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/examples/example_batch_job_scheduler/knowledge/pkg/scheduler/reorder.go

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/examples/example_batch_job_scheduler/knowledge/pkg/scheduler/scorer.go

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/examples/example_batch_job_scheduler/knowledge/pkg/scheduler/types.go

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/examples/example_design_desk_lamp/README.md

  • Network accessline 38
    | 本地文件 | 来源文章 | 直链 | |----------|----------|------| | `view_perspective.jpg` | [明基 WiT 上手](https://sspai.com/post/81747) | https://cdnfile.sspai.com/2023/08/03/article/58410f27568ccd9df0d9d8b6893bc5e9?imageView2/2/w/1400/q/90/interlace/1/ig
  • Network accessline 39
    |----------|----------|------| | `view_perspective.jpg` | [明基 WiT 上手](https://sspai.com/post/81747) | https://cdnfile.sspai.com/2023/08/03/article/58410f27568ccd9df0d9d8b6893bc5e9?imageView2/2/w/1400/q/90/interlace/1/ignore-error/1 | | `vie
  • Network accessline 40
    | `view_perspective.jpg` | [明基 WiT 上手](https://sspai.com/post/81747) | https://cdnfile.sspai.com/2023/08/03/article/58410f27568ccd9df0d9d8b6893bc5e9?imageView2/2/w/1400/q/90/interlace/1/ignore-error/1 |
  • Network accessline 41
    | `views_ortho.jpg` | 同上 | https://cdnfile.sspai.com/2023/08/03/article/2841967c7a0bd40ef062a281350b0561?imageView2/2/w/1400/q/90/interlace/1/ignore-error/1 |
  • Network accessline 42
    | `view_arm_detail.jpg` | 同上 | https://cdnfile.sspai.com/2023/08/03/article/cd955177eb766eff79d9fe1ce990e893?imageView2/2/w/1400/q/90/interlace/1/ignore-error/1 |
  • Network accessline 43
    | `view_joint_detail.jpg` | 同上 | https://cdnfile.sspai.com/2023/08/03/article/6960c15717c38cecfeb6c533a672154d?imageView2/2/w/1400/q/90/interlace/1/ignore-error/1 |
  • Network accessline 44
    | `view_packaging.jpg` | 同上 | https://cdnfile.sspai.com/2023/08/03/article/4adf940a108373a2aa76e88093dd353a?imageView2/2/w/1400/q/90/interlace/1/ignore-error/1 |
  • Network accessline 45
    | `mi_desk_lamp_pro.jpg` | [米家台灯 Pro](https://sspai.com/post/52856) | https://cdnfile.sspai.com/2019/02/12/69013154e9c566e4f8651d6d645484cf.jpg?imageView2/2/w/1400/q/90/interlace/1/ignore-error/1 |

skills/patent-disclosure/examples/example_utility_model_ev_powertrain/README.md

  • Network accessline 6
    > 结构说明为教学虚构,保护点落在分腔壳体、花键滑脱抽拔、水套限于电机腔。实拍来自 Wikimedia 展台照片,车型与本案无关。附图类型划分参考 [汽车专利附图:动力总成、电池包、ADAS 与线束](https://patentfig.ai/zh/blog/automotive-patent-drawings-powertrain-battery-adas)(剖视 / 爆炸 / 局部)。
  • Network accessline 36
    | 本地文件 | 说明 | 页面 | 直链 | |----------|------|------|------| | `photo_motor_pcu.jpg` | Toyota Mirai 电机与 PCU 剖开展台 | [File:Toyota Mirai power control unit and electric motor SAO 2016 9019.jpg](https://commons.wikimedia.org/wiki/File:Toyota_Mirai
  • Network accessline 38
    | `photo_motor_pcu.jpg` | Toyota Mirai 电机与 PCU 剖开展台 | [File:Toyota Mirai power control unit and electric motor SAO 2016 9019.jpg](https://commons.wikimedia.org/wiki/File:Toyota_Mirai_power_control_unit_and_electric_motor_SAO_2016_9019.jpg) 
  • Network accessline 44
    | 主题 | 公开号 | 页面 | |------|--------|------| | 电动车桥总成(桥壳内电机/减速器/差速器) | CN206327151U | https://patents.google.com/patent/CN206327151U/zh |
  • Network accessline 45
    |------|--------|------| | 电动车桥总成(桥壳内电机/减速器/差速器) | CN206327151U | https://patents.google.com/patent/CN206327151U/zh | | 电驱动总成、集成水套(说明书附图标记) | — | https://www.xjishu.com/zhuanli/50/202110277717.html |
  • Network accessline 46
    | 电动车桥总成(桥壳内电机/减速器/差速器) | CN206327151U | https://patents.google.com/patent/CN206327151U/zh |
  • Network accessline 47
    | 电驱动总成、集成水套(说明书附图标记) | — | https://www.xjishu.com/zhuanli/50/202110277717.html |

skills/patent-disclosure/examples/example_utility_model_ev_powertrain/knowledge/docs/structure_brief.md

  • Network accessline 8
    图型配置参考公开文章对汽车动力总成附图的习惯划分(剖视承载内部结构、爆炸图承载装配关系、局部放大承载密封/花键等细节):[汽车专利附图:动力总成、电池包、ADAS 与线束](https://patentfig.ai/zh/blog/automotive-patent-drawings-powertrain-battery-adas)。
  • Network accessline 21
    公开检索可见大量「电机 + 减速器 + 差速器进桥壳」的实用新型,例如东风德纳 [CN206327151U《一种电动车桥总成》](https://patents.google.com/patent/CN206327151U/zh)(减速器在电机两端、差速器在电机内部、整体位于桥壳内)。本案教学点不在「三合一」口号本身,而在**壳体分腔 + 电机轴向可抽拔 + 水套随电机腔一体**这一组构造。
  • Network accessline 135
    | 资料 | 用途 | |------|------| | [PatentFig:汽车动力总成附图](https://patentfig.ai/zh/blog/automotive-patent-drawings-powertrain-battery-adas) | 剖视 / 爆炸 / 局部放大该何时用 |
  • Network accessline 136
    |------|------| | [PatentFig:汽车动力总成附图](https://patentfig.ai/zh/blog/automotive-patent-drawings-powertrain-battery-adas) | 剖视 / 爆炸 / 局部放大该何时用 | | [CN206327151U](https://patents.google.com/patent/CN206327151U/zh) | 桥壳内电机+两端减速器+内部差速器的已有集成方式 |
  • Network accessline 137
    | [PatentFig:汽车动力总成附图](https://patentfig.ai/zh/blog/automotive-patent-drawings-powertrain-battery-adas) | 剖视 / 爆炸 / 局部放大该何时用 |
  • Network accessline 138
    | [CN206327151U](https://patents.google.com/patent/CN206327151U/zh) | 桥壳内电机+两端减速器+内部差速器的已有集成方式 |
  • Network accessline 139
    | [CN 电驱动总成(集成水套)公开文本](https://www.xjishu.com/zhuanli/50/202110277717.html) | 壳体分室、集成水套、差速器总成等附图标记习惯 |

skills/patent-disclosure/prompts/prior_art_search.md

  • Network accessline 13
    1. **站点**:[国家知识产权局 中国专利公布公告](http://epub.cnipa.gov.cn/)(`epub.cnipa.gov.cn`)。
  • Network accessline 130
    7. **链接与著录**:`EPUB_HITS_JSON` 命中项在 1.1 的「来源链接」**直接使用 JSON 的 `link` 字段**(国知局公布站 `epub.cnipa.gov.cn`)。Google Patents 仅用于 **§B** 降级检索所得条目,或 JSON 无 `link`、仅知 `pub_number` 时的备选取址(如 `https://patents.google.com/patent/CN…/en`)。公开号与 URL 须对得上 JSON。页
  • Network accessline 136
    1. **中文文献与学术**:[Google 学术搜索](https://scholar.google.com)(`scholar.google.com`)。
  • Network accessline 138
    - 用中文关键词、技术方案核心术语、应用场景;可组合 2–3 组查询。    - 通过 WebSearch 或浏览器检索;优先可打开且与标题/作者匹配的链接。 2. **专利公开文献(补充)**:[Google Patents](https://patents.google.com/)。
  • Network accessline 139
    - 通过 WebSearch 或浏览器检索;优先可打开且与标题/作者匹配的链接。 2. **专利公开文献(补充)**:[Google Patents](https://patents.google.com/)。    - **发明**:界面/参数倾向 **Patent(`type=PATENT`)** + `country:CN`;公开号常见 `CN…A` / `CN…B`。第二轮分类号可拼 `CPC=B01J20/low`(见 3b.5,外网不通则跳过)。
  • Network accessline 140
    2. **专利公开文献(补充)**:[Google Patents](https://patents.google.com/)。
  • Network accessline 160
    | 类型 | 推荐 URL 形式 | 说明 | |------|----------------|------| | 美国等专利(公开出版物号) | `https://patents.google.com/patent/US20240118920A1/en` | 将 `US20240118920A1` 替换为实际公开号;以 Google Patents 页面能打开且标题/摘要匹配为准。 |
  • Network accessline 161
    |------|----------------|------| | 美国等专利(公开出版物号) | `https://patents.google.com/patent/US20240118920A1/en` | 将 `US20240118920A1` 替换为实际公开号;以 Google Patents 页面能打开且标题/摘要匹配为准。 | | 中国专利(**§A 国知局 JSON 命中**) | JSON 的 **`link`**,如 `http://epub.cnipa
  • Network accessline 162
    | 美国等专利(公开出版物号) | `https://patents.google.com/patent/US20240118920A1/en` | 将 `US20240118920A1` 替换为实际公开号;以 Google Patents 页面能打开且标题/摘要匹配为准。 |
  • Network accessline 163
    | 中国专利(**§A 国知局 JSON 命中**) | JSON 的 **`link`**,如 `http://epub.cnipa.gov.cn/patent/CN119781913A` | 1.1「来源链接」照抄 `link`。 |
  • Network accessline 164
    | 中国专利(**§B / WebSearch 补条**) | `https://patents.google.com/patent/CNXXXXXXXXXA/en`(或对应 B 型等) | 仅无国知局 `link`、经 §B 检索所得条目使用。 |
  • Network accessline 165
    | 学术论文(含 Scholar) | Scholar 条目页、出版社官方页或 **`https://doi.org/10.xxxx/...`** | Scholar 链接若重定向或镜像,以最终可长期解析的 DOI/出版社页为准。 |
  • Network accessline 166
    | arXiv 预印本 | `https://arxiv.org/abs/2008.09213` | `abs` 页为规范条目页。 |
  • Network accessline 167
    | 期刊 / 会议 | 出版社 DOI:`https://doi.org/10.xxxx/...` 或官方摘要页 | 以 DOI 解析后页面与文献一致为准。 |

skills/patent-disclosure/tests/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_cad_step_scan.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_cad_venv.py

  • Executable scriptline 1
    Executable file
  • Network accessline 33
    def test_isolated_env_drops_pythonpath(self) -> None:         with patch.dict("os.environ", {"PYTHONPATH": "C:\\leak", "PIP_INDEX_URL": "http://x"}, clear=False):
  • Network accessline 34
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]
  • Network accessline 49
    def test_china_mirrors_then_pypi(self) -> None:         urls = boot._index_list(pypi_only=False, extra=[])         self.assertEqual(urls[-1], "https://pypi.org/simple")
  • Network accessline 50
    urls = boot._index_list(pypi_only=False, extra=[])         self.assertEqual(urls[-1], "https://pypi.org/simple")         self.assertTrue(any("tsinghua" in u or "tuna" in u for u in urls))
  • Network accessline 51
    self.assertEqual(urls[-1], "https://pypi.org/simple")
  • Network accessline 55
    def test_pypi_only(self) -> None:         self.assertEqual(boot._index_list(pypi_only=True, extra=[]), ["https://pypi.org/simple"])
  • Network accessline 56
    self.assertEqual(boot._index_list(pypi_only=True, extra=[]), ["https://pypi.org/simple"])
  • Network accessline 82
    class SvgScreenshotTests(unittest.TestCase):     def test_wrap_strips_xml_decl(self) -> None:         html = shot.wrap_svg_html('<?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg"></svg>')
  • Network accessline 83
    def test_wrap_strips_xml_decl(self) -> None:         html = shot.wrap_svg_html('<?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg"></svg>')         self.assertIn("<svg", html)
  • Network accessline 84
    html = shot.wrap_svg_html('<?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg"></svg>')
  • Network accessline 93
    def test_pick_free_port_skips_busy(self) -> None:         srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  • Network accessline 94
    srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

skills/patent-disclosure/tests/test_check_design_views.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_cnipa_class_codes.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_cnipa_epub_chain.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 35
    [Credential-related source omitted]

skills/patent-disclosure/tests/test_cnipa_epub_crawler.py

  • Executable scriptline 1
    Executable file
  • Network accessline 166
    def test_goto_uses_commit_and_30s(self) -> None:         page = MagicMock()         _goto(page, "http://epub.cnipa.gov.cn/", advanced=False)
  • Network accessline 167
    page = MagicMock()         _goto(page, "http://epub.cnipa.gov.cn/", advanced=False)         kwargs = page.goto.call_args.kwargs
  • Network accessline 168
    _goto(page, "http://epub.cnipa.gov.cn/", advanced=False)
  • Network accessline 177
    page.goto.side_effect = PlaywrightTimeoutError("nav")         with self.assertRaises(EpubNavError) as ctx:             _goto(page, "http://epub.cnipa.gov.cn/Advanced", advanced=True)
  • Network accessline 178
    with self.assertRaises(EpubNavError) as ctx:             _goto(page, "http://epub.cnipa.gov.cn/Advanced", advanced=True)         self.assertEqual(ctx.exception.stage, "goto")
  • Network accessline 179
    _goto(page, "http://epub.cnipa.gov.cn/Advanced", advanced=True)
  • Network accessline 197
    page = MagicMock()         page.query_selector.return_value = None         page.url = "http://epub.cnipa.gov.cn/"
  • Network accessline 198
    page.query_selector.return_value = None         page.url = "http://epub.cnipa.gov.cn/"         with self.assertRaises(EpubNavError) as ctx:
  • Network accessline 199
    page.url = "http://epub.cnipa.gov.cn/"
  • Access to secretsline 422
    [Credential-related source omitted]

skills/patent-disclosure/tests/test_cnipa_epub_wait.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]
  • Access to secretsline 65
    [Credential-related source omitted]

skills/patent-disclosure/tests/test_design_lineart_gate.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 33
    [Credential-related source omitted]
  • Possible obfuscationline 79
    img.write_bytes(b"\xff\xd8\xff\xd9")

skills/patent-disclosure/tests/test_fence.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_formula_eval.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_formula_paradigms.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_image_gen.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_latex_delimiters.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_math_omml.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_math_render.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_md_to_docx_list.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_md_to_docx_table.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_mermaid_browser.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 25
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]
  • Access to secretsline 48
    [Credential-related source omitted]

skills/patent-disclosure/tests/test_mermaid_step_labels.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_pdf_to_md.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_source_parts.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_stdio_utf8.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]

skills/patent-disclosure/tests/test_structure_callout_layout.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tests/test_structure_callout_overlay.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 25
    PNG = base64.b64decode(
  • Network accessline 71
    (case / "composed.svg").write_text(                 '<?xml version="1.0" encoding="UTF-8"?>\n'                 '<svg xmlns="http://www.w3.org/2000/svg" width="100" height="80" '
  • Network accessline 72
    '<?xml version="1.0" encoding="UTF-8"?>\n'                 '<svg xmlns="http://www.w3.org/2000/svg" width="100" height="80" '                 'viewBox="0 0 100 80">\n'
  • Network accessline 73
    '<svg xmlns="http://www.w3.org/2000/svg" width="100" height="80" '

skills/patent-disclosure/tests/test_structure_lineart_compose.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 21
    PNG = base64.b64decode(

skills/patent-disclosure/tests/test_structure_lineart_gate.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 33
    [Credential-related source omitted]
  • Possible obfuscationline 74
    img.write_bytes(b"\xff\xd8\xff\xd9")
  • Possible obfuscationline 145
    img.write_bytes(b"\xff\xd8\xff\xd9")

skills/patent-disclosure/tests/test_svg_screenshot.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 18
    PNG = base64.b64decode(
  • Network accessline 29
    (root / "lineart.png").write_bytes(PNG)             (parts / "v_1.svg").write_text(                 '<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1" '
  • Network accessline 30
    (parts / "v_1.svg").write_text(                 '<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1" '                 'viewBox="0 0 1 1">'
  • Network accessline 31
    '<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1" '
  • Network accessline 36
    parent = root / "out.svg"             parent.write_text(                 '<svg xmlns="http://www.w3.org/2000/svg">'
  • Network accessline 37
    parent.write_text(                 '<svg xmlns="http://www.w3.org/2000/svg">'                 '<image href="parts/v_1.svg"/></svg>\n',
  • Network accessline 38
    '<svg xmlns="http://www.w3.org/2000/svg">'
  • Possible obfuscationline 47
    inner = base64.b64decode(match.group(1)).decode("utf-8")
  • Network accessline 51
    def test_svg_display_size_uses_width_height(self):         svg = '<svg xmlns="http://www.w3.org/2000/svg" width="1536" height="1024" viewBox="0 0 1536 1024"></svg>'
  • Network accessline 52
    svg = '<svg xmlns="http://www.w3.org/2000/svg" width="1536" height="1024" viewBox="0 0 1536 1024"></svg>'
  • Network accessline 59
    def test_leaves_remote_and_fragment_hrefs(self):         svg = (             '<svg xmlns="http://www.w3.org/2000/svg">'
  • Network accessline 60
    svg = (             '<svg xmlns="http://www.w3.org/2000/svg">'             '<use href="#src"/><image href="https://example.com/a.png"/></svg>'
  • Network accessline 61
    '<svg xmlns="http://www.w3.org/2000/svg">'
  • Network accessline 62
    '<use href="#src"/><image href="https://example.com/a.png"/></svg>'

skills/patent-disclosure/tools/README.md

  • Network accessline 334
    - 仅 **`.docx`**(OOXML);老版 **`.doc`** 不支持。 - **Markdown 输出在 mammoth 侧标记为 deprecated**,复杂排版可能弱于「先导出 HTML 再转 MD」;专利扫描一般足够。若版式崩坏,建议所内 **另存为 PDF 或纯文本** 再扫。 - **WMF/EMF** 等 Windows 图元可能需单独处理(见 [mammoth WMF 配方](https://github.com/mwilliamson/pytho
  • Network accessline 336
    - **WMF/EMF** 等 Windows 图元可能需单独处理(见 [mammoth WMF 配方](https://github.com/mwilliamson/python-mammoth))。

skills/patent-disclosure/tools/bootstrap_cad_venv.py

  • Executable scriptline 1
    Executable file
  • Network accessline 42
    DEFAULT_PIP_INDEXES = (     "https://pypi.tuna.tsinghua.edu.cn/simple",
  • Network accessline 43
    "https://pypi.tuna.tsinghua.edu.cn/simple",
  • Network accessline 44
    "https://mirrors.aliyun.com/pypi/simple",
  • Network accessline 45
    "https://pypi.mirrors.ustc.edu.cn/simple",
  • Network accessline 46
    "https://repo.huaweicloud.com/repository/pypi/simple",
  • Network accessline 47
    "https://pypi.org/simple",
  • Network accessline 51
    def _index_list(*, pypi_only: bool, extra: list[str]) -> list[str]:     if pypi_only:         return ["https://pypi.org/simple"]
  • Network accessline 52
    if pypi_only:         return ["https://pypi.org/simple"]     out: list[str] = []
  • Network accessline 53
    return ["https://pypi.org/simple"]
  • Access to secretsline 55
    [Credential-related source omitted]

skills/patent-disclosure/tools/browser.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]

skills/patent-disclosure/tools/cad_formats.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/cad_scan.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/cad_venv.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 32
    [Credential-related source omitted]
  • Access to secretsline 132
    [Credential-related source omitted]

skills/patent-disclosure/tools/check_design_views.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/check_formula_plan.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/check_source_parts.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/crawl/cnipa_epub_crawler.py

  • Network accessline 1
    # -*- coding: utf-8 -*- """ 中国专利公布公告站:http://epub.cnipa.gov.cn/ —— **首页「公布公告查询」**(#indexForm /
  • Executable scriptline 1
    Executable file
  • Network accessline 2
    """ 中国专利公布公告站:http://epub.cnipa.gov.cn/ —— **首页「公布公告查询」**(#indexForm / #searchStr)及 **高级查询**(/Advanced,分类号与名称字段)。
  • Network accessline 3
    中国专利公布公告站:http://epub.cnipa.gov.cn/ —— **首页「公布公告查询」**(#indexForm /
  • Network accessline 283
    mode = 'manual';     }     const r = await fetch(url, {
  • Network accessline 284
    }     const r = await fetch(url, {       method: 'POST',
  • Network accessline 285
    const r = await fetch(url, {
  • Access to secretsline 312
    [Credential-related source omitted]
  • Access to secretsline 341
    [Credential-related source omitted]
  • Access to secretsline 835
    [Credential-related source omitted]

skills/patent-disclosure/tools/crawl/cnipa_epub_nav.py

  • Executable scriptline 1
    Executable file
  • Network accessline 61
    EPUB_BASE = "http://epub.cnipa.gov.cn/"
  • Access to secretsline 157
    [Credential-related source omitted]

skills/patent-disclosure/tools/crawl/cnipa_epub_parse.py

  • Network accessline 1
    # -*- coding: utf-8 -*- """ 解析 http://epub.cnipa.gov.cn/ 检索结果页 HTML,提取公布公告列表中的标题、公开号、详情链接、摘要(若有)。
  • Executable scriptline 1
    Executable file
  • Network accessline 3
    解析 http://epub.cnipa.gov.cn/ 检索结果页 HTML,提取公布公告列表中的标题、公开号、详情链接、摘要(若有)。
  • Network accessline 15
    EPUB_BASE = "http://epub.cnipa.gov.cn/"
  • Network accessline 394
    """     新版「公布模式」结果页:无表格行,每条为 ``div.item``,题名在 ``h1.title``,     详情 URL 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/CN…"`` 上;
  • Network accessline 395
    新版「公布模式」结果页:无表格行,每条为 ``div.item``,题名在 ``h1.title``,     详情 URL 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/CN…"`` 上;     摘要位于 ``dt`` 为「摘要」的 ``dd`` 内(含 ``span.alltxt`` 折叠段)。
  • Network accessline 396
    详情 URL 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/CN…"`` 上;

skills/patent-disclosure/tools/crawl/cnipa_epub_search.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/crawl/cnipa_epub_wait.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 73
    [Credential-related source omitted]
  • Access to secretsline 134
    [Credential-related source omitted]

skills/patent-disclosure/tools/design_lineart_gate.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 25
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]

skills/patent-disclosure/tools/docx_to_md.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/fence/check_layout.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/fence/check_scorecard.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/fence/family_lib.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/fence/layout_lib.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/fence/scorecard_lib.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Access to secretsline 41
    [Credential-related source omitted]

skills/patent-disclosure/tools/formula_chem.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/formula_eval.py

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 239
    val = eval(compile(tree, "<formula>", "eval"), {"__builtins__": {}}, {"min": min, "max": max})

skills/patent-disclosure/tools/formula_paradigms.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Access to secretsline 66
    [Credential-related source omitted]

skills/patent-disclosure/tools/formula_units.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/gen_demo_snap_step.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/image_gen.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 56
    [Credential-related source omitted]

skills/patent-disclosure/tools/iteration_dialog_log.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/latex_delimiters.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/math_render.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/math_to_omml.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Network accessline 20
    MATHML_NS = "{http://www.w3.org/1998/Math/MathML}"

skills/patent-disclosure/tools/md_to_docx.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/mermaid_render.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/package-lock.json

  • Network accessline 19
    },       "funding": {         "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 20
    "funding": {         "url": "https://github.com/sponsors/sindresorhus"       }
  • Network accessline 21
    "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 31
    },       "funding": {         "url": "https://github.com/sponsors/antfu"
  • Network accessline 32
    "funding": {         "url": "https://github.com/sponsors/antfu"       }
  • Network accessline 33
    "url": "https://github.com/sponsors/antfu"
  • Network accessline 430
    "funding": {         "type": "github",         "url": "https://github.com/sponsors/tannerlinsley"
  • Network accessline 431
    "type": "github",         "url": "https://github.com/sponsors/tannerlinsley"       },
  • Network accessline 432
    "url": "https://github.com/sponsors/tannerlinsley"
  • Network accessline 443
    "funding": {         "type": "github",         "url": "https://github.com/sponsors/tannerlinsley"
  • Network accessline 444
    "type": "github",         "url": "https://github.com/sponsors/tannerlinsley"       }
  • Network accessline 445
    "url": "https://github.com/sponsors/tannerlinsley"
  • Network accessline 790
    },       "funding": {         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
  • Network accessline 791
    "funding": {         "url": "https://github.com/chalk/ansi-styles?sponsor=1"       }
  • Network accessline 792
    "url": "https://github.com/chalk/ansi-styles?sponsor=1"
  • Network accessline 951
    {           "type": "github",           "url": "https://github.com/sponsors/feross"
  • Network accessline 952
    "type": "github",           "url": "https://github.com/sponsors/feross"         },
  • Network accessline 953
    "url": "https://github.com/sponsors/feross"
  • Network accessline 955
    {           "type": "patreon",           "url": "https://www.patreon.com/feross"
  • Network accessline 956
    "type": "patreon",           "url": "https://www.patreon.com/feross"         },
  • Network accessline 957
    "url": "https://www.patreon.com/feross"
  • Network accessline 959
    {           "type": "consulting",           "url": "https://feross.org/support"
  • Network accessline 960
    "type": "consulting",           "url": "https://feross.org/support"         }
  • Network accessline 961
    "url": "https://feross.org/support"
  • Network accessline 980
    },       "funding": {         "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 981
    "funding": {         "url": "https://github.com/sponsors/sindresorhus"       }
  • Network accessline 982
    "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 1000
    {           "type": "github",           "url": "https://github.com/sponsors/feross"
  • Network accessline 1001
    "type": "github",           "url": "https://github.com/sponsors/feross"         },
  • Network accessline 1002
    "url": "https://github.com/sponsors/feross"
  • Network accessline 1004
    {           "type": "patreon",           "url": "https://www.patreon.com/feross"
  • Network accessline 1005
    "type": "patreon",           "url": "https://www.patreon.com/feross"         },
  • Network accessline 1006
    "url": "https://www.patreon.com/feross"
  • Network accessline 1008
    {           "type": "consulting",           "url": "https://feross.org/support"
  • Network accessline 1009
    "type": "consulting",           "url": "https://feross.org/support"         }
  • Network accessline 1010
    "url": "https://feross.org/support"
  • Network accessline 1049
    },       "funding": {         "url": "https://github.com/chalk/chalk?sponsor=1"
  • Network accessline 1050
    "funding": {         "url": "https://github.com/chalk/chalk?sponsor=1"       }
  • Network accessline 1051
    "url": "https://github.com/chalk/chalk?sponsor=1"
  • Network accessline 1095
    },       "funding": {         "url": "https://paulmillr.com/funding/"
  • Network accessline 1096
    "funding": {         "url": "https://paulmillr.com/funding/"       },
  • Network accessline 1097
    "url": "https://paulmillr.com/funding/"
  • Network accessline 1132
    },       "funding": {         "url": "https://polar.sh/cva"
  • Network accessline 1133
    "funding": {         "url": "https://polar.sh/cva"       }
  • Network accessline 1134
    "url": "https://polar.sh/cva"
  • Network accessline 1226
    },       "funding": {         "url": "https://github.com/sponsors/d-fischer"
  • Network accessline 1227
    "funding": {         "url": "https://github.com/sponsors/d-fischer"       },
  • Network accessline 1228
    "url": "https://github.com/sponsors/d-fischer"
  • Network accessline 1982
    "node_modules/fsevents": {       "version": "2.3.3",       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
  • Network accessline 1983
    "version": "2.3.3",       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
  • Network accessline 1984
    "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
  • Network accessline 2000
    "license": "MIT",       "funding": {         "url": "https://github.com/sponsors/ljharb"
  • Network accessline 2001
    "funding": {         "url": "https://github.com/sponsors/ljharb"       }
  • Network accessline 2002
    "url": "https://github.com/sponsors/ljharb"
  • Network accessline 2022
    },       "funding": {         "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 2023
    "funding": {         "url": "https://github.com/sponsors/sindresorhus"       }
  • Network accessline 2024
    "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 2119
    {           "type": "github",           "url": "https://github.com/sponsors/feross"
  • Network accessline 2120
    "type": "github",           "url": "https://github.com/sponsors/feross"         },
  • Network accessline 2121
    "url": "https://github.com/sponsors/feross"
  • Network accessline 2123
    {           "type": "patreon",           "url": "https://www.patreon.com/feross"
  • Network accessline 2124
    "type": "patreon",           "url": "https://www.patreon.com/feross"         },
  • Network accessline 2125
    "url": "https://www.patreon.com/feross"
  • Network accessline 2127
    {           "type": "consulting",           "url": "https://feross.org/support"
  • Network accessline 2128
    "type": "consulting",           "url": "https://feross.org/support"         }
  • Network accessline 2129
    "url": "https://feross.org/support"
  • Network accessline 2138
    "funding": {         "type": "opencollective",         "url": "https://opencollective.com/immer"
  • Network accessline 2139
    "type": "opencollective",         "url": "https://opencollective.com/immer"       }
  • Network accessline 2140
    "url": "https://opencollective.com/immer"
  • Network accessline 2153
    },       "funding": {         "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 2154
    "funding": {         "url": "https://github.com/sponsors/sindresorhus"       }
  • Network accessline 2155
    "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 2162
    "funding": {         "type": "github",         "url": "https://github.com/sponsors/wooorm"
  • Network accessline 2163
    "type": "github",         "url": "https://github.com/sponsors/wooorm"       }
  • Network accessline 2164
    "url": "https://github.com/sponsors/wooorm"
  • Network accessline 2208
    },       "funding": {         "url": "https://github.com/sponsors/ljharb"
  • Network accessline 2209
    "funding": {         "url": "https://github.com/sponsors/ljharb"       }
  • Network accessline 2210
    "url": "https://github.com/sponsors/ljharb"
  • Network accessline 2307
    "dev": true,       "funding": [         "https://opencollective.com/katex",
  • Network accessline 2308
    "funding": [         "https://opencollective.com/katex",         "https://github.com/sponsors/katex"
  • Network accessline 2309
    "https://opencollective.com/katex",
  • Network accessline 2310
    "https://github.com/sponsors/katex"
  • Network accessline 2360
    },       "funding": {         "url": "https://github.com/sponsors/antonk52"
  • Network accessline 2361
    "funding": {         "url": "https://github.com/sponsors/antonk52"       }
  • Network accessline 2362
    "url": "https://github.com/sponsors/antonk52"
  • Network accessline 2493
    {           "type": "github",           "url": "https://github.com/sponsors/ai"
  • Network accessline 2494
    "type": "github",           "url": "https://github.com/sponsors/ai"         }
  • Network accessline 2495
    "url": "https://github.com/sponsors/ai"
  • Network accessline 2617
    },       "funding": {         "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 2618
    "funding": {         "url": "https://github.com/sponsors/sindresorhus"       }
  • Network accessline 2619
    "url": "https://github.com/sponsors/sindresorhus"
  • Network accessline 2653
    },       "funding": {         "url": "https://github.com/sponsors/jonschlinkert"
  • Network accessline 2654
    "funding": {         "url": "https://github.com/sponsors/jonschlinkert"       }
  • Network accessline 2655
    "url": "https://github.com/sponsors/jonschlinkert"
  • Network accessline 2737
    {           "type": "opencollective",           "url": "https://opencollective.com/postcss/"
  • Network accessline 2738
    "type": "opencollective",           "url": "https://opencollective.com/postcss/"         },
  • Network accessline 2739
    "url": "https://opencollective.com/postcss/"
  • Network accessline 2741
    {           "type": "tidelift",           "url": "https://tidelift.com/funding/github/npm/postcss"
  • Network accessline 2742
    "type": "tidelift",           "url": "https://tidelift.com/funding/github/npm/postcss"         },
  • Network accessline 2743
    "url": "https://tidelift.com/funding/github/npm/postcss"
  • Network accessline 2745
    {           "type": "github",           "url": "https://github.com/sponsors/ai"
  • Network accessline 2746
    "type": "github",           "url": "https://github.com/sponsors/ai"         }
  • Network accessline 2747
    "url": "https://github.com/sponsors/ai"
  • Network accessline 2780
    {           "type": "opencollective",           "url": "https://opencollective.com/postcss/"
  • Network accessline 2781
    "type": "opencollective",           "url": "https://opencollective.com/postcss/"         },
  • Network accessline 2782
    "url": "https://opencollective.com/postcss/"
  • Network accessline 2784
    {           "type": "github",           "url": "https://github.com/sponsors/ai"
  • Network accessline 2785
    "type": "github",           "url": "https://github.com/sponsors/ai"         }
  • Network accessline 2786
    "url": "https://github.com/sponsors/ai"
  • Network accessline 2804
    {           "type": "opencollective",           "url": "https://opencollective.com/postcss/"
  • Network accessline 2805
    "type": "opencollective",           "url": "https://opencollective.com/postcss/"         },
  • Network accessline 2806
    "url": "https://opencollective.com/postcss/"
  • Network accessline 2808
    {           "type": "github",           "url": "https://github.com/sponsors/ai"
  • Network accessline 2809
    "type": "github",           "url": "https://github.com/sponsors/ai"         }
  • Network accessline 2810
    "url": "https://github.com/sponsors/ai"
  • Network accessline 2845
    {           "type": "opencollective",           "url": "https://opencollective.com/postcss/"
  • Network accessline 2846
    "type": "opencollective",           "url": "https://opencollective.com/postcss/"         },
  • Network accessline 2847
    "url": "https://opencollective.com/postcss/"
  • Network accessline 2849
    {           "type": "github",           "url": "https://github.com/sponsors/ai"
  • Network accessline 2850
    "type": "github",           "url": "https://github.com/sponsors/ai"         }
  • Network accessline 2851
    "url": "https://github.com/sponsors/ai"
  • Network accessline 2975
    {           "type": "github",           "url": "https://github.com/sponsors/feross"
  • Network accessline 2976
    "type": "github",           "url": "https://github.com/sponsors/feross"         },
  • Network accessline 2977
    "url": "https://github.com/sponsors/feross"
  • Network accessline 2979
    {           "type": "patreon",           "url": "https://www.patreon.com/feross"
  • Network accessline 2980
    "type": "patreon",           "url": "https://www.patreon.com/feross"         },
  • Network accessline 2981
    "url": "https://www.patreon.com/feross"
  • Network accessline 2983
    {           "type": "consulting",           "url": "https://feross.org/support"
  • Network accessline 2984
    "type": "consulting",           "url": "https://feross.org/support"         }
  • Network accessline 2985
    "url": "https://feross.org/support"
  • Network accessline 3078
    },       "funding": {         "url": "https://github.com/sponsors/ljharb"
  • Network accessline 3079
    "funding": {         "url": "https://github.com/sponsors/ljharb"       }
  • Network accessline 3080
    "url": "https://github.com/sponsors/ljharb"
  • Network accessline 3120
    {           "type": "github",           "url": "https://github.com/sponsors/feross"
  • Network accessline 3121
    "type": "github",           "url": "https://github.com/sponsors/feross"         },
  • Network accessline 3122
    "url": "https://github.com/sponsors/feross"
  • Network accessline 3124
    {           "type": "patreon",           "url": "https://www.patreon.com/feross"
  • Network accessline 3125
    "type": "patreon",           "url": "https://www.patreon.com/feross"         },
  • Network accessline 3126
    "url": "https://www.patreon.com/feross"
  • Network accessline 3128
    {           "type": "consulting",           "url": "https://feross.org/support"
  • Network accessline 3129
    "type": "consulting",           "url": "https://feross.org/support"         }
  • Network accessline 3130
    "url": "https://feross.org/support"
  • Network accessline 3147
    {           "type": "github",           "url": "https://github.com/sponsors/feross"
  • Network accessline 3148
    "type": "github",           "url": "https://github.com/sponsors/feross"         },
  • Network accessline 3149
    "url": "https://github.com/sponsors/feross"
  • Network accessline 3151
    {           "type": "patreon",           "url": "https://www.patreon.com/feross"
  • Network accessline 3152
    "type": "patreon",           "url": "https://www.patreon.com/feross"         },
  • Network accessline 3153
    "url": "https://www.patreon.com/feross"
  • Network accessline 3155
    {           "type": "consulting",           "url": "https://feross.org/support"
  • Network accessline 3156
    "type": "consulting",           "url": "https://feross.org/support"         }
  • Network accessline 3157
    "url": "https://feross.org/support"
  • Network accessline 3341
    },       "funding": {         "url": "https://github.com/sponsors/ljharb"
  • Network accessline 3342
    "funding": {         "url": "https://github.com/sponsors/ljharb"       }
  • Network accessline 3343
    "url": "https://github.com/sponsors/ljharb"
  • Network accessline 3355
    "funding": {         "type": "github",         "url": "https://github.com/sponsors/dcastil"
  • Network accessline 3356
    "type": "github",         "url": "https://github.com/sponsors/dcastil"       }
  • Network accessline 3357
    "url": "https://github.com/sponsors/dcastil"
  • Network accessline 3486
    },       "funding": {         "url": "https://github.com/sponsors/SuperchupuDev"
  • Network accessline 3487
    "funding": {         "url": "https://github.com/sponsors/SuperchupuDev"       }
  • Network accessline 3488
    "url": "https://github.com/sponsors/SuperchupuDev"
  • Network accessline 3513
    },       "funding": {         "url": "https://github.com/sponsors/jonschlinkert"
  • Network accessline 3514
    "funding": {         "url": "https://github.com/sponsors/jonschlinkert"       }
  • Network accessline 3515
    "url": "https://github.com/sponsors/jonschlinkert"
  • Network accessline 3570
    {           "type": "github",           "url": "https://github.com/sponsors/feross"
  • Network accessline 3571
    "type": "github",           "url": "https://github.com/sponsors/feross"         },
  • Network accessline 3572
    "url": "https://github.com/sponsors/feross"
  • Network accessline 3574
    {           "type": "patreon",           "url": "https://www.patreon.com/feross"
  • Network accessline 3575
    "type": "patreon",           "url": "https://www.patreon.com/feross"         },
  • Network accessline 3576
    "url": "https://www.patreon.com/feross"
  • Network accessline 3578
    {           "type": "consulting",           "url": "https://feross.org/support"
  • Network accessline 3579
    "type": "consulting",           "url": "https://feross.org/support"         }
  • Network accessline 3580
    "url": "https://feross.org/support"
  • Network accessline 3610
    "dev": true,       "funding": [         "https://github.com/sponsors/broofa",
  • Network accessline 3611
    "funding": [         "https://github.com/sponsors/broofa",         "https://github.com/sponsors/ctavan"
  • Network accessline 3612
    "https://github.com/sponsors/broofa",
  • Network accessline 3613
    "https://github.com/sponsors/ctavan"
  • Network accessline 3674
    },       "funding": {         "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
  • Network accessline 3675
    "funding": {         "url": "https://github.com/chalk/wrap-ansi?sponsor=1"       }
  • Network accessline 3676
    "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
  • Network accessline 3749
    "license": "MIT",       "funding": {         "url": "https://github.com/sponsors/colinhacks"
  • Network accessline 3750
    "funding": {         "url": "https://github.com/sponsors/colinhacks"       }
  • Network accessline 3751
    "url": "https://github.com/sponsors/colinhacks"

skills/patent-disclosure/tools/package.json

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/patent_type.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/pdf_to_md.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/pptx_to_md.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-disclosure/tools/run_step_to_views.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 51
    [Credential-related source omitted]

skills/patent-disclosure/tools/stdio_utf8.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]

skills/patent-disclosure/tools/step_to_views.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 86
    [Credential-related source omitted]
  • Access to secretsline 204
    [Credential-related source omitted]

skills/patent-disclosure/tools/structure_callout_layout.py

  • Executable scriptline 1
    Executable file

skills/patent-disclosure/tools/structure_callout_overlay.py

  • Executable scriptline 1
    Executable file
  • Network accessline 399
    '<?xml version="1.0" encoding="UTF-8"?>',         (             f'<svg xmlns="http://www.w3.org/2000/svg" '
  • Network accessline 400
    (             f'<svg xmlns="http://www.w3.org/2000/svg" '             f'xmlns:xlink="http://www.w3.org/1999/xlink" '
  • Network accessline 401
    f'<svg xmlns="http://www.w3.org/2000/svg" '
  • Network accessline 402
    f'xmlns:xlink="http://www.w3.org/1999/xlink" '

skills/patent-disclosure/tools/structure_lineart_compose.py

  • Executable scriptline 1
    Executable file
  • Network accessline 251
    '<?xml version="1.0" encoding="UTF-8"?>',         (             '<svg xmlns="http://www.w3.org/2000/svg" '
  • Network accessline 252
    (             '<svg xmlns="http://www.w3.org/2000/svg" '             'xmlns:xlink="http://www.w3.org/1999/xlink" '
  • Network accessline 253
    '<svg xmlns="http://www.w3.org/2000/svg" '
  • Network accessline 254
    'xmlns:xlink="http://www.w3.org/1999/xlink" '
  • Network accessline 451
    '<?xml version="1.0" encoding="UTF-8"?>',         (             '<svg xmlns="http://www.w3.org/2000/svg" '
  • Network accessline 452
    (             '<svg xmlns="http://www.w3.org/2000/svg" '             'xmlns:xlink="http://www.w3.org/1999/xlink" '
  • Network accessline 453
    '<svg xmlns="http://www.w3.org/2000/svg" '
  • Network accessline 454
    'xmlns:xlink="http://www.w3.org/1999/xlink" '
  • Network accessline 455
    'xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" '

skills/patent-disclosure/tools/structure_lineart_gate.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 25
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]

skills/patent-disclosure/tools/svg_screenshot.py

  • Executable scriptline 1
    Executable file
  • Network accessline 49
    def port_free(host: str, port: int) -> bool:     with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
  • Network accessline 50
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
  • Network accessline 62
    return preferred         print(f"SVG_HTTP: preferred_port_busy={preferred}", file=sys.stderr, flush=True)     with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
  • Network accessline 63
    print(f"SVG_HTTP: preferred_port_busy={preferred}", file=sys.stderr, flush=True)     with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:         s.bind((host, 0))
  • Network accessline 64
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
  • Access to secretsline 72
    [Credential-related source omitted]
  • Network accessline 272
    try:                 for key, svg_path, png_path in queued:                     url = f"http://{host}:{port}/view?id={key}"
  • Network accessline 273
    for key, svg_path, png_path in queued:                     url = f"http://{host}:{port}/view?id={key}"                     try:
  • Network accessline 274
    url = f"http://{host}:{port}/view?id={key}"

skills/patent-disclosure/tools/vendor/README.md

  • Network accessline 3
    | 文件 | 版本 | 来源 | |------|------|------| | `mermaid.min.js` | **11.4.1** | https://cdn.jsdelivr.net/npm/mermaid@11.4.1/dist/mermaid.min.js |
  • Network accessline 5
    | `mermaid.min.js` | **11.4.1** | https://cdn.jsdelivr.net/npm/mermaid@11.4.1/dist/mermaid.min.js |

skills/patent-disclosure/tools/vendor/mermaid.min.js

  • Possible obfuscationline 1
    "use strict";var __esbuild_esm_mermaid=(()=>{var cxe=Object.create;var R1=Object.defineProperty;var uxe=Object.getOwnPropertyDescriptor;var hxe=Object.getOwnPropertyNames;var fxe=Object.getPrototypeOf,dxe=Object.prototype.hasOwnProperty;var
  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 2
    [	 ]{`+Math.min.apply(Math,i)+"}","g");n=n.map(function(l){return l.replace(a, `)})}n[0]=n[0].replace(/^\r?\n/,"");var s=n[0];return e.forEach(function(l,u){var h=s.match(/(?:^|\n)( *)$/),f=h?h[1]:"",d=l;typeof l=="string"&&l.includes( `)&&
  • Possible obfuscationline 7
    `);for(let[r,{detector:n}]of Object.entries(Gf))if(n(t,e))return r;throw new rp(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),Bb=o((...t)=>{for(let{id:e,detector:r,loader:n}of t)OS(e,r,n)},"registerL
  • Possible obfuscationline 8
    [Credential-related source omitted]
  • Possible obfuscationline 9
    [Credential-related source omitted]
  • Possible obfuscationline 10
    [Credential-related source omitted]
  • Possible obfuscationline 11
    `+X+"^"},"showPosition"),test_match:o(function(xe,X){var fe,he,ge;if(this.options.backtrack_lexer&&(ge={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_col
  • Possible obfuscationline 12
    [Credential-related source omitted]
  • Possible obfuscationline 13
    `+Ir),ae&&qb([k,R,S],kn=>{Ir=H1(Ir,kn," ")}),_&&Fe?_.createHTML(Ir):Ir},e.setConfig=function(){let yt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ft(yt),te=!0},e.clearConfig=function(){Tt=null,te=!1},e.isValidAttribute=functio
  • Possible obfuscationline 267
    [Credential-related source omitted]
  • Possible obfuscationline 268
    [Credential-related source omitted]
  • Possible obfuscationline 271
    ?)[ \r	]*`,_C="[\u0300-\u036F]",u3e=new RegExp(_C+"+$"),h3e="("+S$+"+)|"+(c3e+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(_C+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(_C+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+
  • Possible obfuscationline 272
    [Credential-related source omitted]
  • Possible obfuscationline 273
    please report what input caused this bug`);return n=n.slice(1,-1),{type:"verb",mode:"text",body:n,star:i}}OG.hasOwnProperty(r[0])&&!En[this.mode][r[0]]&&(this.settings.strict&&this.mode==="math"&&this.settings.reportNonstrict("unicodeTextIn
  • Possible obfuscationline 328
    `},"getStyles"),B$=o((t,e)=>{e!==void 0&&(k4[t]=e)},"addStylesForDiagram"),F$=N3e});var iy={};vr(iy,{clear:()=>_r,getAccDescription:()=>Fr,getAccTitle:()=>Pr,getDiagramTitle:()=>Jr,setAccDescription:()=>Br,setAccTitle:()=>Rr,setDiagramTitle
  • Possible obfuscationline 329
    `)},"setAccDescription"),Fr=o(()=>e7,"getAccDescription"),ln=o(t=>{JC=t7(t)},"setDiagramTitle"),Jr=o(()=>JC,"getDiagramTitle")});var z$,R3e,de,n7,S4,i7,a7,M3e,E4,Qf,ay,r7,Vt=M(()=>{"use strict";$f();ht();Ua();fr();ni();QC();ki();z$=Y,R3e=M1
  • Possible obfuscationline 330
    `,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),Y.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let n,i=[];for(;(n=zf.exec(t))!==null;)if(n.index===zf.lastIndex&&zf.lastIndex++,n&&!e||e&&n[1]?.matc
  • Possible obfuscationline 334
    `,"getStyles"),$X=i7e});var UX={};vr(UX,{diagram:()=>a7e});var a7e,HX=M(()=>{"use strict";PS();l7();GX();VX();a7e={parser:QF,db:oy,renderer:o9,styles:$X,init:o(({c4:t,wrap:e})=>{o9.setConf(t),oy.setWrap(e)},"init")}});function u9(){return{a
  • Possible obfuscationline 336
    `)}function en(t,e){return kd.parse(t,e)}var Ed,JX,c7e,ej,u7e,h7e,qX,f7e,p7e,uv,nm,y7e,v7e,x7e,fv,b7e,tj,rj,h9,w7e,f9,T7e,k7e,w5,d9,E7e,nj,S7e,p9,QX,C7e,A7e,ij,_7e,aj,L7e,dv,D7e,N7e,R7e,M7e,I7e,O7e,P7e,B7e,F7e,b5,z7e,sj,oj,G7e,m9,$7e,l9,V7e
  • Possible obfuscationline 344
    ${d}`:d;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(d,s,!0),this.lexer.state.top=p,n.length===0)break;let m=s[s.length-1];if(m?.type==="code")break;if(m?.type==="blockquote"){let g=m,y=g.raw+ `+n.join( `),v=
  • Possible obfuscationline 356
    `,e=e.substring(T.length+1),d=p.slice(g)}}a.loose||(l?a.loose=!0:/\n *\n *$/.test(h)&&(l=!0));let y=null,v;this.options.gfm&&(y=/^\[[ xX]\] /.exec(f),y&&(v=y[0]!=="[ ] ",f=f.replace(/^\[[ xX]\] +/,""))),a.items.push({type:"list_item",raw:h,
  • Possible obfuscationline 358
    `?r[1].slice(0,-1):r[1];return{type:"paragraph",raw:r[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let r=this.rules.block.text.exec(e);if(r)return{type:"text",raw:r[0],text:r[0],tokens:this.lexer.inline(r[0])}}escape(e){let r=this.rules.
  • Possible obfuscationline 359
    ]`).replace("lheading",rj).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},ij=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,_7e=/^(`+)([^`]|[^
  • Possible obfuscationline 360
    `),this.blockTokens(e,this.tokens);for(let r=0;r<this.inlineQueue.length;r++){let n=this.inlineQueue[r];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,r=[],n=!1){this.options.pedantic?e=e.replace(/\t/
  • Possible obfuscationline 369
    `+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):r.push(i);continue}if(e){let l="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(l);break}else throw new Error(l)}}return 
  • Possible obfuscationline 387
    `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${e}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.par
  • Possible obfuscationline 388
    `+this.renderer.text(l);r?n+=this.renderer.paragraph({type:"paragraph",raw:u,text:u,tokens:[{type:"text",raw:u,text:u}]}):n+=u;continue}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error
  • Network accessline 389
    Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+eo(n.message+"",!0)+"</pre>";return r?Promise.resolve(i):i}if(r)return Promise.reject(n);throw n}}},kd=new c9;o(en,"marked");en.options=en.
  • Possible obfuscationline 389
    Please report this to https://github.com/markedjs/marked.`,e){let i="<p>An error occurred:</p><pre>"+eo(n.message+"",!0)+"</pre>";return r?Promise.resolve(i):i}if(r)return Promise.reject(n);throw n}}},kd=new c9;o(en,"marked");en.options=en.
  • Network accessline 392
    `).forEach((f,d)=>{d!==0&&(a++,i.push([])),f.split(" ").forEach(p=>{p=p.replace(/&#39;/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.tex
  • Possible obfuscationline 392
    `).forEach((f,d)=>{d!==0&&(a++,i.push([])),f.split(" ").forEach(p=>{p=p.replace(/&#39;/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.tex
  • Network accessline 393
    `)))throw new Error("splitLineToFitWidth does not support newlines in the line");return g9(t,e)}function g9(t,e,r=[],n=[]){if(t.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";t[0].content===" "&&(i=" ",t.shift());let a=t.s
  • Network accessline 394
    `),de()));let u=e.isNode?"nodeLabel":"edgeLabel",h=s.append("span");h.html(l),mj(h,e.labelStyle),h.attr("class",`${u} ${n}`),mj(s,e.labelStyle),s.style("display","table-cell"),s.style("white-space","nowrap"),s.style("line-height","1.5"),s.s
  • Possible obfuscationline 394
    `),de()));let u=e.isNode?"nodeLabel":"edgeLabel",h=s.append("span");h.html(l),mj(h,e.labelStyle),h.attr("class",`${u} ${n}`),mj(s,e.labelStyle),s.style("display","table-cell"),s.style("white-space","nowrap"),s.style("line-height","1.5"),s.s
  • Possible obfuscationline 395
    M ${i.x},${i.y} L ${s.x},${s.y}`}function Zj(t,e){let{labelStyles:r,nodeStyles:n}=et(e);e.labelStyle=r,e.label="";let i=t.insert("g").attr("class",lt(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,l=Ke.svg(i),u=Ze(e
  • Network accessline 397
    node: `,e,` res:`,qe.polygon(e,h,p)),qe.polygon(e,h,p)},i}var vAe,nQ=M(()=>{"use strict";ht();Ft();qt();Xt();jt();Su();vAe=o((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBox
  • Network accessline 398
    `,e, res:`,qe.polygon(e,h,p)),qe.polygon(e,h,p)},i}var vAe,nQ=M(()=>{"use strict";ht();Ft();qt();Xt();jt();Su();vAe=o((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD")
  • Possible obfuscationline 398
    `,e, res:`,qe.polygon(e,h,p)),qe.polygon(e,h,p)},i}var vAe,nQ=M(()=>{"use strict";ht();Ft();qt();Xt();jt();Su();vAe=o((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD")
  • Network accessline 399
    res:`,qe.polygon(e,h,p)),qe.polygon(e,h,p)},i}var vAe,nQ=M(()=>{"use strict";ht();Ft();qt();Xt();jt();Su();vAe=o((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(rQ
  • Possible obfuscationline 399
    res:`,qe.polygon(e,h,p)),qe.polygon(e,h,p)},i}var vAe,nQ=M(()=>{"use strict";ht();Ft();qt();Xt();jt();Su();vAe=o((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(rQ
  • Network accessline 400
    `),de()));let i=t.isNode?"nodeLabel":"edgeLabel";return r.html('<span class="'+i+'" '+(t.labelStyle?'style="'+t.labelStyle+'"':"")+">"+n+"</span>"),xAe(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style
  • Possible obfuscationline 400
    `),de()));let i=t.isNode?"nodeLabel":"edgeLabel";return r.html('<span class="'+i+'" '+(t.labelStyle?'style="'+t.labelStyle+'"':"")+">"+n+"</span>"),xAe(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style
  • Possible obfuscationline 406
    l${-r},0`,"createCylinderPathD"),kAe=o((t,e,r,n,i,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),EAe=o((t,e,r,n,i,a)=>[`M${t+r/2},${-n/2}`,`a
  • Possible obfuscationline 408
    M${f},${d-h} L${f},${d+u}`;e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("transform",`translate(${h/2}, ${h/2})`),b.attr("class","basic label-container"),p&&e.look
  • Possible obfuscationline 410
    `+t.mark.snippet),n+" "+r):n}function bv(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=mZ(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack|
  • Possible obfuscationline 413
    `,u=1;u<=e.linesAfter&&!(s+u>=i.length);u++)h=$9(t.buffer,n[s+u],i[s+u],t.position-(n[s]-n[s+u]),d),l+=Pi.repeat(" ",e.indent)+V9((t.line+u+1).toString(),f)+" | "+h.str+ `;return l.replace(/\n$/,"")}function UAe(t){var e={};return t!==null&
  • Possible obfuscationline 414
    `;return l.replace(/\n$/,"")}function UAe(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(n){e[String(n)]=r})}),e}function HAe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if($Ae.indexOf(r)===-1)t
  • Possible obfuscationline 415
    `:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"\x1B":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function Q8e(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((
  • Possible obfuscationline 416
    `,e-1))}function J8e(t,e,r){var n,i,a,s,l,u,h,f,d=t.kind,p=t.result,m;if(m=t.input.charCodeAt(t.position),Ss(m)||lm(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=t.input.ch
  • Possible obfuscationline 417
    `,a?1+u:u):i===U9&&a&&(t.result+= `);break}for(n?_d(d)?(h=!0,t.result+=Pi.repeat( `,a?1+u:u)):h?(h=!1,t.result+=Pi.repeat( `,u+1)):u===0?a&&(t.result+=" "):t.result+=Pi.repeat( `,u):t.result+=Pi.repeat( `,a?1+u:u),a=!0,s=!0,u=0,r=t.position
  • Possible obfuscationline 422
    `,a?1+u:u),a=!0,s=!0,u=0,r=t.position;!yc(d)&&d!==0;)d=t.input.charCodeAt(++t.position);Gh(t,r,t.position,!1)}return!0}function aZ(t,e){var r,n=t.tag,i=t.anchor,a=[],s,l=!1,u;if(t.firstTabInLine!==-1)return!1;for(t.anchor!==null&&(t.anchorM
  • Possible obfuscationline 423
    `),t.charCodeAt(0)===65279&&(t=t.slice(1)));var r=new Z8e(t,e),n=t.indexOf("\0");for(n!==-1&&(r.position=n,Qt(r,"null byte is not allowed in input")),r.input+="\0";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.po
  • Possible obfuscationline 426
    `+Pi.repeat(" ",t.indent*e)}function O_e(t,e){var r,n,i;for(r=0,n=t.implicitTypes.length;r<n;r+=1)if(i=t.implicitTypes[r],i.resolve(e))return!0;return!1}function G5(t){return t===m_e||t===d_e}function kv(t){return 32<=t&&t<=126||161<=t&&t<=
  • Possible obfuscationline 437
    `+t.slice(s+1):u+=t.slice(i),u.slice(1)}function $_e(t){for(var e="",r=0,n,i=0;i<t.length;r>=65536?i+=2:i++)r=xv(t,i),n=Na[r],!n&&kv(r)?(e+=t[i],r>=65536&&(e+=t[i+1])):e+=n||R_e(r);return e}function V_e(t,e,r){var n="",i=t.tag,a,s,l;for(a=0
  • Possible obfuscationline 438
    `:""}function J9(t,e){return function(){throw new Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+e+" instead, which is now safe by default.")}}var MAe,IAe,OAe,PAe,BAe,FAe,Pi,Es,GAe,$Ae,VAe,Da,YAe,qAe,XAe,jAe,KAe,e8e,i8e,h8e,
  • Possible obfuscationline 439
    \r`;o(C8e,"resolveYamlBinary");o(A8e,"constructYamlBinary");o(_8e,"representYamlBinary");o(L8e,"isBinary");D8e=new Da("tag:yaml.org,2002:binary",{kind:"scalar",resolve:C8e,construct:A8e,predicate:L8e,represent:_8e}),N8e=Object.prototype.has
  • Possible obfuscationline 447
    You have to call mermaid.initialize.`)},"addSingleLink"),Z_e=o(function(t,e,r){Y.info("addLink",t,e,r);for(let n of t)for(let i of e)Q_e(n,i,r)},"addLink"),J_e=o(function(t,e){t.forEach(function(r){r==="default"?Cs.defaultInterpolate=e:Cs[r
  • Possible obfuscationline 450
    node        : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.x<e.x?s-a:s+a,u=t.height/2,h=Math.abs(e.y-r.y),f=Math.abs(e.x-r.x);if(Math.abs(i-e.y)*s>Math.abs(n-e.x)*u){let d=r.y<e.y?e.y-u-i:
  • Possible obfuscationline 451
    Node.id = `,y,  data=`,x.height, Parent cluster`,i.height),e.setNode(i.id,x),e.parent(y)||(Y.trace("Setting parent",y,i.id),e.setParent(y,i.id,x))}if(Y.info("(Insert) Node XXX"+y+": "+JSON.stringify(e.node(y))),v?.clusterNode){Y.info("Clust
  • Possible obfuscationline 453
    Parent cluster`,i.height),e.setNode(i.id,x),e.parent(y)||(Y.trace("Setting parent",y,i.id),e.setParent(y,i.id,x))}if(Y.info("(Insert) Node XXX"+y+": "+JSON.stringify(e.node(y))),v?.clusterNode){Y.info("Cluster identified XBX",y,v.width,e.no
  • Possible obfuscationline 454
    [Credential-related source omitted]
  • Possible obfuscationline 455
    [Credential-related source omitted]
  • Possible obfuscationline 456
    [Credential-related source omitted]
  • Possible obfuscationline 457
    `+St+"^"},"showPosition"),test_match:o(function(_t,St){var bt,Ue,Kt;if(this.options.backtrack_lexer&&(Kt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_c
  • Possible obfuscationline 458
    [Credential-related source omitted]
  • Possible obfuscationline 604
    `,"getStyles"),qie=hPe});var hT={};vr(hT,{diagram:()=>fPe});var fPe,fT=M(()=>{"use strict";Vt();oL();Hie();Yie();Xie();fPe={parser:Wie,db:X5,renderer:Uie,styles:qie,init:o(t=>{t.flowchart||(t.flowchart={}),t.layout&&n7({layout:t.layout}),t.
  • Possible obfuscationline 605
    [Credential-related source omitted]
  • Possible obfuscationline 606
    [Credential-related source omitted]
  • Possible obfuscationline 607
    [Credential-related source omitted]
  • Possible obfuscationline 608
    `+I+"^"},"showPosition"),test_match:o(function(A,I){var D,k,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:t
  • Possible obfuscationline 609
    [Credential-related source omitted]
  • Possible obfuscationline 654
    `,"getStyles"),kae=WPe});var Sae={};vr(Sae,{diagram:()=>YPe});var YPe,Cae=M(()=>{"use strict";eae();nae();Tae();Eae();YPe={parser:Jie,db:rae,renderer:wae,styles:kae}});function ei(t){return typeof t=="object"&&t!==null&&typeof t.$type=="str

skills/patent-docket/tests/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-docket/tests/test_docket.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 145
    [Credential-related source omitted]
  • Access to secretsline 146
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]
  • Access to secretsline 166
    [Credential-related source omitted]

skills/patent-docket/tools/docket_config.py

  • Executable scriptline 1
    Executable file

skills/patent-docket/tools/docket_paths.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]

skills/patent-docket/tools/docket_spec.py

  • Executable scriptline 1
    Executable file

skills/patent-docket/tools/emit_tracker.py

  • Executable scriptline 1
    Executable file

skills/patent-docket/tools/init_docket.py

  • Executable scriptline 1
    Executable file

skills/patent-docket/tools/stdio_utf8.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]

skills/patent-docket/tools/validate_docket.py

  • Executable scriptline 1
    Executable file

skills/patent-exam-policy/prompts/emit_backlog.md

  • Network accessline 38
    | 编号 | 轨道 | 观点摘要(可核验) | 证据 | 发布/施行 | 增量 | 信源标题 | 信源 URL | |------|------|-------------------|------|-----------|------|----------|----------| | S1 | 审查工具 / 申请客体 / 程序通识 / 实用新型 / 外观设计 | … | A/B/C | YYYY-MM-DD | 新出现 | … | https://… |
  • Network accessline 40
    | S1 | 审查工具 / 申请客体 / 程序通识 / 实用新型 / 外观设计 | … | A/B/C | YYYY-MM-DD | 新出现 | … | https://… |
  • Network accessline 53
    | 编号 | 文件 | 公布日 | 施行日 | 简报日是否已施行 | 可否作为当前交底硬性要求 | 信源 URL | |------|------|--------|--------|------------------|--------------------------|----------| | C1 | 局令第84号《修改专利审查指南的决定》 | 2025-11-13 | 2026-01-01 | 是/否 | 是 / 否(尚未施行) | https://… |
  • Network accessline 55
    | C1 | 局令第84号《修改专利审查指南的决定》 | 2025-11-13 | 2026-01-01 | 是/否 | 是 / 否(尚未施行) | https://… |
  • Network accessline 120
    - [ ] 已对照上次 POLICY(或注明无历史)   - [ ] 第 1 节每行均有完整 `https://` URL
  • Network accessline 121
    - [ ] 第 1 节每行均有完整 `https://` URL

skills/patent-exam-policy/references/sources.yaml

  • Network accessline 10
    kind: column     title: 部门规章(局令)     url: https://www.cnipa.gov.cn/col/col99/index.html
  • Network accessline 11
    title: 部门规章(局令)     url: https://www.cnipa.gov.cn/col/col99/index.html     track: 程序通识
  • Network accessline 12
    url: https://www.cnipa.gov.cn/col/col99/index.html
  • Network accessline 17
    kind: column     title: 政策解读     url: https://www.cnipa.gov.cn/col/col66/index.html
  • Network accessline 18
    title: 政策解读     url: https://www.cnipa.gov.cn/col/col66/index.html     track: 申请客体
  • Network accessline 19
    url: https://www.cnipa.gov.cn/col/col66/index.html
  • Network accessline 24
    kind: column     title: 通知(政策文件)     url: https://www.cnipa.gov.cn/col/col75/index.html
  • Network accessline 25
    title: 通知(政策文件)     url: https://www.cnipa.gov.cn/col/col75/index.html     track: 程序通识
  • Network accessline 26
    url: https://www.cnipa.gov.cn/col/col75/index.html
  • Network accessline 31
    kind: column     title: 公告(政策文件)     url: https://www.cnipa.gov.cn/col/col74/index.html
  • Network accessline 32
    title: 公告(政策文件)     url: https://www.cnipa.gov.cn/col/col74/index.html     track: 程序通识
  • Network accessline 33
    url: https://www.cnipa.gov.cn/col/col74/index.html
  • Network accessline 38
    kind: column     title: 法律法规 · 专利 · 法律     url: https://www.cnipa.gov.cn/col/col97/index.html
  • Network accessline 39
    title: 法律法规 · 专利 · 法律     url: https://www.cnipa.gov.cn/col/col97/index.html     track: 程序通识
  • Network accessline 40
    url: https://www.cnipa.gov.cn/col/col97/index.html
  • Network accessline 45
    kind: column     title: 法律法规 · 专利 · 行政法规     url: https://www.cnipa.gov.cn/col/col98/index.html
  • Network accessline 46
    title: 法律法规 · 专利 · 行政法规     url: https://www.cnipa.gov.cn/col/col98/index.html     track: 程序通识
  • Network accessline 47
    url: https://www.cnipa.gov.cn/col/col98/index.html
  • Network accessline 52
    kind: column     title: 你问我答(指南修改解读,含局部外观 / GUI)     url: https://www.cnipa.gov.cn/col/col2199/index.html
  • Network accessline 53
    title: 你问我答(指南修改解读,含局部外观 / GUI)     url: https://www.cnipa.gov.cn/col/col2199/index.html     track: 外观设计
  • Network accessline 54
    url: https://www.cnipa.gov.cn/col/col2199/index.html
  • Network accessline 62
    kind: document     title: 中华人民共和国专利法(2020年修正)     url: https://www.cnipa.gov.cn/art/2020/11/23/art_97_155167.html
  • Network accessline 63
    title: 中华人民共和国专利法(2020年修正)     url: https://www.cnipa.gov.cn/art/2020/11/23/art_97_155167.html     track: 程序通识
  • Network accessline 64
    url: https://www.cnipa.gov.cn/art/2020/11/23/art_97_155167.html
  • Network accessline 69
    kind: document     title: 中华人民共和国专利法实施细则(2023年修订)     url: https://www.cnipa.gov.cn/art/2023/12/21/art_98_189197.html
  • Network accessline 70
    title: 中华人民共和国专利法实施细则(2023年修订)     url: https://www.cnipa.gov.cn/art/2023/12/21/art_98_189197.html     track: 程序通识
  • Network accessline 71
    url: https://www.cnipa.gov.cn/art/2023/12/21/art_98_189197.html
  • Network accessline 76
    kind: document     title: 全国人大常委会关于修改专利法的决定(2020)     url: https://www.npc.gov.cn/npc/c2/c30834/202010/t20201019_308327.html
  • Network accessline 77
    title: 全国人大常委会关于修改专利法的决定(2020)     url: https://www.npc.gov.cn/npc/c2/c30834/202010/t20201019_308327.html     track: 程序通识
  • Network accessline 78
    url: https://www.npc.gov.cn/npc/c2/c30834/202010/t20201019_308327.html
  • Network accessline 83
    kind: document     title: 《专利审查指南》(2023)(局令第78号)     url: https://www.cnipa.gov.cn/art/2023/12/21/art_99_189202.html
  • Network accessline 84
    title: 《专利审查指南》(2023)(局令第78号)     url: https://www.cnipa.gov.cn/art/2023/12/21/art_99_189202.html     track: 程序通识
  • Network accessline 85
    url: https://www.cnipa.gov.cn/art/2023/12/21/art_99_189202.html
  • Network accessline 90
    kind: document     title: 关于修改《专利审查指南》的决定(局令第84号,施行日 2026-01-01)     url: https://www.cnipa.gov.cn/art/2025/11/13/art_99_202568.html
  • Network accessline 91
    title: 关于修改《专利审查指南》的决定(局令第84号,施行日 2026-01-01)     url: https://www.cnipa.gov.cn/art/2025/11/13/art_99_202568.html     track: 申请客体
  • Network accessline 92
    url: https://www.cnipa.gov.cn/art/2025/11/13/art_99_202568.html
  • Network accessline 98
    kind: document     title: 国务院公报转载 · 局令第84号     url: https://www.gov.cn/gongbao/2026/issue_12526/202601/content_7056486.html
  • Network accessline 99
    title: 国务院公报转载 · 局令第84号     url: https://www.gov.cn/gongbao/2026/issue_12526/202601/content_7056486.html     track: 申请客体
  • Network accessline 100
    url: https://www.gov.cn/gongbao/2026/issue_12526/202601/content_7056486.html
  • Network accessline 109
    kind: column     title: 新闻 · 图文直播(例行新闻发布会)     url: https://www.cnipa.gov.cn/col/col226/index.html
  • Network accessline 110
    title: 新闻 · 图文直播(例行新闻发布会)     url: https://www.cnipa.gov.cn/col/col226/index.html     track: 程序通识
  • Network accessline 111
    url: https://www.cnipa.gov.cn/col/col226/index.html
  • Network accessline 117
    kind: column     title: 新闻发布(新闻发言人页)     url: https://www.cnipa.gov.cn/col/col2486/index.html
  • Network accessline 118
    title: 新闻发布(新闻发言人页)     url: https://www.cnipa.gov.cn/col/col2486/index.html     track: 程序通识
  • Network accessline 119
    url: https://www.cnipa.gov.cn/col/col2486/index.html
  • Network accessline 124
    kind: document     title: 司法部、国知局负责人就修改专利法实施细则答记者问     url: https://www.moj.gov.cn/pub/sfbgw/zcjd/202312/t20231221_492075.html
  • Network accessline 125
    title: 司法部、国知局负责人就修改专利法实施细则答记者问     url: https://www.moj.gov.cn/pub/sfbgw/zcjd/202312/t20231221_492075.html     track: 程序通识
  • Network accessline 126
    url: https://www.moj.gov.cn/pub/sfbgw/zcjd/202312/t20231221_492075.html
  • Network accessline 132
    kind: column     title: 复审无效十大案件(典型案例)     url: https://www.cnipa.gov.cn/col/col2648/index.html
  • Network accessline 133
    title: 复审无效十大案件(典型案例)     url: https://www.cnipa.gov.cn/col/col2648/index.html     track: 程序通识
  • Network accessline 134
    url: https://www.cnipa.gov.cn/col/col2648/index.html
  • Network accessline 140
    kind: column     title: 最高人民法院知识产权法庭     url: https://ipc.court.gov.cn/zh-cn/index
  • Network accessline 141
    title: 最高人民法院知识产权法庭     url: https://ipc.court.gov.cn/zh-cn/index     track: 程序通识
  • Network accessline 142
    url: https://ipc.court.gov.cn/zh-cn/index

skills/patent-map/tests/test_map.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 14
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 104
    [Credential-related source omitted]
  • Access to secretsline 113
    [Credential-related source omitted]
  • Access to secretsline 265
    [Credential-related source omitted]
  • Access to secretsline 275
    [Credential-related source omitted]
  • Access to secretsline 282
    [Credential-related source omitted]
  • Access to secretsline 284
    [Credential-related source omitted]
  • Network accessline 287
    def test_onnx_only_not_pytorch() -> None:     assert HUB_ENDPOINTS == (         "https://hf-mirror.com",
  • Network accessline 288
    assert HUB_ENDPOINTS == (         "https://hf-mirror.com",         "https://www.modelscope.cn/models",
  • Network accessline 289
    "https://hf-mirror.com",
  • Network accessline 290
    "https://www.modelscope.cn/models",
  • Network accessline 291
    "https://huggingface.co",
  • Network accessline 325
    port = httpd.server_address[1]         try:             urllib.request.urlopen(f"http://127.0.0.1:{port}/json/version", timeout=5)
  • Network accessline 326
    try:             urllib.request.urlopen(f"http://127.0.0.1:{port}/json/version", timeout=5)             raise AssertionError("expected 404")
  • Network accessline 327
    urllib.request.urlopen(f"http://127.0.0.1:{port}/json/version", timeout=5)
  • Network accessline 329
    except urllib.error.HTTPError as e:             assert e.code == 404         with urllib.request.urlopen(f"http://127.0.0.1:{port}/api/health", timeout=5) as resp:
  • Network accessline 330
    assert e.code == 404         with urllib.request.urlopen(f"http://127.0.0.1:{port}/api/health", timeout=5) as resp:             body = json.loads(resp.read().decode("utf-8"))
  • Network accessline 331
    with urllib.request.urlopen(f"http://127.0.0.1:{port}/api/health", timeout=5) as resp:
  • Network accessline 357
    try:         port = httpd.server_address[1]         with urllib.request.urlopen(f"http://127.0.0.1:{port}/api/ipc-subclasses", timeout=5) as resp:
  • Network accessline 358
    port = httpd.server_address[1]         with urllib.request.urlopen(f"http://127.0.0.1:{port}/api/ipc-subclasses", timeout=5) as resp:             body = json.loads(resp.read().decode("utf-8"))
  • Network accessline 359
    with urllib.request.urlopen(f"http://127.0.0.1:{port}/api/ipc-subclasses", timeout=5) as resp:

skills/patent-map/tools/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-map/tools/embed_layout.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Access to secretsline 136
    [Credential-related source omitted]

skills/patent-map/tools/ensure_model.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-map/tools/ipc_scheme/README.md

  • Network accessline 33
    | 步骤 | 源 | 用途 | | --- | --- | --- | | 1 | [WIPO MasterFiles `ipc_scheme_*.zip`](https://www.wipo.int/classifications/data/ipc/ITSupport_and_download_area/20260101/MasterFiles/) | 解析 EN XML,`kind="u"` 即小类代号 + 英文标题 |
  • Network accessline 34
    | --- | --- | --- | | 1 | [WIPO MasterFiles `ipc_scheme_*.zip`](https://www.wipo.int/classifications/data/ipc/ITSupport_and_download_area/20260101/MasterFiles/) | 解析 EN XML,`kind="u"` 即小类代号 + 英文标题 | | 2 | [ipcpub.wipo.int](https://ipcpub.wi
  • Network accessline 35
    | 1 | [WIPO MasterFiles `ipc_scheme_*.zip`](https://www.wipo.int/classifications/data/ipc/ITSupport_and_download_area/20260101/MasterFiles/) | 解析 EN XML,`kind="u"` 即小类代号 + 英文标题 |
  • Network accessline 36
    | 2 | [ipcpub.wipo.int](https://ipcpub.wipo.int/) CDN `…/IPC/scheme/{lang}/json/` | **尝试**拉中文 scheme。官方 IPCPUB 目前只有 `en` / `fr` / `enfr`,`zh` 为 403 |
  • Network accessline 37
    | 3 | [国知局 2026.01 分类表](https://www.cnipa.gov.cn/art/2025/12/31/art_3161_203422.html) A–H PDF | 中文短标题(轴上用) |

skills/patent-map/tools/ipc_scheme/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-map/tools/ipc_scheme/__main__.py

  • Executable scriptline 1
    Executable file

skills/patent-map/tools/ipc_scheme/build.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-map/tools/ipc_scheme/cli.py

  • Executable scriptline 1
    Executable file

skills/patent-map/tools/ipc_scheme/config.py

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    WIPO_IT_BASE = (     "https://www.wipo.int/classifications/data/ipc/"
  • Network accessline 16
    "https://www.wipo.int/classifications/data/ipc/"
  • Network accessline 21
    IPCPUB_HOME = "https://ipcpub.wipo.int/"
  • Network accessline 22
    IPCPUB_CDN = "https://cdn.ipcpub.wipo.int/media"
  • Network accessline 25
    CNIPA_TABLE_PAGE = "https://www.cnipa.gov.cn/art/2025/12/31/art_3161_203422.html"
  • Network accessline 28
    CNIPA_PDF_FALLBACK = {     "A": "https://www.cnipa.gov.cn/module/download/downfile.jsp?classid=0&showname=2026.01%E7%89%88IPC%E5%88%86%E7%B1%BB%E8%A1%A8-A%E9%83%A8.pdf&filename=84f50032f9ce4301ab100f5c403e000b.pdf",
  • Network accessline 29
    "A": "https://www.cnipa.gov.cn/module/download/downfile.jsp?classid=0&showname=2026.01%E7%89%88IPC%E5%88%86%E7%B1%BB%E8%A1%A8-A%E9%83%A8.pdf&filename=84f50032f9ce4301ab100f5c403e000b.pdf",
  • Network accessline 30
    "B": "https://www.cnipa.gov.cn/module/download/downfile.jsp?classid=0&showname=2026.01%E7%89%88IPC%E5%88%86%E7%B1%BB%E8%A1%A8-B%E9%83%A8.pdf&filename=a4f808817050429e849bd818907cfc1d.pdf",
  • Network accessline 31
    "C": "https://www.cnipa.gov.cn/module/download/downfile.jsp?classid=0&showname=2026.01%E7%89%88IPC%E5%88%86%E7%B1%BB%E8%A1%A8-C%E9%83%A8.pdf&filename=99c9d77c96ae4000ab1ec35c75a95881.pdf",
  • Network accessline 32
    "D": "https://www.cnipa.gov.cn/module/download/downfile.jsp?classid=0&showname=2026.01%E7%89%88IPC%E5%88%86%E7%B1%BB%E8%A1%A8-D%E9%83%A8.pdf&filename=7719d52ee72b4cedb8a925a86d8932cb.pdf",
  • Network accessline 33
    "E": "https://www.cnipa.gov.cn/module/download/downfile.jsp?classid=0&showname=2026.01%E7%89%88IPC%E5%88%86%E7%B1%BB%E8%A1%A8-E%E9%83%A8.pdf&filename=b5822d0c2cbc4daa823e95ebb9d70cd2.pdf",
  • Network accessline 34
    "F": "https://www.cnipa.gov.cn/module/download/downfile.jsp?classid=0&showname=2026.01%E7%89%88IPC%E5%88%86%E7%B1%BB%E8%A1%A8-F%E9%83%A8.pdf&filename=826c947f24cd469485b8c75e76b3226e.pdf",
  • Network accessline 35
    "G": "https://www.cnipa.gov.cn/module/download/downfile.jsp?classid=0&showname=2026.01%E7%89%88IPC%E5%88%86%E7%B1%BB%E8%A1%A8-G%E9%83%A8.pdf&filename=61ec0e15ff694bbc98f302ab0e4438ee.pdf",
  • Network accessline 36
    "H": "https://www.cnipa.gov.cn/module/download/downfile.jsp?classid=0&showname=2026.01%E7%89%88IPC%E5%88%86%E7%B1%BB%E8%A1%A8-H%E9%83%A8.pdf&filename=e68dc3300ca44d2d9e606a6a5c979725.pdf",
  • Network accessline 44
    USER_AGENT = "patent-map-ipc-scheme/1.0 (+https://github.com/handsomestWei/patent-disclosure-skill)"

skills/patent-map/tools/ipc_scheme/download.py

  • Executable scriptline 1
    Executable file
  • Network accessline 35
    def _request(url: str, timeout: int = 180) -> bytes:     req = urllib.request.Request(url, headers=HEADERS)
  • Network accessline 36
    req = urllib.request.Request(url, headers=HEADERS)
  • Network accessline 37
    with urllib.request.urlopen(req, timeout=timeout) as resp:
  • Network accessline 41
    def _get(url: str, timeout: int = 60) -> tuple[int, bytes]:     req = urllib.request.Request(url, headers=HEADERS)
  • Network accessline 42
    req = urllib.request.Request(url, headers=HEADERS)
  • Network accessline 43
    try:         with urllib.request.urlopen(req, timeout=timeout) as resp:             return resp.status, _unwrap(resp.read(), resp.getheader("Content-Encoding") or "")
  • Network accessline 44
    with urllib.request.urlopen(req, timeout=timeout) as resp:

skills/patent-map/tools/ipc_scheme/emit.py

  • Executable scriptline 1
    Executable file

skills/patent-map/tools/ipc_scheme/parse.py

  • Executable scriptline 1
    Executable file

skills/patent-map/tools/ipc_scheme/testdata/sample_en_scheme.xml

  • Network accessline 1
    <?xml version="1.0" encoding="UTF-8"?> <IPCScheme xmlns="http://www.wipo.int/classifications/ipc/masterfiles">
  • Network accessline 2
    <IPCScheme xmlns="http://www.wipo.int/classifications/ipc/masterfiles">

skills/patent-map/tools/ipc_titles.py

  • Executable scriptline 1
    Executable file

skills/patent-map/tools/map_cache.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 36
    [Credential-related source omitted]
  • Access to secretsline 48
    [Credential-related source omitted]

skills/patent-map/tools/model_store.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Network accessline 18
    HUB_ENDPOINTS = (     "https://hf-mirror.com",
  • Network accessline 19
    "https://hf-mirror.com",
  • Network accessline 20
    "https://www.modelscope.cn/models",
  • Network accessline 21
    "https://huggingface.co",
  • Access to secretsline 64
    [Credential-related source omitted]
  • Network accessline 167
    dest.parent.mkdir(parents=True, exist_ok=True)     tmp = dest.with_suffix(dest.suffix + ".part")     req = urllib.request.Request(url, headers=_UA)
  • Network accessline 168
    tmp = dest.with_suffix(dest.suffix + ".part")     req = urllib.request.Request(url, headers=_UA)     with urllib.request.urlopen(req, timeout=timeout) as resp, open(tmp, "wb") as fh:
  • Network accessline 169
    req = urllib.request.Request(url, headers=_UA)
  • Network accessline 170
    with urllib.request.urlopen(req, timeout=timeout) as resp, open(tmp, "wb") as fh:
  • Access to secretsline 243
    [Credential-related source omitted]
  • Access to secretsline 302
    [Credential-related source omitted]
  • Access to secretsline 340
    [Credential-related source omitted]
  • Access to secretsline 341
    [Credential-related source omitted]
  • Access to secretsline 342
    [Credential-related source omitted]
  • Access to secretsline 343
    [Credential-related source omitted]

skills/patent-map/tools/serve_map.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Network accessline 153
    httpd = MapServer((host, 0), MapHandler)     port = httpd.server_address[1]     url = f"http://{host}:{port}/"
  • Network accessline 154
    port = httpd.server_address[1]     url = f"http://{host}:{port}/"     local = find_local_model(vault)
  • Network accessline 155
    url = f"http://{host}:{port}/"

skills/patent-map/tools/vault_index.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Access to secretsline 26
    [Credential-related source omitted]

skills/patent-map/web/index.html

  • Network accessline 25
    <span class="title-word">专利地图</span>           <span class="gh-row" id="gh-row">             <a class="gh-btn" href="https://github.com/handsomestWei/patent-disclosure-skill" target="_blank" rel="noopener noreferrer" title="技能仓库">
  • Network accessline 26
    <span class="gh-row" id="gh-row">             <a class="gh-btn" href="https://github.com/handsomestWei/patent-disclosure-skill" target="_blank" rel="noopener noreferrer" title="技能仓库">               <svg viewBox="0 0 16 16" width="14" height
  • Network accessline 27
    <a class="gh-btn" href="https://github.com/handsomestWei/patent-disclosure-skill" target="_blank" rel="noopener noreferrer" title="技能仓库">
  • Network accessline 29
    GitHub             </a>             <a class="gh-btn star" id="gh-star" href="https://github.com/handsomestWei/patent-disclosure-skill/stargazers" target="_blank" rel="noopener noreferrer" title="Star 仓库">
  • Network accessline 30
    </a>             <a class="gh-btn star" id="gh-star" href="https://github.com/handsomestWei/patent-disclosure-skill/stargazers" target="_blank" rel="noopener noreferrer" title="Star 仓库">               <svg viewBox="0 0 16 16" width="14" hei
  • Network accessline 31
    <a class="gh-btn star" id="gh-star" href="https://github.com/handsomestWei/patent-disclosure-skill/stargazers" target="_blank" rel="noopener noreferrer" title="Star 仓库">
  • Network accessline 33
    <span id="gh-star-label">Star</span>             </a>             <a class="gh-btn" id="gh-fork" href="https://github.com/handsomestWei/patent-disclosure-skill/fork" target="_blank" rel="noopener noreferrer" title="Fork 仓库">
  • Network accessline 34
    </a>             <a class="gh-btn" id="gh-fork" href="https://github.com/handsomestWei/patent-disclosure-skill/fork" target="_blank" rel="noopener noreferrer" title="Fork 仓库">               <svg viewBox="0 0 16 16" width="14" height="14" ar
  • Network accessline 35
    <a class="gh-btn" id="gh-fork" href="https://github.com/handsomestWei/patent-disclosure-skill/fork" target="_blank" rel="noopener noreferrer" title="Fork 仓库">

skills/patent-map/web/js/app.js

  • Executable scriptline 1
    Executable file
  • Network accessline 48
    loadGithubMeta();   try {     const ipcPromise = fetch("/api/ipc-subclasses")
  • Network accessline 49
    try {     const ipcPromise = fetch("/api/ipc-subclasses")       .then((r) => (r.ok ? r.json() : { titles: {} }))
  • Network accessline 50
    const ipcPromise = fetch("/api/ipc-subclasses")
  • Network accessline 51
    .then((r) => (r.ok ? r.json() : { titles: {} }))       .catch(() => ({ titles: {} }));     const res = await fetch("/api/patents");
  • Network accessline 52
    .catch(() => ({ titles: {} }));     const res = await fetch("/api/patents");     DATA = await res.json();
  • Network accessline 53
    const res = await fetch("/api/patents");

skills/patent-map/web/js/camera.js

  • Executable scriptline 1
    Executable file

skills/patent-map/web/js/chrome.js

  • Executable scriptline 1
    Executable file
  • Network accessline 48
    async function loadGithubMeta() {   try {     const res = await fetch("https://api.github.com/repos/handsomestWei/patent-disclosure-skill");
  • Network accessline 49
    try {     const res = await fetch("https://api.github.com/repos/handsomestWei/patent-disclosure-skill");     if (!res.ok) return;
  • Network accessline 50
    const res = await fetch("https://api.github.com/repos/handsomestWei/patent-disclosure-skill");

skills/patent-map/web/js/core.js

  • Executable scriptline 1
    Executable file
  • Network accessline 190
    function svgEl(name, attrs) {   const el = document.createElementNS("http://www.w3.org/2000/svg", name);
  • Network accessline 191
    const el = document.createElementNS("http://www.w3.org/2000/svg", name);

skills/patent-map/web/js/detail.js

  • Executable scriptline 1
    Executable file

skills/patent-map/web/js/layout.js

  • Executable scriptline 1
    Executable file

skills/patent-map/web/js/view-bubble.js

  • Executable scriptline 1
    Executable file

skills/patent-map/web/js/view-citation.js

  • Executable scriptline 1
    Executable file

skills/patent-map/web/js/view-dashboard.js

  • Executable scriptline 1
    Executable file

skills/patent-map/web/js/view-matrix.js

  • Executable scriptline 1
    Executable file
  • Network accessline 37
    const parts = k.split("||");     const nr = rowMap[parts[0]] || parts[0];     const nc = colMap[parts[1]] || parts[1];
  • Network accessline 38
    const nr = rowMap[parts[0]] || parts[0];     const nc = colMap[parts[1]] || parts[1];     const nk = nr + "||" + nc;
  • Network accessline 39
    const nc = colMap[parts[1]] || parts[1];

skills/patent-map/web/js/view-terrain.js

  • Executable scriptline 1
    Executable file

skills/patent-map/web/terrain3d.js

  • Executable scriptline 1
    Executable file

skills/patent-map/web/vendor/README.txt

  • Network accessline 1
    three.js r170.0(MIT) 来源:https://cdn.jsdelivr.net/npm/three@0.170.0/build/three.module.min.js
  • Network accessline 2
    来源:https://cdn.jsdelivr.net/npm/three@0.170.0/build/three.module.min.js

skills/patent-map/web/vendor/three.module.min.js

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 6
    const t="170",e={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},n={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},i=0,r=1,s=2,a=3,o=0,l=1,c=2,h=3,u=0,d=1,p=2,m=0,f=1,g=2,v=3,_=4,x=5,y=100,M=101,S=102,b=103,T=104,w=200,E=201,A=202,R=203,C=204,I

skills/patent-oa/docs/embedding.config.yaml

  • Network accessline 28
    base_url: https://open.bigmodel.cn/api/paas/v4
  • Access to secretsline 29
    [Credential-related source omitted]

skills/patent-oa/prompts/configure_embedding.md

  • Network accessline 34
    python skills/patent-oa/tools/config.py set --provider openai_compatible \   --model embedding-3 --dimensions 1024 \   --base-url "https://open.bigmodel.cn/api/paas/v4" \
  • Network accessline 35
    --model embedding-3 --dimensions 1024 \   --base-url "https://open.bigmodel.cn/api/paas/v4" \   --api-key "用户提供的Key"
  • Network accessline 36
    --base-url "https://open.bigmodel.cn/api/paas/v4" \

skills/patent-oa/tests/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tests/test_chart_tools_sync.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tests/test_oa_store.py

  • Executable scriptline 1
    Executable file
  • Network accessline 183
    dimensions=1024,                 path=path,                 base_url="https://open.bigmodel.cn/api/paas/v4",
  • Network accessline 184
    path=path,                 base_url="https://open.bigmodel.cn/api/paas/v4",                 api_key_env="ZHIPUAI_API_KEY",
  • Network accessline 185
    base_url="https://open.bigmodel.cn/api/paas/v4",
  • Access to secretsline 186
    [Credential-related source omitted]
  • Access to secretsline 193
    [Credential-related source omitted]
  • Access to secretsline 201
    [Credential-related source omitted]
  • Network accessline 239
    old = embed_mod.urllib.request.urlopen
  • Network accessline 240
    embed_mod.urllib.request.urlopen = fake_urlopen  # type: ignore[assignment]
  • Network accessline 245
    "model": "embedding-3",                     "dimensions": 4,                     "base_url": "https://open.bigmodel.cn/api/paas/v4",
  • Network accessline 246
    "dimensions": 4,                     "base_url": "https://open.bigmodel.cn/api/paas/v4",                     "api_key_env": "ZHIPUAI_API_KEY",
  • Network accessline 247
    "base_url": "https://open.bigmodel.cn/api/paas/v4",
  • Access to secretsline 248
    [Credential-related source omitted]
  • Access to secretsline 252
    [Credential-related source omitted]
  • Access to secretsline 253
    [Credential-related source omitted]
  • Access to secretsline 258
    [Credential-related source omitted]
  • Network accessline 260
    [Credential-related source omitted]
  • Access to secretsline 260
    [Credential-related source omitted]
  • Network accessline 262
    embed_mod.urllib.request.urlopen = old  # type: ignore[assignment]
  • Network accessline 295
    old = embed_mod.urllib.request.urlopen
  • Network accessline 296
    embed_mod.urllib.request.urlopen = fake_urlopen  # type: ignore[assignment]
  • Network accessline 301
    "model": "embo-01",                     "dimensions": 3,                     "base_url": "https://api.minimaxi.com/v1/embeddings",
  • Network accessline 302
    "dimensions": 3,                     "base_url": "https://api.minimaxi.com/v1/embeddings",                     "api_key_env": "MINIMAX_API_KEY",
  • Network accessline 303
    "base_url": "https://api.minimaxi.com/v1/embeddings",
  • Access to secretsline 304
    [Credential-related source omitted]
  • Access to secretsline 310
    [Credential-related source omitted]
  • Access to secretsline 311
    [Credential-related source omitted]
  • Access to secretsline 317
    [Credential-related source omitted]
  • Network accessline 319
    [Credential-related source omitted]
  • Access to secretsline 319
    [Credential-related source omitted]
  • Network accessline 321
    embed_mod.urllib.request.urlopen = old  # type: ignore[assignment]
  • Access to secretsline 360
    [Credential-related source omitted]
  • Access to secretsline 364
    [Credential-related source omitted]
  • Access to secretsline 366
    [Credential-related source omitted]
  • Access to secretsline 376
    [Credential-related source omitted]

skills/patent-oa/tests/test_opinion_docx.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tools/README.md

  • Network accessline 15
    python skills/patent-oa/tools/config.py set --provider openai_compatible \   --model embedding-3 --dimensions 1024 \   --base-url https://open.bigmodel.cn/api/paas/v4 \
  • Network accessline 16
    --model embedding-3 --dimensions 1024 \   --base-url https://open.bigmodel.cn/api/paas/v4 \   --api-key "sk-..."
  • Network accessline 17
    --base-url https://open.bigmodel.cn/api/paas/v4 \

skills/patent-oa/tools/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tools/case_md.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tools/config.py

  • Executable scriptline 1
    Executable file
  • Network accessline 32
    "model": "embedding-3",         "dimensions": 1024,         "base_url": "https://open.bigmodel.cn/api/paas/v4",
  • Network accessline 33
    "dimensions": 1024,         "base_url": "https://open.bigmodel.cn/api/paas/v4",         "api_key_env": "ZHIPUAI_API_KEY",
  • Network accessline 34
    "base_url": "https://open.bigmodel.cn/api/paas/v4",
  • Access to secretsline 35
    [Credential-related source omitted]
  • Network accessline 41
    "model": "text-embedding-v3",         "dimensions": 1024,         "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
  • Network accessline 42
    "dimensions": 1024,         "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",         "api_key_env": "DASHSCOPE_API_KEY",
  • Network accessline 43
    "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
  • Access to secretsline 44
    [Credential-related source omitted]
  • Network accessline 50
    "model": "text-embedding-3-small",         "dimensions": 1536,         "base_url": "https://api.openai.com/v1",
  • Network accessline 51
    "dimensions": 1536,         "base_url": "https://api.openai.com/v1",         "api_key_env": "OPENAI_API_KEY",
  • Network accessline 52
    "base_url": "https://api.openai.com/v1",
  • Access to secretsline 53
    [Credential-related source omitted]
  • Network accessline 59
    "model": "embo-01",         "dimensions": 1536,         "base_url": "https://api.minimaxi.com/v1/embeddings",
  • Network accessline 60
    "dimensions": 1536,         "base_url": "https://api.minimaxi.com/v1/embeddings",         "api_key_env": "MINIMAX_API_KEY",
  • Network accessline 61
    "base_url": "https://api.minimaxi.com/v1/embeddings",
  • Access to secretsline 62
    [Credential-related source omitted]
  • Access to secretsline 108
    [Credential-related source omitted]
  • Access to secretsline 111
    [Credential-related source omitted]
  • Access to secretsline 118
    [Credential-related source omitted]
  • Access to secretsline 151
    [Credential-related source omitted]
  • Access to secretsline 158
    [Credential-related source omitted]
  • Access to secretsline 159
    [Credential-related source omitted]
  • Access to secretsline 167
    [Credential-related source omitted]
  • Access to secretsline 171
    [Credential-related source omitted]
  • Access to secretsline 175
    [Credential-related source omitted]
  • Access to secretsline 183
    [Credential-related source omitted]
  • Access to secretsline 270
    [Credential-related source omitted]
  • Access to secretsline 360
    [Credential-related source omitted]
  • Access to secretsline 362
    [Credential-related source omitted]
  • Access to secretsline 364
    [Credential-related source omitted]
  • Access to secretsline 366
    [Credential-related source omitted]
  • Access to secretsline 368
    [Credential-related source omitted]
  • Access to secretsline 585
    [Credential-related source omitted]
  • Access to secretsline 590
    [Credential-related source omitted]
  • Access to secretsline 595
    [Credential-related source omitted]
  • Access to secretsline 714
    [Credential-related source omitted]
  • Access to secretsline 735
    [Credential-related source omitted]
  • Access to secretsline 820
    [Credential-related source omitted]
  • Access to secretsline 822
    [Credential-related source omitted]
  • Access to secretsline 832
    [Credential-related source omitted]
  • Access to secretsline 840
    [Credential-related source omitted]

skills/patent-oa/tools/embed.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 103
    [Credential-related source omitted]
  • Access to secretsline 105
    [Credential-related source omitted]
  • Network accessline 112
    def _embed_openai(self, texts: list[str]) -> np.ndarray:         key = self._api_key()         base = (self.cfg.get("base_url") or "https://api.openai.com/v1").rstrip("/")
  • Network accessline 113
    key = self._api_key()         base = (self.cfg.get("base_url") or "https://api.openai.com/v1").rstrip("/")         url = f"{base}/embeddings"
  • Network accessline 114
    base = (self.cfg.get("base_url") or "https://api.openai.com/v1").rstrip("/")
  • Network accessline 118
    payload_obj["dimensions"] = int(self.dimensions)         body = json.dumps(payload_obj).encode("utf-8")         req = urllib.request.Request(
  • Network accessline 119
    body = json.dumps(payload_obj).encode("utf-8")         req = urllib.request.Request(             url,
  • Network accessline 120
    req = urllib.request.Request(
  • Network accessline 142
    group_id = resolve_group_id(self.cfg)         base = (             self.cfg.get("base_url") or "https://api.minimaxi.com/v1/embeddings"
  • Network accessline 143
    base = (             self.cfg.get("base_url") or "https://api.minimaxi.com/v1/embeddings"         ).rstrip("/")
  • Network accessline 144
    self.cfg.get("base_url") or "https://api.minimaxi.com/v1/embeddings"
  • Network accessline 162
    }         body = json.dumps(payload_obj).encode("utf-8")         req = urllib.request.Request(
  • Network accessline 163
    body = json.dumps(payload_obj).encode("utf-8")         req = urllib.request.Request(             url,
  • Network accessline 164
    req = urllib.request.Request(
  • Network accessline 190
    def _http_json(self, req: urllib.request.Request) -> dict:
  • Network accessline 191
    try:             with urllib.request.urlopen(req, timeout=self.timeout) as resp:                 return json.loads(resp.read().decode("utf-8"))
  • Network accessline 192
    with urllib.request.urlopen(req, timeout=self.timeout) as resp:

skills/patent-oa/tools/emit_chart.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tools/emit_opinion_docx.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-oa/tools/highlights.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tools/ingest_case.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-oa/tools/latex_delimiters.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-oa/tools/md_to_docx.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-oa/tools/pdf_text.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tools/rebuild_vectors.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-oa/tools/redact.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tools/refresh_vault.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-oa/tools/requirements-oa.txt

  • Access to secretsline 15
    [Credential-related source omitted]

skills/patent-oa/tools/search_cases.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-oa/tools/stdio_utf8.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]

skills/patent-oa/tools/store.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tools/vault_layout.py

  • Executable scriptline 1
    Executable file

skills/patent-oa/tools/write_intake.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-oa/tools/xlsx_minimal.py

  • Executable scriptline 1
    Executable file
  • Network accessline 278
    xml = (         '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'
  • Network accessline 279
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'         ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 280
    '<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'
  • Network accessline 281
    ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 312
    return (         '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<comments xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">'
  • Network accessline 313
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<comments xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">'         "<authors><author>对照表</author></authors>"
  • Network accessline 314
    '<comments xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">'
  • Network accessline 369
    workbook = (         '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'
  • Network accessline 370
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'         ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 371
    '<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"'
  • Network accessline 372
    ' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 375
    wb_rels = (         '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 376
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'         + "".join(
  • Network accessline 377
    '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 378
    + "".join(             f'<Relationship Id="rId{i}" '             'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" '
  • Network accessline 379
    f'<Relationship Id="rId{i}" '             'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" '             f'Target="worksheets/sheet{i}.xml"/>'
  • Network accessline 380
    'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" '
  • Network accessline 383
    )         + f'<Relationship Id="rId{len(sheets) + 1}" '         'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" '
  • Network accessline 384
    + f'<Relationship Id="rId{len(sheets) + 1}" '         'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" '         'Target="styles.xml"/>'
  • Network accessline 385
    'Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" '
  • Network accessline 401
    content_types = (         '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'
  • Network accessline 402
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'         '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'         '<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relation
  • Network accessline 403
    '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'
  • Network accessline 413
    )     rels = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  • Network accessline 414
    rels = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">   <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/rel
  • Network accessline 415
    <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  • Network accessline 416
    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
  • Network accessline 428
    f"xl/worksheets/_rels/sheet{i}.xml.rels",                     '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'                     '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 429
    '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'                     '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'                     f'<Relationship Id="rId1" Type="http://schemas.o
  • Network accessline 430
    '<Relationships xmlns="http://schemas.openxmlformats.org/officeDocument/2006/relationships">'
  • Network accessline 431
    f'<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing" Target="../drawings/vmlDrawing{i}.vml"/>'
  • Network accessline 432
    f'<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" Target="../comments{i}.xml"/>'
  • Network accessline 486
    xf_count = HIGHLIGHT_XF_BASE + len(PALETTE)     return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
  • Network accessline 487
    return f"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">   <fonts count="10">
  • Network accessline 488
    <styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">

skills/patent-reader/assets/obsidian/_专利解读索引.template.md

  • Network accessline 24
    安装 [Dataview](https://obsidian.md/plugins?id=dataview) 后,下列查询可替代或补充 Bases:

skills/patent-reader/docs/obsidian-setup-guide.md

  • Network accessline 16
    1. 打开官网:<https://obsidian.md/download>
  • Network accessline 72
    | 插件(搜索名) | 作用 | 安装页 | |----------------|------|--------| | **Dataview** | 索引页动态表回退 | <https://obsidian.md/plugins?id=dataview> |
  • Network accessline 73
    |----------------|------|--------| | **Dataview** | 索引页动态表回退 | <https://obsidian.md/plugins?id=dataview> | | **Colored Tags** | 标签上色 | <https://obsidian.md/plugins?id=colored-tags> |
  • Network accessline 74
    | **Dataview** | 索引页动态表回退 | <https://obsidian.md/plugins?id=dataview> |
  • Network accessline 75
    | **Colored Tags** | 标签上色 | <https://obsidian.md/plugins?id=colored-tags> |
  • Network accessline 76
    | **Colored Bases Properties** | Bases 属性 pill 上色 | <https://obsidian.md/plugins?id=colored-bases-properties> |
  • Network accessline 77
    | **Iconize** | 侧栏图标 | <https://obsidian.md/plugins?id=iconize> |
  • Network accessline 78
    | **Supercharged Links** | 双链按属性上色 | <https://obsidian.md/plugins?id=supercharged-links> |

skills/patent-reader/examples/example_patent_reader/README.md

  • Network accessline 20
    | 公开号 | 用途 | PDF / 页面镜像 | |--------|------|----------------| | `CN119961390A` | 主示例(发明公布 · 软件/RAG 类解读) | https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf |
  • Network accessline 21
    |--------|------|----------------| | `CN119961390A` | 主示例(发明公布 · 软件/RAG 类解读) | https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf | | `CN119961396A` | 近似专利(关联 / 同域对照) | https://patentimages.storage.googleap
  • Network accessline 22
    | `CN119961390A` | 主示例(发明公布 · 软件/RAG 类解读) | https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf |
  • Network accessline 23
    | `CN119961396A` | 近似专利(关联 / 同域对照) | https://patentimages.storage.googleapis.com/3f/29/d0/a2461c5080d73d/CN119961396A.pdf |
  • Network accessline 24
    | `CN114552122A` | **按图裁切解读** | https://patentimages.storage.googleapis.com/c2/6c/51/75412585086edf/CN114552122A.pdf |
  • Network accessline 25
    | `CN209861402U` | **实用新型**解读(散热片卡扣安装 · Schema 挂钩) | https://patentimages.storage.googleapis.com/39/b7/d6/0050a57f67b004/CN209861402U.pdf |

skills/patent-reader/prompts/obsidian_ofm_companion.md

  • Network accessline 3
    > 与 [kepano/obsidian-skills](https://github.com/kepano/obsidian-skills) 的 `obsidian-markdown` 对齐子集。若环境已安装该技能,写笔记前可额外 **`Read`** 其 `SKILL.md`;**未安装时**以本文件为准即可。

skills/patent-reader/prompts/obsidian_plugin_guide.md

  • Network accessline 22
    | 插件 | 安装 | 作用 | |------|------|------| | Dataview | https://obsidian.md/plugins?id=dataview | 索引动态表 |
  • Network accessline 23
    |------|------|------| | Dataview | https://obsidian.md/plugins?id=dataview | 索引动态表 | | Colored Tags | https://obsidian.md/plugins?id=colored-tags | 标签上色 |
  • Network accessline 24
    | Dataview | https://obsidian.md/plugins?id=dataview | 索引动态表 |
  • Network accessline 25
    | Colored Tags | https://obsidian.md/plugins?id=colored-tags | 标签上色 |
  • Network accessline 26
    | Colored Bases Properties | https://obsidian.md/plugins?id=colored-bases-properties | Bases pill |
  • Network accessline 27
    | Iconize | https://obsidian.md/plugins?id=iconize | 侧栏图标 |
  • Network accessline 28
    | Supercharged Links | https://obsidian.md/plugins?id=supercharged-links | 双链上色 |
  • Network accessline 34
    https://help.obsidian.md/cli — 检测到 `obsidian` 命令时入库可同步属性。

skills/patent-reader/prompts/patent_plain_reader.md

  • Network accessline 310
    {     "title": "……",     "url": "https://…",
  • Network accessline 311
    "title": "……",     "url": "https://…",     "confidence": "中",
  • Network accessline 312
    "url": "https://…",

skills/patent-reader/references/patent_pdf_sources.yaml

  • Network accessline 9
    name: Google Patents 详情页     page_templates:       - "https://patents.google.com/patent/{pub}/zh"
  • Network accessline 10
    page_templates:       - "https://patents.google.com/patent/{pub}/zh"       - "https://patents.google.com/patent/{pub}/en"
  • Network accessline 11
    - "https://patents.google.com/patent/{pub}/zh"
  • Network accessline 12
    - "https://patents.google.com/patent/{pub}/en"
  • Network accessline 13
    - "https://patents.google.com/patent/{pub}"
  • Network accessline 16
    HTTP 429 / 503 = 限流:立即报错,不重试。       海外号取结构化全文用 fetch_gp_fulltext.py(同一 /en 详情页,一次请求)。       直链 https://patents.google.com/patent/{pub}.pdf 常 404,勿当作主路径。
  • Network accessline 17
    海外号取结构化全文用 fetch_gp_fulltext.py(同一 /en 详情页,一次请求)。       直链 https://patents.google.com/patent/{pub}.pdf 常 404,勿当作主路径。       详情页 404 = 未收录(新公开专利通常 1–3 周后才上 Google);外观设计多有页无 PDF。
  • Network accessline 18
    直链 https://patents.google.com/patent/{pub}.pdf 常 404,勿当作主路径。
  • Network accessline 26
    name: Google Patents PDF CDN     host: patentimages.storage.googleapis.com     url_pattern: "https://patentimages.storage.googleapis.com/<hash-path>/{pub}.pdf"
  • Network accessline 27
    host: patentimages.storage.googleapis.com     url_pattern: "https://patentimages.storage.googleapis.com/<hash-path>/{pub}.pdf"     notes: |
  • Network accessline 28
    url_pattern: "https://patentimages.storage.googleapis.com/<hash-path>/{pub}.pdf"
  • Network accessline 74
    # 示例专利已知 CDN(仅 examples;通用下载仍应解析页面) known_cdn_examples:   CN119961390A: "https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf"
  • Network accessline 75
    known_cdn_examples:   CN119961390A: "https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf"   CN119961396A: "https://patentimages.storage.googleapis.com/3f/29/d0/a2461c5080d73d/CN119961396A.pdf"
  • Network accessline 76
    CN119961390A: "https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf"
  • Network accessline 77
    CN119961396A: "https://patentimages.storage.googleapis.com/3f/29/d0/a2461c5080d73d/CN119961396A.pdf"
  • Network accessline 78
    CN114552122A: "https://patentimages.storage.googleapis.com/c2/6c/51/75412585086edf/CN114552122A.pdf"
  • Network accessline 79
    CN209861402U: "https://patentimages.storage.googleapis.com/39/b7/d6/0050a57f67b004/CN209861402U.pdf"

skills/patent-reader/tests/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tests/fixtures/google_patents/detail_JP7371268B2.html

  • Network accessline 8
    <meta name="DC.description" content=""> <meta name="citation_patent_application_number" content="JP:2022548006A"> <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/92/93/65/cb5e16693b3b9b/JP7371268B2.pdf">
  • Network accessline 9
    <meta name="citation_patent_application_number" content="JP:2022548006A"> <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/92/93/65/cb5e16693b3b9b/JP7371268B2.pdf"> <meta name="citation_patent_number" conte
  • Network accessline 10
    <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/92/93/65/cb5e16693b3b9b/JP7371268B2.pdf">

skills/patent-reader/tests/fixtures/google_patents/detail_US11450918B2.html

  • Network accessline 9
    "> <meta name="citation_patent_application_number" content="US:16/796,222"> <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/06/cd/ed/b18cc897c07986/US11450918.pdf">
  • Network accessline 10
    <meta name="citation_patent_application_number" content="US:16/796,222"> <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/06/cd/ed/b18cc897c07986/US11450918.pdf"> <meta name="citation_patent_number" content
  • Network accessline 11
    <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/06/cd/ed/b18cc897c07986/US11450918.pdf">

skills/patent-reader/tests/test_biblio_extract.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tests/test_claim_features.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tests/test_clue_market.py

  • Executable scriptline 1
    Executable file
  • Network accessline 66
    class ClueRegionTests(unittest.TestCase):     def _clue(self, title: str, conf: str, group: str = "") -> dict:         c = {"title": title, "url": f"https://news.example/{title}", "confidence": conf, "reason": "同主题产品线报道"}
  • Network accessline 67
    def _clue(self, title: str, conf: str, group: str = "") -> dict:         c = {"title": title, "url": f"https://news.example/{title}", "confidence": conf, "reason": "同主题产品线报道"}         if group:
  • Network accessline 68
    c = {"title": title, "url": f"https://news.example/{title}", "confidence": conf, "reason": "同主题产品线报道"}

skills/patent-reader/tests/test_clue_vocab.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tests/test_desc_paragraphs.py

  • Executable scriptline 1
    Executable file
  • Network accessline 126
    self.assertEqual(                 data["source_url"],                 "http://epub.cnipa.gov.cn/patent/CN219812345U",
  • Network accessline 127
    data["source_url"],                 "http://epub.cnipa.gov.cn/patent/CN219812345U",             )
  • Network accessline 128
    "http://epub.cnipa.gov.cn/patent/CN219812345U",

skills/patent-reader/tests/test_extract_patent_text.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tests/test_fetch_gp_fulltext.py

  • Executable scriptline 1
    Executable file
  • Network accessline 26
    def _detail(name: str, pub: str):     html = (FIXTURES / name).read_text(encoding="utf-8")     return parse_detail_html(html, pub=pub, url=f"https://patents.google.com/patent/{pub}/en")
  • Network accessline 28
    return parse_detail_html(html, pub=pub, url=f"https://patents.google.com/patent/{pub}/en")
  • Network accessline 88
    self.assertEqual(nodes[6]["parent"], 5)             paras = json.loads((run / "description_paragraphs.json").read_text(encoding="utf-8"))             self.assertEqual(paras["source_url"], "https://patents.google.com/patent/US11450918B2/en")
  • Network accessline 89
    paras = json.loads((run / "description_paragraphs.json").read_text(encoding="utf-8"))             self.assertEqual(paras["source_url"], "https://patents.google.com/patent/US11450918B2/en")             self.assertEqual(paras["count"], 3)
  • Network accessline 90
    self.assertEqual(paras["source_url"], "https://patents.google.com/patent/US11450918B2/en")
  • Network accessline 142
    self.assertEqual(             pdf_mod.google_patent_page_urls("US11450918B2"),             ["https://patents.google.com/patent/US11450918B2/en"],
  • Network accessline 143
    pdf_mod.google_patent_page_urls("US11450918B2"),             ["https://patents.google.com/patent/US11450918B2/en"],         )
  • Network accessline 144
    ["https://patents.google.com/patent/US11450918B2/en"],

skills/patent-reader/tests/test_fetch_patent_pdf.py

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    SAMPLE_HTML = """ <html> <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf">
  • Network accessline 26
    <html> <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf"> <title>CN119961390A - demo</title>
  • Network accessline 27
    <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf"> <title>CN119961390A - demo</title> <a href="https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN
  • Network accessline 28
    <title>CN119961390A - demo</title> <a href="https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf" itemprop="pdfLink">Download PDF</a> </html>
  • Network accessline 29
    <a href="https://patentimages.storage.googleapis.com/58/1b/9b/07a9f35635df34/CN119961390A.pdf" itemprop="pdfLink">Download PDF</a>
  • Network accessline 69
    self.assertTrue(urls)         self.assertIn("CN119961390A.pdf", urls[0])         self.assertTrue(urls[0].startswith("https://patentimages.storage.googleapis.com/"))
  • Network accessline 71
    self.assertTrue(urls[0].startswith("https://patentimages.storage.googleapis.com/"))
  • Network accessline 80
    resp = _FakeResp(body)         with _Patch(_open=lambda *_a, **_k: resp):             urls, n = read_page_pdf_urls("https://p/zh", "CN119961390A")
  • Network accessline 81
    with _Patch(_open=lambda *_a, **_k: resp):             urls, n = read_page_pdf_urls("https://p/zh", "CN119961390A")         self.assertIn("CN119961390A.pdf", urls[0])
  • Network accessline 82
    urls, n = read_page_pdf_urls("https://p/zh", "CN119961390A")
  • Network accessline 95
    timeout=1,                 known_cdn={                     "CN114552122A": "https://patentimages.storage.googleapis.com/c2/6c/51/75412585086edf/CN114552122A.pdf"
  • Network accessline 96
    known_cdn={                     "CN114552122A": "https://patentimages.storage.googleapis.com/c2/6c/51/75412585086edf/CN114552122A.pdf"                 },
  • Network accessline 97
    "CN114552122A": "https://patentimages.storage.googleapis.com/c2/6c/51/75412585086edf/CN114552122A.pdf"
  • Network accessline 127
    with tempfile.TemporaryDirectory() as td:                 out = Path(td)                 st = fetch_patent_pdf("CN1", out, url="https://example.com/CN1.pdf")
  • Network accessline 128
    out = Path(td)                 st = fetch_patent_pdf("CN1", out, url="https://example.com/CN1.pdf")                 self.assertTrue(st["ok"])
  • Network accessline 129
    st = fetch_patent_pdf("CN1", out, url="https://example.com/CN1.pdf")
  • Network accessline 131
    self.assertEqual(st["source_id"], "direct_url")                 self.assertTrue((out / "source" / "CN1.pdf").is_file())         self.assertEqual(calls, ["https://example.com/CN1.pdf"])
  • Network accessline 133
    self.assertEqual(calls, ["https://example.com/CN1.pdf"])
  • Network accessline 144
    with _Patch(download_pdf_bytes=flaky):             with tempfile.TemporaryDirectory() as td:                 st = fetch_patent_pdf("CN1", Path(td), url="https://example.com/CN1.pdf")
  • Network accessline 145
    with tempfile.TemporaryDirectory() as td:                 st = fetch_patent_pdf("CN1", Path(td), url="https://example.com/CN1.pdf")         self.assertTrue(st["ok"])
  • Network accessline 146
    st = fetch_patent_pdf("CN1", Path(td), url="https://example.com/CN1.pdf")
  • Network accessline 150
    def test_download_404_falls_to_known_cdn(self) -> None:         page_url = "https://patentimages.storage.googleapis.com/aa/CN114552122A.pdf"
  • Network accessline 151
    page_url = "https://patentimages.storage.googleapis.com/aa/CN114552122A.pdf"

skills/patent-reader/tests/test_google_patents.py

  • Executable scriptline 1
    Executable file
  • Network accessline 45
    class _Resp(io.BytesIO):     def __init__(self, body: bytes, url: str = "https://patents.google.com/x") -> None:
  • Network accessline 46
    def __init__(self, body: bytes, url: str = "https://patents.google.com/x") -> None:
  • Network accessline 84
    q = SearchQuery(keywords="battery", countries=["US"])         url = xhr_url(q)         self.assertTrue(url.startswith("https://patents.google.com/xhr/query?url="))
  • Network accessline 85
    url = xhr_url(q)         self.assertTrue(url.startswith("https://patents.google.com/xhr/query?url="))         self.assertTrue(url.endswith("&exp="))
  • Network accessline 86
    self.assertTrue(url.startswith("https://patents.google.com/xhr/query?url="))         self.assertTrue(url.endswith("&exp="))         inner = urllib.parse.unquote(url.split("url=", 1)[1].rsplit("&exp=", 1)[0])
  • Network accessline 91
    def test_web_url_uses_same_params(self) -> None:         q = SearchQuery(keywords="lamp", patent_type="DESIGN", page=1)         self.assertEqual(web_url(q), "https://patents.google.com/?" + inner_query_string(q))
  • Network accessline 92
    q = SearchQuery(keywords="lamp", patent_type="DESIGN", page=1)         self.assertEqual(web_url(q), "https://patents.google.com/?" + inner_query_string(q))         self.assertIn("type=DESIGN", web_url(q))
  • Network accessline 93
    self.assertEqual(web_url(q), "https://patents.google.com/?" + inner_query_string(q))
  • Network accessline 160
    self.assertEqual((first.country, first.kind), ("US", "B2"))         self.assertNotIn("<b>", first.title)         self.assertEqual(first.url, "https://patents.google.com/patent/US12394859B2/en")
  • Network accessline 161
    self.assertNotIn("<b>", first.title)         self.assertEqual(first.url, "https://patents.google.com/patent/US12394859B2/en")         self.assertIn("JP", first.family_countries)
  • Network accessline 162
    self.assertEqual(first.url, "https://patents.google.com/patent/US12394859B2/en")
  • Network accessline 164
    with_pdf = [h for h in page.hits if h.pdf_url]         self.assertTrue(with_pdf)         self.assertTrue(with_pdf[0].pdf_url.startswith("https://patentimages.storage.googleapis.com/"))
  • Network accessline 165
    self.assertTrue(with_pdf)         self.assertTrue(with_pdf[0].pdf_url.startswith("https://patentimages.storage.googleapis.com/"))         self.assertTrue(any(h.country == "JP" for h in page.hits))
  • Network accessline 166
    self.assertTrue(with_pdf[0].pdf_url.startswith("https://patentimages.storage.googleapis.com/"))
  • Network accessline 240
    with _PatchAttr(gp_client, "_urlopen", self._http_error(429)):             with self.assertRaises(GooglePatentsBlocked):                 gp_client.fetch_text("https://patents.google.com/patent/US1/en")
  • Network accessline 242
    gp_client.fetch_text("https://patents.google.com/patent/US1/en")
  • Network accessline 245
    with _PatchAttr(gp_client, "_urlopen", self._http_error(404)):             with self.assertRaises(GooglePatentsNotFound):                 gp_client.fetch_text("https://patents.google.com/patent/US1/en")
  • Network accessline 247
    gp_client.fetch_text("https://patents.google.com/patent/US1/en")
  • Network accessline 259
    with _PatchAttr(gp_client, "_urlopen", opener):             with self.assertRaises(GooglePatentsUnavailable):                 gp_client.fetch_text("https://patents.google.com/")
  • Network accessline 261
    gp_client.fetch_text("https://patents.google.com/")
  • Network accessline 271
    with _PatchAttr(gp_api, "fetch_text", lambda *_a, **_k: body):             d = gp_api.fetch_detail("US11450918B2")         self.assertEqual(d.url, "https://patents.google.com/patent/US11450918B2/en")
  • Network accessline 272
    d = gp_api.fetch_detail("US11450918B2")         self.assertEqual(d.url, "https://patents.google.com/patent/US11450918B2/en")         self.assertEqual(len(d.claims), 6)
  • Network accessline 273
    self.assertEqual(d.url, "https://patents.google.com/patent/US11450918B2/en")

skills/patent-reader/tests/test_note_cites.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tests/test_patent_reader_debt_fixes.py

  • Executable scriptline 1
    Executable file
  • Network accessline 192
    {                 "title": "某白皮书",                 "url": "https://example.org/a",
  • Network accessline 193
    "title": "某白皮书",                 "url": "https://example.org/a",                 "confidence": "中",
  • Network accessline 194
    "url": "https://example.org/a",
  • Network accessline 208
    clues = [         {"title": "低1", "url": "https://a.example/1", "confidence": "低", "reason": "理由足够长了"},
  • Network accessline 209
    {"title": "低1", "url": "https://a.example/1", "confidence": "低", "reason": "理由足够长了"},
  • Network accessline 210
    {"title": "高1", "url": "https://a.example/2", "confidence": "高", "reason": "理由足够长了"},
  • Network accessline 211
    {"title": "中1", "url": "https://a.example/3", "confidence": "中", "reason": "理由足够长了"},
  • Network accessline 212
    {"title": "中2", "url": "https://a.example/4", "confidence": "中", "reason": "理由足够长了"},
  • Network accessline 213
    {"title": "高2", "url": "https://a.example/5", "confidence": "高", "reason": "理由足够长了"},
  • Network accessline 246
    {             "title": "Agent已读",             "url": "https://example.org/a",
  • Network accessline 247
    "title": "Agent已读",             "url": "https://example.org/a",             "confidence": "高",
  • Network accessline 248
    "url": "https://example.org/a",
  • Network accessline 255
    {             "title": "仅有链接",             "url": "https://example.org/b",
  • Network accessline 256
    "title": "仅有链接",             "url": "https://example.org/b",             "confidence": "中",
  • Network accessline 257
    "url": "https://example.org/b",
  • Network accessline 521
    clue = {         "title": "水性PVDF产品报道",         "url": "https://news.example/x",
  • Network accessline 522
    "title": "水性PVDF产品报道",         "url": "https://news.example/x",         "confidence": "中",
  • Network accessline 523
    "url": "https://news.example/x",
  • Access to secretsline 578
    [Credential-related source omitted]
  • Access to secretsline 585
    [Credential-related source omitted]
  • Access to secretsline 586
    [Credential-related source omitted]
  • Access to secretsline 594
    [Credential-related source omitted]
  • Access to secretsline 596
    [Credential-related source omitted]

skills/patent-reader/tests/test_patent_reader_links.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tests/test_patent_reader_p0_p2.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tests/test_patent_reader_pipeline.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 19
    [Credential-related source omitted]

skills/patent-reader/tests/test_schema_vault.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tests/test_text_vocab.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/analyze/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/analyze/build_claim_mermaid.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/analyze/build_context_anchor.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/analyze/claim_features.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/analyze/lint_patent_note.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/analyze/validate_claim_features.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/analyze/validate_claim_tree.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/analyze/validate_public_clues.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/browser.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]

skills/patent-reader/tools/crawl/cnipa_epub_crawler.py

  • Network accessline 1
    # -*- coding: utf-8 -*- """ 中国专利公布公告网站点:http://epub.cnipa.gov.cn/ —— **首页「公布公告查询」**(#indexForm / #searchStr)及 **高级查询**(/Advanced,分类号、名称与发明人字段)。
  • Executable scriptline 1
    Executable file
  • Network accessline 3
    中国专利公布公告网站点:http://epub.cnipa.gov.cn/ —— **首页「公布公告查询」**(#indexForm / #searchStr)及 **高级查询**(/Advanced,分类号、名称与发明人字段)。
  • Network accessline 80
    EPUB_BASE = "http://epub.cnipa.gov.cn/"
  • Access to secretsline 112
    [Credential-related source omitted]
  • Access to secretsline 116
    [Credential-related source omitted]
  • Access to secretsline 435
    [Credential-related source omitted]

skills/patent-reader/tools/crawl/cnipa_epub_parse.py

  • Network accessline 1
    # -*- coding: utf-8 -*- """ 解析 http://epub.cnipa.gov.cn/ 检索结果页 HTML,提取公布公告列表中的标题、公开号、详情链接、摘要(若有)。
  • Executable scriptline 1
    Executable file
  • Network accessline 3
    解析 http://epub.cnipa.gov.cn/ 检索结果页 HTML,提取公布公告列表中的标题、公开号、详情链接、摘要(若有)。
  • Network accessline 15
    EPUB_BASE = "http://epub.cnipa.gov.cn/"
  • Network accessline 394
    """     新版「公布模式」结果页:无表格行,每条为 ``div.item``,题名在 ``h1.title``,     详情 URL 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/CN…"`` 上;
  • Network accessline 395
    新版「公布模式」结果页:无表格行,每条为 ``div.item``,题名在 ``h1.title``,     详情 URL 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/CN…"`` 上;     摘要位于 ``dt`` 为「摘要」的 ``dd`` 内(含 ``span.alltxt`` 折叠段)。
  • Network accessline 396
    详情 URL 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/CN…"`` 上;

skills/patent-reader/tools/extract/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/extract/extract_patent_figures.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/extract/extract_patent_text.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/extract/fetch_design_views.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Network accessline 66
    EPUB_BASE = "http://epub.cnipa.gov.cn"

skills/patent-reader/tools/extract/fetch_gp_fulltext.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/extract/fetch_patent_pdf.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Network accessline 20
    python skills/patent-reader/tools/extract/fetch_patent_pdf.py --pub CN… -o RUN --save-html   python skills/patent-reader/tools/extract/fetch_patent_pdf.py --url https://…/CNxxx.pdf -o RUN --pub CNxxx
  • Network accessline 21
    python skills/patent-reader/tools/extract/fetch_patent_pdf.py --url https://…/CNxxx.pdf -o RUN --pub CNxxx
  • Network accessline 63
    CDN_HOST_RE = re.compile(     r"https://patentimages\.storage\.googleapis\.com/[^\s\"'<>\\]+?\.pdf",
  • Network accessline 64
    r"https://patentimages\.storage\.googleapis\.com/[^\s\"'<>\\]+?\.pdf",
  • Network accessline 71
    ) PDF_LINK_RE = re.compile(     r'href=["\'](https://patentimages\.storage\.googleapis\.com/[^"\']+\.pdf)["\']',
  • Network accessline 72
    PDF_LINK_RE = re.compile(     r'href=["\'](https://patentimages\.storage\.googleapis\.com/[^"\']+\.pdf)["\']',     re.I,
  • Network accessline 73
    r'href=["\'](https://patentimages\.storage\.googleapis\.com/[^"\']+\.pdf)["\']',
  • Network accessline 108
    jurisdiction = infer_jurisdiction(p)     if jurisdiction and jurisdiction != "CN":         return [f"https://patents.google.com/patent/{p}/en"]
  • Network accessline 109
    if jurisdiction and jurisdiction != "CN":         return [f"https://patents.google.com/patent/{p}/en"]     return [
  • Network accessline 110
    return [f"https://patents.google.com/patent/{p}/en"]
  • Network accessline 111
    return [         f"https://patents.google.com/patent/{p}/zh",         f"https://patents.google.com/patent/{p}/en",
  • Network accessline 112
    f"https://patents.google.com/patent/{p}/zh",
  • Network accessline 113
    f"https://patents.google.com/patent/{p}/en",
  • Network accessline 114
    f"https://patents.google.com/patent/{p}",
  • Network accessline 149
    def _open(url: str, *, timeout: float):     req = urllib.request.Request(url, headers={"User-Agent": UA})
  • Network accessline 150
    req = urllib.request.Request(url, headers={"User-Agent": UA})
  • Network accessline 151
    return urllib.request.urlopen(req, timeout=timeout, context=_SSL_CTX)

skills/patent-reader/tools/extract/figure_extract.py

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 248
    rm = (r[0] + r[2]) / 2.0
  • Dangerous shell operationline 249
    return col_x0 <= rm <= col_x1

skills/patent-reader/tools/google_patents/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/google_patents/api.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/google_patents/client.py

  • Executable scriptline 1
    Executable file
  • Network accessline 23
    BASE_URL = "https://patents.google.com"
  • Network accessline 31
    _SSL_CTX = ssl.create_default_context() _urlopen = urllib.request.urlopen
  • Network accessline 32
    _urlopen = urllib.request.urlopen
  • Network accessline 50
    if accept:         headers["Accept"] = accept     req = urllib.request.Request(url, headers=headers)
  • Network accessline 51
    headers["Accept"] = accept     req = urllib.request.Request(url, headers=headers)     try:
  • Network accessline 52
    req = urllib.request.Request(url, headers=headers)

skills/patent-reader/tools/google_patents/detail.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/google_patents/errors.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/google_patents/html_text.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/google_patents/query.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/google_patents/results.py

  • Executable scriptline 1
    Executable file
  • Network accessline 13
    PDF_HOST = "https://patentimages.storage.googleapis.com/"

skills/patent-reader/tools/patent_type.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/shared/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/shared/biblio.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/shared/claims.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/shared/common.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/shared/obsidian_env.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 48
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]
  • Access to secretsline 83
    [Credential-related source omitted]
  • Access to secretsline 84
    [Credential-related source omitted]
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 211
    [Credential-related source omitted]
  • Access to secretsline 213
    [Credential-related source omitted]
  • Access to secretsline 332
    [Credential-related source omitted]
  • Access to secretsline 335
    [Credential-related source omitted]
  • Access to secretsline 338
    [Credential-related source omitted]

skills/patent-reader/tools/shared/paths.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/shared/rules.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/shared/text_vocab.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/stdio_utf8.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]

skills/patent-reader/tools/vault/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/build_patent_canvas.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/vault/check_obsidian_env.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Access to secretsline 129
    [Credential-related source omitted]
  • Access to secretsline 151
    [Credential-related source omitted]

skills/patent-reader/tools/vault/clue_vault.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/clues/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/clues/annotate.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/clues/matching.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/clues/model.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/clues/render.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/clues/summary.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/clues/vocab.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/desc_paragraphs.py

  • Executable scriptline 1
    Executable file
  • Network accessline 117
    def epub_patent_url(pub: str) -> str:     p = (pub or "").strip()     return f"http://epub.cnipa.gov.cn/patent/{p}" if p else ""
  • Network accessline 119
    return f"http://epub.cnipa.gov.cn/patent/{p}" if p else ""

skills/patent-reader/tools/vault/link_patent_notes.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/vault/materialize_public_clues.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/vault/note_cites.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/obsidian.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/obsidian_bootstrap.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/obsidian_canvas.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/obsidian_claims.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/obsidian_frontmatter.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/obsidian_glossary.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/obsidian_paths.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/patent_link.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/schema_vault.py

  • Executable scriptline 1
    Executable file

skills/patent-reader/tools/vault/setup_obsidian_vault.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-reader/tools/vault/write_patent_obsidian_note.py

  • Executable scriptline 1
    #!/usr/bin/env python

skills/patent-search/tests/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tests/fixtures/google_patents/detail_JP7371268B2.html

  • Network accessline 8
    <meta name="DC.description" content=""> <meta name="citation_patent_application_number" content="JP:2022548006A"> <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/92/93/65/cb5e16693b3b9b/JP7371268B2.pdf">
  • Network accessline 9
    <meta name="citation_patent_application_number" content="JP:2022548006A"> <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/92/93/65/cb5e16693b3b9b/JP7371268B2.pdf"> <meta name="citation_patent_number" conte
  • Network accessline 10
    <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/92/93/65/cb5e16693b3b9b/JP7371268B2.pdf">

skills/patent-search/tests/fixtures/google_patents/detail_US11450918B2.html

  • Network accessline 9
    "> <meta name="citation_patent_application_number" content="US:16/796,222"> <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/06/cd/ed/b18cc897c07986/US11450918.pdf">
  • Network accessline 10
    <meta name="citation_patent_application_number" content="US:16/796,222"> <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/06/cd/ed/b18cc897c07986/US11450918.pdf"> <meta name="citation_patent_number" content
  • Network accessline 11
    <meta name="citation_pdf_url" content="https://patentimages.storage.googleapis.com/06/cd/ed/b18cc897c07986/US11450918.pdf">

skills/patent-search/tests/test_cnipa_search.py

  • Executable scriptline 1
    Executable file
  • Network accessline 144
    self.assertEqual(hits[0].applicant, "示例 人工智能 研究院")         self.assertEqual(hits[0].title, "一种示例数据处理方法、装置及电子设备")         self.assertEqual(hits[0].link, "http://epub.cnipa.gov.cn/patent/CN120000001A")
  • Network accessline 146
    self.assertEqual(hits[0].link, "http://epub.cnipa.gov.cn/patent/CN120000001A")
  • Network accessline 201
    <dt>摘要:</dt><dd>本发明提供一种示例数据处理方法。</dd>             </dl>             <div class="qrcode" title="http://epub.cnipa.gov.cn/patent/CN120000001A"></div>
  • Network accessline 202
    </dl>             <div class="qrcode" title="http://epub.cnipa.gov.cn/patent/CN120000001A"></div>           </div>
  • Network accessline 203
    <div class="qrcode" title="http://epub.cnipa.gov.cn/patent/CN120000001A"></div>

skills/patent-search/tests/test_emit_covers_report.py

  • Executable scriptline 1
    Executable file
  • Network accessline 33
    "snippet": "连通筋连接第一流道与第二流道",                 "abstract": "连通筋连接第一流道与第二流道",                 "link": "http://epub.cnipa.gov.cn/patent/CN218800002U",
  • Network accessline 34
    "abstract": "连通筋连接第一流道与第二流道",                 "link": "http://epub.cnipa.gov.cn/patent/CN218800002U",             }
  • Network accessline 35
    "link": "http://epub.cnipa.gov.cn/patent/CN218800002U",

skills/patent-search/tests/test_emit_search_report.py

  • Executable scriptline 1
    Executable file
  • Network accessline 22
    def _sample_payload() -> dict:     return {         "source": "http://epub.cnipa.gov.cn/Advanced",
  • Network accessline 23
    return {         "source": "http://epub.cnipa.gov.cn/Advanced",         "query_mode": "derived_image",
  • Network accessline 24
    "source": "http://epub.cnipa.gov.cn/Advanced",
  • Network accessline 61
    "filing_date": "2026.04.22",                 "publication_date": "2026.08.18",                 "link": "http://epub.cnipa.gov.cn/patent/CN120000001A",
  • Network accessline 62
    "publication_date": "2026.08.18",                 "link": "http://epub.cnipa.gov.cn/patent/CN120000001A",                 "abstract": "本发明提供一种示例数据处理方法。",
  • Network accessline 63
    "link": "http://epub.cnipa.gov.cn/patent/CN120000001A",
  • Network accessline 91
    self.assertIn("单图关键字代理", text)         self.assertIn("不是以图搜图", text)         self.assertIn("[一种示例数据处理方法](http://epub.cnipa.gov.cn/patent/CN120000001A)", text)
  • Network accessline 92
    self.assertIn("不是以图搜图", text)         self.assertIn("[一种示例数据处理方法](http://epub.cnipa.gov.cn/patent/CN120000001A)", text)         self.assertIn("本发明提供一种示例数据处理方法。", text)
  • Network accessline 93
    self.assertIn("[一种示例数据处理方法](http://epub.cnipa.gov.cn/patent/CN120000001A)", text)

skills/patent-search/tests/test_google_patents.py

  • Executable scriptline 1
    Executable file
  • Network accessline 45
    class _Resp(io.BytesIO):     def __init__(self, body: bytes, url: str = "https://patents.google.com/x") -> None:
  • Network accessline 46
    def __init__(self, body: bytes, url: str = "https://patents.google.com/x") -> None:
  • Network accessline 84
    q = SearchQuery(keywords="battery", countries=["US"])         url = xhr_url(q)         self.assertTrue(url.startswith("https://patents.google.com/xhr/query?url="))
  • Network accessline 85
    url = xhr_url(q)         self.assertTrue(url.startswith("https://patents.google.com/xhr/query?url="))         self.assertTrue(url.endswith("&exp="))
  • Network accessline 86
    self.assertTrue(url.startswith("https://patents.google.com/xhr/query?url="))         self.assertTrue(url.endswith("&exp="))         inner = urllib.parse.unquote(url.split("url=", 1)[1].rsplit("&exp=", 1)[0])
  • Network accessline 91
    def test_web_url_uses_same_params(self) -> None:         q = SearchQuery(keywords="lamp", patent_type="DESIGN", page=1)         self.assertEqual(web_url(q), "https://patents.google.com/?" + inner_query_string(q))
  • Network accessline 92
    q = SearchQuery(keywords="lamp", patent_type="DESIGN", page=1)         self.assertEqual(web_url(q), "https://patents.google.com/?" + inner_query_string(q))         self.assertIn("type=DESIGN", web_url(q))
  • Network accessline 93
    self.assertEqual(web_url(q), "https://patents.google.com/?" + inner_query_string(q))
  • Network accessline 160
    self.assertEqual((first.country, first.kind), ("US", "B2"))         self.assertNotIn("<b>", first.title)         self.assertEqual(first.url, "https://patents.google.com/patent/US12394859B2/en")
  • Network accessline 161
    self.assertNotIn("<b>", first.title)         self.assertEqual(first.url, "https://patents.google.com/patent/US12394859B2/en")         self.assertIn("JP", first.family_countries)
  • Network accessline 162
    self.assertEqual(first.url, "https://patents.google.com/patent/US12394859B2/en")
  • Network accessline 164
    with_pdf = [h for h in page.hits if h.pdf_url]         self.assertTrue(with_pdf)         self.assertTrue(with_pdf[0].pdf_url.startswith("https://patentimages.storage.googleapis.com/"))
  • Network accessline 165
    self.assertTrue(with_pdf)         self.assertTrue(with_pdf[0].pdf_url.startswith("https://patentimages.storage.googleapis.com/"))         self.assertTrue(any(h.country == "JP" for h in page.hits))
  • Network accessline 166
    self.assertTrue(with_pdf[0].pdf_url.startswith("https://patentimages.storage.googleapis.com/"))
  • Network accessline 240
    with _PatchAttr(gp_client, "_urlopen", self._http_error(429)):             with self.assertRaises(GooglePatentsBlocked):                 gp_client.fetch_text("https://patents.google.com/patent/US1/en")
  • Network accessline 242
    gp_client.fetch_text("https://patents.google.com/patent/US1/en")
  • Network accessline 245
    with _PatchAttr(gp_client, "_urlopen", self._http_error(404)):             with self.assertRaises(GooglePatentsNotFound):                 gp_client.fetch_text("https://patents.google.com/patent/US1/en")
  • Network accessline 247
    gp_client.fetch_text("https://patents.google.com/patent/US1/en")
  • Network accessline 259
    with _PatchAttr(gp_client, "_urlopen", opener):             with self.assertRaises(GooglePatentsUnavailable):                 gp_client.fetch_text("https://patents.google.com/")
  • Network accessline 261
    gp_client.fetch_text("https://patents.google.com/")
  • Network accessline 271
    with _PatchAttr(gp_api, "fetch_text", lambda *_a, **_k: body):             d = gp_api.fetch_detail("US11450918B2")         self.assertEqual(d.url, "https://patents.google.com/patent/US11450918B2/en")
  • Network accessline 272
    d = gp_api.fetch_detail("US11450918B2")         self.assertEqual(d.url, "https://patents.google.com/patent/US11450918B2/en")         self.assertEqual(len(d.claims), 6)
  • Network accessline 273
    self.assertEqual(d.url, "https://patents.google.com/patent/US11450918B2/en")

skills/patent-search/tests/test_gp_search.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 54
    [Credential-related source omitted]
  • Access to secretsline 55
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Network accessline 85
    hit = payload["hits"][0]         self.assertEqual(hit["pub_number"], "US12394859B2")         self.assertEqual(hit["link"], "https://patents.google.com/patent/US12394859B2/en")
  • Network accessline 86
    self.assertEqual(hit["pub_number"], "US12394859B2")         self.assertEqual(hit["link"], "https://patents.google.com/patent/US12394859B2/en")         md_path = Path(out.split("GP_SEARCH_MD:", 1)[1].split("\n", 1)[0].strip())
  • Network accessline 87
    self.assertEqual(hit["link"], "https://patents.google.com/patent/US12394859B2/en")

skills/patent-search/tools/browser.py

  • Executable scriptline 1
    #!/usr/bin/env python
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]

skills/patent-search/tools/cnipa_crawler.py

  • Executable scriptline 1
    Executable file
  • Network accessline 82
    EPUB_BASE = "http://epub.cnipa.gov.cn/"
  • Network accessline 229
    const timer = setTimeout(() => controller.abort(), timeoutMs);     try {         const response = await fetch(form.action, {
  • Network accessline 230
    try {         const response = await fetch(form.action, {             method: "POST",
  • Network accessline 231
    const response = await fetch(form.action, {
  • Access to secretsline 385
    [Credential-related source omitted]
  • Access to secretsline 389
    [Credential-related source omitted]

skills/patent-search/tools/cnipa_parse.py

  • Network accessline 1
    # -*- coding: utf-8 -*- """ 解析 http://epub.cnipa.gov.cn/ 检索结果页 HTML,提取公布公告列表中的标题、公开号、详情链接、摘要(若有)。
  • Executable scriptline 1
    Executable file
  • Network accessline 3
    解析 http://epub.cnipa.gov.cn/ 检索结果页 HTML,提取公布公告列表中的标题、公开号、详情链接、摘要(若有)。
  • Network accessline 5
    解析 http://epub.cnipa.gov.cn/ 检索结果页 HTML。patent-search 独立副本,不依赖交底 crawl。
  • Network accessline 15
    EPUB_BASE = "http://epub.cnipa.gov.cn/"
  • Network accessline 452
    """     新版「公布模式」结果页:无表格行,每条为 ``div.item``,题名在 ``h1.title``,     详情 URL 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/CN…"`` 上;
  • Network accessline 453
    新版「公布模式」结果页:无表格行,每条为 ``div.item``,题名在 ``h1.title``,     详情 URL 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/CN…"`` 上;     摘要位于 ``dt`` 为「摘要」的 ``dd`` 内(含 ``span.alltxt`` 折叠段)。
  • Network accessline 454
    详情 URL 多在二维码 ``div.qrcode`` 的 ``title="http://epub.../patent/CN…"`` 上;

skills/patent-search/tools/cnipa_search.py

  • Executable scriptline 1
    Executable file
  • Network accessline 297
    queried_at = datetime.now()     payload = {         "source": "http://epub.cnipa.gov.cn/Advanced",
  • Network accessline 298
    payload = {         "source": "http://epub.cnipa.gov.cn/Advanced",         "scope": "published_records_only",
  • Network accessline 299
    "source": "http://epub.cnipa.gov.cn/Advanced",

skills/patent-search/tools/derived_query.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tools/emit_covers_report.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tools/emit_search_report.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 101
    [Credential-related source omitted]
  • Network accessline 177
    "",         f"- **查询时间**:{stamp}",         f"- **数据源**:{_text(payload.get('source'), empty='http://epub.cnipa.gov.cn/Advanced')}",
  • Network accessline 178
    f"- **查询时间**:{stamp}",         f"- **数据源**:{_text(payload.get('source'), empty='http://epub.cnipa.gov.cn/Advanced')}",         f"- **范围**:仅已公开/公告记录,不得写成实际提交总数",
  • Network accessline 179
    f"- **数据源**:{_text(payload.get('source'), empty='http://epub.cnipa.gov.cn/Advanced')}",
  • Network accessline 329
    "",         f"- **查询时间**:{stamp}",         f"- **数据源**:Google Patents({_text(payload.get('source'), empty='https://patents.google.com/')})",
  • Network accessline 330
    f"- **查询时间**:{stamp}",         f"- **数据源**:Google Patents({_text(payload.get('source'), empty='https://patents.google.com/')})",         "- **范围**:仅已公开/公告文献;按同族去重;非英文文献按 Google 机器翻译检索",
  • Network accessline 331
    f"- **数据源**:Google Patents({_text(payload.get('source'), empty='https://patents.google.com/')})",

skills/patent-search/tools/google_patents/__init__.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tools/google_patents/api.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tools/google_patents/client.py

  • Executable scriptline 1
    Executable file
  • Network accessline 23
    BASE_URL = "https://patents.google.com"
  • Network accessline 31
    _SSL_CTX = ssl.create_default_context() _urlopen = urllib.request.urlopen
  • Network accessline 32
    _urlopen = urllib.request.urlopen
  • Network accessline 50
    if accept:         headers["Accept"] = accept     req = urllib.request.Request(url, headers=headers)
  • Network accessline 51
    headers["Accept"] = accept     req = urllib.request.Request(url, headers=headers)     try:
  • Network accessline 52
    req = urllib.request.Request(url, headers=headers)

skills/patent-search/tools/google_patents/detail.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tools/google_patents/errors.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tools/google_patents/html_text.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tools/google_patents/query.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tools/google_patents/results.py

  • Executable scriptline 1
    Executable file
  • Network accessline 13
    PDF_HOST = "https://patentimages.storage.googleapis.com/"

skills/patent-search/tools/gp_search.py

  • Executable scriptline 1
    Executable file
  • Network accessline 184
    payload = {         "source_id": GOOGLE_SOURCE_ID,         "source": "https://patents.google.com/",
  • Network accessline 185
    "source_id": GOOGLE_SOURCE_ID,         "source": "https://patents.google.com/",         "scope": "published_records_only",
  • Network accessline 186
    "source": "https://patents.google.com/",

skills/patent-search/tools/patent_type.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tools/search_config.py

  • Executable scriptline 1
    Executable file

skills/patent-search/tools/stdio_utf8.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 23 facts
Signal confidence: 477 facts

and 427 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeFrontmatter field user-invocable in SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Explore alternatives and comparisons

Add this badge to your README

It updates every night and links to this page.

handsomestWei/patent-disclosure-skill: #123 on hotskills, 13k stars

[![handsomestWei/patent-disclosure-skill on hotskills](https://hotskills.dev/badge/handsomestwei-patent-disclosure-skill.svg)](https://hotskills.dev/skill/handsomestwei-patent-disclosure-skill/)