data-collector

Fetch, transform, and deduplicate incident data from external APIs.

Updated Jan 11, 2026
One-click install
npx skills add https://github.com/ohall/thesituation --skill data-collector
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: data-collector
Source: https://github.com/ohall/thesituation/tree/main/.skills/data-collector
Command: npx skills add https://github.com/ohall/thesituation --skill data-collector

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Pattern for building data source collectors that fetch, transform, and deduplicate incident data from external APIs. Use when adding new data sources, fixing collector bugs, or understanding the data pipeline.

Core Features & Use Cases

  • Defines a standard Collector interface with fetch() and transform(raw) methods to fetch and normalize raw data into a unified Incident shape.
  • Provides guardrails for reliability: upsert to storage, dedupe keys, and error handling during fetch or transform.
  • Supports common data sources (e.g., NYC FDNY, 511NY, NWS) as example implementations to illustrate integration patterns and debugging workflows.

Quick Start

Create a new collector by implementing the Collector interface, add it to the collectors registry, and run the processor to ingest and upsert incidents.

Frequently Asked Questions about data-collector

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

FAQPage Schema
How do I build a resilient data collector to fetch and transform incident data from external APIs?

To build a resilient data collector, implement a standard Collector interface with fetch() and transform(raw) methods to fetch and normalize raw data into a unified Incident shape. This pattern provides guardrails like upsert to storage, dedupe keys, and error handling during fetch or transform.

What is the best way to deduplicate incident data when ingesting from multiple external APIs?

The best way to deduplicate incident data is using a collector pattern that tracks dedupe keys during the transformation phase. The standard Collector interface normalizes raw API data into a unified Incident shape and upserts to storage, preventing duplicate records.

How do I add a new data source to an existing ETL data pipeline for incident data?

To add a new data source to an ETL pipeline, implement the Collector interface with fetch and transform methods, add it to the collectors registry, and run the processor to ingest and upsert incidents. Example implementations like NYC FDNY, 511NY, and NWS illustrate integration patterns.

Can I use this collector pattern to normalize raw API data from different sources into a single format?

Yes, you can normalize raw API data from different sources by implementing the transform(raw) method within the Collector interface. This method takes raw data from external APIs and converts it into a unified Incident shape before upserting to storage.

Why does my data collector fail during the transform or fetch process when ingesting incidents?

Data collectors can fail during fetch or transform due to unhandled errors from external APIs. The collector pattern includes guardrails for reliability and error handling during these stages, along with health tracking to monitor and debug collector workflows.

Do I need external dependencies to implement a data collector for incident APIs?

No external dependencies are required to implement the data collector pattern. It defines a standard Collector interface and registry system that can be run via a processor to ingest and upsert incidents without relying on additional packages.