osmo
Use this skill when a DJI Osmo Nano is connected to macOS in USB file-transfer mode.
Contract
- Captured stdout is JSON automatically.
- Success is
{schemaVersion, ok, command, data, meta.nextSteps}. - Errors include
{code, message, hint}and a nonzero exit code. - Inspect live schemas with
osmo schema [operation] --json. - Pass
--volume <path>only when automatic discovery does not select the intended mount.
Workflow
- Run
osmo doctor --json. - Run
osmo device status --json. - Review with
osmo media list --jsonorosmo media inspect latest --json. - Preview with
osmo import plan --dest <path> --json. - Stop if
conflictFilesis not zero. - Import with the same filters using
osmo import run --dest <path> --json. - Confirm copied files and
receiptIdin the result. - Eject with
osmo device eject --jsononly after all file work is complete.
Boundaries
- Never treat LRF files as originals. Add
--include-proxiesonly when proxies are wanted. - Never delete source media through shell commands as part of this workflow.
- Do not claim the CLI can change recording settings, microphone routing, firmware, or DJI Mimo state.
- A
suspecttimestamp must not be used as the sole organization key. - If a destination conflict exists, choose a new destination or have a human resolve it. Do not overwrite it.
- Use
osmo receipt list --jsonto audit prior writes.
Recovery
DEVICE_NOT_FOUND: reconnect the Vision Dock, accept the accessory on macOS, select file transfer on the Nano, then rerunosmo doctor.DEPENDENCY_MISSINGor probe unavailable: install ffmpeg for rich metadata. Listing and import remain available.IMPORT_CONFLICT: inspect the destination and rerunosmo import planwith a different directory.HASH_MISMATCH: leave source media untouched, retry to a new destination, and inspect the USB connection.EJECT_FAILED: close applications using the volume, then retry.