Not in the top 1,000 by GitHub stars

AboutRSS/rsshub-route-authoring-skill

Agent skill for authoring PR-ready RSSHub routes, distilled from 2000+ PR reviews

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 Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 4ca49d3bec7c

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 4ca49d3bec7c544d5427126bea8f65f8773d722b

28GitHub stars
5stars in 7 days
1skill in this repository
0commits in 30 days

Heat

3.4
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

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

Stars over time

Oct 25, 2026Nov 5, 202628

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

rsshub-route-authoring-skill

When your agent uses it

Author PR-ready RSSHub routes — namespace.ts, route handler, Radar rules and PR description — that survive code review. Distilled from 2,727 route PRs. Use when asked to write, fix or review an RSSHub route, add an RSS feed for a website via RSSHub, contribute a route to DIYgod/RSSHub, or when working with cheerio selectors, cache.tryGet, parseDate, Radar rules, or the RSSHub PR template. Trigger on RSSHub, RSS route, RSS feed for X, 给 X 做 RSS 订阅, namespace.ts, DataItem. Do not use for deploying RSSHub, debugging runtime errors, tuning cache/config, or non-RSSHub scraping.

What it loads into context

Frontmatter

312 tokens

Always available to the agent

SKILL.md

2,793 tokens

When the skill is activated

Reference documents

24,500 tokens

Loaded on request

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

The playbook

  1. Workflow
  2. Before committing
  3. After the PR: feedback (opt-in only)
  4. References

Scripts executed separately

  • package.json
  • scripts/pre-submit-check.mjs
  • scripts/verify-selectors.mjs
  • tools/analyze-routes.mjs
  • tools/analyze.mjs
  • tools/fetch-diff-hunks.mjs
  • tools/fetch-reviews.mjs
  • tools/verify-claims.mjs

Files

  • .gitattributesasset403 bytes
  • .github/ISSUE_TEMPLATE/correction.ymlasset1,594 bytes
  • .github/ISSUE_TEMPLATE/observation.ymlasset2,052 bytes
  • .gitignoreasset254 bytes
  • CONTRIBUTING.mddoc3,522 bytes
  • LICENSEasset1,066 bytes
  • README.mddoc12,781 bytes
  • README_zh.mddoc12,569 bytes
  • SKILL.mdcore11,465 bytes
  • SKILL.mdcore11,465 bytes
  • SKILL.mdcore11,465 bytes
  • SKILL.mdcore11,465 bytes
  • SKILL.mdcore11,465 bytes
  • SKILL.mdcore11,465 bytes
  • SKILL.mdcore11,465 bytes
  • SKILL.mdcore11,465 bytes
  • SKILL.mdcore11,465 bytes
  • SKILL.mdcore11,465 bytes
  • evals/evals.jsonasset7,464 bytes
  • package-lock.jsonasset14,178 bytes
  • package.jsonruns635 bytes
  • references/anti-patterns.mddoc38,122 bytes
  • references/engineering-traps.mddoc4,446 bytes
  • references/examples.mddoc6,871 bytes
  • references/pr-template.mddoc5,404 bytes
  • references/review-response.mddoc9,613 bytes
  • scripts/pre-submit-check.mjsruns9,327 bytes
  • scripts/verify-selectors.mjsruns5,987 bytes
  • tools/README.mddoc4,144 bytes
  • tools/analyze-routes.mjsruns3,780 bytes
  • tools/analyze.mjsruns17,699 bytes
  • tools/fetch-diff-hunks.mjsruns3,179 bytes
  • tools/fetch-reviews.mjsruns8,403 bytes
  • tools/verify-claims.mjsruns3,862 bytes
Read SKILL.md

# RSSHub route authoring

