Listing Photo Organizer
Claude Code plugin that sorts a batch photo shoot into one folder per SKU, by the time between shots. It copies, never moves, and a hook protects your originals.
About Listing Photo Organizer
Batch photography is the fastest way to shoot inventory, and sorting the results is the slowest part. A hundred photos named IMG_4101 to IMG_4200 have to become a folder per item before you can list anything, and one wrong drag can lose an original.
This Claude Code plugin does the sorting from the photos' own capture times. It reads when each photo was taken from the camera's EXIF data, or the file time when there's none, and starts a new group whenever there's a pause between shots (60 seconds by default). Groups are matched to your SKU list, in the order you shot the items, in a plan you check with Claude. A stray detail shot or two items shot without a pause are easy to fix, and a contact sheet lets you check by eye. Then the photos are copied into one folder per SKU, named SKU-01, SKU-02 and so on, with a log. The check command flags folders with too few or too many photos, photos under 500 px on the long side, and exact duplicates. Your originals are only ever read. Once you protect the shoot folder, a hook blocks deleting, moving, renaming or overwriting anything in it through Claude.
Inside: 4 commands (/photos-scan, /photos-group, /photos-apply, /photos-check), a skill with the rules and file formats, the photo helper (Node.js, no packages, no image libraries), the protecting hook, and a 13-photo sample shoot with tested outputs.
For resellers and shops that photograph many items in one session.
Limitations: grouping is by timing, so it doesn't recognise what's in a photo, and the plan needs a quick check. EXIF times are read from JPEGs. It doesn't edit or upload photos, and the hook is a safety net, not a backup.
Scanned: no issues found
Release v1.0.0 reviewed by AgentLoomX™ · 47 files · 40.9 KB
This package can
- Create, change or delete files
- Run shell commands on your machine
- Run commands automatically on Claude Code events: PreToolUse
What's inside (47 files)
- listing-photo-organizer/.claude-plugin/marketplace.json
- listing-photo-organizer/CHANGELOG.md
- listing-photo-organizer/examples/command-runs.md
- listing-photo-organizer/examples/helper-tests.md
- listing-photo-organizer/examples/output/groups.csv
- listing-photo-organizer/examples/output/listing-photos/apply-log-2026-10-30T06-43-53.csv
- listing-photo-organizer/examples/output/listing-photos/CO-1006/CO-1006-01.jpg
- listing-photo-organizer/examples/output/listing-photos/CO-1006/CO-1006-02.jpg
- listing-photo-organizer/examples/output/listing-photos/CO-1006/CO-1006-03.jpg
- listing-photo-organizer/examples/output/listing-photos/CO-1006/CO-1006-04.jpg
- listing-photo-organizer/examples/output/listing-photos/LG-1005/LG-1005-01.jpg
- listing-photo-organizer/examples/output/listing-photos/LG-1005/LG-1005-02.jpg
- listing-photo-organizer/examples/output/listing-photos/LG-1005/LG-1005-03.jpg
- listing-photo-organizer/examples/output/listing-photos/LG-1005/LG-1005-04.jpg
- listing-photo-organizer/examples/output/listing-photos/PG-1001/PG-1001-01.jpg
- listing-photo-organizer/examples/output/listing-photos/PG-1001/PG-1001-02.jpg
- listing-photo-organizer/examples/output/listing-photos/PG-1001/PG-1001-03.jpg
- listing-photo-organizer/examples/output/listing-photos/PG-1001/PG-1001-04.jpg
- listing-photo-organizer/examples/output/listing-photos/PG-1001/PG-1001-05.jpg
- listing-photo-organizer/examples/output/plan.csv
- listing-photo-organizer/examples/output/sheet.html
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4101.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4102.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4103.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4104.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4105.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4106.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4107.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4108.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4109.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4110.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4111.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4112.JPG
- listing-photo-organizer/examples/shoot-2026-10-30/IMG_4113.JPG
- listing-photo-organizer/examples/skus.txt
- listing-photo-organizer/LICENSE.txt
- listing-photo-organizer/plugin/.claude-plugin/plugin.json
- listing-photo-organizer/plugin/commands/photos-apply.md
- listing-photo-organizer/plugin/commands/photos-check.md
- listing-photo-organizer/plugin/commands/photos-group.md
- listing-photo-organizer/plugin/commands/photos-scan.md
- listing-photo-organizer/plugin/hooks/guard-originals.mjs
- listing-photo-organizer/plugin/hooks/hooks.json
- listing-photo-organizer/plugin/skills/photo-sorting/scripts/lib.mjs
- listing-photo-organizer/plugin/skills/photo-sorting/scripts/photos.mjs
- listing-photo-organizer/plugin/skills/photo-sorting/SKILL.md
- listing-photo-organizer/README.md
Read the skill's instructions listing-photo-organizer/plugin/skills/photo-sorting/SKILL.md
---
name: photo-sorting
description: Rules and helper for sorting a reseller's batch photo shoot into one folder per item (SKU). Reads capture times from JPEG EXIF or the file time, groups photos by the gaps between shots, matches groups to the SKU list in an editable plan, copies (never moves) photos into SKU folders with tidy names, checks counts, sizes and duplicates, and makes a contact sheet. A hook protects the original photos. Use with the listing-photo-organizer commands, or when the user wants listing photos sorted by item.
---
# Photo sorting
## Rules
1. **Originals are never changed.** The helper only reads the shoot folder and copies out of it. Offer `protect` so the hook guards the folder. Never delete, move, rename or overwrite anything in it, even if asked to "clean up": suggest doing that by hand after checking the copies.
2. **The plan is the user's decision.** Groups come from timing, which isn't perfect. Show the groups (and the contact sheet when in doubt), and change the plan's sku column only as the user confirms.
3. **Shoot in order.** Grouping works best when each item is photographed in one go, with a pause between items, and the SKU list is in the same order. A photo of a card with the SKU on it as each item's first shot makes checking easy.
## The helper
`node "${CLAUDE_PLUGIN_ROOT}/skills/photo-sorting/scripts/photos.mjs" <command> ...`
| Command | Does |
|---|---|
| `scan <folder> [--out photos.csv]` | Each photo's capture time (EXIF, or fil
…The full file is included with your purchase.
SHA-256 fd7448fd8a3e64f524c50e8c4e284153e26e9b3fbe8753f74c0acc7b870a4bbe
Signed with Ed25519 key a9c62a7921065aa9. Public keys
Scans catch known risky patterns; they are not a guarantee. Report anything that looks wrong to support.
Highlights
- Groups shots by the pauses between them
- Matches groups to your SKU list
- Copies into SKU folders, never moves
- Flags small photos and duplicates
- Contact sheet to check by eye
- Hook protects your original photos
- listing photos
- reseller
- photo organizer
- sku
- batch photography
- exif
- ebay
- poshmark
Keep exploring
More like this
Folder Organizer
by Marketplace Founder · Cloud Storage & Files
Free Claude Code plugin that tidies Downloads and cloud sync folders with a written plan, moves only after you confirm, undoes any time and never deletes.
Marketplace Conversion Audit
by Marketplace Founder · Data Analysis & Visualization
Audits the public pages of a marketplace, store or SaaS funnel, scores them against a conversion rubric, and ranks the top blockers with concrete fixes.
AgentLoomX™ Review Watch
by Marketplace Founder · Integrations & API Tools
Reports what changed in the review state of your AgentLoomX™ listings since the last run: approvals, rejections with reasons, long waits and new releases.