Files
sideline/.opencode/skills/mainline-sources/SKILL.md
David Gwilliam ef98add0c5 feat(integration): Complete feature rewrite with pipeline architecture, effects system, and display improvements
Major changes:
- Pipeline architecture with capability-based dependency resolution
- Effects plugin system with performance monitoring
- Display abstraction with multiple backends (terminal, null, websocket)
- Camera system for viewport scrolling
- Sensor framework for real-time input
- Command-and-control system via ntfy
- WebSocket display backend for browser clients
- Comprehensive test suite and documentation

Issue #48: ADR for preset scripting language included

This commit consolidates 110 individual commits into a single
feature integration that can be reviewed and tested before
further refinement.
2026-03-20 04:41:44 -07:00

1.9 KiB

name, description, compatibility, metadata
name description compatibility metadata
mainline-sources Adding new RSS feeds and data sources to Mainline opencode
audience source_type
developers codebase

What This Skill Covers

This skill covers how to add new data sources (RSS feeds, poetry) to Mainline.

Key Concepts

Feeds Dictionary (engine/sources.py)

All feeds are defined in a simple dictionary:

FEEDS = {
    "Feed Name": "https://example.com/feed.xml",
    # Category comments help organize:
    # Science & Technology
    # Economics & Business
    # World & Politics
    # Culture & Ideas
}

Poetry Sources

Project Gutenberg URLs for public domain literature:

POETRY_SOURCES = {
    "Author Name": "https://www.gutenberg.org/cache/epub/1234/pg1234.txt",
}

Language & Script Mapping

The sources.py also contains language/script detection mappings used for auto-translation and font selection.

Adding a New RSS Feed

  1. Edit engine/sources.py
  2. Add entry to FEEDS dict under appropriate category:
    "My Feed": "https://example.com/feed.xml",
    
  3. The feed will be automatically discovered on next run

Feed Requirements

  • Must be valid RSS or Atom XML
  • Should have <title> elements for items
  • Must be HTTP/HTTPS accessible

Adding Poetry Sources

  1. Edit engine/sources.py
  2. Add to POETRY_SOURCES dict:
    "Author": "https://www.gutenberg.org/cache/epub/XXXX/pgXXXX.txt",
    

Poetry Requirements

  • Plain text (UTF-8)
  • Project Gutenberg format preferred
  • No DRM-protected sources

Data Flow

Feeds are fetched via engine/fetch.py:

  • fetch_feed(url) - Fetches and parses RSS/Atom
  • Results cached for fast restarts
  • Filtered via engine/filter.py for content cleaning

Categories

Organize new feeds by category using comments:

  • Science & Technology
  • Economics & Business
  • World & Politics
  • Culture & Ideas