From powercat-canvas-apps
Migrate a Microsoft InfoPath form (.xsn) to a Power Apps Canvas app. USE WHEN the user wants to convert, port, or migrate an InfoPath form/template to Canvas Apps, or asks for help moving off of InfoPath.
How this skill is triggered — by the user, by Claude, or both
Slash command
/powercat-canvas-apps:infopath-to-canvasThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Migrate the InfoPath form described below:
Migrate the InfoPath form described below:
$ARGUMENTS
A .xsn is a CAB archive containing manifest.xsf (rules, views, data connections),
schema*.xsd (data schema), template.xml (defaults), and XSL views. This skill runs three
phases: extract → inventory → hand off to generate-canvas-app. Pause for user approval
after the inventory.
From $ARGUMENTS, resolve a .xsn path. If the user gave a folder, Glob for *.xsn
inside; ask if there are multiple or none.
If a sibling xsn_extracted/ already contains manifest.xsf, reuse it. Otherwise extract to
<source_dir>/xsn_extracted/:
& "$env:SystemRoot\System32\expand.exe" "<form>.xsn" -F:* "<xsn_extracted>" via PowerShellcabextract -d <xsn_extracted> <form>.xsnVerify manifest.xsf and schema1.xsd exist; abort if not.
Spawn a general-purpose Agent to write infopath-inventory.md covering:
schema1.xsd + template.xml dfs:dataFields: decoded name, type
(Text, Date, Number, Choice, multi-Choice, Person, NoteEnhanced/rich-text, Lookup, …),
constraints (maxLength, pattern, enumeration, minOccurs/nillable), default.
Decode URL-encoded names: _x0020_=space, _x0028_=(, _x0029_=), _x002d_=-,
_x0023_=#, _x0026_=&.manifest.xsf: schema-required fields, xsf:errorCondition (field +
XPath translated to plain English + message), xsf:ruleSet/xsf:domEventHandler (trigger,
condition, action), xsf:submit destination.schema*.xsd schema: source name + columns used.After the agent returns, surface counts (fields / rules / connections / sections) and ask:
App.OnStart (default), or wire to real SharePoint?Wait for answers.
If the user wants to wire to real SharePoint, strongly suggest they add the SharePoint list(s) as a data source in the app before generation — Canvas can't bind to a connection that doesn't exist in the app. Tell them the steps (Power Apps Studio → Data → Add data → SharePoint → pick site/list) and that this skill can verify the schema once it's done.
When they confirm, call mcp__canvas-authoring__list_data_sources to see what's connected,
then mcp__canvas-authoring__get_data_source_schema for each list. Diff against the
inventory: every InfoPath field should map to a SharePoint column of compatible type. Report
any missing columns, type mismatches (e.g. InfoPath Date vs. SP Text), or
extra-required columns the form doesn't populate. Pause and let the user reconcile
(rename columns, add missing ones, or trim the inventory) before Phase 2.
generate-canvas-appWrite canvas-app-prompt.md containing:
DisplayMode.Disabled on Save buttons) — an intentional
upgrade from InfoPath's flag-but-don't-block behavior; flag this as a deliberate change.Then invoke generate-canvas-app via the Skill tool, passing the prompt as args. If
that skill isn't available, instruct the user to run /generate-canvas-app against
canvas-app-prompt.md.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub microsoft/power-cat-skills --plugin powercat-canvas-apps