Io Connectors
Kilo-Org/kilo-marketplace
Guides development and usage of I/O connectors in Apache Beam.
Agent skill
by GoogleCloudPlatform in GoogleCloudPlatform/DataflowTemplates
Skill for adding data type integ tests for new source by provided datatypemappingmatrix.
$ npx skills add GoogleCloudPlatform/DataflowTemplates --skill add-source-datatype-integ-test -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install GoogleCloudPlatform/DataflowTemplates add-source-datatype-integ-test --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/GoogleCloudPlatform/DataflowTemplates.git skills-src && mkdir -p .claude/skills && cp -r skills-src/v2/spanner-common/.agents/skills/add-source-datatype-integ-test .claude/skills/add-source-datatype-integ-test && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "add-source-datatype-integ-test" agent skill from https://github.com/GoogleCloudPlatform/DataflowTemplates/tree/main/v2/spanner-common/.agents/skills/add-source-datatype-integ-test into .claude/skills/add-source-datatype-integ-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-source-datatype-integ-test", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/GoogleCloudPlatform/DataflowTemplates/tree/main/v2/spanner-common/.agents/skills/add-source-datatype-integ-testType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add GoogleCloudPlatform/DataflowTemplates --skill add-source-datatype-integ-test -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install GoogleCloudPlatform/DataflowTemplates add-source-datatype-integ-test --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GoogleCloudPlatform/DataflowTemplates.git skills-src && mkdir -p .agents/skills && cp -r skills-src/v2/spanner-common/.agents/skills/add-source-datatype-integ-test .agents/skills/add-source-datatype-integ-test && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "add-source-datatype-integ-test" agent skill from https://github.com/GoogleCloudPlatform/DataflowTemplates/tree/main/v2/spanner-common/.agents/skills/add-source-datatype-integ-test into .agents/skills/add-source-datatype-integ-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-source-datatype-integ-test", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GoogleCloudPlatform/DataflowTemplates --skill add-source-datatype-integ-test -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install GoogleCloudPlatform/DataflowTemplates add-source-datatype-integ-test --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GoogleCloudPlatform/DataflowTemplates.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/v2/spanner-common/.agents/skills/add-source-datatype-integ-test .cursor/skills/add-source-datatype-integ-test && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "add-source-datatype-integ-test" agent skill from https://github.com/GoogleCloudPlatform/DataflowTemplates/tree/main/v2/spanner-common/.agents/skills/add-source-datatype-integ-test into .cursor/skills/add-source-datatype-integ-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-source-datatype-integ-test", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/GoogleCloudPlatform/DataflowTemplates.git --path v2/spanner-common/.agents/skills/add-source-datatype-integ-test--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add GoogleCloudPlatform/DataflowTemplates --skill add-source-datatype-integ-test -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install GoogleCloudPlatform/DataflowTemplates add-source-datatype-integ-test --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GoogleCloudPlatform/DataflowTemplates.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/v2/spanner-common/.agents/skills/add-source-datatype-integ-test .gemini/skills/add-source-datatype-integ-test && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "add-source-datatype-integ-test" agent skill from https://github.com/GoogleCloudPlatform/DataflowTemplates/tree/main/v2/spanner-common/.agents/skills/add-source-datatype-integ-test into .gemini/skills/add-source-datatype-integ-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-source-datatype-integ-test", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install GoogleCloudPlatform/DataflowTemplates add-source-datatype-integ-testInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add GoogleCloudPlatform/DataflowTemplates --skill add-source-datatype-integ-test -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/GoogleCloudPlatform/DataflowTemplates.git skills-src && mkdir -p .github/skills && cp -r skills-src/v2/spanner-common/.agents/skills/add-source-datatype-integ-test .github/skills/add-source-datatype-integ-test && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "add-source-datatype-integ-test" agent skill from https://github.com/GoogleCloudPlatform/DataflowTemplates/tree/main/v2/spanner-common/.agents/skills/add-source-datatype-integ-test into .github/skills/add-source-datatype-integ-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-source-datatype-integ-test", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add GoogleCloudPlatform/DataflowTemplates --skill add-source-datatype-integ-test -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install GoogleCloudPlatform/DataflowTemplates add-source-datatype-integ-test --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/GoogleCloudPlatform/DataflowTemplates.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/v2/spanner-common/.agents/skills/add-source-datatype-integ-test .opencode/skills/add-source-datatype-integ-test && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "add-source-datatype-integ-test" agent skill from https://github.com/GoogleCloudPlatform/DataflowTemplates/tree/main/v2/spanner-common/.agents/skills/add-source-datatype-integ-test into .opencode/skills/add-source-datatype-integ-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-source-datatype-integ-test", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
add-source-datatype-integ-testSkill for adding data type integ tests for new source by provided datatypemappingmatrix.
Add Source Datatype Integ Test is an agent skill from GoogleCloudPlatform/DataflowTemplates. Skill for adding data type integ tests for new source by provided datatypemappingmatrix.
Its SKILL.md is about 7.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA. It works with Google Cloud and Google BigQuery. The repository describes itself as: Cloud Dataflow Google-provided templates for solving in-Cloud data tasks. The licence is Apache-2.0.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8af0a15. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
mvngcloudFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
raw.githubusercontent.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
TEST_DB_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Add Source Datatype Integ Test loads about 7.8k tokens when it runs. Until then it costs about 30 tokens; SKILL.md has 3,960 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
heck the workspace root directory for a `.env` file named `testing_execution.env`.Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from GoogleCloudPlatform/DataflowTemplates at commit 8af0a15, republished under its Apache-2.0 licence (© GoogleCloudPlatform). 3,960 words, ~7,848 tokens.
.claude/skills/add-source-datatype-integ-test/SKILL.md (or your agent's skills folder).This skill instructs an AI Coding Agent to design and synthesize an exhaustive, dialect-wide integration test suite for Dataflow Templates for a new database source dialect from first principles, without being biased by a reference database test.
Given a Scenario ID, parse its configuration from manifest.yaml, gather structural class/helper context from a reference test (without copying its columns/assertions), read provided datatype mapping matrix and compile a comprehensive list of all native datatypes supported by the target database dialect (including recommended and alternative Spanner mappings), generate native source SQL schemas containing CREATE and INSERT statements with type-specific formats, write a complete Java integration test from scratch with dynamic assertions, compile-verify, and self-heal.
Before you begin parsing or executing any core steps, you MUST verify the following inputs and dependencies exist:
.env file named testing_execution.env..csv mapping file against the canonical schema.read_url_content tool to fetch the canonical reference: https://raw.githubusercontent.com/GoogleCloudPlatform/spanner-migration-tool/master/.agents/skills/source_research_helper/sampleOutput/mysql_datatype_mapping_matrix.csvReference Datatype Mapping Matrix File Path.If ANY of the prompt inputs are missing, or if the testing_execution.env file does not exist, or if the provided mapping matrix is missing any canonical headers, you MUST HALT EXECUTION IMMEDIATELY. Do not attempt to guess, hallucinate paths, or proceed. Output a direct question asking for the missing inputs, missing file, or reporting the explicitly missing columns.
The agent must look for a testing_execution.env file in the workspace root with the following schema:
REMOTE_WORKSPACE_PATH=
REMOTE_EXEC_TEMPLATE=
REMOTE_SYNC_TEMPLATE=
TEST_PROJECT=
TEST_REGION=
TEST_SPANNER_INSTANCE=
TEST_STAGE_BUCKET=
TEST_ARTIFACT_BUCKET=
TEST_HOST_IP=
TEST_PRIVATE_CONNECTIVITY=
TEST_DB_USER=
TEST_DB_PASSWORD=To prevent cluttering the root templates package, you MUST place all generated files into a strictly nested directory structure matching the lowercased name of the target database.
src/test/java/com/google/cloud/teleport/v2/templates/{target_db_name_lowercase}/{TestClassName}.javapackage com.google.cloud.teleport.v2.templates.{target_db_name_lowercase};src/test/resources/{target_db_name_lowercase}/{TestClassName}/[!CRITICAL] Production Code Priority Rule (Source Over Test): This is a global constraint that applies to all phases of this skill (context discovery, type mapping, code generation, compilation, execution, and debugging). If an integration test fails during compilation or execution, you MUST first assume that the bug lies in the production template source code (e.g., dialect adapters, DML generators, schema mappers, or exception classifiers) rather than the test harness or DDL.
- Systematic Investigation: You must thoroughly analyze the template's core Java engine to identify if it is failing to support the target database's dialect behavior correctly.
- No Test Hacking: You are strictly forbidden from "hacking", disabling, or loosening a test assertion or DDL constraint to bypass a failure, unless the production template is proven to be behaving 100% correctly and the mismatch is purely due to database-specific padding/formatting differences.
- Documentation: Every change to the production template must be documented in your final report with a root-cause explanation, and any test adaptation must be explicitly justified in the code with JavaDocs.
manifest.yaml scenario registry file in their prompt. Open that file.Scenario ID.context: Fully qualified name of the reference test class (e.g., com.google.cloud.teleport.v2.templates.<ReferenceSourceDialect>DataTypesIT).template: Path to the template module (e.g., v2/<template_path>).spanner_dialect: Target Spanner database dialect (GOOGLE_STANDARD_SQL or POSTGRESQL). If not explicitly defined, default to GOOGLE_STANDARD_SQL.mapping.json or mapping.yaml).template path and the context class inheritance chain (scouted in Step 2):<SourceDbToSpannerITBaseClass>) or the template path contains a forward template name (e.g., sourcedb-to-spanner or datastream-to-spanner): Forward Migration (Source Database -> Spanner).<SpannerToSourceDbITBaseClass>) or the template path contains a reverse template name (e.g., spanner-to-sourcedb): Reverse Migration (Spanner -> Target Database).To build a compilable integration test, you must analyze the structural patterns of the template test suite.
[!IMPORTANT] Strict Scouting Constraint: Open the reference class, its parent classes, and configuration base classes strictly to discover:
- The class inheritance chain (e.g., extends
<BaseITClass>).- Setup helper APIs (e.g.,
setUp<SourceDialect>ResourceManager(),setUpSpannerResourceManager()).- The pipeline launching structure (e.g.,
launchDataflowJob(...),pipelineOperator()).You MUST NOT copy the list of tables, columns, data types, test values, or assertions defined in the reference class. The new test suite must be built independently from first principles.
extends <SuperClass> signature.Instead of researching the database dialect from scratch, this skill assumes a complete, human-approved data type mapping matrix has been provided in CSV format (the "Ground Truth"). Your task is to ingest this mapping and use it to strictly drive all subsequent schema and code generation.
[!IMPORTANT] Mandatory Input Rule: You MUST receive the exact path to the initial mapping
.csvfile from the user or Orchestrator in your prompt. You MUST NOT perform independent web research, nor should you invent types that are not listed in this CSV file. Treat this file as the absolute, exhaustive dictionary of what must be tested.
.csv file. "Source Database Type / Alias" column to identify the native source database type.spanner_dialect determined in Step 1 (GOOGLE_STANDARD_SQL vs POSTGRESQL). "Spanner GoogleSQL Default Datatype", "Spanner GoogleSQL Alternative Datatypes", "Spanner PostgreSQL Default Datatype", "Spanner PostgreSQL Alternative Datatypes")."Is Source Datatype Supported as PK?" column in the matrix. If supported (Yes or similar), you MUST apply the specific mapped type provided in the "Spanner GoogleSQL Default Datatype If Column is PK" or "Spanner PostgreSQL Default Datatype If Column is PK" column depending on the target dialect."Datastream Support Status" is marked as unsupported (or equivalent phrasing like 'No' or 'Unsupported').For every discovered datatype and every identified type alias, you must generate schemas covering the following scenarios:
{type_or_alias}_table, Target Column: {type_or_alias}_col.{type_or_alias}_to_{clean_target_type}_table, Target Column: {type_or_alias}_to_{clean_target_type}_col.{type_or_alias}_pk_table, Target Column: {type_or_alias}_pk_col as the primary key.Is the datatype supported as a PK in the source? as Yes. Check the If Column is a PK column for the target dialect, as you might need to use a different Spanner type (e.g., BYTES or restricted STRING) when the key is indexed.FLOAT, DOUBLE, REAL, NUMERIC, DECIMAL with fractional scales) from Scenario C (is_pk_feasible = False). During range queries, SMT's range splitter casts partition boundaries to Long integers, truncating the fractional bounds and causing extreme boundary float rows to be silently dropped during migration.[!IMPORTANT] Case Preservation & Identifier Quoting: To ensure generated tests and schemas run successfully, you must align and preserve the exact character casing of all table names, column names, keys, and constraints between the target source database and the target Spanner database.
- Check Case Preservation Requirement:
- First check if the reference schema, target Spanner schema, or target test uses any uppercase or mixed-case identifiers.
- Check if the target database folds unquoted identifiers to a different case by default (e.g., some database folds unquoted names to lowercase, or another database folds to uppercase).
- If the target database folds unquoted identifiers, AND there are mixed-case/uppercase names, case preservation is REQUIRED.
- If all identifiers are already completely lowercase, case preservation is NOT required (and you should NOT wrap them in redundant quotes).
- Apply Quoting if Case Preservation is Required:
- Wrap all identifiers (table names, column names, keys, etc.) in dialect-appropriate quotes in the generated DDL statements.
- Do Not Alter Original Intent: You MUST NOT alter the original casing of the reference schema identifiers (e.g., converting mixed-case names to all-caps or all-lowercase) just to trivially bypass the database's folding rules. You MUST apply quotes to preserve the original intended mixed-casing exactly as it was provided in the reference.
- Casing Parity Between Target Source and Spanner:
- In some cases (such as data type ITs), target schema table names might differ from the reference test schema.
- However, whatever names are used for the target source schema, their exact character case MUST be identical in the target Spanner database schema DDL.
If the migration direction is Forward:
Target Source Schema DDL ({target_source_dialect}-schema.sql):
CREATE TABLE statements for Scenarios A, B, C, D, and E.Edge Cases for Smoke Test column in the CSV mapping for this datatype. Generate an INSERT statement for every single parsed value.INSERT statements use any special formats required by the source type (e.g., hex strings/literals for binary, escaped strings, date/time string formats, array literals, JSON strings).Target Spanner Schema DDL ({target_source_dialect}-{spanner_dialect}-spanner-schema.sql):
INSERT or population statements in the Spanner schema DDL.GOOGLE_STANDARD_SQL dialect, do NOT use double quotes (") or single quotes (') to quote identifiers. Only use backticks (`) if escaping is required. Use double quotes if targeting POSTGRESQL Spanner dialect.If the migration direction is Reverse:
{target_source_dialect}-{spanner_dialect}-spanner-schema.sql):CREATE TABLE DDL statements matching Scenarios A, B, C, D, and E structures.INSERT or population statements in this file. (Data population will be handled in Java using Spanner mutations).GOOGLE_STANDARD_SQL dialect, do NOT use double quotes (") or single quotes (') to quote identifiers. Only use backticks (`) if escaping is required. Use double quotes if targeting POSTGRESQL Spanner dialect.{target_source_dialect}-schema.sql):CREATE TABLE statements for Scenarios A, B, C, D, and E.INSERT INTO statements in this file.Before proceeding to Step 5, the agent MUST perform a completeness self-audit:
{target_source_dialect}-schema.sql tables against the approved Logical Type Mapping Table from Step 3.To provision infrastructure resources for integration tests, you MUST inherit the ResourceManager architectural pattern used by the reference_test_class. If the reference test delegates setup to a method in a base class (e.g., an ITBase.java class), you MUST declare a matching method for your target database in that same base class if it doesn't already exist.
ResourceManager imported by the reference test's setup method. org.apache.beam.it), you MUST find and use the equivalent simple testcontainers Resource Manager from the Beam IT SDK for your target source.it/ codebase, you MUST search the local it/ codebase for the equivalent cloud Resource Manager for your target source.ResourceManager class using the pattern above, inject the corresponding setup method directly into the Integration Test Base Class, and be sure to update any of its helper methods (such as dialect or driver locators) to support it.ResourceManager class from scratch:AbstractJDBCResourceManager.java or an existing dialect's ResourceManager from the it/ folder as a blueprint, extending AbstractJDBCResourceManager. Write the class to the appropriate test utility directory.SpannerResourceManager.java from the it/ folder as your architectural blueprint for establishing connection URIs, teardown lifecycles, and test containers.Write the concrete Java integration test class from scratch under the target package/directory:
/* GENERATED BY: Test Automation Skill */.ResourceManager class and its setup method.setUp<SourceDialect>ResourceManager() for the target source dialect).spanner_dialect (e.g. search for setUpPGDialectSpannerResourceManager if Spanner dialect is POSTGRESQL, or setUpSpannerResourceManager if GOOGLE_STANDARD_SQL).jdbcDriverJars):--jdbcDriverJars parameter. launchTemplate(...) parameters block.launchDataflowJob):jobInfo = launchDataflowJob(getClass().getSimpleName(), ...);TemplateTestBase framework automatically routes execution to local DirectRunner or Cloud Dataflow depending on build system parameters.pom.xml file for the target template module (e.g., <template_path>/pom.xml).pom.xml, add it inside the <dependencies> section with <scope>test</scope>.Load the variables from testing_execution.env. You MUST route all synchronization and execution through the provided template strings to support the vendor's specific environment.
echo command):REMOTE_SYNC_TEMPLATE. Replace <LOCAL_PATH> with ./ and <REMOTE_PATH> with the value of REMOTE_WORKSPACE_PATH.spanner-custom-shard target directory) which are excluded from sync, build those modules on the target environment:REMOTE_EXEC_TEMPLATE. Replace <COMMAND> with cd ${REMOTE_WORKSPACE_PATH} && mvn package -pl v2/spanner-custom-shard -am -DskipTests.Verify compilation:
<COMMAND> in REMOTE_EXEC_TEMPLATE with cd ${REMOTE_WORKSPACE_PATH} && mvn test-compile -pl <template_path> -am -Dcheckstyle.skip=true.To minimize development turnaround time, always attempt to execute your tests using local pipeline first:
-DdirectRunnerTest to your maven execution command.<COMMAND> in REMOTE_EXEC_TEMPLATE with the following command (substitute the <variables> appropriately):
cd ${REMOTE_WORKSPACE_PATH} && rm -f live_logs && mvn verify -f pom.xml -U -PtemplatesIntegrationTests,splunkDeps -pl <template_path> -am -Dtest=<TestClassName> -e -DdirectRunnerTest -Dmdep.analyze.skip -Dcheckstyle.skip -Dspotless.check.skip=true -Djib.skip -DskipShade -DartifactBucket="${TEST_ARTIFACT_BUCKET}" -DstageBucket="${TEST_STAGE_BUCKET}" -Dproject="${TEST_PROJECT}" -Dregion=${TEST_REGION} -DspannerInstanceId="${TEST_SPANNER_INSTANCE}" -Dsurefire.useFile=false -DitParallelismType=none -DfailIfNoTests=false -Dsurefire.failIfNoSpecifiedTests=false -DhostIp=${TEST_HOST_IP} -DprivateConnectivity=${TEST_PRIVATE_CONNECTIVITY} -DcloudProxyHost=${TEST_HOST_IP} -DcloudProxyPassword="${TEST_DB_PASSWORD}" -DcloudProxyUsername="${TEST_DB_USER}" > live_logs 2>&1&).DirectRunnerClient.java is patched to cancel running jobs using thread.interrupt() instead of the deprecated thread.stop(), preventing test hangs during resource cleanup.-DdirectRunnerTest property. <COMMAND> in REMOTE_EXEC_TEMPLATE with the same Maven command from 8.3, but omitting -DdirectRunnerTest.&).tail -n 100 live_logs).If the integration test fails (assertion failure, runtime exception, or timeout):
live_logs if running remotely) to identify the failing assertion or exception stack trace.gcloud dataflow jobs list --project=${TEST_PROJECT} --region=${TEST_REGION}
gcloud logging read "resource.type=\"dataflow_step\" AND resource.labels.job_id=\"<YOUR_JOB_ID>\" AND severity>=WARNING" --project=${TEST_PROJECT} --limit=100src/test/resources/<target_db_name_lowercase>/reports/datatype_testing/<Scenario_ID>_<Timestamp>/.live_logs output.You MUST generate a markdown report file named test_automation_migration_report.md at the exact path relative to the workspace root: <template_path>/src/test/resources/<target_db_name_lowercase>/reports/datatype_testing/<Scenario_ID>_<Timestamp>/test_automation_migration_report.md. Placed anywhere else, the user will not see it.
The report MUST rigidly follow this structure:
1. Test Suite Details:
2. Execution Result & Final Command:
3. Source Code Bugs & Fixes:
4. Self-Healing & Retry History:
Retry # | Issue/Exception Encountered | Fix Applied.5. Exhaustive Type Testing Matrix:
Type Category, Source Type, Spanner Type, Edge Cases Tested (List the specific boundary/null/special values tested), Pass/Fail.6. Coverage vs. Initial Baseline:
Source TypeTarget Spanner Type (include alternative mapping overrides)Covered? (Yes/No/Skipped)Table Name (table name which test this type)Verification (Pass/Fail)Values Tested (list of exact values tested and what was value verified on spanner)Notes (Any specific notes to be added, like reason for skip, reason for failure, etc)CRITICAL RULE: Do NOT write secondary Python or Bash scripts to execute find-and-replace string manipulations on the template .java or pom.xml source code. You must use your native AI file-editing tools explicitly to modify code block-by-block.
As an autonomous agent executing this skill, you must stop and ask the user for confirmation or input in the following scenarios:
© GoogleCloudPlatform, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in v2/spanner-common/.agents/skills/add-source-datatype-integ-test of GoogleCloudPlatform/DataflowTemplates.
Open the folder on GitHubat commit 8af0a15
Add Source Datatype Integ Test next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Add Source Datatype Integ Test this skillGoogleCloudPlatform/DataflowTemplates | 1.3k | — | ~7.8k | Automated safety check: Notes | Apache-2.0 | |
| Io ConnectorsKilo-Org/kilo-marketplace | 190 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Retail Product Search Agentgoogle/adk-recipes | 10k | — | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Cxas Configurable DashboardsGoogleCloudPlatform/cxas-scrapi | 107 | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| GCP DrawIO Diagram Generatora5c-ai/babysitter | 1.8k | — | ~3.7k | Automated safety check: Pass | MIT | |
| BigQuery Slot and Cost Optimizergoogle/skills | 21k | — | ~2.3k | Automated safety check: Pass | Apache-2.0 |
Kilo-Org/kilo-marketplace
Guides development and usage of I/O connectors in Apache Beam.
google/adk-recipes
Builds a retail product search agent on Google Cloud, from catalog ingestion into BigQuery and Vector Search to ADK scaffolding, evaluation and Cloud Run deployment.
GoogleCloudPlatform/cxas-scrapi
Author, validate, and manage Contact Center AI (CCAI) Insights Configurable Dashboards.
a5c-ai/babysitter
Creates DrawIO XML diagrams of Google Cloud architectures from text or images, and analyzes existing .drawio files to list their GCP components.
google/skills
Analyzes BigQuery slot use, query costs and execution bottlenecks from INFORMATION_SCHEMA to diagnose slow queries, slot contention and unpartitioned scans.
sickn33/agentic-awesome-skills
Configure GCP Cloud Audit Logs for compliance. An agent skill from sickn33/agentic-awesome-skills.
GoogleCloudPlatform/DataflowTemplates
Debugs logical errors and data discrepancies in Dataflow templates by launching jobs via Terraform and comparing source (e.g.
GoogleCloudPlatform/DataflowTemplates
Functionally tests local Dataflow pipeline changes against the main branch using ephemeral GCP resources and gated approvals.
GoogleCloudPlatform/DataflowTemplates
Specific runner skill that delegates to the Template-Agnostic Meta-Test Orchestrator for the datastream-to-spanner (CDC) template.
GoogleCloudPlatform/DataflowTemplates
Specific runner skill that creates integration tests for the gcs-spanner-dv (Data Validation) template.
GoogleCloudPlatform/DataflowTemplates
Specific runner skill that delegates to the Template-Agnostic Meta-Test Orchestrator for the sourcedb-to-spanner (Bulk) template.
GoogleCloudPlatform/DataflowTemplates
Specific runner skill that delegates to the Template-Agnostic Meta-Test Orchestrator for the spanner-to-sourcedb (Reverse Migration) template.
Works with
Categories
Skill for adding data type integ tests for new source by provided datatypemappingmatrix. Add Source Datatype Integ Test is an agent skill from GoogleCloudPlatform/DataflowTemplates. Skill for adding data type integ tests for new source by provided datatypemappingmatrix.
Add Source Datatype Integ Test fits situations like: testing & QA work in your project.
Run `npx skills add GoogleCloudPlatform/DataflowTemplates --skill add-source-datatype-integ-test -a claude-code`. Or copy the skill folder (v2/spanner-common/.agents/skills/add-source-datatype-integ-test in GoogleCloudPlatform/DataflowTemplates) into .claude/skills/add-source-datatype-integ-test in your project. Claude Code loads it when a task matches its description.
Run `npx skills add GoogleCloudPlatform/DataflowTemplates --skill add-source-datatype-integ-test -a codex`. Or copy the skill folder (v2/spanner-common/.agents/skills/add-source-datatype-integ-test in GoogleCloudPlatform/DataflowTemplates) into .agents/skills/add-source-datatype-integ-test in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add GoogleCloudPlatform/DataflowTemplates --skill add-source-datatype-integ-test -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-source-datatype-integ-test, .gemini/skills/add-source-datatype-integ-test, .github/skills/add-source-datatype-integ-test and .opencode/skills/add-source-datatype-integ-test in your project.
Going by SKILL.md and its folder, Add Source Datatype Integ Test needs the command-line tools its instructions call (mvn and gcloud) and credentials named TEST_DB_PASSWORD.
SKILL.md names 1 domain. In commands or code: raw.githubusercontent.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Add Source Datatype Integ Test is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.8k tokens (SKILL.md is roughly 31k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Add Source Datatype Integ Test: Io Connectors (Kilo-Org/kilo-marketplace, 190 stars), Retail Product Search Agent (google/adk-recipes, 10k stars), Cxas Configurable Dashboards (GoogleCloudPlatform/cxas-scrapi, 107 stars) and GCP DrawIO Diagram Generator (a5c-ai/babysitter, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
GoogleCloudPlatform (a GitHub organization) maintains it in GoogleCloudPlatform/DataflowTemplates, which has 1,315 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 7, 2026.
Source: GoogleCloudPlatform/DataflowTemplates on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.