AEM Local Instances Sync
[OVERVIEW]
A Claude Code/command that copies content between two local AEM instances, directly on disk, with both instances shut down. It’s for the moment you drop a fresh AEM SDK QuickStart and need your existing local content in it — no content packages, no Package Manager. You give it a source and a target; it builds and runs the Jackrabbit oak-upgrade sidegrade, asks before anything destructive, and verifies the result.
[TRYABLE]
1. Drop oak-migrate.md into .claude/commands/ in your project
2. Get an oak-upgrade jar (mvn dependency:get -Dartifact=org.apache.jackrabbit:oak-upgrade:2.6.0:jar), plus oak-run for verification
3. Run the discovery step once to list your real /content, /content/dam and /conf roots, then edit the path list in the command file
4. Shut down both AEM instances
5. Run /oak-migrate — optional: --merge, --with-versions, --verify
6. Approve the command when it asks, and answer the datastore question (copy binaries vs. shared)
7. Check the verification output: every path should match between source and target
8. Don’t start the target until the content is final — it reindexes on first boot
[SETUP]
https://github.com/EsteBustamante/ai-samples/blob/main/aem-local-instances-sync/README.md
[IMPACT]
The aim is to make refreshing a local AEM SDK cheap enough to do regularly, instead of putting it off for years. The copy runs in seconds rather than an afternoon of packaging and re-uploading, and because the path list and the guardrails live in the command file, anyone on the team can run it and get the same outcome.
[LESSONS]
[SAMPLE_OUTPUT]
https://github.com/EsteBustamante/ai-samples/blob/main/aem-local-instances-sync/oak-migrate.md
