update-rss
GitHub用于更新RSS订阅源XML文件。在用户请求时,通过脚本自动化构建、差异检测及日期恢复,仅由LLM人工判断内容变更属于次要还是实质性修改,以决定是否保留旧发布日期,确保读者能正确发现新技巧或功能。
Trigger Scenarios
Install
npx skills add vtbag/website --skill update-rss -g -y
SKILL.md
Frontmatter
{
"name": "update-rss",
"description": "Update the RSS feed XML file with new entries. Use when asked to update the rss feed.",
"user-invocable": true,
"disable-model-invocation": false
}
Update RSS Feed
When to Use
- User asks to update the RSS feed
Input
- Confirm that git is up to date before starting. This workflow relies on commit history for
pubDatedecisions.
Automation & Workflow
This workflow is fully scripted except for one critical decision: classifying changes as minor or substantive. All other steps—identifying changed entries, extracting source paths, diffing files, restoring dates, and re-sorting—are automated.
- All manual git work is replaced by scripts:
diff-rss.ts,diff-file-from-last-build-date.ts, andapply-rss-date-overrides.ts. - The only human/LLM task is deciding whether a changed entry is minor (keep old pubDate) or substantive (keep new pubDate).
- This classification directly affects reader discovery: new techniques or capabilities warrant a new
pubDate; style/grammar fixes do not.
Procedure
Pre-flight check
- Ask the user whether git is up to date. Stop the whole process immediately if the user says no. This is critical because the workflow relies on commit history for timestamps.
0.1. For each run, read the current
lastBuildDatefromHEAD(git show HEAD:public/rss.xml | grep -n "lastBuildDate") and use that value as the baseline for this run only. Never reuse a date remembered from a former run.
Step 1: Build (automated)
- Run
npm run buildto updatepublic/rss.xml. Stop if the build fails.
Step 2: Identify changes (automated)
- Run
node .github/skills/update-rss/diff-rss.tsto detect:- ADDED entries (new GUIDs) → keep new
pubDate, no review needed - CHANGED entries (existing GUIDs with different
pubDate) → these need your classification
- ADDED entries (new GUIDs) → keep new
Step 3: Classify changes (manual — this is the only decision you make)
For each CHANGED entry, you decide: minor or substantive?
To make this decision:
- Use
node .github/skills/update-rss/diff-file-from-last-build-date.ts <sourceFile>to see what changed since the last build date. - MANDATORY: Classify only after reviewing the complete diff output for the file.
- Base the decision on the full file diff, not on a shortened or summarized representation.
- Ask: Would a developer familiar with this topic learn a new technique or capability, or keep the same implementation decisions?
Classification rules:
- Minor (keep old
pubDate): grammar/style fixes, formatting, link updates, readability rewrites, paragraph reshuffling, or clarifications that don't change recommendations or facts. - Substantive (keep new
pubDate): new/removed features, changed API semantics, changed compatibility statements, changed recommended patterns, new constraints, or teaches new techniques/capabilities.
Once you classify all CHANGED entries, record the GUIDs you marked as minor.
Step 4: Apply classifications (automated)
- Run the script to restore old dates for minor entries:
- Inline:
node .github/skills/update-rss/apply-rss-date-overrides.ts <guid> <guid> ... - Or from file:
node .github/skills/update-rss/apply-rss-date-overrides.ts --guid-file /tmp/minor-guids.txt(one GUID per line) - The script automatically re-sorts all entries by
pubDate.
- Inline:
Step 5: Validate (automated)
- Run these validation scripts:
node .github/skills/update-rss/diff-rss.ts→ confirm only substantive entries appear under CHANGED
URL to source file mapping
- Normally, do not use this mapping because
diff-rss.tsalready reports the source file path. - Use this section only as a fallback when the script reports an unresolved path.
https://vtbag.dev/<path>/→src/content/docs/<path>.mdx(or.md)- Strip the trailing slash and the
https://vtbag.devprefix to get the relative path.
Version History
- c06c2d8 Current 2026-07-24 11:30


