plugins/mac-migration-plugin/skills/mac-migration/SKILL.md
Generate a comprehensive Mac setup migration checklist as a self-contained interactive HTML file. Scans the current macOS environment — dock layout, installed apps, shell config, SSH keys, git config, Homebrew packages, fonts, developer tools, app-specific configs, and more — then produces a beautiful dark/light themed checklist page with progress tracking and localStorage persistence. Use this skill whenever the user wants to create a migration checklist, document their Mac setup, prepare for a new Mac, generate a setup guide, or capture their development environment configuration. Also trigger when users mention "mac migration", "new mac setup", "machine setup checklist", "dev environment snapshot", or similar phrases.
npx skillsauth add memfrag/apparata-plugins mac-migrationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate a comprehensive, interactive HTML checklist that documents the current Mac environment for migration to a new machine.
Run the generator script:
python3 <skill-path>/scripts/generate.py [output-path] [--name "User Name"]
output-path defaults to mac-migration.html in the current directory--name sets the title; auto-detects from the system if omittedThe script scans the environment and produces a single self-contained HTML file with:
The generator leaves application descriptions empty. After generation, read the Applications section of the HTML and fill in brief one-sentence descriptions for each app based on your knowledge. For example:
Keep descriptions short (under 8 words) and focused on what the app does, not who made it. Skip apps you don't recognize — the user can fill those in later.
Review the generated HTML with the user. They may want to add, remove, or reorder sections, add extra detail to specific items, or adjust the styling.
The generator auto-detects which sections to include based on what's installed:
| Section | Detects | |---------|---------| | Dock Layout | Persistent dock apps with embedded icons extracted from .icns bundles | | Applications | Apps in /Applications and ~/Applications | | Shell Configuration | ~/.zshrc, ~/.zprofile, ~/.bashrc — parses aliases, functions, exports, PATH entries | | ~/bin Scripts | Custom scripts and tools in ~/bin | | SSH Keys & Config | Keys in ~/.ssh, hosts from ~/.ssh/config | | Git Configuration | Settings and aliases from ~/.gitconfig | | Custom Fonts | Font families in ~/Library/Fonts | | Blender Configuration | User preferences and input mapping from latest installed Blender version | | Runtimes & Packages | Node/npm, Deno, Bun, Python/pip, uv — with global packages | | Homebrew | Formulae, casks, and taps | | Mint Packages | Swift package manager packages | | Developer Tools | Installed dev tools, versions, signing identities | | Claude Code | ~/.claude config, skills, plugins |
Sections are omitted if the relevant tool or config is not found on the system.
After generation, the user may want to:
Edit the generated HTML directly — it's self-contained. The CSS is in a <style> tag and
the JS is in a <script> tag at the bottom.
Simple checklist item:
<label class="item" data-id="unique-id">
<input type="checkbox">
<div class="item-content">
<span class="item-label">Item name</span>
<span class="item-desc">Description</span>
</div>
</label>
Expandable item with copyable command:
<div class="item-expandable" data-id="unique-id">
<div class="item-row">
<input type="checkbox">
<div class="item-content">
<span class="item-label">Item name</span>
<span class="item-desc">Description</span>
</div>
<button class="item-expand-btn" onclick="toggleExpand(event, this)">
<svg width="12" height="12" viewBox="0 0 12 12" fill="none">
<path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
</svg>
</button>
</div>
<div class="item-detail">
<div class="item-detail-cmd" onclick="copyCmd(this)">
<code><span class="cmd-prefix">$ </span>your command here</code>
<span class="cmd-copy">copy</span>
</div>
</div>
</div>
Card with group title:
<div class="card">
<div class="card-group-title">Group Name</div>
<!-- items go here -->
</div>
development
Extract timestamped transcripts from WWDC session videos. Use this skill whenever the user wants to read, search, or get the transcript of a WWDC session or Apple developer video — even if they just say something like "what did they say about concurrency in that talk" or "get me the transcript for session 230". Also use this when the user provides a developer.apple.com/videos URL and wants to know what the video covers.
testing
Download WWDC session videos in HD or SD quality. Use this skill whenever the user wants to download a WWDC video, save a session video to disk, or get the video file for a specific WWDC talk. Supports lookup by URL, session ID (e.g. "wwdc2025/230"), session number, or title. Also use when the user says things like "download the AlarmKit session" or "grab the HD video for session 287".
development
Fetch the WWDC session catalog from Apple's CDN by extracting the catalog URL from the Developer.app's WWDCCore binary. Use this skill whenever the user asks about WWDC sessions, WWDC videos, WWDC catalog, Apple developer conference content, or wants to browse, search, list, or look up any WWDC session or talk — even if they just say something like "what sessions are there about SwiftUI" or "find me that WWDC video about concurrency". Also use this when the user wants to download or work with WWDC session metadata.
tools
Generate a blog-post-style HTML page from a WWDC session, interleaving transcript text with slide screenshots. Use when the user wants to create a blog post, readable page, or visual summary from a WWDC talk — e.g. "create blog post from WWDC session 230", "generate HTML for that WWDC talk", "make a readable version of the AlarmKit session".