migrate-bootstrap
Migrates a traditional Power Pages site from Bootstrap 3 to Bootstrap 5. Downloads the site, runs the pac pages bootstrap-migrate engine, reviews the change report, applies AI-assisted fixes for the residual hierarchy/CSS changes the engine only flags, uploads the migrated site (which auto-enables t…
Install / Use
npx skills add microsoft/power-platform-skills --skill migrate-bootstrapInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
MarketingSupported Platforms
Our assessment of migrate-bootstrap
migrate-bootstrap scores 85/100 on our quality scale, 409th of 596 Marketing skills we index.
Its SKILL.md is 21 KB long, well organised into 21 sections with 4 code examples: a thorough specification that gives an agent plenty to work with.
It has 919 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated 12 days ago, so migrate-bootstrap is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
migrate-bootstrap compared with similar skills
All 4 of these similar skills score higher than migrate-bootstrap; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| migrate-bootstrap (this skill)by microsoft | 85 | 919 | 12d ago | SKILL.md |
| algorithmic-artby anthropics | 100 | 177.9k | 14d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 14d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 130.2k | 15d ago | SKILL.md |
| ui-ux-pro-maxby nextlevelbuilder | 100 | 130.2k | 15d ago | SKILL.md |
Frequently asked questions
- How do I install migrate-bootstrap?
- Run
npx skills add microsoft/power-platform-skills --skill migrate-bootstrap. The install tabs above show the steps for each supported agent. - Which AI agents does migrate-bootstrap work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is migrate-bootstrap safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is migrate-bootstrap still maintained?
- The repository was last updated 12 days ago, so migrate-bootstrap is actively maintained.
Skill content
View source on GitHubname: migrate-bootstrap description: >- Migrates a traditional Power Pages site from Bootstrap 3 to Bootstrap 5. Downloads the site, runs the pac pages bootstrap-migrate engine, reviews the change report, applies AI-assisted fixes for the residual hierarchy/CSS changes the engine only flags, uploads the migrated site (which auto-enables the Bootstrap 5 runtime flag), verifies the flag, and validates. Use when the user wants to upgrade an older Bootstrap-3 portal to Bootstrap 5. NOT for code sites (React/Vue/Angular/Astro) — those are never Bootstrap-3. user-invocable: true argument-hint: Optional website name or local site folder path allowed-tools: Read, Write, Edit, Bash, Grep, Glob, AskUserQuestion, Skill, Task, TaskCreate, TaskUpdate, TaskList model: opus
Plugin check: Run
node "${PLUGIN_ROOT}/scripts/check-version.js"— if it outputs a message, show it to the user before proceeding.
Migrate a Traditional Power Pages Site from Bootstrap 3 to Bootstrap 5
Guide the user through migrating a traditional / native Power Pages site from Bootstrap 3
to Bootstrap 5. Follow a systematic approach: verify tooling, acquire and back up the site,
assess scope, run the pac pages bootstrap-migrate engine, review the change report, apply
the residual fixes the engine can only flag, upload (which auto-enables the runtime flag),
verify, and validate.
Core Principles
- Traditional sites only: This skill targets traditional Power Pages sites (Liquid web templates,
*.webtemplate.source.html,*.html/.aspx/.ascx,*.css,sitesetting.yml). It does NOT apply to code sites (React/Vue/Angular/Astro) — they are never Bootstrap-3-based. If the target is a code site, stop and tell the user this skill doesn't apply. - The engine does the bulk; you do the residual:
pac pages bootstrap-migratedeterministically applies the well-known class renames. The skill's value is assisting with the hierarchy / CSS changes the engine only logs (see references/bootstrap-v5-manual-fixes.md). - Non-destructive, with a restore point: The engine writes a new
<folder>V5copy and never edits the source in place. Still, snapshot the source folder (git) before doing anything. - Assist and flag — never silently rewrite: Residual fixes are Liquid-aware and can break layouts. Apply them with per-category consent; when a case is ambiguous (e.g. Liquid conditionals), flag it for the user instead of guessing.
- Verify the runtime flag flip via
pac-log.txt:pac pages uploadflips the server-side Bootstrap 5 flag automatically, but flip outcomes are logged and swallowed by the CLI. Never trust the upload exit code alone. The authoritative record is the PAC diagnostic log (pac telemetry status→pac-log.txt); grep it forBootstrapV5UploadPostProcessor. The flip requires an active portal — a website record with no provisioned site logsno portal foundand skips. - Use TaskCreate/TaskUpdate: Create the todo list upfront with all 8 phases before starting work.
Initial request: $ARGUMENTS
Phase 1: Verify Prerequisites
Goal: Ensure PAC CLI is installed, the user is authenticated, the target environment is confirmed, and the required commands are available.
Actions:
- Create the todo list with all 8 phases (see Progress Tracking).
- Run
pac helpto confirm PAC CLI is installed and on PATH. If missing, point the user tohttps://aka.ms/PowerPlatformCLI(dotnet tool install --global Microsoft.PowerApps.CLI.Tool) and re-verify.
- Run
pac auth who. If not authenticated, ask for the environment URL viaAskUserQuestion, thenpac auth create --environment "<URL>"and re-verify. Capture the environment name, URL, and ID.
🚦 Gate (consent · migrate-bootstrap:1.confirm-env): Confirm the target environment before any download, migration, or upload. Running the migration against the wrong environment is destructive, so this confirmation is mandatory.
-
Confirm the target environment with the user (
AskUserQuestion: use this environment / choose another viapac org list+pac org select). -
Probe command availability — both verbs are required:
pac pages helpConfirm
bootstrap-migrateanduploadappear in the verb list. If either is missing (feature not enabled in this CLI build / tenant), stop and tell the user the migration can't proceed until those commands are available. -
Locate the PAC diagnostic log — capture the path now; you will need it in Phase 7 to verify the flag flip:
pac telemetry statusIt prints
The diagnostic logs can be found at: <…>\logs\pac-log.txt. This is a rolling log across allpacruns and is the authoritative record of the Bootstrap V5 flag flip. Note:pac pages uploadwrites no per-folder log —pac-log.txtis the only place its post-processor records the flip result. SetPAC_LOG = <that path>.
Output: PAC CLI verified, authenticated session, confirmed environment, bootstrap-migrate
and upload confirmed available, PAC_LOG path captured.
Phase 2: Acquire the Site & Back Up
Goal: Get a local copy of the traditional site to migrate, and establish a restore point.
Actions:
2.1 Locate or download the site
-
If the user provided a local site folder path (or
$ARGUMENTSnames one): verify it exists and looks like a downloaded traditional site (containswebsite.ymlandsitesetting.yml). Use it asSITE_FOLDER. -
Otherwise: list available websites and download the chosen one.
pac pages list
🚦 Gate (plan · migrate-bootstrap:2.1.select-site): Choose which website to download when more than one exists. Canceling leaves nothing changed.
Present the websites via AskUserQuestion, then download the selected site:
pac pages download --path "<SITE_FOLDER>" --webSiteId "<WEBSITE_ID>"
Use the downloaded directory as SITE_FOLDER.
Confirm this is a traditional site, not a code site. A code-site project has
powerpages.config.jsonand a frameworkpackage.json; a traditional site haswebsite.yml,sitesetting.yml, and*.webtemplate.source.htmlfiles. If it's a code site, stop — this skill does not apply.
2.2 Confirm the site is ACTIVATED (not just a website record)
pac pages list shows website records (adx_website). A website record can exist with no
provisioned/active Power Pages site (portal) behind it — created by data import/clone, deactivated,
or orphaned. The Phase 7 flag flip (SetPortalBootstrapV5Enabled) targets the portal, not the
website record, so if no active portal exists the flip silently skips and the live site won't
render — and you won't find this out until after uploading unless you check now.
Resolve the site URL from websitebinding.yml (adx_sitename) and probe the final status code
(-L follows redirects so a sign-in / canonical-host redirect resolves to its real code):
curl -sL -o /dev/null -w "%{http_code}" "https://<adx_sitename>/"
-
2xxor a redirect that resolves to2xx/3xx→ active portal; proceed. A private or protected site legitimately redirects to sign-in or a canonical host, so a resolved3xxis active, not a failure. -
4xx/5xx→ inconclusive from the status alone. A private site can return a non-200without being unactivated, so do not conclude "not activated" from the code alone — fetch the error body (or open the URL in a browser) to look for the unactivated signature:curl -sL "https://<adx_sitename>/" | head -c 4000If the body shows a Dataverse-connection null-ref (
Object reference not set …/CrmOnlineOrganizationService.ToOrganizationService), or the URL fails to render a portal page in the browser, the site is most likely NOT activated. This is the same condition that makes the Phase 7 flag flip logno portal found for website <id> via Power Pages API. A4xx/5xxwithout that signature is more likely an auth wall or transient error on an active site — treat as active and note it for the user rather than blocking.
If the site is confirmed not active, stop and tell the user to activate/provision it first (Power
Pages admin center, or the /power-pages:activate-site skill). Migrating content into an unactivated
website still uploads, but the runtime flag can't flip and the site can't be verified.
2.3 Snapshot the source
Create a restore point before any migration:
cd "<SITE_FOLDER>"
git init -q && git add -A && git commit -q -m "Pre-migration snapshot (Bootstrap 3)"
If the folder is already a git repo, just commit any pending changes so the pre-migration state is captured.
Output: SITE_FOLDER resolved, confirmed traditional, source snapshot committed.
Phase 3: Pre-Migration Assessment
Goal: Set expectations by inventorying Bootstrap-3 usage and flagging risk areas before running the engine.
Actions:
-
Scan the site for Bootstrap-3 markers using
Grepover*.html,*.aspx,*.ascx,*.css:- Component classes:
panel,navbar-header,img-responsive,btn-block,pull-left|pull-right,col-(xs|sm|md|lg)-,glyphicon,label-,page-header,pager,data-toggle|data-dismiss. - Count affected files and the rough number of occurrences per category.
- Component classes:
-
Flag risk areas:
- Heavy custom CSS (large
.cssfiles with non-Bootstrap selectors) — won't be auto-converted. - Liquid-entangled markup (
{% ... %}around classes, conditional dropdowns) — needs review.
- Heavy custom CSS (large
-
Present a concise scope summary and set expectations:
"This is an assisted migration. The engine will auto-apply the common Bootstrap 3→5 class renames. Some changes (grid hierarchy, navbar structure, panel/page-header/pager styling) can only be flagged — I'll help apply those in Phase 6. Visual parity isn't guaranteed and you'll want to QA the result."
Output: Scope summary presented; user understands this is assisted, not push-button.
Phase 4: Run the Migration Engine
Goal: Produce the migrated <folder>V5 copy.
Actions:
<!-- gate: migrate-bootstrap:4.run-engine | category=consent | cancel-leaves=nothing -->🚦 Gate (consent · migrate-bootstrap:4.run-engine): Explicit consent before running
pac pages bootstrap-migrate. The engine writes a new<SITE_FOLDER>V5copy and never edits the source, so canceling leaves nothing changed.
-
Get explicit consent to run the engine (
AskUserQuestion: "Run the Bootstrap 5 migration on<SITE_FOLDER>? This creates a new<SITE_FOLDER>V5copy and does not modify the original."). -
Run:
pac pages bootstrap-migrate --path "<SITE_FOLDER>" -
Confirm the engine produced
<SITE_FOLDER>V5containing:- Rewritten
*.html / *.js / *.aspx / *.ascx / *.cssfiles - Swapped
bootstrap.min.css(Bootstrap 5) - Updated
sitesetting.ymlwith aSite/BootstrapV5Enabledrecord logs.txtand per-file*-diff.json
See references/migration-engine-reference.md for the full output contract. Set
MIGRATED_FOLDER = <SITE_FOLDER>V5. - Rewritten
Output: MIGRATED_FOLDER produced with rewritten files, swapped CSS, logs.txt, and diffs.
Phase 5: Review the Change Report
Goal: Turn logs.txt into a structured, grouped summary that surfaces the ma
Truncated for display — read the full file on GitHub.
Related Skills
algorithmic-art
177.9kCreating 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.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
design
130.2kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVG…
ui-ux-pro-max
130.2kUI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
