skills/event-detection-temporal-intelligence-expert/SKILL.md
Expert in temporal event detection, spatio-temporal clustering (ST-DBSCAN), and photo context understanding. Use for detecting photo events, clustering by time/location, shareability prediction, place recognition, event significance scoring, and life event detection. Activate on 'event detection', 'temporal clustering', 'ST-DBSCAN', 'spatio-temporal', 'shareability prediction', 'place recognition', 'life events', 'photo events', 'temporal diversity'. NOT for individual photo aesthetic quality (use photo-composition-critic), color palette analysis (use color-theory-palette-harmony-expert), face recognition implementation (use photo-content-recognition-curation-expert), or basic EXIF timestamp extraction.
npx skillsauth add curiositech/windags-skills event-detection-temporal-intelligence-expertInstall 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 in detecting meaningful events from photo collections using spatio-temporal clustering, significance scoring, and intelligent photo selection.
Photo corpus analysis needed?
├─ Have GPS + timestamps?
│ ├─ Same location, different activities detected? ──── DeepDBSCAN
│ │ └─ Cost tolerance: High accuracy > speed ─────── Add CLIP embeddings
│ └─ Simple time/location grouping sufficient? ────── ST-DBSCAN
│
├─ Timestamps only (no GPS)?
│ ├─ Visual similarity important? ───────────────── Temporal + CLIP clustering
│ └─ Pure time-based events? ────────────────────── Temporal binning
│
└─ Need hierarchical events (vacation > daily > moments)?
└─ Multi-level ST-DBSCAN cascade ─────────────────── Expanding ε thresholds
| Event Type | ε_spatial | ε_temporal | min_pts | Use Case | |------------|-----------|------------|---------|----------| | Indoor party | 50m | 4hr | 5 | Home gatherings | | Wedding | 200m | 8hr | 8 | Venue + reception | | City tour | 5km | 12hr | 3 | Tourism, exploration | | Multi-day trip | 50km | 72hr | 10 | Vacation clustering | | Conference | 1km | 24hr | 6 | Business events |
Computed significance score?
├─ Score ≥ 0.8? ──────── Life event candidate (birth, wedding, graduation)
├─ Score ≥ 0.6? ──────── Major memorable event
├─ Score ≥ 0.4? ──────── Significant social gathering
├─ Score ≥ 0.2? ──────── Minor event worth keeping
└─ Score < 0.2? ──────── Daily routine, consider filtering
Symptoms: Every few photos become separate "events"; 50+ micro-events from one vacation Detection Rule: If >30% of events contain <5 photos AND duration <2 hours Diagnosis: ε parameters too restrictive, treating natural breaks as separate events Fix: Increase ε_temporal (2hr → 6hr) or use hierarchical clustering with larger top-level ε
Symptoms: Wedding ceremony + reception next day grouped as single event Detection Rule: If single event spans >24hr AND contains >200 photos AND location changes >5km Diagnosis: ε parameters too permissive, merging distinct occasions Fix: Reduce ε_temporal (12hr → 6hr) OR add location change detection as break condition
Symptoms: Indoor event scattered across 10km radius; bathroom photos 500m from venue Detection Rule: If event location std_dev >2x expected venue size AND contains <20% outdoor photos Diagnosis: GPS drift/reflection causing false spatial spread Fix: Apply GPS smoothing filter OR increase min_pts to require more spatial consensus
Symptoms: Empty venue setup photos grouped with ceremony; parking lot + wedding altar same event Detection Rule: If visual diversity within event >0.8 cosine distance AND high location precision Diagnosis: ST-DBSCAN without visual validation grouping unrelated content Fix: Switch to DeepDBSCAN with ε_visual=0.4 OR post-filter by CLIP similarity
Symptoms: Friday work photos grouped with Saturday family party; overnight events split at midnight Detection Rule: If event crosses date boundary AND activity types differ >0.6 semantic distance Diagnosis: Fixed temporal windows ignoring natural event boundaries Fix: Use adaptive temporal windows OR detect activity changes as natural breaks
Input: 847 photos from weekend wedding, GPS enabled
photos = load_wedding_corpus("sarah_tom_wedding/")
# GPS range: Venue (40.7589, -73.9851) to Hotel (40.7505, -73.9934)
# Time range: Fri 2pm - Sun 11am (45 hours)
Decision Process:
Expert vs Novice Decisions:
Results:
Event 1: Rehearsal Dinner (Fri 6pm-10pm, 34 photos)
Event 2: Getting Ready (Sat 10am-2pm, 89 photos)
Event 3: Ceremony (Sat 2pm-4pm, 156 photos)
Event 4: Reception (Sat 5pm-11pm, 203 photos)
Noise: Travel/hotel photos (47 photos)
Scenario: 10,000 photo family corpus, computational budget constraints
Trade-off Decision:
Decision Factors:
Expert Insight: Cost/accuracy inflection point at ~5,000 photos where CLIP embedding overhead becomes worthwhile.
Event detection task complete when ALL conditions met:
Do NOT use this skill for:
photo-composition-critic insteadcolor-theory-palette-harmony-expert insteadphoto-content-recognition-curation-expert first, then apply event detectionDelegation patterns:
photo-composition-criticphoto-content-recognition-curation-expert, then this skillcollage-layout-expertcolor-theory-palette-harmony-experttools
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.