modules/programs/agents/shared/skills/add-feed/SKILL.md
Add an RSS feed to FreshRSS with auto-categorization. Use when user provides a feed URL and wants it added to FreshRSS, or says "add feed", "subscribe to", "add rss".
npx skillsauth add MichaelVessia/nixos-config add-feedInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Given a feed URL, sample its content, infer the best category, and add it.
FRESHRSS_URL - Base URL of FreshRSS instanceFRESHRSS_API_USER - API usernameFRESHRSS_API_PASSWORD - API passwordAUTH_TOKEN=$(curl -s -X POST "$FRESHRSS_URL/api/greader.php/accounts/ClientLogin" \
-d "Email=$FRESHRSS_API_USER" \
-d "Passwd=$FRESHRSS_API_PASSWORD" | grep -oP 'Auth=\K.*')
CATEGORIES=$(curl -s "$FRESHRSS_URL/api/greader.php/reader/api/0/tag/list?output=json" \
-H "Authorization: GoogleLogin auth=$AUTH_TOKEN" | jq -r '.tags[].id' | grep 'label/' | sed 's|user/-/label/||')
Use WebFetch on the feed URL to read its title, description, and recent post titles/summaries. This content is the basis for category inference.
Compare the feed's content against the existing categories from step 2. Pick the best match. Consider:
If no existing category fits well, propose a short, lowercase category name consistent with the existing naming style.
Present the chosen category to the user with AskUserQuestion, showing existing categories as options plus the inferred pick marked "(Recommended)". Only skip confirmation if the match is obvious (e.g., feed title contains the category name verbatim).
RESULT=$(curl -s -X POST "$FRESHRSS_URL/api/greader.php/reader/api/0/subscription/quickadd" \
-H "Authorization: GoogleLogin auth=$AUTH_TOKEN" \
-d "quickadd=FEED_URL")
FEED_ID=$(echo "$RESULT" | jq -r '.streamId')
curl -s -X POST "$FRESHRSS_URL/api/greader.php/reader/api/0/subscription/edit" \
-H "Authorization: GoogleLogin auth=$AUTH_TOKEN" \
-d "ac=edit" \
-d "s=$FEED_ID" \
-d "a=user/-/label/CATEGORY_NAME"
Print the feed title, URL, and assigned category. Verify by listing subscriptions:
curl -s "$FRESHRSS_URL/api/greader.php/reader/api/0/subscription/list?output=json" \
-H "Authorization: GoogleLogin auth=$AUTH_TOKEN" | jq ".subscriptions[] | select(.id == \"$FEED_ID\") | {title, id, categories: [.categories[].label]}"
feed/https://example.com/rss/api/fever.php) is read-only, always use GReader APIdevelopment
Restate the last message in plain human language, with no jargon.
testing
Fan out a batch of work items into one PR each via isolated worktree agents, review every PR before it opens, then babysit all PRs through green CI and review feedback. Use when the user wants to fan out PRs, dispatch parallel PR agents over a list of items, or run a batch of independent changes as separate PRs.
development
Dispatch user-visible coding or research agents through Herdr with Codex-Desktop-like thread ergonomics. Use when the user asks to use Herdr to spawn, dispatch, fan out, inspect, follow up with, or monitor agent workspaces/threads.
development
Generate self-contained HTML visualizations with Plannotator theming. Use for implementation plans, PR explainers, architecture diagrams, data tables, slide decks, and any visual explanation of technical concepts. Plans and PR explainers follow Plannotator's prescriptive approach; all other visual content delegates to nicobailon/visual-explainer.