Produces route code that can be merged into [DIYgod/RSSHub](https://github.com/DIYgod/RSSHub).

Two rules decide almost everything:

1. **Every defensive construct needs a number.** `.first()`, `.last()`, `.trim()`, `?? ''`,
   a custom `User-Agent`, a fallback date, a pagination parameter — prove it with a count or
   delete it.
2. **Read the project's own rules first.** They supersede anything remembered from training
   data, and they change over time. In this order:
   - `AGENTS.md` in the working directory — the contributor guide, 49 numbered rules
   - `.github/prompts/pr_review_rules.md` in the RSSHub repo — the 26 rules the auto-review
     bot enforces:
View the complete source on GitHub

Skills included

  • rsshub-route-authoring-skill

Repository facts

License
MIT
Created
Sep 10, 2026
Last pushed
Sep 16, 2026
Forks
0
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

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

Show 9 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 196 signals by file

.github/ISSUE_TEMPLATE/observation.yml

  • Network accessline 17
    label: PR link           description: The RSSHub PR this came from           placeholder: https://github.com/DIYgod/RSSHub/pull/00000
  • Network accessline 18
    description: The RSSHub PR this came from           placeholder: https://github.com/DIYgod/RSSHub/pull/00000       validations:
  • Network accessline 19
    placeholder: https://github.com/DIYgod/RSSHub/pull/00000

README.md

  • Network accessline 100
    This is a plain [Agent Skills](https://agentskills.io/specification) package: a folder with a
  • Network accessline 106
    git clone https://github.com/AboutRSS/rsshub-route-authoring-skill.git
  • Network accessline 223
    | Repo | What it does well | Where the review record disagrees | | --- | --- | --- | | [ovo-Tim/rsshub-skill](https://github.com/ovo-Tim/rsshub-skill) | Broadest rule coverage; correctly forbids a separate `radar.ts`; vendors the docs as a 
  • Network accessline 224
    | --- | --- | --- | | [ovo-Tim/rsshub-skill](https://github.com/ovo-Tim/rsshub-skill) | Broadest rule coverage; correctly forbids a separate `radar.ts`; vendors the docs as a submodule | Example handler omits `Context` / `Promise<Data>`; no
  • Network accessline 225
    | [ovo-Tim/rsshub-skill](https://github.com/ovo-Tim/rsshub-skill) | Broadest rule coverage; correctly forbids a separate `radar.ts`; vendors the docs as a submodule | Example handler omits `Context` / `Promise<Data>`; no warning about hardc
  • Network accessline 226
    | [wha7ev9r/rsshub-route-skill](https://github.com/wha7ev9r/rsshub-route-skill) | Largest; only one with an eval set; strong "common pitfalls" section | Advises adding a `User-Agent` on 403 — the auto-review bot rejects that as a numbered r
  • Network accessline 227
    | [ChuYinan2023/rsshub-route-developer](https://github.com/ChuYinan2023/rsshub-route-developer) | Clear six-phase workflow; notes that `pnpm run format` rewrites the whole repo | Instructs creating a separate `radar.ts`, which the rules for
  • Network accessline 251
    both invalid and valid. Judge its findings. - **Nothing here overrides the target repository.** `AGENTS.md` and   <https://docs.rsshub.app/joinus/> win whenever they conflict with this skill.
  • Network accessline 253
    <https://docs.rsshub.app/joinus/> win whenever they conflict with this skill.

README_zh.md

  • Network accessline 91
    这是一个标准的 [Agent Skills](https://agentskills.io/specification) 包:一个根目录下带 `SKILL.md` 的文件夹。
  • Network accessline 96
    git clone https://github.com/AboutRSS/rsshub-route-authoring-skill.git
  • Network accessline 211
    | 仓库 | 其长处 | 评审记录与之相左之处 | | --- | --- | --- | | [ovo-Tim/rsshub-skill](https://github.com/ovo-Tim/rsshub-skill) | 规则覆盖面最广;正确禁止了独立的 `radar.ts`;以子模块方式内置了文档 | 示例 handler 省略了 `Context` / `Promise<Data>`;未警示硬编码 `User-Agent` |
  • Network accessline 212
    | --- | --- | --- | | [ovo-Tim/rsshub-skill](https://github.com/ovo-Tim/rsshub-skill) | 规则覆盖面最广;正确禁止了独立的 `radar.ts`;以子模块方式内置了文档 | 示例 handler 省略了 `Context` / `Promise<Data>`;未警示硬编码 `User-Agent` | | [wha7ev9r/rsshub-route-skill](https://githu
  • Network accessline 213
    | [ovo-Tim/rsshub-skill](https://github.com/ovo-Tim/rsshub-skill) | 规则覆盖面最广;正确禁止了独立的 `radar.ts`;以子模块方式内置了文档 | 示例 handler 省略了 `Context` / `Promise<Data>`;未警示硬编码 `User-Agent` |
  • Network accessline 214
    | [wha7ev9r/rsshub-route-skill](https://github.com/wha7ev9r/rsshub-route-skill) | 体量最大;唯一带有 eval 集;"常见陷阱"一节很扎实 | 建议在 403 时添加 `User-Agent` —— 自动审查机器人将其列为明文规则予以否决;PR 检查清单与提交格式已过时 |
  • Network accessline 215
    | [ChuYinan2023/rsshub-route-developer](https://github.com/ChuYinan2023/rsshub-route-developer) | 六阶段流程清晰;指出了 `pnpm run format` 会重写整个仓库 | 要求创建独立的 `radar.ts`,而规则禁止这样做 |
  • Network accessline 235
    实质性的指导内容 —— 规则、反模式、评审应对 —— 均不依赖平台。 - **自动审查机器人偶尔自相矛盾** —— 在本语料库中,它对 `_extra` 既判过无效也判过有效。请自行判断其结论。 - **此处一切都不覆盖目标仓库。** 凡与 `AGENTS.md` 及 <https://docs.rsshub.app/joinus/> 冲突时,以后者为准。
  • Network accessline 237
    - **此处一切都不覆盖目标仓库。** 凡与 `AGENTS.md` 及 <https://docs.rsshub.app/joinus/> 冲突时,以后者为准。

SKILL.md

  • Broad permissionsline 1
    Read Write Edit Glob Grep WebFetch Bash(git:*) Bash(node:*) Bash(npm:*) Bash(pnpm:*) Bash(gh:*)
  • Network accessline 24
    Produces route code that can be merged into [DIYgod/RSSHub](https://github.com/DIYgod/RSSHub).
  • Network accessline 41
    - <https://docs.rsshub.app/joinus/> — the narrative docs
  • Network accessline 60
    - `AGENTS.md` in the working directory — it is the authoritative rule set - <https://docs.rsshub.app/joinus/> — the narrative docs
  • Network accessline 61
    - <https://docs.rsshub.app/joinus/> — the narrative docs - The auto-review bot's own rule list lives at `.github/prompts/pr_review_rules.md` in the   RSSHub repo — fetch it when you need authoritative wording:
  • Network accessline 150
    Then run `scripts/pre-submit-check.mjs`, and confirm the feed renders at `http://localhost:1200<example>`.
  • Network accessline 151
    `http://localhost:1200<example>`.

evals/evals.json

  • Network accessline 6
    "id": 1,             "name": "city-parameterised-ssr-route",             "prompt": "为 https://art.icity.ly/guangzhou/latest 写一个 RSSHub 路由,能提取展览名和链接,以可提交 PR 为标准。",
  • Network accessline 7
    "name": "city-parameterised-ssr-route",             "prompt": "为 https://art.icity.ly/guangzhou/latest 写一个 RSSHub 路由,能提取展览名和链接,以可提交 PR 为标准。",             "expected_output": "A route under the existing lib/routes/icity namespace, path with :
  • Network accessline 8
    "prompt": "为 https://art.icity.ly/guangzhou/latest 写一个 RSSHub 路由,能提取展览名和链接,以可提交 PR 为标准。",
  • Network accessline 22
    "id": 2,             "name": "site-already-has-an-official-feed",             "prompt": "帮我把 https://example-blog.com/ 做成 RSSHub 路由,它首页有个 <link rel=\"alternate\" type=\"application/rss+xml\"> 指向 /index.xml,内容和列表页一样。",
  • Network accessline 23
    "name": "site-already-has-an-official-feed",             "prompt": "帮我把 https://example-blog.com/ 做成 RSSHub 路由,它首页有个 <link rel=\"alternate\" type=\"application/rss+xml\"> 指向 /index.xml,内容和列表页一样。",             "expected_output": "Flags that 
  • Network accessline 24
    "prompt": "帮我把 https://example-blog.com/ 做成 RSSHub 路由,它首页有个 <link rel=\"alternate\" type=\"application/rss+xml\"> 指向 /index.xml,内容和列表页一样。",

package-lock.json

  • Network accessline 16
    "node_modules/boolbase": {             "version": "1.0.0",             "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
  • Network accessline 17
    "version": "1.0.0",             "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",             "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
  • Network accessline 18
    "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
  • Network accessline 23
    "node_modules/cheerio": {             "version": "1.2.0",             "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
  • Network accessline 24
    "version": "1.2.0",             "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",             "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==",
  • Network accessline 25
    "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
  • Network accessline 44
    },             "funding": {                 "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
  • Network accessline 45
    "funding": {                 "url": "https://github.com/cheeriojs/cheerio?sponsor=1"             }
  • Network accessline 46
    "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
  • Network accessline 49
    "node_modules/cheerio-select": {             "version": "2.1.0",             "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
  • Network accessline 50
    "version": "2.1.0",             "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",             "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
  • Network accessline 51
    "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
  • Network accessline 62
    },             "funding": {                 "url": "https://github.com/sponsors/fb55"
  • Network accessline 63
    "funding": {                 "url": "https://github.com/sponsors/fb55"             }
  • Network accessline 64
    "url": "https://github.com/sponsors/fb55"
  • Network accessline 67
    "node_modules/css-select": {             "version": "5.2.2",             "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
  • Network accessline 68
    "version": "5.2.2",             "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",             "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
  • Network accessline 69
    "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
  • Network accessline 79
    },             "funding": {                 "url": "https://github.com/sponsors/fb55"
  • Network accessline 80
    "funding": {                 "url": "https://github.com/sponsors/fb55"             }
  • Network accessline 81
    "url": "https://github.com/sponsors/fb55"
  • Network accessline 84
    "node_modules/css-what": {             "version": "6.2.2",             "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
  • Network accessline 85
    "version": "6.2.2",             "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",             "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
  • Network accessline 86
    "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
  • Network accessline 92
    },             "funding": {                 "url": "https://github.com/sponsors/fb55"
  • Network accessline 93
    "funding": {                 "url": "https://github.com/sponsors/fb55"             }
  • Network accessline 94
    "url": "https://github.com/sponsors/fb55"
  • Network accessline 97
    "node_modules/dom-serializer": {             "version": "2.0.0",             "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
  • Network accessline 98
    "version": "2.0.0",             "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",             "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
  • Network accessline 99
    "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
  • Network accessline 107
    },             "funding": {                 "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
  • Network accessline 108
    "funding": {                 "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"             }
  • Network accessline 109
    "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
  • Network accessline 112
    "node_modules/domelementtype": {             "version": "2.3.0",             "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
  • Network accessline 113
    "version": "2.3.0",             "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",             "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
  • Network accessline 114
    "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
  • Network accessline 118
    {                     "type": "github",                     "url": "https://github.com/sponsors/fb55"
  • Network accessline 119
    "type": "github",                     "url": "https://github.com/sponsors/fb55"                 }
  • Network accessline 120
    "url": "https://github.com/sponsors/fb55"
  • Network accessline 125
    "node_modules/domhandler": {             "version": "5.0.3",             "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
  • Network accessline 126
    "version": "5.0.3",             "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",             "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
  • Network accessline 127
    "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
  • Network accessline 136
    },             "funding": {                 "url": "https://github.com/fb55/domhandler?sponsor=1"
  • Network accessline 137
    "funding": {                 "url": "https://github.com/fb55/domhandler?sponsor=1"             }
  • Network accessline 138
    "url": "https://github.com/fb55/domhandler?sponsor=1"
  • Network accessline 141
    "node_modules/domutils": {             "version": "3.2.2",             "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
  • Network accessline 142
    "version": "3.2.2",             "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",             "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
  • Network accessline 143
    "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
  • Network accessline 151
    },             "funding": {                 "url": "https://github.com/fb55/domutils?sponsor=1"
  • Network accessline 152
    "funding": {                 "url": "https://github.com/fb55/domutils?sponsor=1"             }
  • Network accessline 153
    "url": "https://github.com/fb55/domutils?sponsor=1"
  • Network accessline 156
    "node_modules/encoding-sniffer": {             "version": "0.2.1",             "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
  • Network accessline 157
    "version": "0.2.1",             "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",             "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw=
  • Network accessline 158
    "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
  • Network accessline 165
    },             "funding": {                 "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
  • Network accessline 166
    "funding": {                 "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"             }
  • Network accessline 167
    "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
  • Network accessline 170
    "node_modules/entities": {             "version": "4.5.0",             "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
  • Network accessline 171
    "version": "4.5.0",             "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",             "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
  • Network accessline 172
    "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
  • Network accessline 178
    },             "funding": {                 "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 179
    "funding": {                 "url": "https://github.com/fb55/entities?sponsor=1"             }
  • Network accessline 180
    "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 183
    "node_modules/htmlparser2": {             "version": "10.1.0",             "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
  • Network accessline 184
    "version": "10.1.0",             "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",             "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
  • Network accessline 185
    "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
  • Network accessline 187
    "dev": true,             "funding": [                 "https://github.com/fb55/htmlparser2?sponsor=1",
  • Network accessline 188
    "funding": [                 "https://github.com/fb55/htmlparser2?sponsor=1",                 {
  • Network accessline 189
    "https://github.com/fb55/htmlparser2?sponsor=1",
  • Network accessline 190
    {                     "type": "github",                     "url": "https://github.com/sponsors/fb55"
  • Network accessline 191
    "type": "github",                     "url": "https://github.com/sponsors/fb55"                 }
  • Network accessline 192
    "url": "https://github.com/sponsors/fb55"
  • Network accessline 203
    "node_modules/htmlparser2/node_modules/entities": {             "version": "7.0.1",             "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
  • Network accessline 204
    "version": "7.0.1",             "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",             "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
  • Network accessline 205
    "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
  • Network accessline 211
    },             "funding": {                 "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 212
    "funding": {                 "url": "https://github.com/fb55/entities?sponsor=1"             }
  • Network accessline 213
    "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 216
    "node_modules/iconv-lite": {             "version": "0.6.3",             "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
  • Network accessline 217
    "version": "0.6.3",             "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",             "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
  • Network accessline 218
    "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
  • Network accessline 229
    "node_modules/nth-check": {             "version": "2.1.1",             "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
  • Network accessline 230
    "version": "2.1.1",             "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",             "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
  • Network accessline 231
    "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
  • Network accessline 237
    },             "funding": {                 "url": "https://github.com/fb55/nth-check?sponsor=1"
  • Network accessline 238
    "funding": {                 "url": "https://github.com/fb55/nth-check?sponsor=1"             }
  • Network accessline 239
    "url": "https://github.com/fb55/nth-check?sponsor=1"
  • Network accessline 242
    "node_modules/parse5": {             "version": "7.3.0",             "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
  • Network accessline 243
    "version": "7.3.0",             "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",             "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
  • Network accessline 244
    "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
  • Network accessline 250
    },             "funding": {                 "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 251
    "funding": {                 "url": "https://github.com/inikulin/parse5?sponsor=1"             }
  • Network accessline 252
    "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 255
    "node_modules/parse5-htmlparser2-tree-adapter": {             "version": "7.1.0",             "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
  • Network accessline 256
    "version": "7.1.0",             "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",             "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1
  • Network accessline 257
    "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
  • Network accessline 264
    },             "funding": {                 "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 265
    "funding": {                 "url": "https://github.com/inikulin/parse5?sponsor=1"             }
  • Network accessline 266
    "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 269
    "node_modules/parse5-parser-stream": {             "version": "7.1.2",             "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
  • Network accessline 270
    "version": "7.1.2",             "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",             "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqN
  • Network accessline 271
    "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
  • Network accessline 277
    },             "funding": {                 "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 278
    "funding": {                 "url": "https://github.com/inikulin/parse5?sponsor=1"             }
  • Network accessline 279
    "url": "https://github.com/inikulin/parse5?sponsor=1"
  • Network accessline 282
    "node_modules/parse5/node_modules/entities": {             "version": "6.0.1",             "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
  • Network accessline 283
    "version": "6.0.1",             "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",             "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
  • Network accessline 284
    "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
  • Network accessline 290
    },             "funding": {                 "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 291
    "funding": {                 "url": "https://github.com/fb55/entities?sponsor=1"             }
  • Network accessline 292
    "url": "https://github.com/fb55/entities?sponsor=1"
  • Network accessline 295
    "node_modules/safer-buffer": {             "version": "2.1.2",             "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
  • Network accessline 296
    "version": "2.1.2",             "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",             "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
  • Network accessline 297
    "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
  • Network accessline 302
    "node_modules/undici": {             "version": "7.29.1",             "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.1.tgz",
  • Network accessline 303
    "version": "7.29.1",             "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.1.tgz",             "integrity": "sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==",
  • Network accessline 304
    "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.1.tgz",
  • Network accessline 312
    "node_modules/whatwg-encoding": {             "version": "3.1.1",             "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
  • Network accessline 313
    "version": "3.1.1",             "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",             "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="
  • Network accessline 314
    "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
  • Network accessline 326
    "node_modules/whatwg-mimetype": {             "version": "4.0.0",             "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
  • Network accessline 327
    "version": "4.0.0",             "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",             "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="
  • Network accessline 328
    "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",

package.json

  • Executable scriptline 1
    Executable file

references/anti-patterns.md

  • Network accessline 337
    +        headers: { +            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... Chrome/120.0.0.0 Safari/537.36', +            Referer: 'https://gnn.gamer.com.tw/',
  • Network accessline 338
    +            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... Chrome/120.0.0.0 Safari/537.36', +            Referer: 'https://gnn.gamer.com.tw/', +        },
  • Network accessline 339
    +            Referer: 'https://gnn.gamer.com.tw/',
  • Network accessline 516
    maintainer is whoever will fix the route later. - Route `name` must **not repeat the namespace name** ("中国国家博物馆 - 展览" → "展览"). - Namespace `url` must not include the `https://` prefix.
  • Network accessline 518
    - Namespace `url` must not include the `https://` prefix.

references/examples.md

  • Network accessline 23
    const baseUrl = 'https://example.com';
  • Network accessline 76
    const baseUrl = 'https://example.com';
  • Network accessline 148
    async function handler(): Promise<Data> {     const currentUrl = 'https://example.com/protected';
  • Network accessline 149
    const currentUrl = 'https://example.com/protected';

references/pr-template.md

  • Network accessline 23
    - [x] New Route / 新的路由         - [x] Follows [Script Standard](https://docs.rsshub.app/joinus/advanced/script-standard) / 跟随 [路由规范](https://docs.rsshub.app/zh/joinus/advanced/script-standard)
  • Network accessline 24
    - [x] Follows [Script Standard](https://docs.rsshub.app/joinus/advanced/script-standard) / 跟随 [路由规范](https://docs.rsshub.app/zh/joinus/advanced/script-standard)
  • Network accessline 25
    - [ ] Anti-bot or rate limit / 反爬/频率限制         - [ ] If yes, do your code reflect this sign? / 如果有, 是否有对应的措施?     - [x] [Date and time](https://docs.rsshub.app/joinus/advanced/pub-date) / [日期和时间](https://docs.rsshub.app/zh/joinus/advanced/p
  • Network accessline 26
    - [ ] If yes, do your code reflect this sign? / 如果有, 是否有对应的措施?     - [x] [Date and time](https://docs.rsshub.app/joinus/advanced/pub-date) / [日期和时间](https://docs.rsshub.app/zh/joinus/advanced/pub-date)         - [x] Parsed / 可以解析
  • Network accessline 27
    - [x] [Date and time](https://docs.rsshub.app/joinus/advanced/pub-date) / [日期和时间](https://docs.rsshub.app/zh/joinus/advanced/pub-date)
  • Network accessline 125
    Optional, not a requirement. In the corpus only **111 of 14,968 review comments (0.7%)** mention screenshots at all, though some maintainers do ask for one. Having the feed output from `http://localhost:1200<example>` ready costs nothing, s
  • Network accessline 126
    mention screenshots at all, though some maintainers do ask for one. Having the feed output from `http://localhost:1200<example>` ready costs nothing, so it is worth capturing — just do not treat it as a gate.
  • Network accessline 127
    from `http://localhost:1200<example>` ready costs nothing, so it is worth capturing — just do

references/review-response.md

  • Network accessline 23
    - **Everything in your `routes` block gets executed.** Listing a path that 500s fails the PR —   this is how a malformed link (`https://site.example/undefined`) gets caught.
  • Network accessline 24
    this is how a malformed link (`https://site.example/undefined`) gets caught.

scripts/pre-submit-check.mjs

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

scripts/verify-selectors.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 9
    * Usage:  *   node scripts/verify-selectors.mjs --url <page> --item <selector> --field <selector>  *        [--attr href] [--base https://example.com] [--encoding gbk] [--limit 5]
  • Network accessline 10
    *   node scripts/verify-selectors.mjs --url <page> --item <selector> --field <selector>  *        [--attr href] [--base https://example.com] [--encoding gbk] [--limit 5]  *
  • Network accessline 11
    *        [--attr href] [--base https://example.com] [--encoding gbk] [--limit 5]
  • Network accessline 13
    * Example:  *   node scripts/verify-selectors.mjs \  *     --url https://www.98zhibo.com/zuqiujijin/ --item '.list_body_bd li' \
  • Network accessline 14
    *   node scripts/verify-selectors.mjs   *     --url https://www.98zhibo.com/zuqiujijin/ --item '.list_body_bd li'
  • Network accessline 15
    *     --url https://www.98zhibo.com/zuqiujijin/ --item '.list_body_bd li' \
  • Network accessline 16
    *     --field 'a' --attr href --base https://www.98zhibo.com --encoding gbk
  • Network accessline 54
    const res = await fetch(url, { headers: { 'user-agent': 'Mozilla/5.0' } });

tools/README.md

  • Network accessline 25
    - [GitHub CLI](https://cli.github.com/) installed

tools/analyze-routes.mjs

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

tools/analyze.mjs

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

tools/fetch-diff-hunks.mjs

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

tools/fetch-reviews.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 97
    throw new Error(                 'The GitHub CLI (`gh`) was not found on PATH.\n' +                     '  - install it: https://cli.github.com/ (Windows: winget install --id GitHub.cli)\n' +
  • Network accessline 98
    'The GitHub CLI (`gh`) was not found on PATH.\n' +                     '  - install it: https://cli.github.com/ (Windows: winget install --id GitHub.cli)\n' +                     '  - authenticate: gh auth login\n' +
  • Network accessline 99
    '  - install it: https://cli.github.com/ (Windows: winget install --id GitHub.cli)\n' +

tools/verify-claims.mjs

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

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.

Signal confidence: 64 facts

and 14 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md 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.