Purpose
Assess any new data source and produce a concrete integration recommendation — extraction method, load pattern, change-capture strategy, error handling, and a phased build plan — so the engineer can move from "we need to ingest this" to a defensible implementation decision without reinventing the evaluation each time.
When to Use
Invoke this skill when the user asks to:
- Decide how to ingest a new API, database, SaaS platform, file source, or event stream
- Compare batch vs. streaming vs. CDC for a given source
- Evaluate whether to build a custom connector or use an off-the-shelf tool (Fivetran, Airbyte, Debezium, etc.)
- Design an incremental extraction strategy for a source with rate limits or large tables
- Plan schema handling and drift management for a new integration
- Estimate effort and risk before committing to a source integration
Inputs Required
Before starting, collect:
- Source type: REST/GraphQL API, relational DB, NoSQL DB, SaaS app, flat files (S3/SFTP), or event stream (Kafka/Kinesis/PubSub)
- Access method available: API key/OAuth, DB credentials + network path, webhook, log-based CDC access, file drop location
- Data volume & velocity: Approximate row/record count, daily change volume, and how fresh the data must be (real-time, hourly, daily)
- Destination: Warehouse/lake target (Snowflake, BigQuery, Redshift, Databricks, Postgres, etc.)
- Constraints: Rate limits, API pagination limits, maintenance windows, PII/compliance requirements
- Existing tooling: Orchestrator (Airflow, Dagster, dbt), any ingestion platform already in use
- Team capacity: Rough sense of build-vs-buy appetite and who maintains it
If volume/velocity or freshness requirements are unknown, assume daily batch as the default and flag the assumption explicitly.
Instructions
Step 1: Classify the Source
Identify the source archetype, because it dictates the entire integration pattern:
- Pull API (REST/GraphQL): Rate-limited, paginated, often no native change feed
- Relational database: Supports incremental keys and/or log-based CDC
- NoSQL / document store: Schema-flexible; extraction depends on export API or change streams
- SaaS application: Often best served by a managed connector; APIs may be undocumented or unstable
- Flat files (S3/SFTP): Batch by nature; watch for late-arriving and out-of-order files
- Event stream (Kafka/Kinesis/PubSub): Streaming-native; ordering, offsets, and replay are the concerns
State which archetype this source is and the one property of that archetype that most constrains the design.
Step 2: Determine Connectivity & Auth
Assess how you actually reach the data:
- Auth model: API key, OAuth2 (token refresh handling), service account, DB user with least-privilege read
- Network path: Public endpoint, VPC peering, PrivateLink, SSH tunnel, static IP allowlisting
- Reliability of interface: Documented + versioned API vs. unversioned; stable schema vs. frequently changing
- Flag any auth pattern that requires token rotation or credential vaulting (Secrets Manager, Vault)
Step 3: Recommend Extraction Pattern
Choose and justify one primary pattern:
- Full refresh: Small tables (<1–5M rows), no reliable change key — simplest, most robust
- Incremental by high-water mark:
updated_at/ monotonic ID exists and is trustworthy — most common - Log-based CDC: DB with WAL/binlog access, high change volume, low-latency need — use Debezium or native connector
- Event consumption: Source already emits events — consume with consumer groups and offset management
- Change API / cursor: SaaS with a native "changes since cursor" endpoint
For the chosen pattern, specify the state to persist (cursor value, offset, LSN, last file timestamp) and where it lives.
Step 4: Decide Build vs. Buy
Score against three questions:
- Does a mature managed connector exist (Fivetran/Airbyte/Stitch) for this exact source?
- Is the data volume/rate within the connector's cost tolerance?
- Do compliance or transformation needs require custom control?
Rule of thumb: Standard SaaS + common DB → managed connector unless cost or compliance forces custom. Bespoke internal API or event stream → custom is usually warranted. State the recommendation and the single deciding factor.
Step 5: Schema & Drift Strategy
- Schema handling: Explicit typed schema vs. schema-on-read (JSON/variant column)
- Drift policy: Auto-add new columns, alert-on-drop, fail-on-incompatible-change — pick one and justify
- PII/compliance: Fields requiring masking, hashing, or exclusion at ingest
- Contracts: Whether a data contract / schema registry (e.g., Avro + registry for streams) applies
Step 6: Error Handling & Idempotency
- Retries: Exponential backoff with jitter for transient/429 errors; cap and dead-letter after N attempts
- Idempotency: Deduplication key and merge/upsert strategy so re-runs don't duplicate data
- Partial-failure recovery: How to resume from the last committed cursor/offset without gaps or double-counting
- Late/out-of-order data: Watermarking or reprocessing window for streams and file sources
Step 7: Monitoring & SLAs
Define what to watch:
- Freshness: Time since last successful load vs. the required freshness SLA
- Volume anomaly: Row-count deltas outside expected range trigger alerts
- Schema drift alerts: Fired on unexpected structural changes
- Failure alerting: Retry exhaustion and dead-letter growth State the specific metric and threshold for each, not just "add monitoring."
Step 8: Phased Implementation Plan
Produce a 3-phase rollout:
- Phase 1 — Proof of connection: Auth, single successful pull, schema inspection
- Phase 2 — Production extraction: Chosen pattern, incremental state, error handling, load to destination
- Phase 3 — Hardening: Monitoring, drift policy, alerting, documentation and runbook Include a rough effort estimate (S/M/L) per phase and the top risk for each.
Output Format
- Structure: 8 labeled sections following the steps, plus a one-line recommendation summary at the top
- Length: 900–1,300 words
- Format: Structured document — short prose per section with bulleted decisions; extraction-pattern and build-vs-buy rendered as clear recommendations with a stated deciding factor
- Sections: Recommendation Summary → Source Classification → Connectivity & Auth → Extraction Pattern → Build vs. Buy → Schema & Drift → Error Handling & Idempotency → Monitoring & SLAs → Phased Plan
- Tone: Senior data engineer in a design review — decisive, tradeoff-aware, no hedging
Quality Checklist
Before delivering output, verify:
- [ ] The source is classified into exactly one archetype with its key constraint named
- [ ] A single primary extraction pattern is recommended, with the persisted state artifact specified (cursor/offset/LSN/timestamp)
- [ ] Build-vs-buy gives a clear verdict and names the one deciding factor
- [ ] Error handling addresses idempotency with a stated dedup/merge key — not just "add retries"
- [ ] Each monitoring item has a concrete metric and threshold
- [ ] The phased plan has 3 phases, each with an effort estimate (S/M/L) and a named top risk
Notes
- The most common failure mode is trusting an
updated_atcolumn that isn't reliably updated on every mutation — verify before committing to incremental-by-timestamp. - For SaaS sources, a managed connector is usually cheaper than the true fully-loaded cost of maintaining a custom one; only override this for compliance, cost-at-scale, or unsupported-source reasons.
- Log-based CDC is powerful but adds operational surface area (connector, offsets, schema history) — recommend it only when change volume or latency genuinely requires it.
How to use this skill
This file is a Claude Code skill in Anthropic's standard format — markdown with YAML frontmatter at the top.
Installing in Claude Code:
~/.claude/skills/<folder-name>/SKILL.md— auto-loads in every session anywhere on your machine (recommended for skills you'll use across multiple projects)<your-project>/.claude/skills/<folder-name>/SKILL.md— auto-loads only when working in that project (recommended for project-specific skills)
Restart Claude Code or open a new session to register.
Using in Claude.ai, ChatGPT, Gemini, or other AI tools:
- Drag this file into a new chat, or copy and paste its contents
- Send your task or request as your next message — the AI will apply the skill where it fits
For Claude Code skill details: https://docs.anthropic.com/en/docs/claude-code/skills