backfilling-atproto

Backfill ATProto records from a PDS across custom collections with pagination and idempotent processing.

23|1|Updated Jan 24, 2026
One-click install
npx skills add https://github.com/just-cameron/central --skill backfilling-atproto
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: backfilling-atproto
Source: https://github.com/just-cameron/central/tree/main/.skills/backfilling-atproto
Command: npx skills add https://github.com/just-cameron/central --skill backfilling-atproto

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Backfill ATProto records from a PDS to populate historical data across custom collections.

Core Features & Use Cases

  • Public API limitations: Public API returns 404 for custom collections; PDS direct access works for all collections.
  • PDS-driven backfill: Enumerate and backfill records across multiple collections (e.g., network.comind.* and stream.thought.*).
  • Pagination & reliability: Handles paging with cursors and supports idempotent processing to prevent duplicate work.

Quick Start

Identify the target DID and collection, then run the backfill process against the PDS to enumerate and store records.

Frequently Asked Questions about backfilling-atproto

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I backfill ATProto records from a PDS when the public API returns 404?

Backfill ATProto records by querying the PDS directly to enumerate and fetch historical data across custom collections, bypassing public API limitations. Direct PDS access successfully retrieves records from collections like network.comind.* that return 404 publicly.

Why does the public API return 404 for custom ATProto collections?

The public API returns 404 for custom ATProto collections because it lacks coverage for non-standard namespaces. Direct PDS access works for all collections, allowing you to enumerate and backfill records across custom schemas that the public API cannot resolve.

What is the best way to sync historical activity across multiple ATProto collections?

The best way to sync historical activity is running a PDS-driven backfill process that enumerates records across multiple custom collections. It enforces pagination handling with cursors and idempotent processing to ensure complete, recoverable data synchronization without duplicate work.

Does backfilling ATProto records handle pagination and prevent duplicate processing?

Backfilling ATProto records handles pagination using cursors and enforces idempotent processing to prevent duplicate work. This ensures complete, recoverable backfills across custom collections while safely managing paging during data enumeration from the PDS.

Can I scope a PDS backfill to specific ATProto collections?

Yes, you can scope PDS backfills to specific ATProto collections. The backfill process enforces collection scoping, allowing you to target and enumerate records within defined namespaces like stream.thought.* while ignoring irrelevant data during historical population.