| name | photo-gallery-delivery |
| description | End-to-end playbook for getting a set of photos to someone who can't use what you sent — pull the originals from a cloud album, convert HEIC to JPEG, build a browsable gallery plus a password-protected ZIP, host it on an unlisted URL, and share it through a gist gateway that holds the password. Orchestrates the amazon-photos-album-download, heic-to-jpeg-bundle, and cloudflare-workers-publish skills. Use when a recipient (dealer, adjuster, client) reports they can't open or download your photos, or when you want a clean unlisted JPEG gallery plus bulk download. TRIGGERS - share photos with someone, recipient cant open photos, jpeg gallery delivery, send photos as downloadable link, unlisted photo gallery, deliver photo set, heic recipient problem. |
| allowed-tools | Bash, Read, Write, Edit, AskUserQuestion |
photo-gallery-delivery
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
The full playbook for delivering a photo set to a real recipient when "just share the
album" isn't working — because the files are HEIC, the share app forces a login, or the
recipient's software can't ingest what you sent. It stitches three focused skills into one
flow and adds the gist-gateway + password delivery model.
When to use
- A recipient says they can't open / can't download / can't convert your photos
(classic: iPhone HEIC vs. Windows appraisal/CRM software).
- You want to hand over a clean, unlisted JPEG gallery (viewable in any browser, no app,
no login) plus a bulk ZIP — to a dealer, insurance adjuster, client, or contractor.
- You're already sharing a gist / landing page with people and want it to lead to JPEGs
instead of a format they can't use.
The pipeline
cloud album ──▶ download originals ──▶ HEIC→JPEG + gallery + ZIP ──▶ unlisted host ──▶ gist gateway
(share link) amazon-photos- heic-to-jpeg-bundle cloudflare- (link + password)
album-download workers-publish
Each stage is its own skill; this skill is the glue + the decisions between stages.
1. Pull the originals — productivity-tools/amazon-photos-album-download
Get a verified local copy of every original from the public Amazon Photos share link.
Store them outside any git repo (originals carry GPS/plate/VIN EXIF).
ALBUM_URL="https://www.amazon.ca/photos/share/<id>" ALBUM_OUT="$HOME/.cache/album/originals" \
bun "$(find ~/.claude ~/eon -path '*/amazon-photos-album-download/scripts/download-album.ts' | head -1)"
2. Convert + bundle — media-tools/heic-to-jpeg-bundle
Make a gallery (2048px view tier + thumbnails) and a password-protected ZIP sized to fit the
host's per-file cap.
bash "$(find ~/.claude ~/eon -path '*/heic-to-jpeg-bundle/scripts/make-bundle.sh' | head -1)" \
--src "$HOME/.cache/album/originals" \
--title "2023 Corolla Cross — trade-in photos" \
--zip --password "<PICK-A-PASSWORD>" --zip-cap-mib 25
3. Host it unlisted — devops-tools/cloudflare-workers-publish
Deploy the _bundle/site/ directory (gallery + per-photo JPEGs + the ≤25 MiB ZIP). You get
an unlisted https://<name>.<slug>.workers.dev/ URL. Mind the 25 MiB/file cap (CFW-16):
the gallery and a downscaled ZIP fit; a full-resolution ZIP does not — host that on R2 / a
GitHub Release / your own server and link it from the gallery. See
large files & ZIP delivery.
4. Share through the gist gateway
If you already share a gist (or any landing page) with recipients, make it the gateway:
- Add a "📸 Photos (JPEG)" section: the gallery URL, the ZIP URL, and the ZIP
password.
- Keep the password only on the gist, never on the Workers page (password-on-the-gateway,
see the cloudflare skill). The gist becomes the one place that has both link and password.
- If a short link (tinyurl) already points at the gist, every previously-sent link upgrades
for free.
gh gist edit <gist-id> -f <file.md> /tmp/updated-gist.md
Decisions to surface (use AskUserQuestion)
- Resolution / tiers: web-res gallery only, or also a full-resolution ZIP for the
recipient's own analysis? Full-res can't sit on Workers (size) — confirm a large-file host.
- Hosting: unlisted Workers (recommended) vs. public GitHub Release (world-readable —
avoid for PII) vs. own server.
- Gating: password-protected ZIP with the password on the gist, vs. open download.
- Privacy: these photos often show plate / VIN / home — keep originals out of git, prefer
unlisted hosting, and don't index publicly.
Worked example (June 2026)
A used-car buyer's Amazon Photos album of 125 HEIC trade-in photos was unusable to dealers
whose appraisal software couldn't open HEIC (the documented #1 blocker in their outreach).
Flow: pulled all 125 originals (byte-verified) → converted to a 2048px JPEG gallery + a
24 MiB ZipCrypto ZIP (--zip-cap-mib 25 downscaled it to fit) → deployed gallery + ZIP to
corolla-cross-trade-in.dmd0876.workers.dev (the 109 MiB full-res ZIP hit the 25 MiB cap, so
it was kept off Workers) → updated the dealer-facing gist with the gallery link, ZIP link, and
the password. Because a tinyurl already pointed at the gist, ~22 already-sent dealer links
upgraded to JPEGs with nothing re-sent.
Post-Execution Reflection
After a delivery, before closing:
- Did the recipient succeed? If they still struggled, note the exact tool/format and fix
the relevant stage skill (not this one, unless the orchestration itself was wrong).
- Did a stage's external dependency drift? (Amazon API, Workers cap, gist tooling.) Log
it in that stage skill's own notes/evolution-log.
- Only update this SKILL.md for real, reproduced changes to the end-to-end flow.