skills/hyaxia/blogwatcher/blogwatcher-cli

blogwatcher-cli

SKILL.md

BlogWatcher CLI

Quick Orientation

  • Use the Cobra entry point in cmd/blogwatcher/main.go and internal/cli/.
  • Route business logic through internal/controller and persistence through internal/storage.
  • Use scanning pipeline packages in internal/scanner, internal/rss, and internal/scraper.
  • Remember the default SQLite path is ~/.blogwatcher/blogwatcher.db and is created on demand.

Run Commands

  • Run locally with go run ./cmd/blogwatcher ....
  • Build with go build ./cmd/blogwatcher.

Change Workflow

  1. Add or adjust CLI commands in internal/cli/commands.go (Cobra options, arguments, output formatting).
  2. Put non-trivial logic in internal/controller so the CLI stays thin and testable.
  3. Update storage or schema in internal/storage/database.go and adjust model conversion in internal/model if needed.
  4. Modify scanning behavior in internal/scanner and its helpers (internal/rss, internal/scraper).
  5. Update or add tests under internal/ or cmd/ 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/
Weekly Installs
8
GitHub Stars
79
First Seen
Feb 18, 2026
Installed on
opencode7
gemini-cli7
github-copilot7
codex7
cline7
cursor7