feedhub is a GitHub Template Repository and composite action. Per-consumer state (feeds.json, state.json) lives in the caller repo.
action.yml— composite action: mise-action, thenmise run syncmise.toml— tools and tasks; the interface for CI and local commandssrc/rss.py— workersrc/requirements.txt— Python depsexamples/feeds.example.json— consumer config schema
Consumer workflow checks out itself, then uses: echohello-dev/feedhub@<ref>. Webhook URLs are job env vars named to match each feed's webhook_secret. See README.md.
Pin consumers to a tag or commit SHA.
- Run commands via
mise run, not raw python/uv/git. Seemise.toml. - Python: PEP 8, type hints, stdlib only +
feedparser+requests. - Pin third-party Actions to full SHA-1 hashes.
- Paths and seed mode via
FEEDHUB_*env vars, not mise CLI args. - Secrets never logged (webhook URLs stay in env; do not echo or pass as flags). State files are public-readable on public consumer repos — no PII.