Feedsmith
Use this skill for Feedsmith v3+ (feedsmith): parse and generate RSS, Atom, RDF, JSON Feed, and OPML with structure-preserving, typed APIs. Docs: v3.feedsmith.dev. Snapshot 3.0.0-rc.3 (2026-08-06).
Workflow
- Inspect the local surface:
- Installed
feedsmithversion and npm dist-tag (latestmay still be 2.x — see source-map.md). - Parse vs generate vs OPML vs detect-only usage.
- Dates: raw strings vs
parseDateFn/Dateon generate. - v2 leftovers:
feedsmith/types,{ lenient: true }, flat Atom strings, string RSS persons, singulardc.*fields.
- Installed
- Prefer dedicated parsers when format is known; use
parseFeedonly for unknown/mixed sources. - Refresh docs when tags drift. Start from source-map.md.
- Route deeper detail:
- Parse/detect/dates/errors: parsing.md
- Generate, strict mode, stylesheets: generating.md
- Formats, namespaces, types: formats-namespaces.md
- v2→v3 breaking changes: migration-v2-to-v3.md
- Prefer
bun/bunxin command examples.
Core Judgment
- Preserve structure — do not invent a “universal flattened feed” layer; read format-specific fields and namespaces (
feed.itunes,item.dc, …). - Dates are strings by default on parse. Use
parseDateFnto convert; errors from that fn are not swallowed. - Generate is lenient by default in v3 (all fields optional). Use
{ strict: true }for compile-time spec-required fields +Datedates. - Atom text/content are objects:
title?.value,content?.value(not bare strings). - RSS persons are objects:
{ email?, name?, link? }— not"a@b (Name)"strings. - Types from main entry:
RssFeed,AtomFeed,JsonFeed,RdfFeed,Opml,AnyFeed. Nofeedsmith/types. - RDF generate is not available yet (parse yes). JSON Feed / RSS / Atom / OPML generate yes.
- Catch
DetectError|MalformedError|ParseError|GenerateError— not only genericError. - Known format → dedicated parser (faster, more reliable than detect heuristics).
Verification
Prefer repository-owned commands. Cover the relevant subset:
bun pm ls feedsmith/npm view feedsmith version dist-tags— confirm 3.x.- Round-trip: parse fixture → assert key fields → generate → re-parse smoke.
- Typecheck Atom
.value/ RSSPerson/dc.titles(plural) after upgrades. - Strict generate: missing required fields should fail at compile time with
{ strict: true }. - Error-path tests for bad XML / wrong format using dedicated error classes.
Report which checks ran, which did not, and version/tag assumptions that remain.