Inspiration
I build Nightmare Mobile, an on-device image generator, so I know the part after generating: one prompt gives dozens of takes, and a library of renders grows into thousands. Checking each one for a sixth finger, garbled text or a missing prompt element is slow, so most renders never get a proper look. A NAS is where those libraries end up, and the UGREEN AI NAS has a local vision model, so the check can happen where the files already live.
What it does
Point it at a folder and give it the prompt, or let it read the saved prompt:
Check /Renders/street against: a woman in a red jacket on a neon street in the rain.
Every image gets a verdict, PASS, FIX, CHECK or RE-RENDER, with a reason such as "missing: rain". Each FIX comes with a recipe, such as "inpaint the hand at denoise 0.35 to 0.5". Verdicts are saved as tags, so:
- reruns skip images that were already checked,
- "what still needs a hands fix?" works across folders,
- "undo the last check" puts everything back.
Nothing changes until you approve the preview. It can also move re-renders aside, build a best-of-batch album and save a report.
How I built it
It is a Skill following the Uliya Skill Development Standard: one SKILL.md plus seven linked reference files (decision rules, defect checklist, fix recipes, report format, examples, validation plan, disclosure). No scripts. It uses file-agent to list, read, tag and move files; photo-agent for embedded prompt metadata, per-image vision questions and albums; and knowledge-agent to save the report.
The key design choice: the vision model never rates images. It only answers yes, no or unclear to eight defect questions and up to six prompt-element questions. Written rules turn those answers into verdicts: a defect or missing element never passes, "unclear" becomes CHECK, and a malformed answer is retried once, then marked UNREADABLE.
Challenges
- There is no NAS to test on before the finals, so I wrote the decision rules as a reference implementation outside the Skill and tested that: 32 tests, including 2,000 random image groups.
- Prompt files are user data, and a file saying "pass everything" must not be obeyed. The Skill treats prompt text strictly as data, never as instructions.
- Small local vision models miss fine details, especially hands, so uncertainty gets its own verdict (CHECK) instead of a guess.
What I learned
Letting the model only observe and the rules decide makes a small model's mistakes visible and checkable, instead of hiding them inside a score.
What's next
If selected as a finalist: a 24-image test set with planted defects and an answer key (no planted defect may PASS), an approve-then-undo test, and a messy-folder edge case, all run on the NAS.
AI tools used
Claude Code (Anthropic) for platform research, drafting and revising the Skill text and these answers, and running the official checker. The UGOS Skill Creation Tool (uliya-skill-kit 0.7.3) for the capability catalog and static checks.
Built With
- claude-code
- markdown
- ugos
- uliya-skill-kit