/migrate
Apply DESIGN, canon, and modules to every page in the inventory, producing a deployable static HTML site. Use to migrate or render the whole captured site into the redesigned static tree ("migrate the pages", "render the migrated site", "apply the design to all pages", "build
$ npx -y skills add adobe/skills --skill migrate --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/migrate
Context preview
The summary Claude sees to decide when to auto-load this skill.
Apply DESIGN, canon, and modules to every page in the inventory, producing a deployable static HTML site. Use to migrate or render the whole captured site into the redesigned static tree ("migrate the pages", "render the migrated site", "apply the design to all pages", "build
SKILL.md
migrate.SKILL.mdname: migrate
description: Apply DESIGN, canon, and modules to every page in the inventory, producing a deployable static HTML site. Use to migrate or render the whole captured site into the redesigned static tree ("migrate the pages", "render the migrated site", "apply the design to all pages", "build the deployable site", "convert the approved prototype into the full site") — the page-rendering step between prototype and deploy/rollout. Three render branches (approved page, template-applied sibling, unique render), with a declared fidelity tier per page. Per-page, incremental, idempotent, content-preserving by default.
license: Apache-2.0stardust:migrate
Apply the target spec authored by `direct`, the visual canon written by `prototype --prep`, and the brand-module catalog extracted during `prepare-migration` to every page in the inventory. Produces a self-contained, deployable static HTML site under `stardust/migrated/`. Per-page, incremental, idempotent.
`migrate` is the final stardust phase. Output is platform- agnostic HTML — downstream conversion (AEM EDS, a CMS, a framework) is the job of a separate plugin that consumes `migrated/` plus `DESIGN.json` plus the per-page `_meta.json` sidecars.
Inputs
- `<slug>` — optional positional. Migrate just this page. Without
it, migrate every page whose status is `directed`, `prototyped`, or `approved` (and not `stale`).
- `--all` — migrate every page including stale ones.
- `--force` — re-migrate every page even when the idempotent
skip would skip them.
- `--require-approved` — refuse to migrate any non-`approved`
page. Default behaviour migrates `directed` pages too (using Path A′ or Path B per `reference/template-and-module-rendering.md`); this flag flips approval-gating on.
- `--strict-canon` — refuse approvals that conflict with canon.
Default logs the deviation and continues. Useful for projects where canon discipline matters more than per-template flexibility.
- `--clean` — delete assets previously bundled but no longer
referenced from `stardust/migrated/assets/`. Off by default (migrate is additive). **Implies `--force`**: every page is re-rendered so the run's `bundledAssets` Set is the complete union of currently-referenced assets — otherwise `--clean` would risk deleting assets still referenced by idempotent-skipped pages. See `reference/asset-bundling.md` § Stale asset cleanup.
- `--pin-timestamp <ISO8601>` — pin the migrate-provenance
timestamp so re-runs without source changes produce byte- identical HTML. Default re-uses the current wall clock, which is fine for normal use; CI deployment fingerprinting may want the pin.
The mobile-adapt audit, content-sourcing scan, and placeholder refusal are all mandatory gates — there is no `--skip-*` or `--allow-*` flag to bypass them. If a gate refuses a page, the remediation is to fix the proposed file (re-prototype, edit inline, or run an impeccable command) and re-invoke migrate.
Setup
0. **Playwright re-probe (mandatory first step).** `--no-save` playwright installs from earlier phases are pruned by any later real `npm i` (extract SKILL.md § Setup → `--no-save` installs are ephemeral). Before any rendering step, probe `node -e "import('playwright').then(()=>process.exit(0))"` from the project root and re-install (`npm i -D playwright --no-save --legacy-peer-deps`) on failure. 1. Run the master skill's setup (`skills/stardust/SKILL.md` § Setup). 2. Verify `stardust/state.json` exists with at least one `directed` page. 3. Verify project-root `DESIGN.md` and `DESIGN.json` exist with `DESIGN.json.extensions.canon` populated. 4. Verify `stardust/canon/` exists with at least `header.html`, `footer.html`, `canon.css`.
**Canon auto-bootstrap (when steps 3–4 find no canon).** The documented `prototype → migrate → deploy` happy path does not run `prepare-migration`, so a first migrate legitimately arrives with no canon (observed on 4 of 6 e2e sites, where every run had to derive canon by hand to proceed — this is the fix). When canon is absent **and** at least one `approved` prototype exists, do not stop: run the canon write-back inline from the first approved prototype (the canon-author, default `home`) per `../prototype/reference/canon-extraction.md` § Five-step procedure — extract `header.html` / `footer.html` / `canon.css` to `stardust/canon/`, pin tokens + compositional moves to `DESIGN.json.extensions.canon`, and record `canon.source: "auto-bootstrap: <slug>"`. This is exactly what `prototype --prep` does on first approval; migrate performs it on demand so the core pipeline never dead-ends. Only stop and recommend `$stardust prepare-migration` when canon is absent **and** no approved prototype exists (there is nothing to derive canon from). Under `state.json.handsOff` the bootstrap is automatic and logged; interactively, surface it as a one-line notice before proceeding. 5. Verify `stardust/direction.md` has an active (not pending) direction. 6. Read `state.json.pages[]` and partition into:
- **inScope**: status `directed`, `prototyped`, or
`approved`, `stale: false` (or `--all` / explicit `<slug>`).
- **skipped**: everything else, with reason captured.
7. **Validate provenance on every in-scope page.** Call `validateProvenance(page)` per `skills/stardust/reference/state-machine.md` § Provenance validation for every page in `inScope`. Abort with the helper's error when any page lacks live-render evidence — migrating a synthesized page record produces deployable HTML that misrepresents the source site, the exact failure mode that motivated the validator. Surface `Provenance OK on N pages` in the migrate-plan output before Phase 1. 8. **Mobile-adapt audit on every Path A / Path A′ source.** For every page whose render branch consumes a proposed or archetype HTML file (Path A, Path A′ per
Read more
name: migrate
description: Apply DESIGN, canon, and modules to every page in the inventory, producing a deployable static HTML site. Use to migrate or render the whole captured site into the redesigned static tree ("migrate the pages", "render the migrated site", "apply the design to all pages", "build the deployable site", "convert the approved prototype into the full site") — the page-rendering step between prototype and deploy/rollout. Three render branches (approved page, template-applied sibling, unique render), with a declared fidelity tier per page. Per-page, incremental, idempotent, content-preserving by default.
license: Apache-2.0stardust:migrate
Apply the target spec authored by `direct`, the visual canon written by `prototype --prep`, and the brand-module catalog extracted during `prepare-migration` to every page in the inventory. Produces a self-contained, deployable static HTML site under `stardust/migrated/`. Per-page, incremental, idempotent.
`migrate` is the final stardust phase. Output is platform- agnostic HTML — downstream conversion (AEM EDS, a CMS, a framework) is the job of a separate plugin that consumes `migrated/` plus `DESIGN.json` plus the per-page `_meta.json` sidecars.
Inputs
- `<slug>` — optional positional. Migrate just this page. Without
it, migrate every page whose status is `directed`, `prototyped`, or `approved` (and not `stale`).
- `--all` — migrate every page including stale ones.
- `--force` — re-migrate every page even when the idempotent
skip would skip them.
- `--require-approved` — refuse to migrate any non-`approved`
page. Default behaviour migrates `directed` pages too (using Path A′ or Path B per `reference/template-and-module-rendering.md`); this flag flips approval-gating on.
- `--strict-canon` — refuse approvals that conflict with canon.
Default logs the deviation and continues. Useful for projects where canon discipline matters more than per-template flexibility.
- `--clean` — delete assets previously bundled but no longer
referenced from `stardust/migrated/assets/`. Off by default (migrate is additive). **Implies `--force`**: every page is re-rendered so the run's `bundledAssets` Set is the complete union of currently-referenced assets — otherwise `--clean` would risk deleting assets still referenced by idempotent-skipped pages. See `reference/asset-bundling.md` § Stale asset cleanup.
- `--pin-timestamp <ISO8601>` — pin the migrate-provenance
timestamp so re-runs without source changes produce byte- identical HTML. Default re-uses the current wall clock, which is fine for normal use; CI deployment fingerprinting may want the pin.
The mobile-adapt audit, content-sourcing scan, and placeholder refusal are all mandatory gates — there is no `--skip-*` or `--allow-*` flag to bypass them. If a gate refuses a page, the remediation is to fix the proposed file (re-prototype, edit inline, or run an impeccable command) and re-invoke migrate.
Setup
0. **Playwright re-probe (mandatory first step).** `--no-save` playwright installs from earlier phases are pruned by any later real `npm i` (extract SKILL.md § Setup → `--no-save` installs are ephemeral). Before any rendering step, probe `node -e "import('playwright').then(()=>process.exit(0))"` from the project root and re-install (`npm i -D playwright --no-save --legacy-peer-deps`) on failure. 1. Run the master skill's setup (`skills/stardust/SKILL.md` § Setup). 2. Verify `stardust/state.json` exists with at least one `directed` page. 3. Verify project-root `DESIGN.md` and `DESIGN.json` exist with `DESIGN.json.extensions.canon` populated. 4. Verify `stardust/canon/` exists with at least `header.html`, `footer.html`, `canon.css`.
**Canon auto-bootstrap (when steps 3–4 find no canon).** The documented `prototype → migrate → deploy` happy path does not run `prepare-migration`, so a first migrate legitimately arrives with no canon (observed on 4 of 6 e2e sites, where every run had to derive canon by hand to proceed — this is the fix). When canon is absent **and** at least one `approved` prototype exists, do not stop: run the canon write-back inline from the first approved prototype (the canon-author, default `home`) per `../prototype/reference/canon-extraction.md` § Five-step procedure — extract `header.html` / `footer.html` / `canon.css` to `stardust/canon/`, pin tokens + compositional moves to `DESIGN.json.extensions.canon`, and record `canon.source: "auto-bootstrap: <slug>"`. This is exactly what `prototype --prep` does on first approval; migrate performs it on demand so the core pipeline never dead-ends. Only stop and recommend `$stardust prepare-migration` when canon is absent **and** no approved prototype exists (there is nothing to derive canon from). Under `state.json.handsOff` the bootstrap is automatic and logged; interactively, surface it as a one-line notice before proceeding. 5. Verify `stardust/direction.md` has an active (not pending) direction. 6. Read `state.json.pages[]` and partition into:
- **inScope**: status `directed`, `prototyped`, or
`approved`, `stale: false` (or `--all` / explicit `<slug>`).
- **skipped**: everything else, with reason captured.
7. **Validate provenance on every in-scope page.** Call `validateProvenance(page)` per `skills/stardust/reference/state-machine.md` § Provenance validation for every page in `inScope`. Abort with the helper's error when any page lacks live-render evidence — migrating a synthesized page record produces deployable HTML that misrepresents the source site, the exact failure mode that motivated the validator. Surface `Provenance OK on N pages` in the migrate-plan output before Phase 1. 8. **Mobile-adapt audit on every Path A / Path A′ source.** For every page whose render branch consumes a proposed or archetype HTML file (Path A, Path A′ per
Repo: adobe/skills
Other skills on adobe-skills.
- /aa-conversion-funnel-analysis
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Use this skill when someone describes a journey and asks about conversion rates, drop-off, fallout, or step completion. Trigger for "analyze our checkout funnel,"
Open skill - /aa-executive-briefing
Generates a concise, executive-ready performance summary covering key metrics, trends, and what's driving movement. Use this skill when someone needs to produce a briefing, executive summary, performance narrative, or stakeholder readout — for example, "write an exec summary of
Open skill - /aa-kpi-pulse
Produces a compact KPI digest showing how key metrics changed over a period and what's driving the movement. Use this skill when someone asks for a performance summary, a weekly recap, a morning briefing, a KPI update, or any variation of "how did we do this week/month." Also
Open skill - /aa-segment-performance-comparator
Compares the performance of two or more audience segments across key metrics side by side. Use this skill when someone wants to compare audiences or visitor groups — for example, "how do mobile visitors compare to desktop on conversion," "compare new vs. returning visitors,"
Open skill - /aa-top-movers-watchlist
Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric between two time periods. Use this skill when someone asks "what's up and what's down," "which campaigns moved the most," "top gainers and losers,"
Open skill - /cja-dimension-analysis
Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions — including cardinality, distribution/skew, trends, anomalies, data quality errors, comparisons, and forecasting. Also trigger when someone asks "what
Open skill

