Inspiration

A photographer comes home from one shoot with hundreds of near-identical frames. Culling them by hand takes hours. Cloud culling tools are faster, but they upload private photos to someone else's servers. A NAS already holds the photos and now has a local vision model, so the culling can happen where the files live.

What it does

Shoot Triage takes one folder from one shoot and:

  • lists the images and flags exact duplicates
  • rates each image with the NAS vision model against a fixed, public rubric: sharpness, exposure, composition and subject
  • sorts them into keepers, maybes and rejects, with a one-line reason for every verdict; a weaker frame of a near-identical burst is never a keeper
  • shows a ranked table, and saves a cull report next to the files once the user confirms

Optional extras, each only after the user confirms the exact file list: apply existing NAS tags to the rated files, or fill a Keepers album.

It never deletes, moves or overwrites a file.

How we built it

Shoot Triage is a Markdown-only Skill written with the official UGOS Skill Creation Tool (kit 0.7.3). The parent Skill never calls a CLI itself. It delegates each step to an expert agent:

  • file-agent: ug-filesystem ls, ug-filemgr scan-dedupe, and tag-list / tag-add-file for the optional tags
  • photo-agent: ug-photo meta and vision-vlm for the rating, create-album for the optional album
  • knowledge-agent: ug-knowledge save-text for the report

Images are rated one per vision-vlm call, ten per chunk, up to 40 per run. Every CLI, action and parameter used is checked by a script against the kit's capability catalog, and the package passes the kit's static checker with 0 errors and 0 warnings.

AI disclosure: built by Kylne700 with an AI coding assistant (Claude) and the official UGOS Skill Creation Tool. No other third-party components.

Challenges we ran into

  • The kit's checker is stricter than its template (exact heading names, no README), so we followed the checker.
  • The catalog does not confirm that a Skill can create a named tag, so the Skill only reuses tags that already exist and skips tagging cleanly if there are none. The cull report never depends on an unverified step.

Accomplishments that we're proud of

  • Private by design: photos are judged by the local NAS model and never leave the box.
  • Explainable: every verdict has a reason tied to a public rubric.
  • Safe: read-mostly, with a yes required for every write and no delete path at all.

What we learned

A good Skill is mostly careful wording: clear inputs, explicit confirmations, and an honest message for every state (completed, failed, cancelled, waiting for the user, partial results).

What's next for Shoot Triage (plans, not built)

  • Validate runtime behaviour on a real UGREEN AI NAS: vision model speed, approval prompts, tag and album writes.
  • Group bursts by capture time before rating, so each burst is compared side by side.
  • Resume large shoots across runs.

Built With

  • claude-code
  • markdown
  • ugos
  • ugreen-ai-nas
  • uliya-skill-kit
  • vision-vlm
Share this project:

Updates

Submission history