Generated banner for Synapse Migration
Generated logo for Synapse Migration

Synapse Migration

MicrosoftOfficialPublished by Microsoft

  • Skill
  • Workflow
  • Software development
  • MIT
  • Low risk
  • Has scripts

From the author

Converts Synapse workspaces to Fabric: Spark items, Lake Databases, Linked Services, and Dedicated SQL Pool schema/procedures for Lakehouse or Warehouse. During Pool-to-Lakehouse migration only, can migrate approved dependent procedure callers after notebook readiness. Excludes standalone pipelines and Warehouse administration. Triggers: Synapse workspace to Fabric, Dedicated SQL Pool to Lakehouse, Dedicated SQL Pool to Fabric Warehouse.
— the description by Microsoft

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The synapse-migration skill provides a structured, phased workflow for transitioning Synapse Analytics workspaces to Microsoft Fabric. It covers the migration of Spark items, Lake Databases, Linked Services, and Dedicated SQL Pool schema and stored procedures. The skill emphasizes a dependency-ordered approach, requiring gap assessment and explicit approval before conversion. It distinguishes between migrating to a Fabric Lakehouse (schema and code only, no data movement) and a Fabric Warehouse, while providing specific routing for dependent pipeline callers.

What it does

  • Discovers and classifies Synapse workspace artifacts.
  • Converts Dedicated SQL Pool schema and stored procedures to Spark SQL notebooks or Warehouse objects.
  • Migrates Spark items, including notebooks and Spark Job Definitions, to Fabric equivalents.
  • Maps Linked Services to Fabric Data Connections or OneLake Shortcuts.
  • Manages the migration of approved dependent pipeline callers.
  • Validates persisted definitions and artifacts against established contracts.

When to use it

  • When migrating a full Synapse workspace to Microsoft Fabric.
  • When converting Dedicated SQL Pool schema and procedures to a Lakehouse or Warehouse.
  • When porting Spark pools, notebooks, or Spark Job Definitions to Fabric.
  • When replacing Synapse Linked Services with Fabric-native connectivity.

Advantages

  • Ensures dependency-ordered migration to maintain system integrity.
  • Provides clear routing for different workload types (Lakehouse vs. Warehouse).
  • Enforces strict validation and approval gates for behavior-changing decisions.
  • Supports incremental migration rather than high-risk big-bang cutovers.
  • Standardizes the conversion of T-SQL procedures to executable Spark SQL notebooks.

Usage examples

“Migrate this Dedicated SQL Pool DACPAC to a Fabric Lakehouse and convert the procedures.”
The agent will assess gaps, obtain approval for procedure-to-notebook mappings, create a migration manifest, convert schema/code artifacts, and validate the results.
“Migrate this Dedicated SQL Pool to Fabric Warehouse.”
The agent will assess DDL compatibility, remove unsupported distribution/index declarations, obtain provisioning consent, and prepare for potential data migration.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/microsoft/synapse-migration/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip synapse-migration.zip -d .agents/skills

Documentation by Microsoft

Telemetry — MANDATORY. Every api.fabric.microsoft.com call must carry x-ms-fabric-skill: synapse-migration (az rest: --headers "x-ms-fabric-skill=synapse-migration"), including every LRO poll, fabric_lro and retry. Snippets omit it — add it anyway.

OFFLINE LAKEHOUSE ARTIFACT FAST PATH — DECIDE FIRST. For a no-live-call request with complete supplied inputs and contracts, load only the fast path; do not load migration-planning-reference.md, dedicated-pool-conversion.md, or implementation scripts. Use one generator for artifacts and final-byte hashes, then one verifier. Do not inspect generated files or run post-pass spot checks. For every optional non-null source default, set missingValueBehavior to UseSourceDefault and restore that default before validation. Do not use this path for a Warehouse target; incomplete and large-procedure requests use their own routes.

