bluesky viewer in the terminal
ROADMAP - "SkyCLI"#
TUI view with bubbletea#
- Implement interactive feed-browser (pager) in terminal (scrolling list of posts, expand post details).
- Command
tuilaunches full-screen UI; allow selection of feed, filtering, unread collapse. - Done?: TUI runs, shows feed, allows basic navigation (up/down).
Save & Archive System#
-
Unified Save Interface
- Introduce
savedomain layer handling all save operations (SaveLink,SavePost,SaveMedia). - Add a CLI command family
- Introduce
-
Save Links
- Fetch OpenGraph metadata (title, description, image, favicon).
- Store link metadata in JSON (
links.json) and cache preview thumbnails. - Allow tagging (
--tags) and searching by tag in TUI.
-
Save Posts (Account)
- Integrate with Bluesky API (
app.bsky.graph.likeor custom record type) to save posts to the user’s account. - Mirror saved post metadata locally for offline viewing.
- Provide sync command
skycli sync saved.
- Integrate with Bluesky API (
-
Save Posts (Local Markdown)
- Export selected posts as Markdown files to:
~/Library/Application Support/SkyCLI/saved/posts/ ~/.local/share/skycli/saved/posts/- Markdown includes:
- Author handle and timestamp
- Post text, mentions, and embedded links
- YAML frontmatter (tags, source URL, Bluesky URI)
-
Download Images or Video
- Parse attached media from post records and download via HTTP with correct filenames.
- Save to
/media/images/and/media/videos/subdirectories. - Maintain reference paths in Markdown frontmatter.
Done?#
skycli savecommands handle links, posts, and media- Local Markdown and media files stored in per-user app data directory
- Optional remote sync for account-level saved posts
- "Saved Items" TUI panel displays and filters all saved entries
- Repository and service layers fully abstract storage and network APIs
Feed definition management#
CLI commands for managing feeds on SkyFeed server (see /server/ROADMAP.md):
skycli feed create- Create new feed definition on serverskycli feed list- List user's feedsskycli feed edit- Update feed definitionskycli feed delete- Delete feedskycli feed test- Test feed algorithm locally with sample dataskycli feed export/import- Share feed definitions as JSON
Done?: CLI can create, list, edit, delete, and test feed definitions via server API.
Collapsing unread logic & filter/search support#
- In TUI, support collapsed unread by author logic (as in extension).
- Support advanced search:
search postswith filters (author, tag, lang, domain). - Done?: TUI or CLI supports search returning results; collapse unread groups.
Feed publishing to Bluesky#
CLI commands for publishing feeds to AT Protocol (requires SkyFeed server):
skycli feed publish <feedID>- Publish feed to user's Bluesky accountskycli feed unpublish <feedID>- Remove published feedskycli feed share <feedID>- Generate shareable at:// URI
Publishing process:
- Feed definition sent to SkyFeed server
- Server creates feed generator record in user's repository
- Feed becomes discoverable via at:// URI
- Users can subscribe in any Bluesky client
Done?: CLI publishes feeds via server, outputs at:// URI for sharing.
Server Management#
CLI commands for managing the SkyFeed server (see /server/ROADMAP.md for server architecture):
skycli server init- Initialize new feed generator serviceskycli server start- Start local development serverskycli server stop- Stop running serverskycli server deploy- Deploy to configured platform (Fly.io, Docker, etc.)skycli server status- Check service health and statsskycli server logs- View server logsskycli server config- Manage server configuration
Done?: CLI can initialize, start, deploy, and manage SkyFeed server instances.
Packaging & distribution#
- Build binaries for major OSes (Windows, macOS, Linux).
- Write unit tests (feed logic, collapse logic) and TUI smoke tests.
- Release via GitHub, include versioning. Done?: CI pipeline passes, binaries available.