skills/wedding-immortalist/SKILL.md
Transform thousands of wedding photos and hours of footage into an immersive 3D Gaussian Splatting experience with theatre mode replay, face-clustered guest roster, and AI-curated best photos per person. Expert in 3DGS pipelines, face clustering, aesthetic scoring, and adaptive design matching the couple's wedding theme (disco, rustic, modern, LGBTQ+ celebrations). Activate on "wedding photos", "wedding video", "3D wedding", "Gaussian Splatting wedding", "wedding memory", "wedding immortalize", "face clustering wedding", "best wedding photos". NOT for general photo editing (use native-app-designer), non-wedding 3DGS (use drone-inspection-specialist), or event planning (not a wedding planner).
npx skillsauth add curiositech/windags-skills wedding-immortalistInstall 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.
Transform wedding photos and video into an eternal, immersive 3D experience. Create living memories that let couples and guests relive the magic forever.
Input: Multiple venue spaces detected (ceremony, reception, cocktail hour)
├── < 500 photos per space
│ └── Train unified scene (risk: quality loss, benefit: seamless navigation)
├── 500-1500 photos per space
│ └── Train per-space with portal transitions (RECOMMENDED)
├── > 1500 photos per space
│ └── Split large spaces into sub-regions to avoid memory overflow
└── Mixed lighting conditions?
├── Yes → Separate indoor/outdoor scenes
└── No → Can merge with lighting adaptation
Input: Face embedding similarity scores across all detected faces
├── Photo count < 1000
│ └── Conservative threshold (0.4): Prefer precision over recall
├── Photo count 1000-5000
│ └── Balanced threshold (0.3): Standard wedding size
├── Photo count > 5000
│ └── Aggressive threshold (0.25): Large weddings need looser matching
└── Professional + phone photos mixed?
├── Yes → Increase threshold by 0.05 (lighting/quality variance)
└── No → Use base threshold
Input: Competing aesthetic signals detected
├── Venue theme ≠ Decor theme
│ ├── Venue rustic, decor modern → Weight decor 70%, venue 30%
│ └── Venue formal, decor casual → Weight venue 60%, decor 40%
├── Multiple cultural traditions
│ └── Create fusion palette prioritizing couple's primary heritage
├── Seasonal vs. chosen colors
│ ├── Spring wedding with fall colors → Honor chosen colors
│ └── Christmas wedding ignoring season → Blend seasonal + chosen
└── Guest attire contradicts theme
└── Ignore guest attire, focus on venue + intentional decor
Input: Wedding video files with metadata
├── Handheld/phone video (high motion blur)
│ └── Extract 1 fps to reduce blur frames
├── Professional video (smooth)
│ └── Extract 2-3 fps for optimal overlap
├── Drone footage
│ └── Extract 1 fps (smooth motion, redundant frames)
├── Ceremony (mostly static)
│ └── Extract 1 fps, boost for processional/recessional
└── Reception/dancing (high motion)
└── Extract 3 fps to capture movement variety
Input: Reconstructed space quality metrics
├── < 50 images AND reconstruction error > 5.0 pixels
│ └── Skip space: insufficient coverage, warn user
├── 50-100 images AND error > 3.0 pixels
│ └── Include with quality warning, mark as "preview quality"
├── > 100 images AND error > 2.0 pixels
│ └── Retrain with adjusted parameters, likely lighting issues
└── Blurry photos > 40% of space images
└── Skip space, request better photos from user
Symptom: Sparse reconstruction fails completely, no 3D points generated Detection Rule: If COLMAP outputs < 100 3D points for > 200 input images Diagnosis: Feature matching failure due to repetitive textures (white walls, flowers) or extreme lighting changes Fix:
Symptom: Single cluster contains 3+ distinct people, especially bridesmaids in similar makeup Detection Rule: If cluster size > 30 photos AND intra-cluster cosine distance variance > 0.15 Diagnosis: Similar makeup, lighting, or formal poses confusing embeddings Fix:
Symptom: UI colors clash horribly, typography doesn't match aesthetic Detection Rule: If extracted color palette has > 8 dominant colors OR no single color > 15% dominance Diagnosis: Too many competing signals from mixed lighting, decorations, clothing Fix:
Symptom: 3DGS training crashes, viewer freezes on load Detection Rule: If trained .ply file > 2GB OR browser memory usage > 8GB Diagnosis: Too many Gaussian points from over-densification or merged scenes Fix:
Symptom: Many face clusters have only 1-2 poor-quality photos Detection Rule: If > 30% of clusters have < 3 photos OR average aesthetic score < 0.4 Diagnosis: Insufficient photo coverage or professional photographer focused only on couple Fix:
Scenario: 1970s theme revival, disco balls, gold/orange/purple decor, mixed lighting (strobes + warm), professional + 50 guest phones
Step-by-step walkthrough:
Initial Assessment: 3000 photos, detect 4 spaces (ceremony, cocktail, reception, photo booth)
Theme Extraction:
Face Clustering:
3DGS Training:
Quality Gates Check:
Expert catches vs. Novice misses:
Scenario: Barn venue, earth tones, string lights, sage/cream decor, single professional photographer
Key decision differences:
Trade-off analysis:
This skill should NOT be used for:
native-app-designer instead for basic editing, filters, adjustmentsdrone-inspection-specialist for architectural/industrial 3D scanningDelegate to other skills when:
collage-layout-expertcolor-theory-palette-harmony-expertphoto-composition-criticface-detection-specialisttools
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.