CRITICAL NOTES

  1. To find workspace details (including its ID) from a workspace name: list all workspaces, then use JMESPath filtering.

  2. To find item details (including its ID) from workspace ID, item type, and item name: list all items of that type in that workspace, then use JMESPath filtering.

  3. Treat a source Dedicated SQL Pool as read-only. Do not run source DDL, DML, stored procedures, or create sample objects.

  4. Dedicated Pool-to-Lakehouse data movement is out of scope. Migrate schema and executable code artifacts only; do not copy source rows or run row-level/business-result equivalence queries. The separate Warehouse route may move data only from a separately approved restored export copy under its own consent gate and restored-source contract.

  5. For Dedicated Pool-to-Lakehouse requests, complete gap assessment, explicit mapping approval, manifest creation, conversion, deployment, and validation in order. Read dedicated-pool-to-lakehouse.md once as the router, then load only the current phase reference.

  6. Stored-procedure 1:1, N:1, and N:N mappings never apply to views. Views remain schema objects; procedures become traceable Spark SQL notebooks with executable %%sql transformation cells.

  7. Dependent ADF/Synapse callers are conditional scope, not automatic scope. Discover them during assessment, require a separate complete-closure approval, and migrate them only after notebook readiness. Route standalone pipeline requests to pipeline-migration.

  8. Before executing a specialized Dedicated Pool workflow, read the matching contract in dedicated-pool-execution-contracts.md. Its validation, hashing, request-body, resume, and completion-language requirements are mandatory.

  9. Keep Lakehouse and Warehouse paths separate. If the target is unclear, ask before loading path-specific resources. Lakehouse conversion never moves source rows; Warehouse data migration requires its own explicit consent gate and restored-source contract.

  10. For a Fabric Warehouse target, explicitly state that the complete DISTRIBUTION and CLUSTERED COLUMNSTORE INDEX declarations are removed because Fabric manages distribution, storage, and indexing; a bare mention of either source clause is insufficient.

  11. Run setup DDL and CETAS only against the separately approved restored export copy after proving it is not the original production source.

Synapse Analytics to Microsoft Fabric Migration

Core Workflow

  1. Discover the Synapse workspace and classify every source artifact.

  2. Choose targets using workload-routing.md.

  3. Assess gaps before conversion, including runtime, library, connectivity, T-SQL, security, and capacity constraints.

  4. Obtain approval for behavior-changing decisions, target placement, and every stored-procedure-to-notebook mapping.

  5. Create or update migration-manifest.json and persist approval, per-object status, hashes, and checkpoints atomically.

  6. Convert and deploy in dependency order, loading only the current phase resource.

  7. Validate persisted definitions and artifacts without executing generated notebooks or pipelines unless a separately approved workflow explicitly requires execution.

  8. Report completed, blocked, skipped, and pending objects without exposing credentials or sensitive values.

For full-workspace orchestration, read migration-orchestrator.md. For a Dedicated Pool-to-Lakehouse migration, use dedicated-pool-to-lakehouse.md as the phase router. For a Warehouse target, load only the matching dw-* resource.

Scope Routing

RequestActionLoad
Full Synapse workspace migrationRun phased discovery and migrationmigration-orchestrator.md
Dedicated SQL Pool schema/code to LakehouseRun the strict assessment-to-validation workflow. For guidance-only notebook publication, explicitly state: "The stored procedures were converted from T-SQL to Spark SQL before publication."dedicated-pool-to-lakehouse.md
Guidance-only Dedicated Pool incremental deployment hardeningAnswer directly from the focused checklist; do not search scripts or load phase resources. State: "For columns with special characters, enable Delta columnMapping selectively and only with approval."dedicated-pool-execution-contracts.md
Large or complex stored procedureFor a complete offline contract, read only the audit resource once, use one run-local generator and one verifier, do not inspect implementation scripts or generated outputs, and stop after successful verificationdedicated-pool-large-procedure-audit.md
Spark poolConvert configuration and libraries to a Fabric Environmentspark-pool-migration.md
Lake Database or HMSCreate or bind the target Lakehouselake-database-migration.md or external-hms-migration.md
Notebook or Spark Job DefinitionPort code, bindings, parameters, and runtime settingsspark-item-migration.md
Linked ServiceChoose a Fabric Data Connection for external services or a OneLake Shortcut for ADLS Gen2/Blobconnectivity-migration.md
Approved dependent procedure callersRun the internal closure-preserving sub-flow after notebook readbackdedicated-pool-dependent-pipelines.md
Standalone pipeline migrationDelegatepipeline-migration
Dedicated SQL Pool to Fabric WarehouseRun the source extraction, DDL compatibility, approval, optional data, security, and validation routedw-source-and-extraction.md, then the matching dw-* phase resource
Standalone Fabric Warehouse administrationDelegatesqldw-cli
Synapse LinkUse Fabric Mirroring; not covered here—

Always report the Lake Database/HMS phase. If none is discovered, mark it NotApplicable (none discovered) while retaining the required target Lakehouse binding.

Load References On Demand

