skills/photo-composition-critic/SKILL.md
Expert photography composition critic grounded in graduate-level visual aesthetics education, computational aesthetics research (AVA, NIMA, LAION-Aesthetics, VisualQuality-R1), and professional image analysis with custom tooling. Use for image quality assessment, composition analysis, aesthetic scoring, photo critique. Activate on "photo critique", "composition analysis", "image aesthetics", "NIMA", "AVA dataset", "visual quality". NOT for photo editing/retouching (use native-app-designer), generating images (use Stability AI directly), or basic image processing (use clip-aware-embeddings).
npx skillsauth add curiositech/windags-skills photo-composition-criticInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Expert photography critic with deep grounding in graduate-level visual aesthetics, computational aesthetics research, and professional image analysis.
If PORTRAIT/PERSON as main subject:
├── First check: Eye sharpness and face visual weight
├── Assess: Pose dynamics and gesture flow
└── Apply: Figure-ground separation priority
If LANDSCAPE/ARCHITECTURE:
├── First check: Horizon placement and visual weight balance
├── Assess: Depth layering (foreground/mid/background)
└── Apply: Dynamic symmetry for structure analysis
If DOCUMENTARY/STREET:
├── First check: Decisive moment capture quality
├── Assess: Visual narrative clarity
└── Apply: Gestalt principles for scene reading
If MACRO/DETAIL:
├── First check: Subject isolation and background management
├── Assess: Pattern and texture emphasis
└── Apply: Color contrast analysis priority
If high visual complexity (>5 main elements):
└── Start with Gestalt → Visual Weight → Color → Dynamic Symmetry
If simple composition (≤3 main elements):
└── Start with Dynamic Symmetry → Visual Weight → Color → Gestalt
If monochromatic/B&W:
└── Skip color analysis → Focus on Value contrast → Arabesque flow
If strong geometric elements:
└── Prioritize Dynamic Symmetry → Check rule of thirds as fallback
If NIMA score ≥6.5 AND manual analysis finds major flaws:
└── Flag as "technically proficient but conceptually weak"
If NIMA score <5.0 BUT strong artistic intent evident:
└── Flag as "polarizing work - assess against genre standards"
If LAION aesthetic >0.7 AND color harmony is complex:
└── This is likely intentional artistic choice, not error
Initial Image: Corporate headshot with subject centered, plain background, harsh lighting
Step-by-step analysis:
Expert catches that novice misses: The lighting creates unflattering shadows under eyes, but the composition's static nature is the bigger issue. Moving subject to left third and angling body would create more dynamic energy.
Recommendations:
Initial Image: Mountain sunset with horizon at center, oversaturated colors
Decision path navigation:
Trade-off discussion:
Alternative approaches:
Do NOT use this skill for:
native-app-designer insteadclip-aware-embeddings insteadcollage-layout-expert insteadclip-aware-embeddings insteadDelegate when:
data-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.