plugins/feed-hermit/skills/source-scout/SKILL.md
Gap-driven discovery of new RSS/web sources for feed-sources.md. Interactive runs WebFetch-verify candidates and auto-add them; --scheduled runs queue unverified candidates for operator review (no WebFetch, per the domain-allowlist rule). Complements source-health (removal) with discovery (addition). Invoke with /feed-hermit:source-scout.
npx skillsauth add gtapps/claude-code-hermit source-scoutInstall 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.
Proactively discover and add new RSS/web sources to feed-sources.md. Complements source-health
(removal) with discovery (addition). Can run on a schedule via scheduled_checks.
--scheduled: invoked by a scheduled check (non-interactive, no operator present). The security
rule restricting automated WebFetch to domains already in feed-sources.md means the step-3 verification
fetch cannot run — candidates are queued unverified for operator review instead of being auto-added./source-scout). Full behavior — verify and
auto-add — since the operator's live presence satisfies the security rule's intent.Read current state (in parallel):
feed-sources.md — extract active source names, URLs, categories. Count sources per category.feed-categories.md — all P1/P2 categories and their priorities..claude-code-hermit/compiled/story-arcs-*.md, read the most recent. Extract Watch-clause keywords from each active arc under ## Active.Identify gaps:
source-scout: no gaps found to SHELL.md Findings and stop.Discover candidates (up to 3 total across all gaps). Use WebSearch to find RSS feeds — for a category gap, search for RSS feeds / newsletters covering that category; for an arc gap, search for feeds covering the arc's Watch keywords.
No flag (interactive): for each candidate, verify the feed URL with WebFetch (valid RSS/Atom XML). Discard any that 404 or return non-feed content.
--scheduled: do NOT WebFetch candidate URLs — they are not yet in feed-sources.md, so an automated
fetch would violate the domain-allowlist rule. Collect candidates from WebSearch results as-is
(name, URL, gap addressed, why it surfaced), explicitly marked unverified. Skip to step 4.
Filter against existing sources:
feed-sources.md.Add / queue — branch on invocation context:
No flag (interactive): source additions are free (no operator approval needed). For each verified candidate:
## Active Sources table in feed-sources.md.rss for RSS/Atom feeds, web for scraped pages).--scheduled: do NOT touch feed-sources.md — these candidates are unverified.
In both modes, write .claude-code-hermit/compiled/source-candidates-<YYYY-MM-DD>.md with frontmatter
(title, type: source-candidates, created, tags: [source-scout]) listing each candidate's name,
URL, the gap it addresses, and a one-line "why this looked promising" note.
--scheduled only: notify the operator per CLAUDE.md § Operator Notification with a one-line summary
("N unverified source candidate(s) found — see .claude-code-hermit/compiled/source-candidates-<date>.md"). Don't queue a
micro-approval: verification requires an interactive WebFetch only the operator can trigger. The operator
reviews the file and, for any candidate they want, runs /source-scout interactively (or edits
feed-sources.md manually) so verification happens with them present.
Log and report:
source-scout: added N source(s): [name1, name2, ...] (or source-scout: 0 viable candidates found if none survived). Additions are mentioned in the next brief.--scheduled: append to SHELL.md Findings: source-scout (scheduled): queued N unverified candidate(s) for operator review (or source-scout (scheduled): 0 candidates found).reddit, chrome, x) — higher runtime cost; add those manually.source-scout: skipped (WebSearch unavailable).tools
Composes and delivers the daily fitness brief — a forward-looking morning read (readiness + today's plan) or a backward-looking evening read (today's training, or an earned-rest note, + tomorrow's setup) — in the operator's configured voice. Invoke with /claude-code-fitness-hermit:fitness-brief --morning|--evening|--slot <name>. Becomes the plugin's two daily beats — the morning Strava connectivity check and the evening activity sync, RPE binding, and Run deep-dive.
development
Renew the hermit's long-lived Claude login token over the channel, before it expires. Relays a one-time sign-in link to the operator, takes the code back, installs the new token, and restarts. Activates on messages like 'relogin', 'renew my login', 'reauth', 'the login is expiring', or when doctor's credential-expiry check flags setup-token.
development
Synthesizes the past 7 days of archived briefs into a weekly digest — top stories, emerging vs faded themes, category activity, and per-source performance built from archive frontmatter. Delivers to the operator's configured channel and archives a weekly note. Designed as a weekly routine. Invoke with /feed-hermit:weekly-digest.
development
Manage developing story arcs tracked across briefs — add, resolve, and list active arcs in compiled/story-arcs-*.md. Arc Watch keywords drive the feed-brief arc-tagging enrichment. Invoke with /feed-hermit:story-arcs add|resolve|list.