Do not preload all files. Load only the references needed for the current phase:

NeedReference
Routing, phase order, API audiences, quick examples, troubleshooting, or post-migration handoffworkload-routing.md
Dedicated Pool execution variants and response contractsdedicated-pool-execution-contracts.md
Dedicated Pool discoverydedicated-pool-discovery.md
Gap assessment and mapping approvaldedicated-pool-gap-assessment.md
Procedure conversion and notebook shapededicated-pool-conversion.md
Schema/notebook deploymentdedicated-pool-deployment.md
Dedicated Pool validationdedicated-pool-validation.md
Runtime/library compatibilityfeature-parity.md and library-compatibility.md
mssparkutils and connector refactoringutility-api-mapping.md, connector-refactoring.md, and code-patterns.md
Capacity planningcapacity-sizing.md
Dedicated Pool-to-Warehouse source discovery and extractiondw-source-and-extraction.md
Warehouse DDL compatibility and deploymentdw-ddl-compatibility.md
Separately approved Warehouse data migrationdw-data-migration.md
Warehouse security and validationdw-security-validation.md
Validation, reporting, and production readinessvalidation-testing.md, migration-report.md, and security-governance.md

Use COMMON-CLI.md only for shared authentication and az rest mechanics not already covered by the phase resource. Use COMMON-CORE.md only for shared Fabric REST patterns.

Must

  • Preserve every stored-procedure input contract, source default, source decision, and approved target mapping.

  • Block conversion until gap dispositions, notebook names, dependency grouping, and target workspace placement are explicitly approved.

  • Use SqlPackage/DMVs for source discovery, Fabric REST for item management, and Fabric Livy statements for Lakehouse schema and Delta execution.

  • Run the maintained validators required by the selected execution contract; never replace them with ad hoc JSON or cell-shape checks.

  • Choose the Lakehouse or Warehouse target before loading implementation resources; never apply Warehouse data-movement rules to Lakehouse artifact conversion.

  • Before persisting any dependent-pipeline source definition, recursively inspect it for secret-bearing or uncertain properties; block the complete selected closure without writing the artifact or mutating a target when any are found.

  • In every dependent-pipeline response, including guidance-only and pre-approval explanations, state: "Use a TridentNotebook activity with exact target identities typeProperties.notebookId and typeProperties.workspaceId, and pass inputs through typeProperties.notebookParameters." Then state: "After deployment, read back each pipeline with POST /v1/workspaces/{workspaceId}/items/{dataPipelineId}/getDefinition and validate its canonical hash and structural bindings."

  • For every Linked Service response, first state both replacement classes: Fabric Data Connections for external databases/services and OneLake Shortcuts for ADLS Gen2/Blob storage; then identify which class applies.

  • Replace mssparkutils with notebookutils, Linked Services with the correct Fabric connection class, and spark.read.synapsesql() with a supported OneLake or JDBC pattern.

  • Externalize workspace and item IDs through parameters or Variable Libraries.

  • Keep phase status concise, emit bounded heartbeats for long operations, and persist per-object evidence in the manifest.

Prefer

  • OneLake Shortcuts over copying data.

  • Fabric Environments for reproducible libraries and Spark settings.

  • Incremental, dependency-ordered migration over big-bang cutover.

  • Parameterized notebooks and Variable Libraries for environment promotion.

  • Lakehouse SQL Endpoint for compatible Serverless SQL Pool read workloads.

Avoid

  • Do not execute generated notebooks or pipelines as part of artifact migration.

  • Do not broaden a selected dependent-pipeline closure or route that internal sub-flow to pipeline-migration.

  • Do not use sqlcmd against the target Fabric Warehouse; use the registered SQL endpoint tooling required by the Warehouse resource.

  • Do not preserve Synapse distribution/storage hints, PolyBase DDL, Linked Service connection strings, or pool-level library installation patterns verbatim.

  • Do not use target notebooks to orchestrate the migration itself.

  • Do not hardcode workspace IDs, item IDs, credentials, connection strings, or environment-specific paths.

Examples

Prompt: "Migrate this Dedicated SQL Pool DACPAC to a Fabric Lakehouse and convert the procedures."

Response behavior: Assess gaps first, present and obtain approval for the complete procedure-to-notebook mapping and workspace placement, create the manifest, convert approved schema/code artifacts without moving source rows, validate persisted definitions, and report the resolved Lakehouse and artifact evidence.

Prompt: "Migrate this ADF pipeline to Fabric."

