From photography-workflow
Audits a commercial-photography catalog for entries that require property releases, trademark clearance, or copyright analysis on depicted subjects (buildings, interiors, permanent public artwork, branded venues, signage, vehicles). Four-bucket disposition (remove / delist / SOFT-FLAG / OK / EXEMPT). Mandatory 1024px-long-edge downscale before viewing any image. Sibling skill: model-release-review for the persons-in-frame side. USE WHEN property release, image rights, can I sell this print, trademark in catalog, copyright in catalog, freedom-of-panorama question, sculpture in frame, venue in frame, branded building, catalog rights audit. NOT FOR persons / model releases (use model-release-review).
How this skill is triggered — by the user, by Claude, or both
Slash command
/photography-workflow:property-release-reviewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Before reading or classifying ANY image, downscale to 1024px on the long edge. Process only the downscaled copy. If resize fails, HALT and prompt the user.**
Before reading or classifying ANY image, downscale to 1024px on the long edge. Process only the downscaled copy. If resize fails, HALT and prompt the user.
import sharp from "sharp";
await sharp(srcPath)
.resize({ width: 1024, height: 1024, fit: "inside", withoutEnlargement: true })
.jpeg({ quality: 82, mozjpeg: true })
.toFile(outPath);
magick "$FILE" -resize "1024x1024>" "$OUT" is an acceptable ImageMagick fallback.
Output location: a scratch dir scoped to the active audit (e.g. <workdir>/downscaled/). Originals are never modified. If any resize fails, stop and ask — do NOT skip and continue.
The gate exists because description-only judgments (carry-over notes, captions, IPTC metadata, prior-session classifications) lie. Pixels don't.
For new-photo intake, this skill is step 3 of 5 in the pipeline:
This skill runs before model-release-review because property/trademark concerns are usually dispositive of the sale decision regardless of model release status. It runs after quality-review so rights-clearance effort is not spent on photos that won't pass the editorial gate.
For audit-only passes on an already-published catalog, this skill can be invoked standalone.
For each non-exempt catalog entry: is there anything in the depicted scene (building, interior, sculpture, mural, trademarked livery, signage, vehicle, named venue) that requires a property/trademark/copyright release before commercial sale?
FOP rules vary by country. The framework below is conservative enough to work in most jurisdictions but you must confirm the rule that applies to the country where you intend to sell, not just where the photo was taken.
Selected examples (verify before relying on these):
Permanence is the universal test. Temporary installations, traveling exhibitions, indoor museum pieces almost never qualify regardless of jurisdiction. When in doubt, treat as flagged.
| Concern | Type | Typical disposition |
|---|---|---|
| Branded logos / signage on buildings | Trademark | Delist from sale, keep as portfolio if desired |
| Distinctive corporate livery (vehicles, trains) | Trademark | Delist |
| Permanent outdoor sculpture, mural | Copyright + FOP | Often OK where FOP applies; verify |
| Temporary or indoor artwork | Copyright | Flag / remove |
| Building exteriors (vernacular architecture) | Generally clear | Usually OK |
| Interiors of paid-entry venues | Property right | Flag / remove |
| Installation art (mixed-media, mannequins, etc.) | Copyright | Flag / remove |
For audits that include metadata scrub steps:
Sensitive (consider scrubbing from filename, IPTC Keywords/Subject/Caption/Location/Sublocation):
NOT sensitive (keep as-is):
| Bucket | Action | When |
|---|---|---|
| Bucket 1 | Remove entirely (catalog + sales platform + file + originals archived) | Copyright flag with no FOP defense (installation art, indoor museum, temporary work) |
| Bucket 2 | Delist from sales platform; keep in gallery/portfolio | Trademark-only concern (branded livery, signage) |
| SOFT-FLAG | Surface to user — judgment call | Ambiguous; reasonable people could disagree |
| OK | Keep on sale | Cleared under FOP or no rights issue |
| EXEMPT | Skip entirely | Categories the catalog owner has declared exempt (e.g. macro, abstract, in-studio) |
The exact commands depend on your catalog architecture. The shape of the pipeline is universal:
Bucket 1 (full removal):
products.update(id, {active: false}) — archive each child price too)Bucket 2 (delist, keep in gallery):
sizes[] while retaining the sales-platform product ID for history)Example generator-filter pattern (your code may differ):
const forSale = entries.filter(e => e.salesPlatformProductId && e.sizes && e.sizes.length > 0);
const gallery = entries; // everything, sold or not
Originals archive: move (don't delete) so the decision is reversible. Recommend <archive root>/property-release-removed/ or similar.
When the user challenges a flag:
Examples of the kind of moves that should be conceded after debate:
Examples that should stand even under debate:
model-release-reviewSee sibling skill for the persons-in-frame side. When a photo trips both:
npx claudepluginhub derekslinz/photography-workflow --plugin photography-workflowProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.