fivetran/connector_sdk_tools

AI coding agent tools to build connectors using Fivetran Connector SDK

87

stars

53

commits

Python

primary language

Sep 11, 2026

updated

README

AI-assisted tools for building, testing, and deploying Fivetran Connector SDK connectors. Distributed as a native plugin/extension for Claude Code, Codex CLI, Gemini CLI and GitHub Copilot CLI.

Prerequisites

  • Python 3.10–3.14
  • A supported coding agent (Claude Code, Codex CLI, Gemini CLI, or GitHub Copilot CLI — see install matrix below)
  • Fivetran Connector SDKpip install fivetran-connector-sdk

Quick Start

The fastest path: install the SDK and let fivetran init set everything up.

pip install fivetran-connector-sdk
fivetran init

fivetran init scaffolds a new connector project and offers to configure a coding agent for you — detecting which of Claude Code, Codex CLI, Gemini CLI, or the standalone GitHub Copilot CLI you have installed and running the relevant plugin install command on your behalf. You can also skip the agent setup if you'd rather install it yourself; see the matrix below.

Install the plugin manually

If you skipped agent setup in fivetran init, or want to install the plugin into an existing project, pick your agent below. Each install uses the agent's own native install/update/uninstall — this repo does not own the lifecycle.

Claude Code

claude plugin marketplace add fivetran/connector_sdk_tools
claude plugin install fivetran-connector-sdk@fivetran-connector-sdk-ai

Or from inside a Claude Code session:

/plugin marketplace add fivetran/connector_sdk_tools
/plugin install fivetran-connector-sdk@fivetran-connector-sdk-ai

To update:

claude plugin update fivetran-connector-sdk@fivetran-connector-sdk-ai

See claude-code/README.md for the full tutorial.

Codex CLI

codex plugin marketplace add fivetran/connector_sdk_tools
codex plugin add fivetran-connector-sdk@fivetran-connector-sdk-ai

To update:

codex plugin marketplace upgrade fivetran-connector-sdk-ai

Plugins must also be enabled in ~/.codex/config.toml. See codex/README.md for the full setup.

Note: If your current version of Codex CLI does not support the add command, please upgrade to the latest version of Codex CLI.

Gemini CLI

gemini extensions install https://github.com/fivetran/connector_sdk_tools

To enable auto-updates on install, use the --auto-update flag:

gemini extensions install https://github.com/fivetran/connector_sdk_tools --auto-update

For non-interactive use (e.g., scripts):

gemini extensions install https://github.com/fivetran/connector_sdk_tools --consent --skip-settings

To update:

gemini extensions update fivetran-connector-sdk

GitHub Copilot CLI

copilot plugin marketplace add fivetran/connector_sdk_tools
copilot plugin install fivetran-connector-sdk@fivetran-connector-sdk-ai

To update:

copilot plugin update fivetran-connector-sdk@fivetran-connector-sdk-ai

See copilot/README.md for the full tutorial.

GitHub Copilot in IDEs

The plugin assets for GitHub Copilot are included in this repository under copilot/, and the plugin can be installed directly from source. However, installing it through the Connector SDK PyPI package or fivetran init is not supported for IDE-integrated Copilot extensions (VS Code, JetBrains, etc.) as those environments manage plugin installation from within the IDE itself.

To install from source in VS Code, follow the VS Code agent plugin install guide and point it at this repository. For other IDEs, consult their documentation on installing Copilot agent plugins.

Usage

Once installed, in your connector project directory:

Command (Claude Code / Gemini CLI / Copilot CLI)Codex CLIPurpose
/fivetran-connector-sdk:build-connector$build_connectorResearch an API and generate a new connector
/fivetran-connector-sdk:test-connector$test_connectorRun and validate an existing connector locally
/fivetran-connector-sdk:deploy-connector$deploy_connectorDeploy a connector to your Fivetran account
/fivetran-connector-sdk:evaluate-connector$evaluate_connectorCode review and quality report
/fivetran-connector-sdk:migrate-functions-connector$migrate_functions_connectorMigrate a Fivetran Functions connector to Connector SDK
/fivetran-connector-sdk:migrate-meltano-connector$migrate_meltano_connectorMigrate a Meltano extractor or Singer tap to Connector SDK
/fivetran-connector-sdk:migrate-airbyte-connector$migrate_airbyte_connectorMigrate an Airbyte source connector to Connector SDK