Response behavior: Route to pipeline-migration. Keep it here only when the pipeline is an explicitly approved dependent caller discovered inside an active Dedicated Pool-to-Lakehouse migration.

Prompt: "Migrate this Dedicated SQL Pool to Fabric Warehouse."

Response behavior: Keep this inside synapse-migration, assess DDL compatibility, remove unsupported distribution and columnstore declarations, obtain provisioning consent, and ask separately before any restored-source data migration.

For code transformations and edge cases, load workload-routing.md and the phase-specific resource rather than expanding the main instructions.

Files

references/dedicated-pool-execution-contracts.md

Dedicated Pool Execution Contracts

Load this file only after a Dedicated SQL Pool-to-Lakehouse request has been routed to a specialized workflow. The core source-read-only and no-row-movement boundaries in SKILL.md always apply.

Contents

  • Dependent Procedure Callers

  • Interactive Notebook Conversion

  • Completion Language

  • Guidance-Only Incremental Deployment Hardening

  • Offline Local-Artifact Workflow

  • Feature-Wise Risk or Mapping Assessment

  • Large-Procedure Offline Package

For large or complex stored procedures, prove conversion coverage with a deterministic source-block ledger. An offline Dedicated Pool artifact request still requires this skill. For a complete large-procedure request, read ../resources/dedicated-pool-large-procedure-audit.md exactly once before generating artifacts.

For a Dedicated Pool request, read ../resources/dedicated-pool-to-lakehouse.md once as the phase router. Load each phase-specific reference only when entering that phase, and use the manifest instead of rereading completed-phase guidance. Persist per-object evidence in the manifest and telemetry instead of repeating it in chat.

For phased guidance, use the literal heading Phase 1 — Lake Database/HMS to Lakehouse: NotApplicable (none discovered) when discovery finds no catalog; never collapse the plan to Phase 0 → Phase 2.

Do not carry DISTRIBUTION, CLUSTERED COLUMNSTORE INDEX, or other Dedicated SQL Pool storage hints into the target. Fabric Warehouse handles distribution and Delta-backed storage automatically.

Dependent Procedure Callers

During assessment, recursively discover ADF or Synapse procedure callers. If callers exist, ask the user to select all closures, named complete closures, or none; parent migration approval is not pipeline approval. Only after notebook readback and explicit closure selection, read the complete ../resources/dedicated-pool-dependent-pipelines.md sub-flow, including its Contract Schema, Deployment, and Resume sections.

  • Before persistence, recursively inspect every source pipeline definition for credentials, connection strings, SAS/query/fragment secrets, authorization values, secure-string payloads, and ambiguous secret-like properties. If any are present or cannot be ruled out, block the complete selected closure, write no source artifact, and perform no target mutation; do not redact and proceed because that would break the complete-definition hash contract.

  • Only after that inspection passes, retain each complete source pipeline definition and record its manifest-relative sourceDefinitionArtifact plus canonical sourceDefinitionHash in pipelineMappings.

  • Include both in handoffHash. On resume, invalidate the checkpoint if the live ADF/Synapse source, retained artifact, or recorded hash differs.

  • Hash the complete decoded persisted Notebook JSON using canonical JSON rules: recursively sort object keys, preserve arrays and every returned property, and never remove service-added metadata, cell IDs, or execution fields before hashing. Never hash raw notebook bytes.

  • Preserve the complete documented activityBindings, including sourceProcedure, target workspace/Lakehouse/notebook identities, parameterMappings, and output contract. activityBindings contains only procedure-to-notebook bindings; record ExecutePipeline child references only in pipelineMappings[].childBindings, never as a second activityBindings entry.

  • Before sending any dependent-pipeline response, verify that it contains this sentence verbatim: "Use a TridentNotebook activity with exact target identities typeProperties.notebookId and typeProperties.workspaceId, and pass inputs through typeProperties.notebookParameters." Naming only TridentNotebook, only the property paths, or generic GUIDs is incomplete.

  • For every live Lakehouse, Notebook, or DataPipeline create/update or getDefinition call, write request JSON beneath the manifest directory and assign its absolute path to $requestPath. Use az rest --method post --url "<resolved endpoint>" --resource https://api.fabric.microsoft.com --headers "x-ms-fabric-skill=synapse-migration" --body "@$requestPath" for each mutation and POST-based getDefinition readback; never rely on the default GET verb. With Invoke-WebRequest or Invoke-RestMethod, specify the resolved endpoint, -Method Post, -Headers @{ "x-ms-fabric-skill" = "synapse-migration" }, and -InFile $requestPath.

  • Immediately before each mutation or getDefinition call, emit only redacted request evidence: method, endpoint, absolute request-file path, SHA-256 hash, and a sanitized non-sensitive shape summary. Never emit the complete request body, connection details, credentials, or sensitive property values.

  • A bare path without @ is a string body, not a file body; do not depend on a preceding directory change or send an in-memory $body after writing an unused copy.

  • Before the only Notebook mutation, parse that exact file and call validate_notebook_definition_request with require_item_metadata=True for create or False for update and the exact expected Lakehouse binding.

  • A create body must already contain displayName, type: "Notebook", and the validated definition. Block before mutation on rejection; never repair or rewrite a request after submitting it.

  • Capture the first mutation response and its Location in the same invocation, then poll it without replaying the mutation because a response was not logged, filtered output was empty, or a file copy is wanted. The shell call that performs a mutation may contain only the REST invocation plus non-failing raw-response persistence; never append Select-String, JSON parsing, assertions, or another post-processing command that can make the shell call fail after Fabric accepted the mutation. Perform inspection in a later shell call. If any local command fails after an accepted mutation, treat acceptance as indeterminate, resolve the exact target, and read it back without replay. Never issue one mutation for debug headers and repeat the same mutation for its response body; capture both from the single HTTP call. Submit exactly one create/update per target and never retry a non-retriable authentication, conflict, or validation response.

  • For az rest, include --verbose on that single mutation and capture its combined output and exit code. Exit code 0 with an empty response body still means the mutation was accepted: classify the result as accepted or indeterminate, resolve the exact target by listing items, and perform readback. Never replay the mutation to obtain a body or response file.

  • Do not redo completed conversion work or execute notebooks or pipelines; do not invoke, load, consult, or route this conditional sub-flow to pipeline-migration. Reserve that skill for standalone pipeline requests.

