What problem does it solve? Applications that consume syndicated content must handle both RSS 2.0 and Atom 1.0 formats, poll feeds without re-downloading unchanged content, and locate feed URLs when users only provide a site URL. This Skill normalizes both formats into one shape and handles conditional fetching and feed discovery. ## Core Features & Use Cases - Format-sniffing parsing: Feed.parse and Feed.fromXML detect RSS or Atom from the root element and return one normalized shape with format, title, siteUrl, feedUrl, updatedAt, and items. - Conditional fetching: Feed.fetch sends stored If-None-Match/If-Modified-Since validators and reports HTTP 304 without parsing, so pollers skip unchanged feeds. - Feed autodiscovery: Feed.discover follows <link rel="alternate"> tags to find the feeds a site advertises when a user pastes a plain site URL. - Use Case: A subscription list is polled on a schedule; stored ETag and Last-Modified validators are sent each cycle, 304 responses are skipped, and new items from mixed RSS and Atom sources are stored in one table. ## Quick Start Use the sdxc-feed skill to parse a feed URL, poll it with stored ETag validators, and discover feeds behind a pasted site URL.