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:
tools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.