Interactive Notebook Conversion

Before saving or reporting a generated Dedicated Pool notebook in an interactive workflow that permits correction, run validate_spark_sql_notebook from scripts/dedicated_pool_runtime.py, repair every rejection, and rerun until it passes. Do not replace this maintained semantic gate with ad hoc JSON or cell-shape checks.

The repair loop does not apply to the one-shot offline local-artifact workflow below. In that workflow, the first validator failure is terminal for the run and must be reported without editing, regenerating, or retrying.

Completion Language

Keep completion responses literal and concise.

  • Publication guidance begins: "The stored procedures were converted from T-SQL to Spark SQL before publication."

  • A Dedicated Pool-to-Lakehouse result names the resolved Fabric Lakehouse and states: "Generated stored-procedure notebooks use executable %%sql transformation cells."

  • If notebook validation fails, state instead: "Generation was blocked: intended stored-procedure notebooks use executable %%sql transformation cells, but validation failed; do not publish." Never report successful generation or publication after a validator failure.

  • A dependent-pipeline result states:

    • "Use a TridentNotebook activity with exact target identities typeProperties.notebookId and typeProperties.workspaceId, and pass inputs through typeProperties.notebookParameters."

    • "After deployment, read back each pipeline with POST /v1/workspaces/{workspaceId}/items/{dataPipelineId}/getDefinition and validate its canonical hash and structural bindings."

    • "Reject a partial selection when an excluded root reaches a selected shared child; include every sharing root and its complete closure."

    • "Before persisting a source definition, recursively reject secret-bearing or uncertain properties; write no source artifact and perform no target mutation for that closure."

    • "Only after recursive inspection proves a source definition secret-free, retain it as sourceDefinitionArtifact, record its canonical sourceDefinitionHash, include both in handoffHash, and invalidate resume when the live source, retained artifact, or recorded hash differs; blocked closures retain no source artifact or hash."

    • "The migration does not automatically execute notebooks or pipelines."

  • After successful large-procedure validation, state: "The T-SQL procedure was converted to executable Spark SQL," report validator/package evidence, and stop without inspecting eval graders.

  • On a terminal validator failure, state: "The T-SQL procedure was not successfully converted to Spark SQL," name the failed gate, and do not claim publication readiness.

Guidance-Only Incremental Deployment Hardening