For code fixes or modifications, describe the problem in natural language — the agent routes to the connector-fixer subagent automatically.

Migration Skills

The plugin includes AI-guided migration skills for moving existing custom connector code to Fivetran Connector SDK. These are not deterministic one-shot conversion scripts; the agent reads the source connector, identifies the source runtime and data contract, ports the logic into a CSDK project, and validates the result against SDK patterns.

To use a migrator, open your coding agent in the directory where you want the migrated Connector SDK project to be created, then invoke the relevant slash command or Codex skill and point it at the existing connector source. Provide any useful local paths, example config files, catalogs, state files, schemas, tests, or docs. The agent should inspect the source first, explain the migration plan and any behavior decisions it needs, then create or update the CSDK files and run local validation where possible.

Keep real credentials out of the prompt. Use redacted example configs, placeholders, or local files that are already handled by your normal credential workflow. Migration skills may need to preserve behavior that depends on existing configuration shape, selected streams, primary keys, cursor fields, full-refresh behavior, delete semantics, or platform pipeline setup, so include those artifacts when they exist.

After migration, review the generated connector code and README, fill in local configuration values, run the plugin's test connector command, and compare the output against the old connector using a small known-good source account or fixture.

Functions Connector Migrator

Use /fivetran-connector-sdk:migrate-functions-connector or $migrate_functions_connector to port a Fivetran Functions connector to Connector SDK.

The Functions migrator supports AWS Lambda, Azure Functions, Google Cloud Functions, and standalone handler examples. It maps Function connector concepts to CSDK concepts:

Functions connectorConnector SDK
request.secretsconfiguration
request.statestate
returned schemaschema(configuration)
insert[table]op.upsert(...)
delete[table]op.delete(...) with primary-key fields only
top-level softDeleteop.truncate(...) for listed tables
returned stateop.checkpoint(...)
hasMoreinternal loop/checkpoint logic in update()

The migrator removes cloud-provider request/response wrappers, preserves table/state naming unless a rename is intentional, and documents any behavior changes in the migrated connector README.

Meltano Connector Migrator

Use /fivetran-connector-sdk:migrate-meltano-connector or $migrate_meltano_connector to port a Meltano extractor or Singer tap workflow to Connector SDK.

The Meltano migrator focuses on extractors/Singer taps. Meltano loaders, targets, dbt transforms, schedules, and environments are not ported into connector code; when those pipeline pieces map to Fivetran platform resources, the migrator documents them as follow-up work for fivetran-cli. It maps Meltano and Singer concepts to CSDK concepts:

Meltano / SingerConnector SDK
meltano.yml extractor settings / tap config.jsonconfiguration.json
Singer catalog streamsschema(configuration) table entries
key_properties / table-key-propertiesprimary_key
Singer JSON Schema propertiesoptional CSDK columns
Singer RECORD messagesop.upsert(...)
Singer STATE messages / bookmarksop.checkpoint(...)
replication key metadatacursor logic in update()

The migrator also requires an explicit decision for full-table streams: keep upsert-only snapshot behavior, or use op.truncate(...) before reloading a complete snapshot when the old pipeline relied on replacement semantics. For pipeline setup beyond connector code, install and use fivetran-cli (python3 -m pip install -U fivetran-cli) after the CSDK connector migration.

Airbyte Connector Migrator

Use /fivetran-connector-sdk:migrate-airbyte-connector or $migrate_airbyte_connector to port an Airbyte source connector to Connector SDK.

The Airbyte migrator focuses on source connectors. Airbyte destinations, normalization, workspace/job orchestration, Docker packaging, schedules, and platform metadata are not ported into connector code; when those pieces map to Fivetran platform resources, the migrator documents them as follow-up work for fivetran-cli. It maps Airbyte concepts to CSDK concepts:

AirbyteConnector SDK
spec.json / connectionSpecificationconfiguration.json
airbyte_secret fieldssensitive config placeholders entered securely
Airbyte catalog streamsschema(configuration) table entries
JSON Schema propertiesoptional CSDK columns
configured streamstables implemented by schema() and update()
RECORD messagesop.upsert(...)
STATE messagesop.checkpoint(...)
incremental sync modecursor logic in update()
full-refresh overwriteexplicit op.truncate(...) plus reload decision

The migrator also requires explicit decisions for append-only streams without primary keys, full-refresh overwrite behavior, and delete/CDC markers. It does not infer deletes from missing records unless the source stream is intentionally migrated as full-refresh overwrite.

