# Osmo

> Operate the local-first DJI Osmo Nano import CLI safely and with machine-readable receipts.

- Skill: `crafter-station/osmo` (Agent Skill)
- Install (CLI): `npx skillmds@latest add crafter-station/osmo`
- Raw SKILL.md: https://api.skillmd.com/api/skills/crafter-station/osmo/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: crafter-station (https://skillmd.com/u/crafter-station)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/crafter-station/osmo

---


# 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

1. Run `osmo doctor --json`.
2. Run `osmo device status --json`.
3. Review with `osmo media list --json` or `osmo media inspect latest --json`.
4. Preview with `osmo import plan --dest <path> --json`.
5. Stop if `conflictFiles` is not zero.
6. Import with the same filters using `osmo import run --dest <path> --json`.
7. Confirm copied files and `receiptId` in the result.
8. Eject with `osmo device eject --json` only after all file work is complete.

## Boundaries

- Never treat LRF files as originals. Add `--include-proxies` only 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 `suspect` timestamp 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 --json` to audit prior writes.

## Recovery

- `DEVICE_NOT_FOUND`: reconnect the Vision Dock, accept the accessory on macOS, select file transfer on the Nano, then rerun `osmo doctor`.
- `DEPENDENCY_MISSING` or probe unavailable: install ffmpeg for rich metadata. Listing and import remain available.
- `IMPORT_CONFLICT`: inspect the destination and rerun `osmo import plan` with 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.

