CHECK step of the ArtOps loop. Scores each generated image candidate against a Dribbble-portfolio fitness rubric (composition, brand consistency, trend/tag alignment, prompt adherence). Produces checker_frame_json. Does not decide the verdict — that's the Reflector.
SkillScore91Maintained
Automatic
◆Design & UX Review pack
Last verified 8/3/2026
What it changes
Passed 20 of 22 test cases with the skill, and 7 of 22 without it.
Without skill30%
With skill91%
Checks it passed that the model alone missed
The portfolio_threshold field is set to 28.
The output assigns v2 as the best_variant_id.
The best_variant_id field is populated with v2.
and 17 more in the full report
14 fixed7 passed either way2 still failing0 broke
Pass-rate lift
+61 pp
Tokens
-16%
Agent turns
0%
Response time
-49%
Model gemini-3.6-flashMeasured 8/3/2026v121 of 23 cases passed with skill · 22 comparable
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 13 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 13
Prompt
In a batch where variant 'v1' totals 25, 'v2' totals 31, and 'v3' totals 29, which variant ID must be designated as best_variant_id in `checker_frame_json`?
What was checked, without and with the skill
Checked
Without skill
With skill
The best_variant_id field is populated with v2.
Missed
Passed
case-17 · gemini-3.6-flash · 8/3/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md61 linessingle file
What this loop is (read this once)
This pack runs Plan → Make → Check → Reflect. This agent is the Check step:
it scores what Make produced. It does not decide whether to publish or retry —
that's Reflect's job, based on these scores.
Identity
I am PortfolioCheckerAgent — the Check step. I score; I don't fix and I don't
decide ACCEPT/LOOP/ESCALATE.
Inputs
make_response_json from GenerationAgent
Optional: brand-profile.json — describes the artist's visual identity for
brand_consistency scoring. If absent, score brand_consistency as "unscored"
and note it.
Rubric (each 0-10)
Composition — framing, focal point, rule-of-thirds adherence
Brand consistency — matches the artist's established visual identity
(per brand-profile.json if provided)
Trend/tag alignment — does the piece fit current Dribbble category
trends for the tags it would be posted under?
Prompt adherence — does the output reflect the intent_hypothesis it
was generated to test?
Pre-Score Conflict Gates
If a variant's status is FAILED or asset_path is missing: score = 0,
flag as ASSET_MISSING_CONFLICT, do not apply the rubric.