hermes-agent/skills/research/blogwatcher/SKILL.md
kshitijk4poor ccfbf42844 feat: secure skill env setup on load (core #688)
When a skill declares required_environment_variables in its YAML
frontmatter, missing env vars trigger a secure TUI prompt (identical
to the sudo password widget) when the skill is loaded. Secrets flow
directly to ~/.hermes/.env, never entering LLM context.

Key changes:
- New required_environment_variables frontmatter field for skills
- Secure TUI widget (masked input, 120s timeout)
- Gateway safety: messaging platforms show local setup guidance
- Legacy prerequisites.env_vars normalized into new format
- Remote backend handling: conservative setup_needed=True
- Env var name validation, file permissions hardened to 0o600
- Redact patterns extended for secret-related JSON fields
- 12 existing skills updated with prerequisites declarations
- ~48 new tests covering skip, timeout, gateway, remote backends
- Dynamic panel widget sizing (fixes hardcoded width from original PR)

Cherry-picked from PR #723 by kshitijk4poor, rebased onto current main
with conflict resolution.

Fixes #688

Co-authored-by: kshitijk4poor <kshitijk4poor@users.noreply.github.com>
2026-03-13 03:14:04 -07:00

1.2 KiB

name description version author license metadata prerequisites
blogwatcher Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI. Add blogs, scan for new articles, and track what you've read. 1.0.0 community MIT
hermes
tags homepage
RSS
Blogs
Feed-Reader
Monitoring
https://github.com/Hyaxia/blogwatcher
commands
blogwatcher

Blogwatcher

Track blog and RSS/Atom feed updates with the blogwatcher CLI.

Prerequisites

  • Go installed (go version to check)
  • Install: go install github.com/Hyaxia/blogwatcher/cmd/blogwatcher@latest

Common Commands

  • Add a blog: blogwatcher add "My Blog" https://example.com
  • List blogs: blogwatcher blogs
  • Scan for updates: blogwatcher scan
  • List articles: blogwatcher articles
  • Mark an article read: blogwatcher read 1
  • Mark all articles read: blogwatcher read-all
  • Remove a blog: blogwatcher remove "My Blog"

Example Output

$ blogwatcher blogs
Tracked blogs (1):

  xkcd
    URL: https://xkcd.com
$ blogwatcher scan
Scanning 1 blog(s)...

  xkcd
    Source: RSS | Found: 4 | New: 4

Found 4 new article(s) total!

Notes

  • Use blogwatcher <command> --help to discover flags and options.