migrate
Identify breaking changes between custom element manifest versions and suggest migration steps. Use when the user asks to "migrate", "upgrade components", "find breaking changes", "compare manifests", "what changed between versions", or mentions "deprecation" or "migration guide".
What this skill does
# Migration Assistant
Compare custom element manifests across versions to identify breaking changes and generate migration guidance.
## Workflow
### Phase 1: Identify Versions to Compare
Determine the two versions to compare. Sources:
1. **Git-based**: Compare the current manifest against a previous git ref
```bash
git show {ref}:path/to/custom-elements.json
```
2. **File-based**: User provides two manifest files or paths
3. **Package-based**: Compare installed version against a target version
- Read current manifest from `node_modules/{package}/custom-elements.json`
- Check the target version's manifest
Read the current project's elements for context:
```text
cem://elements
```
### Phase 2: Diff Analysis
Compare the two manifests and categorize changes:
#### Removed (Breaking)
- **Removed elements**: Tag names that no longer exist
- **Removed attributes**: Attributes dropped from an element
- **Removed slots**: Named slots that no longer exist
- **Removed events**: Events that are no longer fired
- **Removed CSS parts**: Parts no longer exposed
- **Removed CSS custom properties**: Theming properties removed
#### Changed (Potentially Breaking)
- **Renamed attributes**: Attribute name changed (detect via similar names + same type)
- **Type changes**: Attribute type changed (e.g., `string` to `enum`, `boolean` to `string`)
- **Enum value changes**: Valid values added or removed
- **Default value changes**: Different default behavior
- **Slot renamed**: Named slot changed (detect via similar names)
- **Event detail changes**: Event detail type modified
- **CSS property renamed**: Custom property name changed
#### Added (Non-Breaking)
- **New elements**: Newly available tag names
- **New attributes**: Additional configuration options
- **New slots**: Additional content areas
- **New events**: Additional observable state changes
- **New CSS parts/properties/states**: Additional styling hooks
#### Deprecated
- **Deprecated attributes**: Marked for future removal
- **Deprecated elements**: Elements scheduled for removal
- Look for `deprecated` field or deprecation notes in descriptions
### Phase 3: Impact Assessment
For each breaking change, search the project for affected usage:
- Search HTML files for removed/changed element tag names
- Search for removed attribute names on affected elements
- Search for removed event listeners
- Search CSS for removed parts and custom properties
Report the number of affected files and locations.
### Phase 4: Migration Report
````markdown
## Migration Report: {package} {old-version} -> {new-version}
### Summary
- Breaking changes: X
- Potentially breaking: X
- New features: X
- Deprecations: X
- Files affected: X
### Breaking Changes
#### 1. `<old-element>` removed
**Impact**: Used in X files
**Migration**: Replace with `<new-element>`
```diff
- <old-element attr="value">content</old-element>
+ <new-element attr="value">content</new-element>
```
**Files affected**:
- `src/pages/login.html:15`
- `src/components/form.html:42`
#### 2. `variant` attribute on `<prefix-button>` renamed to `appearance`
**Impact**: Used in X files
**Migration**: Rename the attribute
```diff
- <prefix-button variant="primary">
+ <prefix-button appearance="primary">
```
### Deprecation Warnings
[Items that still work but will break in a future version]
### New Features
[Brief summary of what's new — the user might want to adopt these]
### Recommended Migration Order
1. [Fix breaking changes that cause build/runtime errors first]
2. [Address deprecation warnings]
3. [Optionally adopt new features]
````
## Guidelines
- **Be conservative with "renamed" detection**: Only suggest a rename if the types match and names are similar — don't guess
- **Show concrete diffs**: Every breaking change should include a before/after code example
- **Find all affected files**: Don't just describe the change abstractly — show where it matters in the project
- **Distinguish runtime breaks from cosmetic changes**: A removed attribute is worse than a changed default
- **Suggest incremental migration**: If there are many changes, recommend an order that keeps the project functional at each step
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.