Configuration

Reuse existing configuration.json values. For repairs, the agent first attempts supported read-only retrieval of missing production values; masked values cannot be reused. If values are still missing, try fivetran configuration in the connector directory to use its setup form. Without a form, use ordinary JSON and supply only the missing fields; adding a form is optional.

The agent can write supplied settings directly. Enter secrets through the form or local file entry, keep them out of chat, and keep configuration out of version control. See Configuration entry for the shared workflow.

Optional encrypted configuration

tools/enter_configuration.py remains available for local encryption, but is not required for ordinary JSON configuration. To use it or decrypt previously encrypted fields, install the tool dependencies:

python -m pip install -r "/path/to/plugin/tools/requirements.txt"

For Claude Code installed from the marketplace:

macOS/Linux:

python -m pip install -r "$HOME/.claude/plugins/cache/fivetran-connector-sdk-ai/fivetran-connector-sdk/<version>/tools/requirements.txt"

Windows PowerShell:

python -m pip install -r "$env:USERPROFILE\.claude\plugins\cache\fivetran-connector-sdk-ai\fivetran-connector-sdk\<version>\tools\requirements.txt"

The entry helper encrypts every field with an ENCRYPTED:v1:<key_id>:local-fernet: prefix. It creates a local key when absent at ~/.fivetran/csdk_master_secret (macOS/Linux) or %USERPROFILE%\.fivetran\csdk_master_secret (Windows). Only encrypted fields require that matching key; plaintext fields pass through unchanged. If encrypted values cannot be decrypted, preserve usable values and collect replacements through the configuration workflow above. Do not replace the key as a routine repair step.

This is local encryption at rest, not a production secret manager. Test and deploy helpers decrypt encrypted fields in memory and pass runtime configuration to the SDK via a named pipe. They do not upload the encryption envelopes; subsequent configuration handling belongs to the SDK and Fivetran platform.

Repository Layout

canonical/                          edit these (source of truth)
  sdk-reference.md
  workflows/{validator,generator,fixer}.md
  skills/{build,test,deploy}-connector/SKILL.md
  tools/{enter_configuration,run_connector,deploy_connector}.py
  hooks/log-skill-use.sh

claude-code/                        Claude Code plugin (mostly generated)
  .claude-plugin/plugin.json
  CLAUDE.md
  agents/connector-{validator,generator,fixer}.md
  skills/{build,test,deploy}-connector/SKILL.md
  tools/, sdk-reference.md

codex/                              Codex CLI plugin (mostly generated)
  .codex-plugin/plugin.json
  AGENTS.md
  hooks.json
  skills/{build,test,deploy}-connector/SKILL.md
  workflows/{validator,generator,fixer}.md
  tools/, sdk-reference.md

copilot/                            GitHub Copilot CLI plugin (mostly generated)
  AGENTS.md
  agents/connector-{validator,generator,fixer}.md
  skills/{build,test,deploy,evaluate}-connector/SKILL.md
  commands/{build,test,deploy,evaluate}-connector.md
  tools/, sdk-reference.md

gemini-extension.json               Gemini CLI extension manifest (root-only requirement)
GEMINI.md                           Gemini context file
commands/{build,test,deploy}-connector.toml   Gemini slash commands
agents/connector-{validator,generator,fixer}.md   Gemini agents (generated)
skills/{build,test,deploy}-connector/SKILL.md     Gemini skills (generated)
tools/                              Gemini tools (generated copy of canonical/tools/)

.claude-plugin/marketplace.json     Claude Code marketplace pointing to ./claude-code
.agents/plugins/marketplace.json    Codex marketplace pointing to ./codex
.github/plugin/marketplace.json     Copilot CLI marketplace pointing to ./copilot

Development

What to edit

Only edit files under canonical/ and the agent-specific static integration files listed below. Everything else is regenerated.

