Skill materialize-postgres-create
Buat materialization PostgreSQL untuk melakukan streaming data dari koleksi Estuary ke dalam tabel PostgreSQL menggunakan flowctl.
- Bintang GitHub
- 7
- File
- 1
- Commit terakhir
- 4 Nov 2026
- Lisensi
- Apache-2.0
- Tool yang diizinkan
- —
Apa fungsi skill materialize-postgres-create?
materialize-postgres-create adalah agent skill. Buat materialization PostgreSQL untuk melakukan streaming data dari koleksi Estuary ke dalam tabel PostgreSQL menggunakan flowctl.
Ringkasan dibuat dari SKILL.md skill ini.
Tentang skill materialize-postgres-create
Skill ini memungkinkan Anda untuk mengatur PostgreSQL sebagai tujuan (destination) bagi data yang ditangkap dari koleksi Estuary. Skill ini memandu developer melalui seluruh proses pembuatan materialization menggunakan flowctl untuk melakukan streaming data ke berbagai lingkungan PostgreSQL, termasuk RDS, Aurora, Cloud SQL, Supabase, AlloyDB, dan Neon. Agent akan mengelola workflow mulai dari mengumpulkan kebutuhan spesifik seperti network path dan kebutuhan SSL hingga menghasilkan file konfigurasi flow.yaml yang diperlukan.
Saat agent memuat skill ini, ia akan bertindak sebagai asisten teknis yang mengambil dokumentasi resmi connector melalui WebFetch dan melakukan query ke connector registry untuk memastikan image tag yang digunakan sudah benar. Agent membantu Anda menangani tugas setup yang kompleks seperti mengonfigurasi SSH tunnel, mengelola hard deletes, atau mengaktifkan delta updates untuk event logs. Skill ini juga memberikan peringatan khusus untuk connection pooler seperti PgBouncer atau PgCat, yang tidak kompatibel dengan persyaratan session-level dari connector ini. Setelah konfigurasi siap, agent akan membantu mempublikasikan spec dan memverifikasi status melalui perintah flowctl.
Apa yang bisa dilakukan agent dengannya
- 1Konfigurasi tujuan PostgresSiapkan materialization untuk melakukan streaming data dari koleksi Estuary ke database PostgreSQL tertentu.
- 2Hindari error connection poolerIdentifikasi apakah Anda mencoba menggunakan connection pooler seperti Supabase atau Neon yang dapat menyebabkan connector error.
- 3Generate file konfigurasi flowBuat file flow.yaml yang valid yang berisi endpoint, connector image, dan bindings yang diperlukan untuk materialization.
- 4Troubleshoot masalah koneksi dan izinSelesaikan error umum seperti connection timeout, kegagalan autentikasi, atau penolakan izin schema.
Ditulis dari SKILL.md milik skill tersebut. Setiap use case diverifikasi dengan kutipan darinya.
Cara install skill materialize-postgres-create
Setiap perintah menyalin folder skill ke direktori skills client. Restart client atau mulai sesi baru untuk memuatnya.Install skill materialize-postgres-create di Plugin
/plugin marketplace add estuary/agent-skills /plugin install estuary-materializations@estuary
Install skill materialize-postgres-create di Claude Code
~/.claude/skills/materialize-postgres-create/SKILL.md
$ npx degit estuary/agent-skills/skills/materialize-postgres-create ~/.claude/skills/materialize-postgres-createInstall skill materialize-postgres-create di Claude Code (project)
.claude/skills/materialize-postgres-create/SKILL.md
$ npx degit estuary/agent-skills/skills/materialize-postgres-create .claude/skills/materialize-postgres-createInstall skill materialize-postgres-create di Codex
~/.agents/skills/materialize-postgres-create/SKILL.md
$ npx degit estuary/agent-skills/skills/materialize-postgres-create ~/.agents/skills/materialize-postgres-createInstall skill materialize-postgres-create di Gemini CLI
~/.gemini/skills/materialize-postgres-create/SKILL.md
$ npx degit estuary/agent-skills/skills/materialize-postgres-create ~/.gemini/skills/materialize-postgres-createInstall skill materialize-postgres-create di Claude.ai
npx degit estuary/agent-skills/skills/materialize-postgres-create materialize-postgres-create && zip -r materialize-postgres-create.zip materialize-postgres-create # claude.ai → Customize → Skills → + → Create skill → Upload a skill → materialize-postgres-create.zip
SKILL.md
Lihat di GitHubCreate PostgreSQL Materialization
Create a PostgreSQL materialization using flowctl to stream data from Estuary collections into PostgreSQL tables.
Applies to: materialize-postgres (all variants: vanilla, RDS, Aurora, Cloud SQL, Supabase, AlloyDB, Neon)
Step 0: Load Connector Documentation
Before proceeding, fetch the official connector docs for prerequisites, config reference, and setup instructions.
Load the docs page: https://docs.estuary.dev/reference/Connectors/materialization-connectors/PostgreSQL/
Use WebFetch to load this page. It covers:
- Prerequisites (user creation, permissions, schema setup)
- Full config property reference
- SSH tunnel configuration
- SSL configuration
- Advanced options (delta updates, hard deletes, sync schedule)
Search Kapa for tribal knowledge (if the Estuary MCP is configured):
Search kapa ai knowledge sources for "materialize postgres common issues"
If Kapa MCP is not configured, the user can set it up: https://docs.estuary.dev/features/mcp-integration/
This skill provides the flowctl workflow and troubleshooting that docs don't cover.
Step 1: Gather Requirements
Before writing any YAML, ask the user:
- Postgres variant? — Vanilla, RDS, Aurora, Cloud SQL, Supabase, AlloyDB
- Network path? — Direct connection (cloud-hosted with IP allowlist), SSH tunnel (private network/on-prem), or ngrok (local dev).
Connection poolers are NOT supported. If the user mentions Supabase, Neon, PgBouncer, or PgCat, warn them immediately:
- The connector uses session-level temporary tables and prepared statements that break with pooled connections.
- Supabase: Must use the Direct connection (
db.xxx.supabase.co:5432), not the pooler (xxx.pooler.supabase.com:6543). - Neon: Must use the non-pooler endpoint — remove
-poolerfrom the hostname.
- Non-default data plane? — Most users use the default. Ask if they need a non-default data plane.
- Target database and schema? — Database name, schema (default:
public) - Source collections? — Which Estuary collections to materialize
- SSL required? — Some cloud providers require SSL connections
- Hard deletes? — Off by default. Without it, deleted rows stay in the destination marked with
_meta/op: 'd'. Enable to physically remove them. - Delta updates? — Off by default. Switches from one-row-per-key (standard merge) to append-only. Use for event logs or history tables.
- Sync schedule? — Controls how often batches are written to the destination (default: 30 minutes,
0sfor real-time). Affects latency and destination compute cost.
Step 2: Find the Correct Connector Version
Always use the latest numbered version tag. Query the connector registry:
flowctl raw get --table connector_tags \
--query 'documentation_url=eq.https://go.estuary.dev/materialize-postgres' \
--query 'select=image_tag,documentation_url' \
--output yaml
Use the returned image_tag — never hardcode a version.
Step 3: Help User Complete Prerequisites
Walk the user through prerequisites from the docs loaded in Step 0:
- Database user — Create a user with write permissions on the target schema
- Schema permissions — USAGE and CREATE on target schema
- Table permissions — SELECT, INSERT, UPDATE, DELETE if materializing to existing tables
- Network access — Firewall rules or SSH tunnel configured
Refer to the docs page for exact SQL commands and cloud-specific instructions.
Step 4: Create the Spec File
Build flow.yaml using the config reference from the docs. Minimal required config:
materializations:
<TENANT>/<PATH>/materialize-postgres:
endpoint:
connector:
image: ghcr.io/estuary/materialize-postgres:<VERSION>
config:
address: "<HOST>:5432"
database: "<DATABASE>"
user: "<USERNAME>"
password: "<PASSWORD>"
schema: "<SCHEMA>"
bindings:
- source: <TENANT>/<collection-path>
resource:
table: "<TABLE_NAME>"
For SSH tunnel or SSL, add the appropriate config block — see docs for full reference.
Step 5: Publish
flowctl catalog publish --source flow.yaml --auto-approve
Step 6: Verify
# Check status
flowctl catalog status <TENANT>/<PATH>/materialize-postgres
# View logs
flowctl logs --task <TENANT>/<PATH>/materialize-postgres --since 5m | jq -c '{ts, message}'
Status progression:
PENDING— Normal for ~30 seconds during shard assignmentBACKFILLING— Initial data sync from collectionOK— Running normally with real-time updates
Troubleshooting
"connection refused" or timeout
Cause: Database not reachable from Estuary cloud
Fix:
- Verify firewall allows Estuary IP addresses (see docs)
- Check security groups (AWS) or firewall rules (GCP)
- Use SSH tunnel for private databases
- For local testing:
ngrok tcp 5432
"password authentication failed"
Cause: Incorrect credentials or user doesn't exist
Fix:
- Verify username and password
- Check user exists:
SELECT * FROM pg_user WHERE usename = '<user>'; - Verify user can connect from external hosts (check
pg_hba.conf)
"permission denied for schema"
Cause: User lacks permissions on target schema
Fix: Grant USAGE and CREATE on the target schema — see docs for SQL.
"relation already exists" or schema conflicts
Cause: Table already exists with incompatible schema
Fix:
- Drop and recreate the table
- Use a different table name
- Ensure collection schema matches existing table
Materialization stuck in PENDING
Wait 30-60 seconds — this is normal during shard assignment. If still stuck:
flowctl logs --task <TENANT>/<PATH>/materialize-postgres --since 5m | jq 'select(.level == "error")'
SSL connection errors
Cause: SSL mode mismatch or certificate issues
Fix:
- Try
sslmode: "require"first - For AWS RDS, SSL is usually required — use
verify-caorverify-full - For self-signed certs, use
requiremode - See docs for full SSL configuration options
SSH tunnel connection failures
Cause: SSH configuration issues
Fix:
- Verify bastion is reachable:
ssh -p 22 user@bastion - Check private key format (must be OpenSSH format)
- Verify bastion can reach database:
nc -zv db-host 5432 - See SSH tunnel troubleshooting docs
Related Skills
connector-disable-enable— Pause/restart existing materializationsconnector-delete-recreate— Nuclear option for stuck materializationsestuary-logs— Deep log analysisestuary-catalog-status— Status checking
Berkas dalam skill ini
1Pertanyaan seputar skill materialize-postgres-create
Bagaimana cara install skill materialize-postgres-create di Claude Code?
Jalankan npx degit estuary/agent-skills/skills/materialize-postgres-create ~/.claude/skills/materialize-postgres-create. Claude Code memuat skill dari ~/.claude/skills (semua proyek) atau .claude/skills (satu proyek) dan menggunakan skill saat deskripsinya cocok dengan tugas.
Client mana saja yang bisa menggunakan skill materialize-postgres-create?
Client apa pun yang membaca format Agent Skills: Claude Code, Codex, Gemini CLI, dan claude.ai (unggah sebagai ZIP). Script dalam skill hanya berjalan di client yang mengizinkan eksekusi kode.
Apakah saya bisa menggunakan connection pooler seperti PgBouncer atau Supabase pooler dengan connector ini?
Tidak, connection pooler tidak didukung karena connector ini menggunakan temporary table pada level session dan prepared statements yang akan error jika menggunakan pooled connections.
Bagaimana cara menangani baris yang dihapus di tabel tujuan?
Secara default, baris yang dihapus akan tetap ada di tabel tujuan dengan tanda metadata. Anda harus mengaktifkan 'hard deletes' untuk menghapusnya secara fisik.
Bagaimana cara melakukan streaming data sebagai append-only event log alih-alih merge standar?
Anda dapat mengaktifkan 'delta updates' untuk beralih dari mode satu baris per key ke mode append-only.