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-expertdata-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.