Editing...Run afterAffects
canonical/sdk-reference.mdbash scripts/sync-plugins.shall four agents
canonical/workflows/*.mdbash scripts/sync-plugins.shClaude agents, Codex workflows, Gemini agents, Copilot agents
canonical/skills/*/SKILL.mdbash scripts/sync-plugins.shall four agents
canonical/tools/*bash scripts/sync-plugins.shall four agents
canonical/hooks/log-skill-use.shbash scripts/sync-plugins.shClaude Code, Codex, Gemini
README.md(no sync needed)root docs
GEMINI.md, gemini-extension.json, commands/*.toml, hooks/hooks.json(no sync needed)Gemini only
claude-code/CLAUDE.md, claude-code/README.md, claude-code/commands/*.md, claude-code/hooks/hooks.json(no sync needed)Claude Code only
codex/AGENTS.md, codex/README.md, codex/.codex-plugin/plugin.json, codex/hooks.json(no sync needed)Codex only
copilot/AGENTS.md, copilot/README.md, copilot/commands/*.md(no sync needed)Copilot CLI only

Generated files have a <!-- GENERATED FILE — DO NOT EDIT --> banner at the top. Edits to them will be overwritten on the next sync.

Sync workflow

After editing a canonical file:

bash scripts/sync-plugins.sh
git add -A
git commit

The sync script fans canonical content out into each per-agent tree, prepending the agent's required frontmatter where applicable (e.g., Claude subagent frontmatter, Gemini agent frontmatter). Running it again on an already-synced repo produces no diff — it is safe to re-run.

Bumping the plugin version

The version in all plugin manifests follows the format YYYY.M.D.N (UTC date, no zero-padding, plus a per-day iteration counter). Version updates are opt-in: pass --bump when you want to tag a new release:

bash scripts/sync-plugins.sh --bump
git add -A
git commit

Without --bump the manifests are left untouched, which keeps routine syncs and the pre-commit hook idempotent — re-running the script never creates a spurious version diff.

Pre-commit hook

A hook in .githooks/pre-commit runs sync-plugins.sh (without --bump) and fails the commit if any generated file would change — i.e., if you edited a canonical file but forgot to re-sync.

Install once per clone:

git config core.hooksPath .githooks

Telemetry

This plugin collects anonymous usage data to help improve the product. Each time a skill is invoked, a small event is sent containing: the skill name, plugin name and version, model, status (started, ok, or fail), session ID, and timestamp. No prompts, code, file contents, or personal information are ever collected.

To opt out, set the following environment variable in your shell profile (~/.zshrc, ~/.bashrc, etc.):

export FIVETRAN_TELEMETRY_DISABLED=1

License

MIT

Contributors

fivetran/connector_sdk_tools

AI coding agent tools to build connectors using Fivetran Connector SDK

87

stars

53

commits

Python

primary language

Sep 11, 2026

updated

README

AI-assisted tools for building, testing, and deploying Fivetran Connector SDK connectors. Distributed as a native plugin/extension for Claude Code, Codex CLI, Gemini CLI and GitHub Copilot CLI.

Prerequisites

  • Python 3.10–3.14
  • A supported coding agent (Claude Code, Codex CLI, Gemini CLI, or GitHub Copilot CLI — see install matrix below)
  • Fivetran Connector SDKpip install fivetran-connector-sdk

Quick Start

The fastest path: install the SDK and let fivetran init set everything up.

pip install fivetran-connector-sdk
fivetran init

fivetran init scaffolds a new connector project and offers to configure a coding agent for you — detecting which of Claude Code, Codex CLI, Gemini CLI, or the standalone GitHub Copilot CLI you have installed and running the relevant plugin install command on your behalf. You can also skip the agent setup if you'd rather install it yourself; see the matrix below.

Install the plugin manually

If you skipped agent setup in fivetran init, or want to install the plugin into an existing project, pick your agent below. Each install uses the agent's own native install/update/uninstall — this repo does not own the lifecycle.

Claude Code

claude plugin marketplace add fivetran/connector_sdk_tools
claude plugin install fivetran-connector-sdk@fivetran-connector-sdk-ai

Or from inside a Claude Code session:

/plugin marketplace add fivetran/connector_sdk_tools
/plugin install fivetran-connector-sdk@fivetran-connector-sdk-ai

To update:

claude plugin update fivetran-connector-sdk@fivetran-connector-sdk-ai

See claude-code/README.md for the full tutorial.

Codex CLI

codex plugin marketplace add fivetran/connector_sdk_tools
codex plugin add fivetran-connector-sdk@fivetran-connector-sdk-ai

To update:

codex plugin marketplace upgrade fivetran-connector-sdk-ai

Plugins must also be enabled in ~/.codex/config.toml. See codex/README.md for the full setup.

Note: If your current version of Codex CLI does not support the add command, please upgrade to the latest version of Codex CLI.

Gemini CLI

gemini extensions install https://github.com/fivetran/connector_sdk_tools

To enable auto-updates on install, use the --auto-update flag:

gemini extensions install https://github.com/fivetran/connector_sdk_tools --auto-update

For non-interactive use (e.g., scripts):

gemini extensions install https://github.com/fivetran/connector_sdk_tools --consent --skip-settings

To update:

gemini extensions update fivetran-connector-sdk

GitHub Copilot CLI

copilot plugin marketplace add fivetran/connector_sdk_tools
copilot plugin install fivetran-connector-sdk@fivetran-connector-sdk-ai

To update:

copilot plugin update fivetran-connector-sdk@fivetran-connector-sdk-ai

See copilot/README.md for the full tutorial.

GitHub Copilot in IDEs

The plugin assets for GitHub Copilot are included in this repository under copilot/, and the plugin can be installed directly from source. However, installing it through the Connector SDK PyPI package or fivetran init is not supported for IDE-integrated Copilot extensions (VS Code, JetBrains, etc.) as those environments manage plugin installation from within the IDE itself.

To install from source in VS Code, follow the VS Code agent plugin install guide and point it at this repository. For other IDEs, consult their documentation on installing Copilot agent plugins.

Usage

Once installed, in your connector project directory:

Command (Claude Code / Gemini CLI / Copilot CLI)Codex CLIPurpose
/fivetran-connector-sdk:build-connector$build_connectorResearch an API and generate a new connector
/fivetran-connector-sdk:test-connector$test_connectorRun and validate an existing connector locally
/fivetran-connector-sdk:deploy-connector$deploy_connectorDeploy a connector to your Fivetran account
/fivetran-connector-sdk:evaluate-connector$evaluate_connectorCode review and quality report
/fivetran-connector-sdk:migrate-functions-connector$migrate_functions_connectorMigrate a Fivetran Functions connector to Connector SDK
/fivetran-connector-sdk:migrate-meltano-connector$migrate_meltano_connectorMigrate a Meltano extractor or Singer tap to Connector SDK
/fivetran-connector-sdk:migrate-airbyte-connector$migrate_airbyte_connectorMigrate an Airbyte source connector to Connector SDK

For code fixes or modifications, describe the problem in natural language — the agent routes to the connector-fixer subagent automatically.

Migration Skills

The plugin includes AI-guided migration skills for moving existing custom connector code to Fivetran Connector SDK. These are not deterministic one-shot conversion scripts; the agent reads the source connector, identifies the source runtime and data contract, ports the logic into a CSDK project, and validates the result against SDK patterns.

To use a migrator, open your coding agent in the directory where you want the migrated Connector SDK project to be created, then invoke the relevant slash command or Codex skill and point it at the existing connector source. Provide any useful local paths, example config files, catalogs, state files, schemas, tests, or docs. The agent should inspect the source first, explain the migration plan and any behavior decisions it needs, then create or update the CSDK files and run local validation where possible.

Keep real credentials out of the prompt. Use redacted example configs, placeholders, or local files that are already handled by your normal credential workflow. Migration skills may need to preserve behavior that depends on existing configuration shape, selected streams, primary keys, cursor fields, full-refresh behavior, delete semantics, or platform pipeline setup, so include those artifacts when they exist.

After migration, review the generated connector code and README, fill in local configuration values, run the plugin's test connector command, and compare the output against the old connector using a small known-good source account or fixture.

Functions Connector Migrator

Use /fivetran-connector-sdk:migrate-functions-connector or $migrate_functions_connector to port a Fivetran Functions connector to Connector SDK.

The Functions migrator supports AWS Lambda, Azure Functions, Google Cloud Functions, and standalone handler examples. It maps Function connector concepts to CSDK concepts:

Functions connectorConnector SDK
request.secretsconfiguration
request.statestate
returned schemaschema(configuration)
insert[table]op.upsert(...)
delete[table]op.delete(...) with primary-key fields only
top-level softDeleteop.truncate(...) for listed tables
returned stateop.checkpoint(...)
hasMoreinternal loop/checkpoint logic in update()

The migrator removes cloud-provider request/response wrappers, preserves table/state naming unless a rename is intentional, and documents any behavior changes in the migrated connector README.

Meltano Connector Migrator

Use /fivetran-connector-sdk:migrate-meltano-connector or $migrate_meltano_connector to port a Meltano extractor or Singer tap workflow to Connector SDK.

The Meltano migrator focuses on extractors/Singer taps. Meltano loaders, targets, dbt transforms, schedules, and environments are not ported into connector code; when those pipeline pieces map to Fivetran platform resources, the migrator documents them as follow-up work for fivetran-cli. It maps Meltano and Singer concepts to CSDK concepts:

Meltano / SingerConnector SDK
meltano.yml extractor settings / tap config.jsonconfiguration.json
Singer catalog streamsschema(configuration) table entries
key_properties / table-key-propertiesprimary_key
Singer JSON Schema propertiesoptional CSDK columns
Singer RECORD messagesop.upsert(...)
Singer STATE messages / bookmarksop.checkpoint(...)
replication key metadatacursor logic in update()

The migrator also requires an explicit decision for full-table streams: keep upsert-only snapshot behavior, or use op.truncate(...) before reloading a complete snapshot when the old pipeline relied on replacement semantics. For pipeline setup beyond connector code, install and use fivetran-cli (python3 -m pip install -U fivetran-cli) after the CSDK connector migration.

Airbyte Connector Migrator

Use /fivetran-connector-sdk:migrate-airbyte-connector or $migrate_airbyte_connector to port an Airbyte source connector to Connector SDK.

The Airbyte migrator focuses on source connectors. Airbyte destinations, normalization, workspace/job orchestration, Docker packaging, schedules, and platform metadata are not ported into connector code; when those pieces map to Fivetran platform resources, the migrator documents them as follow-up work for fivetran-cli. It maps Airbyte concepts to CSDK concepts:

AirbyteConnector SDK
spec.json / connectionSpecificationconfiguration.json
airbyte_secret fieldssensitive config placeholders entered securely
Airbyte catalog streamsschema(configuration) table entries
JSON Schema propertiesoptional CSDK columns
configured streamstables implemented by schema() and update()
RECORD messagesop.upsert(...)
STATE messagesop.checkpoint(...)
incremental sync modecursor logic in update()
full-refresh overwriteexplicit op.truncate(...) plus reload decision

The migrator also requires explicit decisions for append-only streams without primary keys, full-refresh overwrite behavior, and delete/CDC markers. It does not infer deletes from missing records unless the source stream is intentionally migrated as full-refresh overwrite.

Configuration

Reuse existing configuration.json values. For repairs, the agent first attempts supported read-only retrieval of missing production values; masked values cannot be reused. If values are still missing, try fivetran configuration in the connector directory to use its setup form. Without a form, use ordinary JSON and supply only the missing fields; adding a form is optional.

The agent can write supplied settings directly. Enter secrets through the form or local file entry, keep them out of chat, and keep configuration out of version control. See Configuration entry for the shared workflow.

Optional encrypted configuration

tools/enter_configuration.py remains available for local encryption, but is not required for ordinary JSON configuration. To use it or decrypt previously encrypted fields, install the tool dependencies:

python -m pip install -r "/path/to/plugin/tools/requirements.txt"

For Claude Code installed from the marketplace:

macOS/Linux:

python -m pip install -r "$HOME/.claude/plugins/cache/fivetran-connector-sdk-ai/fivetran-connector-sdk/<version>/tools/requirements.txt"

Windows PowerShell:

python -m pip install -r "$env:USERPROFILE\.claude\plugins\cache\fivetran-connector-sdk-ai\fivetran-connector-sdk\<version>\tools\requirements.txt"

The entry helper encrypts every field with an ENCRYPTED:v1:<key_id>:local-fernet: prefix. It creates a local key when absent at ~/.fivetran/csdk_master_secret (macOS/Linux) or %USERPROFILE%\.fivetran\csdk_master_secret (Windows). Only encrypted fields require that matching key; plaintext fields pass through unchanged. If encrypted values cannot be decrypted, preserve usable values and collect replacements through the configuration workflow above. Do not replace the key as a routine repair step.

This is local encryption at rest, not a production secret manager. Test and deploy helpers decrypt encrypted fields in memory and pass runtime configuration to the SDK via a named pipe. They do not upload the encryption envelopes; subsequent configuration handling belongs to the SDK and Fivetran platform.

Repository Layout

canonical/                          edit these (source of truth)
  sdk-reference.md
  workflows/{validator,generator,fixer}.md
  skills/{build,test,deploy}-connector/SKILL.md
  tools/{enter_configuration,run_connector,deploy_connector}.py
  hooks/log-skill-use.sh

claude-code/                        Claude Code plugin (mostly generated)
  .claude-plugin/plugin.json
  CLAUDE.md
  agents/connector-{validator,generator,fixer}.md
  skills/{build,test,deploy}-connector/SKILL.md
  tools/, sdk-reference.md

codex/                              Codex CLI plugin (mostly generated)
  .codex-plugin/plugin.json
  AGENTS.md
  hooks.json
  skills/{build,test,deploy}-connector/SKILL.md
  workflows/{validator,generator,fixer}.md
  tools/, sdk-reference.md

copilot/                            GitHub Copilot CLI plugin (mostly generated)
  AGENTS.md
  agents/connector-{validator,generator,fixer}.md
  skills/{build,test,deploy,evaluate}-connector/SKILL.md
  commands/{build,test,deploy,evaluate}-connector.md
  tools/, sdk-reference.md

gemini-extension.json               Gemini CLI extension manifest (root-only requirement)
GEMINI.md                           Gemini context file
commands/{build,test,deploy}-connector.toml   Gemini slash commands
agents/connector-{validator,generator,fixer}.md   Gemini agents (generated)
skills/{build,test,deploy}-connector/SKILL.md     Gemini skills (generated)
tools/                              Gemini tools (generated copy of canonical/tools/)

.claude-plugin/marketplace.json     Claude Code marketplace pointing to ./claude-code
.agents/plugins/marketplace.json    Codex marketplace pointing to ./codex
.github/plugin/marketplace.json     Copilot CLI marketplace pointing to ./copilot

Development

What to edit

Only edit files under canonical/ and the agent-specific static integration files listed below. Everything else is regenerated.

Editing...Run afterAffects
canonical/sdk-reference.mdbash scripts/sync-plugins.shall four agents
canonical/workflows/*.mdbash scripts/sync-plugins.shClaude agents, Codex workflows, Gemini agents, Copilot agents
canonical/skills/*/SKILL.mdbash scripts/sync-plugins.shall four agents
canonical/tools/*bash scripts/sync-plugins.shall four agents
canonical/hooks/log-skill-use.shbash scripts/sync-plugins.shClaude Code, Codex, Gemini
README.md(no sync needed)root docs
GEMINI.md, gemini-extension.json, commands/*.toml, hooks/hooks.json(no sync needed)Gemini only
claude-code/CLAUDE.md, claude-code/README.md, claude-code/commands/*.md, claude-code/hooks/hooks.json(no sync needed)Claude Code only
codex/AGENTS.md, codex/README.md, codex/.codex-plugin/plugin.json, codex/hooks.json(no sync needed)Codex only
copilot/AGENTS.md, copilot/README.md, copilot/commands/*.md(no sync needed)Copilot CLI only

Generated files have a <!-- GENERATED FILE — DO NOT EDIT --> banner at the top. Edits to them will be overwritten on the next sync.

Sync workflow

After editing a canonical file:

bash scripts/sync-plugins.sh
git add -A
git commit

The sync script fans canonical content out into each per-agent tree, prepending the agent's required frontmatter where applicable (e.g., Claude subagent frontmatter, Gemini agent frontmatter). Running it again on an already-synced repo produces no diff — it is safe to re-run.

Bumping the plugin version

The version in all plugin manifests follows the format YYYY.M.D.N (UTC date, no zero-padding, plus a per-day iteration counter). Version updates are opt-in: pass --bump when you want to tag a new release:

bash scripts/sync-plugins.sh --bump
git add -A
git commit

Without --bump the manifests are left untouched, which keeps routine syncs and the pre-commit hook idempotent — re-running the script never creates a spurious version diff.

Pre-commit hook

A hook in .githooks/pre-commit runs sync-plugins.sh (without --bump) and fails the commit if any generated file would change — i.e., if you edited a canonical file but forgot to re-sync.

Install once per clone:

git config core.hooksPath .githooks

Telemetry

This plugin collects anonymous usage data to help improve the product. Each time a skill is invoked, a small event is sent containing: the skill name, plugin name and version, model, status (started, ok, or fail), session ID, and timestamp. No prompts, code, file contents, or personal information are ever collected.

To opt out, set the following environment variable in your shell profile (~/.zshrc, ~/.bashrc, etc.):

export FIVETRAN_TELEMETRY_DISABLED=1

License

MIT

Contributors

Languages

Python

93.2%

Shell

6.8%