BlogWatcher CLI
SkillFiles & storageUse when managing or interacting with favorite blogs via the BlogWatcher CLI—adding/removing blogs, scanning for new posts, listing articles, marking read/unread, or modifying related CLI behavior, scanning, storage, and tests.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the BlogWatcher CLI skill
What this skill tells your AI
The instructions your AI receives, as published by hyaxia/blogwatcher in SKILL.md and read by ahel’s review.
Quick Orientation
- Use the Cobra entry point in
cmd/blogwatcher/main.goandinternal/cli/. - Route business logic through
internal/controllerand persistence throughinternal/storage. - Use scanning pipeline packages in
internal/scanner,internal/rss, andinternal/scraper. - Remember the default SQLite path is
~/.blogwatcher/blogwatcher.db(override withBLOGWATCHER_DB) and is created on demand.
Run Commands
- Run locally with
go run ./cmd/blogwatcher .... - Build with
go build ./cmd/blogwatcher.
Change Workflow
- Add or adjust CLI commands in
internal/cli/commands.go(Cobra options, arguments, output formatting). - Put non-trivial logic in
internal/controllerso the CLI stays thin and testable. - Update storage or schema in
internal/storage/database.goand adjust model conversion ininternal/modelif needed. - Modify scanning behavior in
internal/scannerand its helpers (internal/rss,internal/scraper). - Update or add tests under
internal/orcmd/for every feature change or addition.
Test Guidance
- Run tests with
go test ./.... - If you add a feature, add tests and any necessary dummy data.
- Keep tests focused on CLI behavior, controller logic, and scraper/RSS parsing outcomes.
Output Conventions
- Preserve user-friendly CLI output with colors and clear errors.
- When listing posts available for reading, always include the link to each post in the output.
- Keep error handling consistent with existing exceptions (
BlogNotFoundError,BlogAlreadyExistsError,ArticleNotFoundError).
Example (posts available for reading)
Unread articles (2):
[12] [new] Understanding Click Contexts
Blog: Real Python
URL: https://realpython.com/click-context/
Published: 2025-11-02
[13] [new] Async IO in Practice
Blog: Test & Code
URL: https://testandcode.com/async-io-in-practice/
Signals
- GitHub stars
- 147
- Forks
- 25
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
blogwatcher-cli- Source
- github.com/hyaxia/blogwatcher