For a guidance-only incremental deployment-hardening request, answer directly from this checklist without searching scripts or loading phase references. State every applicable safeguard explicitly in the final response; implementation details do not substitute for a checklist item.

  1. Begin: "This migration converts T-SQL procedures to Spark SQL."

  2. Record each script-backed DACPAC load attempt and its model-only fallback blind spots.

  3. State: "For columns with special characters, enable Delta columnMapping selectively and only with approval."

  4. Reuse an existing Fabric Lakehouse table or shortcut only when it is compatible. Block incompatible targets for manual review rather than altering them, and never auto-mutate, overwrite, or drop an existing target.

  5. Create or reuse one Livy session for the deployment phase. Within that session, submit one object/statement per Livy request in dependency order so each failure remains attributable to a specific object or statement. Do not create a new Livy session per object.

  6. State: "Resume only when the input hash and a fresh target-state readback hash match the successful checkpoint."

  7. Build validated file-backed REST JSON with InlineBase64, verify the request/definition, and delete temporary files in finally cleanup.

  8. Record phase/object start and end timestamps, duration, counts, and retries. Record token usage as null/unavailable rather than estimating it.

  9. State: "Keep the source read-only; do not modify or rewrite the source."

Offline Local-Artifact Workflow

Read ../resources/dedicated-pool-conversion.md once. A caller-supplied read allow-list is a hard boundary: do not inspect any file outside it. Treat named validators as black boxes; do not inspect validator, runtime, grader, eval, or test implementation, run CLI help/preflight probes, or reread generated files.

  • Write one run-specific generator that emits the complete approved artifact set atomically. Run it once, then run each required validator once.

  • When PySpark is not explicitly provisioned, invoke validate_dedicated_pool_spark.py --structure-only first, exactly once per notebook.

  • A validator failure is terminal for that run. Report it without debugging, editing, regenerating, or retrying.

  • A parameterized notebook's first code cell must serialize metadata.tags as exactly ["parameters"]. Assert the exact tag in the generator before it writes any artifact.

  • Restore an optional non-null source default before lexical validation.

  • Use separate direct guards for required-null and required-blank checks.

  • Use direct two-positional-argument re.fullmatch guards with no flags or keyword arguments, not membership tests.

  • For case-insensitive Boolean validation, use re.fullmatch(r"(?i:true|false|1|0)", str(<parameter>)).

  • Place every validation/normalization statement before the contiguous literal-key spark.conf.set calls.

Feature-Wise Risk or Mapping Assessment

State:

  • "Use the discovered procedure count to calculate the projected notebook count and projected workspace total."

  • "Block conversion until the procedure mapping decision is approved."

  • "Procedure mapping approval must cover target notebook names and workspace placement."

  • Every feature-wise risk row must report Likelihood and Impact as separate fields from overall Risk; a single severity or risk value is incomplete.

Keep complete source-to-target procedure traceability for every approved mapping.

Large-Procedure Offline Package

Treat all identifiers, artifact paths, and binding values supplied by the request as authoritative.

  • Bind each generator path constant to the literal requested path; never derive a stable-ID source path from the shorter sourceName.

  • Before writing anything, assert that the source path exactly equals the requested path, such as source/dbo.usp_AuditedLoad.sql.

  • Read ../resources/dedicated-pool-large-procedure-audit.md and ../resources/dedicated-pool-conversion.md once each, then stop discovery.

  • Do not search tests, fixtures, eval files, runtime implementation, validators, or graders for additional values or implementation hints.

  • Build every Python notebook cell as newline-joined source, serialize it with splitlines(keepends=True), and run ast.parse on the joined parameter and bridge cell source inside the generator before writing any artifact.

  • Never serialize adjacent source-array entries without line terminators.

  • Ensure every generated transformation cell starts with literal %%sql. With Python % formatting, write %%%%sql or concatenate the header so interpolation cannot collapse it to %sql.

  • Apply the conversion type mapping in those cells, including source BIT comparisons as Spark SQL Boolean comparisons.

  • Generate the complete package in one atomic generator run, invoke the generated package verifier once and the requested repository validator once, clean up the generator, report the evidence, and stop.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs Python

Security

What our scanner noticed· Low risk

  • Instructions that use the network
  • Scripts that your agent may run

This skill includes scripts that your agent may run. Read them before you use it.

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Microsoft
Publisher
Microsoft (Official)
Source
microsoft/skills-for-fabric · skills/synapse-migration · commit f8fac11
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Also distributed in
microsoft/skills-for-fabric

AutoGineer is not affiliated with or endorsed by Microsoft.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download synapse-migration.zip