← ClaudeAtlas

extension-data-providerslisted

PageDataProvider, ContentDataProvider, and FrontmatterProcessor trait implementations
systempromptio/systemprompt-template · ★ 14 · AI & Automation · score 70
Install: claude install-skill systempromptio/systemprompt-template
# Extension: Data Providers Data providers inject dynamic content into pages, enrich content items, and process frontmatter metadata. All traits live in `crates/shared/provider-contracts/src/`. --- ## 1. PageDataProvider Injects JSON data into page templates during rendering. ### Trait ```rust #[async_trait] pub trait PageDataProvider: Send + Sync { fn applies_to_pages(&self) -> Vec<String>; async fn provide_page_data(&self, ctx: &dyn PageDataContext) -> Result<Value>; fn priority(&self) -> u32; } ``` ### Implementation ```rust pub struct MyPageDataProvider; #[async_trait] impl PageDataProvider for MyPageDataProvider { fn applies_to_pages(&self) -> Vec<String> { vec!["homepage".into(), "blog".into()] } async fn provide_page_data(&self, ctx: &dyn PageDataContext) -> Result<Value> { let site = ctx.site_config(); Ok(serde_json::json!({ "hero_title": site.name, "featured_count": 5 })) } fn priority(&self) -> u32 { 100 } } ``` ### Registration ```rust impl Extension for MyExtension { fn page_data_providers(&self) -> Vec<Arc<dyn PageDataProvider>> { vec![Arc::new(MyPageDataProvider)] } } ``` ### Priority Lower values execute first. Multiple providers for the same page merge their data. Later providers can override earlier keys. --- ## 2. ContentDataProvider Enriches content items with computed fields during ingestion. ### Trait ```rust #[async_trait] pub trait