extension-content-feedslisted
Install: claude install-skill systempromptio/systemprompt-template
# Extension: Content Feeds
Feed providers generate RSS feeds and XML sitemaps for search engine optimization and content syndication. All traits live in `crates/shared/provider-contracts/src/`.
---
## 1. RssFeedProvider
Generates RSS 2.0 feeds from content sources.
### Trait
```rust
#[async_trait]
pub trait RssFeedProvider: Send + Sync {
fn feed_specs(&self) -> Vec<RssFeedSpec>;
async fn feed_metadata(&self, ctx: &dyn RssFeedContext) -> Result<RssFeedMetadata>;
async fn fetch_items(&self, ctx: &dyn RssFeedContext, limit: usize) -> Result<Vec<RssFeedItem>>;
}
```
### Feed Spec Fields
| Field | Type | Description |
|-------|------|-------------|
| `source` | String | Content source to query |
| `path` | String | URL path for the feed (e.g., `/feed.xml`) |
| `limit` | usize | Maximum items in feed |
### Registration
```rust
impl Extension for MyExtension {
fn rss_feed_providers(&self) -> Vec<Arc<dyn RssFeedProvider>> {
vec![Arc::new(BlogRssFeedProvider)]
}
}
```
---
## 2. SitemapProvider
Generates XML sitemaps for search engine indexing.
### Trait
```rust
#[async_trait]
pub trait SitemapProvider: Send + Sync {
fn source_specs(&self) -> Vec<SitemapSourceSpec>;
fn static_urls(&self, base_url: &str) -> Vec<SitemapUrlEntry>;
async fn resolve_placeholders(
&self,
ctx: &dyn SitemapContext,
content: &[ContentItem],
placeholders: &[String],
) -> Result<Vec<SitemapUrlEntry>>;
}
```
### Sitemap URL