This file provides guidance to Claude Code when working with this repository.
workflow-plugin-data-engineering is a gRPC external plugin for the GoCodeAlone/workflow engine. It provides data engineering capabilities: CDC (Change Data Capture), lakehouse table management, time-series ingestion, graph databases, data quality checks, and multi-tenancy.
# Build
go build -o workflow-plugin-data-engineering ./cmd/workflow-plugin-data-engineering
# Test
go test ./...
go test -race ./...
# Cross-build (example)
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build ./cmd/workflow-plugin-data-engineeringcmd/workflow-plugin-data-engineering/ — Plugin entry point (sdk.Serve)
internal/
plugin.go — PluginProvider, ModuleProvider, StepProvider, TriggerProvider, SchemaProvider
cdc/ — CDC provider interface + Bento/Debezium/DMS implementations
tenancy/ — Multi-tenant data isolation (schema/database strategies)
plugin.json — Plugin manifest (public, MIT)
.goreleaser.yml — GoReleaser v2 config (linux+darwin, amd64+arm64, CGO_ENABLED=0)
| Type | Description |
|---|---|
cdc.source |
CDC stream from Postgres/MySQL (provider: bento, debezium, dms) |
data.tenancy |
Multi-tenant schema/database isolation and provisioning |
step.cdc_start |
Start a CDC source stream |
step.cdc_stop |
Stop a CDC source stream |
step.cdc_status |
Get CDC stream status |
step.cdc_snapshot |
Trigger full table snapshot |
step.cdc_schema_history |
Query DDL change history for a table |
step.tenant_provision |
Provision a new tenant (create schema/database) |
step.tenant_deprovision |
Remove a tenant (drop schema/database) |
step.tenant_migrate |
Run schema migrations for a tenant |
trigger.cdc |
Fire workflow on CDC change events |
- Use
${ }expr syntax (not{{ }}Go templates) in workflow config examples. - All modules use
sync.RWMutexfor thread safety. - Config structs have both
jsonandyamlstruct tags. - Error messages include the module/step name.
- SDK import:
sdk "github.com/GoCodeAlone/workflow/plugin/external/sdk" - Handshake magic:
WORKFLOW_PLUGIN=workflow-external-plugin-v1 - CI uses ubuntu-latest runners with
RELEASES_TOKENsecret for private dependency access. CGO_ENABLED=0for all builds.
- Create
internal/<domain>/module.goimplementingsdk.ModuleInstance. - Add the type name to
ModuleTypes()ininternal/plugin.go. - Add a case to
CreateModule()ininternal/plugin.go. - Add schema to
ModuleSchemas()ininternal/plugin.go. - Add to
plugin.jsoncapabilities.
- Create the step struct implementing
sdk.StepInstanceininternal/<domain>/steps.go. - Add the type name to
StepTypes()ininternal/plugin.go. - Add a case to
CreateStep()ininternal/plugin.go. - Add to
plugin.jsoncapabilities.