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.
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
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 tokensAlways available to the agent
SKILL.md
2,793 tokensWhen the skill is activated
Reference documents
24,500 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- Before committing
- After the PR: feedback (opt-in only)
- References
Scripts executed separately
package.jsonscripts/pre-submit-check.mjsscripts/verify-selectors.mjstools/analyze-routes.mjstools/analyze.mjstools/fetch-diff-hunks.mjstools/fetch-reviews.mjstools/verify-claims.mjs
Files
.gitattributesasset403 bytes.github/ISSUE_TEMPLATE/correction.ymlasset1,594 bytes.github/ISSUE_TEMPLATE/observation.ymlasset2,052 bytes.gitignoreasset254 bytesCONTRIBUTING.mddoc3,522 bytesLICENSEasset1,066 bytesREADME.mddoc12,781 bytesREADME_zh.mddoc12,569 bytesSKILL.mdcore11,465 bytesSKILL.mdcore11,465 bytesSKILL.mdcore11,465 bytesSKILL.mdcore11,465 bytesSKILL.mdcore11,465 bytesSKILL.mdcore11,465 bytesSKILL.mdcore11,465 bytesSKILL.mdcore11,465 bytesSKILL.mdcore11,465 bytesSKILL.mdcore11,465 bytesevals/evals.jsonasset7,464 bytespackage-lock.jsonasset14,178 bytespackage.jsonruns635 bytesreferences/anti-patterns.mddoc38,122 bytesreferences/engineering-traps.mddoc4,446 bytesreferences/examples.mddoc6,871 bytesreferences/pr-template.mddoc5,404 bytesreferences/review-response.mddoc9,613 bytesscripts/pre-submit-check.mjsruns9,327 bytesscripts/verify-selectors.mjsruns5,987 bytestools/README.mddoc4,144 bytestools/analyze-routes.mjsruns3,780 bytestools/analyze.mjsruns17,699 bytestools/fetch-diff-hunks.mjsruns3,179 bytestools/fetch-reviews.mjsruns8,403 bytestools/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 GitHubSkills 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 shellAutomated 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:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 1 broad permissionin 1 file: SKILL.md:1
- No dangerous shell commands
- 187 network referencesin 13 files: package-lock.json:16 README.md:100 README_zh.md:91 and 10 more
- No hidden or obfuscated text
- No instruction overrides
- 8 executable scriptsin 8 files: package.json:1 scripts/pre-submit-check.mjs:1 scripts/verify-selectors.mjs:1 and 5 more
- No access to secrets
- No requests to vote in Hot
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
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
- Network access in prose of documentationREADME.md:100Low confidence
- Network access in code of documentationREADME.md:106Low confidence
- Network access in prose of documentationREADME.md:223Low confidence
- Network access in prose of documentationREADME.md:224Low confidence
- Network access in prose of documentationREADME.md:225Low confidence
- Network access in prose of documentationREADME.md:226Low confidence
- Network access in prose of documentationREADME.md:227Low confidence
- Network access in prose of documentationREADME.md:251Low confidence
- Network access in prose of documentationREADME.md:253Low confidence
- Network access in prose of documentationREADME_zh.md:91Low confidence
- Network access in code of documentationREADME_zh.md:96Low confidence
- Network access in prose of documentationREADME_zh.md:211Low confidence
- Network access in prose of documentationREADME_zh.md:212Low confidence
- Network access in prose of documentationREADME_zh.md:213Low confidence
- Network access in prose of documentationREADME_zh.md:214Low confidence
- Network access in prose of documentationREADME_zh.md:215Low confidence
- Network access in prose of documentationREADME_zh.md:235Low confidence
- Network access in prose of documentationREADME_zh.md:237Low confidence
- Broad permissions in the frontmatter of the SKILL.mdSKILL.md:1High confidence
- Network access in prose of the SKILL.mdSKILL.md:24Low confidence
- Network access in prose of the SKILL.mdSKILL.md:41Low confidence
- Network access in prose of the SKILL.mdSKILL.md:60Low confidence
- Network access in prose of the SKILL.mdSKILL.md:61Low confidence
- Network access in prose of the SKILL.mdSKILL.md:150Low confidence
- Network access in prose of the SKILL.mdSKILL.md:151Low confidence
- Executable script in code of a file that runspackage.json:1High confidence
- Network access in code of documentationreferences/anti-patterns.md:337Low confidence
- Network access in code of documentationreferences/anti-patterns.md:338Low confidence
- Network access in code of documentationreferences/anti-patterns.md:339Low confidence
- Network access in prose of documentationreferences/anti-patterns.md:516Low confidence
- Network access in prose of documentationreferences/anti-patterns.md:518Low confidence
- Network access in code of documentationreferences/examples.md:23Low confidence
- Network access in code of documentationreferences/examples.md:76Low confidence
- Network access in code of documentationreferences/examples.md:148Low confidence
- Network access in code of documentationreferences/examples.md:149Low confidence
- Network access in prose of documentationreferences/pr-template.md:23Low confidence
- Network access in prose of documentationreferences/pr-template.md:24Low confidence
- Network access in prose of documentationreferences/pr-template.md:25Low confidence
- Network access in prose of documentationreferences/pr-template.md:26Low confidence
- Network access in prose of documentationreferences/pr-template.md:27Low confidence
- Network access in prose of documentationreferences/pr-template.md:125Low confidence
- Network access in prose of documentationreferences/pr-template.md:126Low confidence
- Network access in prose of documentationreferences/pr-template.md:127Low confidence
- Network access in prose of documentationreferences/review-response.md:23Low confidence
- Network access in prose of documentationreferences/review-response.md:24Low confidence
- Executable script in code of a file that runsscripts/pre-submit-check.mjs:1High confidence
- Executable script in code of a file that runsscripts/verify-selectors.mjs:1High confidence
- Network access in a comment of a file that runsscripts/verify-selectors.mjs:9Low confidence
- Network access in a comment of a file that runsscripts/verify-selectors.mjs:10Low confidence
- Network access in a comment of a file that runsscripts/verify-selectors.mjs:11Low confidence
and 14 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard 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.