By derekslinz
Five-step intake pipeline for commercial-photography catalogs: metadata enrichment, quality gate, property/trademark/copyright audit, model-release audit, and explicit-sign-off publish to a sales platform. Mandatory 1024px-downscale gate on every image read. Mandatory per-photo sign-off before any live mutation.
Workflow for processing JPEG photos: view each image, generate a descriptive title (5–9 words), 60–90 word description, and 8–12 keywords; reverse-geocode any embedded GPS coordinates via Nominatim to add specific location detail; embed all metadata as IPTC fields using exiftool (without creating backup files); and rename each file to a hyphenated version of its title. USE when the user says things like: "tag these photos", "add metadata to my images", "generate keywords for photos", "embed IPTC data", "rename photos with descriptive names", "process these JPEGs", "add titles and descriptions to my photos", "geolocate my photos", or any request involving generating and embedding photo metadata at scale. Trigger even if only one of these steps is mentioned — the full workflow adds value every time.
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).
Step 2 of 5 in the photo intake pipeline. Assesses each candidate photo against technical, editorial, and print-readiness criteria before the image moves to legal review. Produces a PASS / CONDITIONAL PASS / FAIL verdict per image. On FAIL, surfaces specific reasons and waits for user instruction — takes no destructive action. Mandatory 1024px downscale before viewing any image. USE WHEN: quality check, quality gate, review photos before publishing, are these good enough, editorial review, technical review, print-ready check, assess photos. NOT FOR: metadata tagging (use /Photo-Metadata-Helper), rights audits (use /property-release-review and /model-release-review), final publishing (use /reviewed-photo-publish).
Step 5 of 5 in the photo intake pipeline. Takes a photo that has cleared metadata, quality, property, and model review and pushes it live — writes the catalog entry, creates the sales-platform product and child prices (one per supported print size), regenerates derived lists (for-sale, gallery, sitemap), moves the file from intake to the published location, and archives the original. Mandatory dry-run before any live sales-platform mutation. Mandatory 1024px-long-edge downscale for any pre-flight visual verification. USE WHEN: publish photo, list this print, push to sales, add to catalog, go live, finalize listing, complete the intake pipeline. NOT FOR: metadata tagging (use photo-metadata-helper), quality gating (use quality-review), rights audits (use property-release-review / model-release-review), or unpublishing a live entry (that's the remediation pipeline in property-release-review).
Audits a commercial-photography catalog for entries that require a signed model release. Four-tier classification (HARD-FLAG / SOFT-FLAG / OK / EXEMPT) keyed to identifiability-to-the-general-public, not facial recognition alone. Stricter bar for children (parental release) and workers at workplaces. Mandatory 1024px-long-edge downscale before viewing any image — pixels falsify description-only assumptions every time. Pairs with property-release-review for the rights side of the same catalog. USE WHEN model release review, person release, can I sell this print, identifiable person audit, candid model audit, child in catalog, worker in catalog, portrait release audit. NOT FOR property/architecture/artwork rights (use property-release-review).
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A five-step intake pipeline for commercial-photography catalogs, expressed as five self-activating skills. Built for a working photographer running a sales platform: every photo that ends up on a "buy this print" page has been through metadata enrichment, a quality gate, a property/trademark/copyright audit, a model-release audit, and a publish step — in that order, with no step skipped.
| # | Skill | Question it answers | Output |
|---|---|---|---|
| 1 | photo-metadata-helper | What is this photo of, where, and who? | IPTC title / description / keywords / PersonInImage embedded; file renamed from a hyphenated title |
| 2 | quality-review | Is it good enough — technically, editorially, and at print scale? | PASS / CONDITIONAL PASS / FAIL with one-line reasons; size restrictions if any |
| 3 | property-release-review | Is anything in the scene a rights concern (building, sculpture, mural, branded venue, trademark)? | Bucket 1 / Bucket 2 / SOFT-FLAG / OK / EXEMPT per image, with FOP analysis where relevant |
| 4 | model-release-review | Does anyone in the frame need a signed model release? | HARD-FLAG / SOFT-FLAG / OK / EXEMPT keyed to identifiability-to-the-public, with stricter bars for children and workers-at-workplace |
| 5 | reviewed-photo-publish | Catalog entry, sales-platform listing, intake-queue cleanup — only acts on photos that cleared every upstream step | Stripe product + child prices per supported size; file moved to published location; original archived; intake queue cleaned |
Each skill's SKILL.md declares its position in the pipeline. Order matters: quality runs before legal so rights-clearance effort isn't spent on photos that won't make it; property runs before model because property/trademark concerns are usually dispositive regardless of model status. A FAIL or Bucket-1 at any upstream step short-circuits the rest of the pipeline for that photo.
For audit-only sweeps of an already-published catalog, any single skill can be invoked standalone.
flowchart TD
SRC([Admin panel upload queue<br/><i>— or —</i><br/>input directory]):::source
SRC --> S1[1. photo-metadata-helper<br/><i>IPTC · rename · PersonInImage</i>]:::step
S1 --> S2{2. quality-review}
S2 -- FAIL --> H1[/Hold for re-edit or drop<br/>user decides/]:::halt
S2 -- PASS / CONDITIONAL PASS --> S3{3. property-release-review}
S3 -- Bucket 1 --> H2[/Remove + archive<br/>property concern dispositive/]:::halt
S3 -- Bucket 2 --> P[Mark portfolio-only<br/><i>no Stripe at step 5</i>]:::mark
S3 -- OK / EXEMPT --> S4{4. model-release-review}
P --> S4
S4 -- HARD-FLAG · no release --> H3[/Hold for release or drop/]:::halt
S4 -- OK / EXEMPT / release on file --> S5[5. reviewed-photo-publish<br/><i>dry-run preview</i>]:::step
S5 --> SO{Per-photo sign-off<br/>in current turn?}:::gate
SO -- No --> H4[/Halt; surface partial state/]:::halt
SO -- Yes --> LIVE[Stripe product + sized prices<br/>file moves · archive · queue removal]:::live
LIVE --> RPT([Final report:<br/>verdicts · dispositions · what shipped]):::report
GATE[[1024-gate · every image read<br/>load-bearing safety rule]]:::rule
GATE -.-> S1
GATE -.-> S2
GATE -.-> S3
GATE -.-> S4
GATE -.-> S5
classDef source fill:#eef,stroke:#446,stroke-width:1px;
classDef step fill:#efe,stroke:#363,stroke-width:1px;
classDef gate fill:#fee,stroke:#933,stroke-width:2px;
classDef halt fill:#fdd,stroke:#933,stroke-width:1px;
classDef mark fill:#ffe,stroke:#663,stroke-width:1px;
classDef live fill:#dfd,stroke:#363,stroke-width:2px;
classDef report fill:#eef,stroke:#446,stroke-width:1px;
classDef rule fill:#fef,stroke:#636,stroke-width:1px,stroke-dasharray: 4 2;
The two red-bordered nodes — the 1024-gate and the per-photo sign-off — are load-bearing safety rules. Everything else can be tuned; those two stay.
1. The 1024-gate. Before reading or classifying any image, downscale to 1024px on the long edge and view the downscaled copy. If the resize fails, HALT and ask — never fall back to the full-resolution original. This block is duplicated in every skill on purpose: it once prevented a session from burning ~137M tokens reading full-res photos, and inlining it is the only way to be sure it survives partial loads, refactors, and skill-level edits. Treat it as load-bearing safety code, not boilerplate.
npx claudepluginhub derekslinz/photography-workflow --plugin photography-workflowComprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
A growing collection of Claude-compatible academic workflow bundles. Covers scientific figures, manuscript writing and polishing, reviewer assessment, citation retrieval, data availability, paper reading, literature search, response letters, paper-to-PPTX conversion, and evidence-grounded Chinese invention patent drafting. Rules are organized as reusable skill folders with explicit workflows and quality checks.
Develop, test, build, and deploy Godot 4.x games with Claude Code. Includes GdUnit4 testing, web/desktop exports, CI/CD pipelines, and deployment to Vercel/GitHub Pages/itch.io.
Comprehensive PR review agents specializing in comments, tests, error handling, type design, code quality, and code simplification
Comprehensive feature development workflow with specialized agents for codebase exploration, architecture design, and quality review
Tools to maintain and improve CLAUDE.md files - audit quality, capture session learnings, and keep project memory current.