Read the YAML files of an existing Canvas App and replace Power FX data source calls with equivalent Dataverse table calls. USE WHEN the user wants to migrate, replace, or update data source references in pa.yaml files to point to Dataverse tables.
npx skills add https://github.com/microsoft/power-cat-skills --skill migrate-to-dataverse
Read the YAML files of the current Canvas App and replace all Power FX data source calls with Dataverse equivalents for the following requirements:
$ARGUMENTS
Before making any changes, you MUST read and internalize the technical reference document:
${CLAUDE_PLUGIN_ROOT}/references/TechnicalGuide.md — Technical best practices, control selection, validation workflow, formulas, layout strategiesRead this file before planning any edits.
Before reading or editing any YAML files, call the sync_canvas MCP tool to ensure a local copy of the canvas app YAML is present and up to date. This pulls the current app state from the coauthoring session into local .pa.yaml files.
Only proceed after sync_canvas completes successfully.
Call list_data_sources to enumerate all data sources connected to the current authoring session. This is the authoritative list of Dataverse tables (and other connectors) available for mapping.
After the call completes, share a discovery summary with the user:
> Discovery complete.
> Available data sources ([N] total):
> | Name | Type | Key Columns |
> |------|------|-------------|
> | [Table Name] | Dataverse / SharePoint / … | [column names] |
For each Dataverse table identified, call get_data_source_schema to retrieve the full column list and Power Fx types. This information is required to map source columns to destination columns accurately.
Read every .pa.yaml file produced by sync_canvas. For each file:
SharePoint.GetItems, Filter('MyList', …), Patch('MyList', …), LookUp, Collect, ClearCollect, etc.).Filter, Patch, LookUp, Collect, etc.).Using the schemas retrieved in step 1, produce a mapping table for every data source call found:
> Proposed Mapping Plan
>
> | Source Expression | Source Column | Dataverse Table | Dataverse Column | Notes |
> |-------------------|---------------|-----------------|-----------------|-------|
> | Filter('Orders List', Status = "Open") | Status | cr123_orders | cr123_status | Type match: Text |
> | … | … | … | … | … |
Rules for column selection:
Title → cr123_name).⚠ needs manual review.Text column to a Choices column without an explicit conversion formula.Present the plan to the user and ask for approval before making any changes:
> Does this mapping plan look correct?
> - Approve and apply changes
> - I'd like to adjust the mapping first
If adjustments are requested, update the mapping plan accordingly and re-present.
Once the plan is approved, update every affected .pa.yaml file:
${CLAUDE_PLUGIN_ROOT}/references/TechnicalGuide.md (use = prefix, wrap multi-line formulas correctly, etc.).OnVisible initialization patterns — replace collection sources but keep the collection/variable structure if it exists.Announce progress for each file:
> Updating [filename].pa.yaml ([N] of [Total])…
Call compile_canvas after updating all files. Fix any compilation errors before finishing. Report the result:
Repeat validate → fix until all files compile clean.
When all files pass validation, present a final summary:
> Migration complete.
>
> | File | Expressions Replaced | Status |
> |------|----------------------|--------|
> | [filename].pa.yaml | [N] | Compiled |
>
> Source replaced: [original data source names]
> Target: [Dataverse table names used]
> Columns requiring manual review: [list any ⚠ flagged columns, or "none"]
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.
Lightweight WSI tile extraction and preprocessing. Use for basic slide processing tissue detection, tile extraction, stain normalization for H&E images. Best for simple pipelines, dataset preparation, quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.
Microscopy data management platform. Access images via Python, retrieve datasets, analyze pixels, manage ROIs/annotations, batch processing, for high-content screening and microscopy workflows.
Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use this skill when reading, writing, or modifying medical imaging data in DICOM format, extracting pixel data from medical images (CT, MRI, X-ray, ultrasound), anonymizing DICOM files, working with DICOM metadata and tags, converting DICOM images to other formats, handling compressed DICOM data, or processing medical imaging datasets. Applies to tasks involving medical image analysis, PACS systems, radiology workflows, and healthcare imaging applications.
This skill should be used when working with pre-trained transformer models for natural language processing, computer vision, audio, or multimodal tasks. Use for text generation, classification, question answering, translation, summarization, image classification, object detection, speech recognition, and fine-tuning models on custom datasets.
Take microsoft/migrate-to-dataverse from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.