etl-sync-job-builder

Implements incremental ETL and data synchronization jobs with watermarks, idempotent upserts, and retry logic.

2|Updated Jun 5, 2026
One-click install
npx skills add https://github.com/sathishssj3/NexVR-Engine --skill etl-sync-job-builder-sathishssj3
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: etl-sync-job-builder
Source: https://github.com/sathishssj3/NexVR-Engine/tree/main/.agents/skills/etl-sync-job-builder
Command: npx skills add https://github.com/sathishssj3/NexVR-Engine --skill etl-sync-job-builder-sathishssj3

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @prisma/client, node-cron, pg.

What problem does it solve? Building data pipelines that reliably move records between databases, APIs, and warehouses is error-prone: full scans are slow, retries cause duplicates, and failures lose progress. This Skill provides proven TypeScript patterns for incremental, idempotent, and recoverable sync jobs. ## Core Features & Use Cases - Incremental Sync with Watermarks: Track last-sync timestamps in a Prisma SyncWatermark table so jobs only process new or updated records. - Idempotent Upserts & Retry Logic: Use ON CONFLICT batch upserts and exponential backoff so jobs are safe to re-run after transient failures. - CDC, Conflict Resolution & Monitoring: Capture changes via PostgreSQL logical replication, resolve conflicts with source-wins/latest-wins/merge strategies, and log sync metrics. - Use Case: You need to sync orders from a production PostgreSQL database into a data warehouse every hour. Use this Skill to generate an ETL job class that extracts orders updated since the last watermark, transforms them into a fact-table schema, batch-loads them idempotently, and schedules the job with node-cron. ## Quick Start Ask the AI to build an incremental ETL job that syncs updated orders from PostgreSQL to a warehouse table with watermark tracking, batch upserts, and hourly cron scheduling.

Frequently Asked Questions about etl-sync-job-builder

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

FAQPage Schema
How do I build an incremental data sync job in TypeScript?▼

Store a watermark timestamp in a SyncWatermark table, query only records where updated_at is greater than the last watermark, process them in batches of 100, then upsert the watermark to the latest record's timestamp. This avoids full table scans on every run.

How to make ETL jobs idempotent so retries don't duplicate data?▼

Use upsert operations keyed on the record's primary ID instead of plain inserts. In PostgreSQL, batch upserts with INSERT ... ON CONFLICT (id) DO UPDATE make re-running the same job safe, and Prisma's createMany with skipDuplicates also prevents duplicate rows.

Does Prisma support change data capture with PostgreSQL?▼

Prisma can execute raw SQL to create a logical replication publication, but subscribing to changes requires the pg library directly. Use client.query('LISTEN channel') and handle notification events to sync inserted or updated rows in near real time.

How do I handle ETL job failures and resume from where it stopped?▼

Save a checkpoint after every 100 processed records and log individual failed records without aborting the job. On restart, the job reads the last checkpoint and resumes from that point, while transient errors are handled with exponential backoff retries.

What conflict resolution strategy should I use when syncing data between two databases?▼

Common strategies are source-wins, destination-wins, latest-wins, and merge. Latest-wins compares updated_at timestamps and keeps the newer record, while merge combines non-null fields from the source into the destination record.

How do I schedule recurring ETL jobs in Node.js?▼

Use node-cron to schedule jobs with standard cron expressions, such as '0 * * * *' for hourly runs or '0 2 * * *' for a nightly full sync at 2 AM. Each scheduled trigger instantiates and runs the ETL job class.