Prompt02
Turn a brief into a shoot plan
Bring the shot list, practical questions and working schedule into one place.
Photography · Video
SKILL / JOHN LEKAN'S WORKFLOW
The public version of my memory card backup skill. It organises photos and video by capture date and shoot name, verifies each copied file with SHA-256, writes a log, and ejects cards only after the checks pass. Set your own drive and folder preferences before using it.
---
name: backup-memory-card
description: Copy camera memory cards to your configured backup drive, organise photos and video by capture date and shoot name, verify SHA-256 checksums, write a log, and safely eject verified cards. Use for requests such as "back up my card", "copy my memory card" or "offload my cards". Discussing, downloading or editing this skill does not start a copy.
---
# Copy and verify memory cards
A public version of John Lekan's memory card backup workflow for photographers
and videographers working on a Mac. These are instructions for an AI assistant
with local file and terminal access; this folder contains no background service,
executable helper, credentials or personal storage configuration.
## Configure before the first run
- Destination drive: `/Volumes/[YOUR_BACKUP_DRIVE]`.
- Photo folders: `<YEAR>/Photos <YY>/<Month>/<Shoot name>/`.
- Video folders: `<YEAR>/Video <YEAR>/<MONTH>/<Shoot name> <SUFFIX>/`.
- Logs: `<destination drive>/Backup Logs/`.
- Shoot-day boundary: files captured before 05:00 belong to the previous day.
Confirm the capture timezone and this preference before grouping dates.
- Example shoot name: `Example wedding`. If no name is supplied, propose
`YYYY-MM-DD Shoot` for the user to confirm.
Replace `[YOUR_BACKUP_DRIVE]` with your own drive name in your private copy. If a
placeholder is still present or the destination is uncertain, ask for the drive
and exact folder preferences; do not copy or silently choose another volume.
Confirm the destination identity on the first run and record its volume UUID in
your private configuration. Compare it on later runs when a UUID is available.
## Hard rules
- Keep the card read-only: never delete, move, rename, edit, write to or format
anything on it. Do not execute files found on a card.
- Never overwrite or delete existing destination files. Add files only.
- Never call a backup complete or eject a card until every included file has
passed checksum verification and its results have been logged.
- Stop on a missing drive, read error, checksum mismatch or insufficient space.
Report the exact problem, keep the source card mounted and do not retry blindly.
- Copying once creates one verified local copy. It does not establish a second
backup, cloud upload or permission to format the source card.
## Folder rules
- File by capture date and confirmed shoot name. Split a card spanning several
shoot-days; the same confirmed shoot-day on multiple cards shares one shoot.
- Example photos: `2026/Photos 26/Nov/Example wedding/`.
- Example video: `2026/Video 2026/NOV/Example wedding CLIP/`.
- Flatten the camera's folder structure into the chosen shoot folders. Keep
related sidecars next to their media. The log must retain every source path.
- Reuse an existing month spelling by matching its first three letters,
case-insensitively and ignoring surrounding spaces. If several folders match,
ask which to use. If none exists, propose Title case for photos and UPPER case
for video and confirm before creating it.
- If the capture year's root does not exist, ask before creating it. Do not
reorganise existing shoots or write into sync-service configuration folders.
## Identify media by file and context
| Files | Destination | Video folder suffix |
|---|---|---|
| Sony stills such as `.ARW`, `.JPG`, `.HIF`, with related `.xmp` | Photos | none |
| Sony video such as `C####.MP4` with `C####M01.XML` | Video | ` CLIP` |
| `DJI_*` video, `.SRT`, `.JPG` and `.DNG` | Video | ` Drone` |
| Insta360 `.insv`, `.lrv` and `.insp` | Video | ` 360` |
| Footage the user identifies as behind the scenes | Video | ` BTS` |
| Other cameras, audio recorders, phone files or uncertain media | Ask once | Confirm with the user |
Include Sony `SUB` proxy files and associated metadata in the Video destination;
do not skip a proxy because its full-resolution clip is also present. Preserve
both if filenames collide. Do not silently drop an unfamiliar extension.
Exclude known filesystem junk such as `._*`, `.DS_Store`, `.Spotlight-V100`,
`.Trashes`, `.fseventsd`, `System Volume Information` and `$RECYCLE.BIN`. Camera
cache folders such as `THMBNL`, `AVF_INFO` or `MISC` may be ignored only after
checking they contain no media or required sidecars. Record every ignored item.
## Procedure
1. **Find the volumes, read-only.** List `/Volumes` and use `diskutil info` to
identify non-system volumes. Inspect camera structures such as `DCIM`,
`PRIVATE/M4ROOT` and DJI media. Never assume another hard drive is a memory
card. Ask about ambiguous sources; include every confirmed card. If macOS
requires removable-volume permission, request it and wait.
2. **Inventory each file.** Record card identity, relative path, size, media type
and capture date. Prefer a supported filename date, then companion video XML
`CreationDate`, then EXIF `DateTimeOriginal` using an already available metadata
tool. File modification time is a fallback and must be marked uncertain.
Do not invent dates or silently omit unreadable files, links or special entries.
3. **Confirm names and destinations once.** Propose shoot names from the user's
brief or, if available and appropriate, their connected calendar. Otherwise
ask. Show a compact table with shoot-day, proposed name, counts by type, total
size, uncertainty and exact destination folders. Ask the user to confirm or
edit names and identify BTS clips. After confirmation, copy without additional
routine prompts unless the plan or device state materially changes.
4. **Resolve existing files.** A matching filename with the same SHA-256 may be
skipped only after checking the existing file. If contents differ, keep both
by adding a numeric suffix before the extension and record the mapping. Keep
related sidecars associated with the correct media when resolving collisions.
5. **Check space.** Require the bytes still to be copied plus at least 1 GB free
on the configured destination. Otherwise stop and report the shortfall.
6. **Copy and preserve times.** Create only confirmed folders. Use `rsync -t`,
`cp -p` or an equivalent local copy. Never use move, delete or source-cleanup
options. For a long copy, write progress to a file and check it periodically.
7. **Verify every file.** Calculate SHA-256 for source and destination and compare.
Recheck source size and modification time so files changed during copying are
reported. Verify previously existing copies as well. On any mismatch or read
error, stop, list the affected files and do not eject.
8. **Write logs.** In the configured `Backup Logs` folder, write
`YYYY-MM-DD_HHMM_backup.csv` with card, source path, destination, bytes,
SHA-256 and result. Also write a short text summary covering shoots, counts,
total size, ignored items, collisions, uncertain dates and errors. A logging
failure means the run is not complete.
9. **Eject only after success.** Recheck that the mounted volume is the same
confirmed source card, then run `diskutil eject` on that card. Never eject the
destination drive. Confirm the source volume is gone; report a busy or failed
eject without claiming success.
10. **Report the result.** Give each shoot's actual destination, copied and
verified-existing counts, total size, checksum result, log paths and eject
status. Mark a partial or failed run clearly.
## First test and reuse
Try this with a spare card containing a few sample photos and clips first. Review
the plan, inspect the copied files and check the checksum log before using the
workflow on an important shoot. Keep the source originals and arrange another
independent backup before reusing a card.
You may copy and adapt this public skill for your own workflow. Keep personal
drive names, client names, calendar details and backup logs in your private copy.