migrate-icloud-desktop-assets
Skill0 starsChanged 5 months agoMITView on GitHub
Safely move media or automation assets out of an iCloud-synced Desktop while preserving legacy paths, producer and consumer behavior, and absolute-path ledgers. Use when Desktop and Documents sync causes file-read failures, cloud placeholders, duplicate posting risk, or a FILEMAP policy requires relocating real directories to a non-synced content root.
In this repository99 other files it gives its agents.
- agents-tools-quoted-jsonSkill
- asc-api-app-store-submitSkill
- asd-ste100Skill
- automation-bool-selector-pitfallsSkill
- automation-stale-cooldown-flagSkill
- autonomous-build-verifySkill
- book-to-skillSkill
- ccusage-cli-cost-trackingSkill
- chrome-ext-mv3-programmatic-injectSkill
- chrome-ext-store-assetsSkill
- claude-headless-p-invocationSkill
- claude-plugin-context-auditSkill
- claude-session-log-to-kbSkill
- cloudflare-workers-do-deploySkill
- codebase-to-courseSkill
- codesign-keychain-prompt-fixSkill
- codex-cli-setupSkill
- codex-delegation-handoffSkill
- content-factory-grounding-dedupSkill
- conversation-log-append-patternSkill
- cron-to-launchd-macosSkill
- cross-automation-shared-resource-killSkill
- design-token-migration-rnSkill
- discord-bot-image-to-claudeSkill
- discord-gateway-resume-dedupSkill
- excel-filtered-url-http-auditSkill
- execution-budget-vs-capsSkill
- expo-free-local-ios-testflightSkill
- ga4-connect-projectsSkill
- gcal-oauth-desktop-setupSkill
- git-commit-helperSkill
- git-prepush-secret-remote-checkSkill
- gsc-cli-automationSkill
- hatena-blogsync-autopostSkill
- hook-latency-wrapSkill
- hook-log-append-patternSkill
- html-to-pdf-slide-deckSkill
- humanizerSkill
- human-review-gate-shellSkill
- implementation-model-routingSkill
- insights-to-claude-mdSkill
- ios-permission-key-security-matrixSkill
- ios-sim-store-screenshotsSkill
- launchd-exit78-exconfig-debugSkill
- llm-content-pipeline-quality-gateSkill
- local-ai-video-pipelineSkill
- local-flux-mflux-image-genSkill
- local-llm-slow-diagnosisSkill
- local-music-generationSkill
- lottie-skottie-authoring-pitfallsSkill
- machine-wide-api-ratelimit-latchSkill
- macos-hook-path-timeoutSkill
- md-to-docx-reportSkill
- memory-md-inject-bloat-auditSkill
- message-display-secrets-maskSkill
- metric-source-attributionSkill
- nextauth-local-e2e-sessionSkill
- nextjs-rsc-payload-slimSkill
- nothing-designSkill
- openclaw-ollama-setupSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Read the active AGENTS.md and placement policy.
- Distinctive: line 17
Update every producer output root, its docstring, all consumer roots and account configuration, and current specs or docs.
- Very specific: line 19
Search ignored and tracked JSON, Python, and JavaScript files.
- Distinctive: line 22
Commit only task-owned tracked files.
- Very specific: line 26
Default rg skips gitignored ledgers and state.
- Distinctive: line 29
Do not fabricate a missing date directory to satisfy a range-shaped expectation.
- Distinctive: line 36
Every pre-existing child directory has the same file count before and after.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Migrate iCloud Desktop Assets
Procedure
- Read the active
AGENTS.mdand placement policy. Resolve every source and destination to explicit absolute paths. - Confirm each source is a real directory and every destination is absent. Capture per-child-directory file and media counts before moving.
- For each pair, run
mv <source> <destination> && ln -s <destination> <source>in one command list. Do not usecporrsyncfor same-volume moves. - Update every producer output root, its docstring, all consumer roots and account configuration, and current specs or docs.
- Back up each mutable ledger as
.bak, then mechanically replace the old absolute-path prefix. Include all related media pools whose names share that prefix. - Search ignored and tracked JSON, Python, and JavaScript files. Exclude logs and
.bak, but do not rely on defaultrgignore behavior. - Validate JSON, test the real consumer path, force a full PIL image load from the destination, and compare the post-move counts with the captured pre-move counts.
- Recheck Desktop after iCloud has had time to react. Inspect any conflict directory before removing it, and use
rmdironly when it is empty. - Commit only task-owned tracked files. Keep ledger backups local and preserve unrelated working-tree changes.
Pitfalls
- Default
rgskips gitignored ledgers and state. Userg --no-ignoreor the user's exact recursivegrepcommand for the final zero-match proof. statusis read-only in zsh. Use a name such asgrep_codewhen recording pipeline exits.- iCloud may recreate an old folder as
<name> 2after a symlink appears. Treat it as unknown until a direct content and metadata check proves it empty. - Do not fabricate a missing date directory to satisfy a range-shaped expectation. Preserve the pre-move state and report the pre-existing gap.
- A recursive
grepover a large development tree can take minutes. Poll the running process instead of treating empty intermediate output as completion. - An untracked
.bakis intentional recovery state, not a file to stage automatically.
Verification
ls -ld <legacy-paths>shows only symlinks pointing to the new root.- Every pre-existing child directory has the same file count before and after; aggregate media totals also match.
- The consumer returns absolute paths under the new root, and its duplicate filter recognizes rewritten ledger entries.
- PIL
Image.open(path); image.load()succeeds on a real destination image. - The final old-prefix search returns zero non-log, non-backup JSON, Python, and JavaScript matches.
jq emptypasses for all edited JSON, andcmpconfirms each ledger equals its backup with only the prefix replacement applied.- Targeted syntax checks and project tests pass. If code is shipped, local and remote commit hashes match afterward.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

