Skip to content
Back to skills

wedding-invitation

ASecurity

Use this skill when the user wants to design and generate a wedding invitation card in any language. The skill drives a conversational workflow — you gather the couple's info and style preferences, design a bespoke HTML template from scratch (no template selection), render it locally with headless Chrome, produce a print-ready PNG, and include a live tweak panel so the user can adjust colors, fonts, frames, and optional components without rebuilding. All data stays on the user's machine; no c...

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 22, 2026
ai-agentsgonodegitapi

Works with

  • claude code
  • cursor
  • cli
  • api

Security analysis

A100/100

Pro scans all 19 files and shows the line behind each finding

Scanned September 22, 2026

npx -y skills add wyx-sg/wedding-invitation-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of wedding-invitation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for wedding-invitation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wyx-sg-wedding-invitation/badge)](https://www.skillsdirectory.com/skills/wyx-sg-wedding-invitation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: wedding-invitation
description: Use this skill when the user wants to design and generate a wedding invitation card in any language. The skill drives a conversational workflow — you gather the couple's info and style preferences, design a bespoke HTML template from scratch (no template selection), render it locally with headless Chrome, produce a print-ready PNG, and include a live tweak panel so the user can adjust colors, fonts, frames, and optional components without rebuilding. All data stays on the user's machine; no cloud, no signups, no data leaves.
---

# Wedding Invitation Skill

## When to invoke

The user asks for help making a wedding invitation, save-the-date, or a similar event card (engagement, anniversary, etc.) in any language. They want a single image or set of images — not a website, not a SaaS product.

## Core principle: design, don't pick

This skill **does not** have a generic template gallery the user picks from. Every invitation is **designed from scratch for this specific couple** in the language(s) they want.

How many designs end up in the final gallery depends entirely on the **style picker** in Stage 3 — it's multi-select. Pick 1 aesthetic → 1 design. Pick 3 → 3 designs. Stage 4 produces a navigation gallery (`dist/preview.html`) + a tweak studio per design (`dist/<id>-studio.html`); Stage 5 produces the final gallery (`dist/index.html`) + detail page per design (`dist/<id>-page.html`). No mode flag, no upfront mode choice — count emerges naturally from picker selections.

Each design is custom-built (not pulled from a frozen template library) using `design-principles.md` as the visual vocabulary.

Your job:
1. Talk with the user to learn who they are, what language(s), and which aesthetic direction(s) fit their photos
2. Design **fresh** HTML template(s) tailored to them, one per direction they picked
3. Render them locally + open the gallery, where each design can be downloaded or tweaked via a live tweak panel

**The aesthetic vocabulary in `design-principles.md` is directional, not prescriptive.** Each aesthetic entry has a **Spirit** (the soul), a **Starting palette** (a reference, not a recipe — shift hues to match the photo), a **Typography family** (pick within the family for the formality the couple wants), and a **NEVER list** (hard constraints — those are non-negotiable). Some culturally-specific aesthetics also have **Hard cultural requirements** (e.g. `red-gold` must be red-dominant, `arabic` must use a mihrab arch). Otherwise, you are designing — using judgment to adapt the direction to the couple's photo, language, and preferences.

**The `examples/` directory is OFF LIMITS for reading.** It is a frozen showcase of reference invitations used in the README gallery — each in its own native cultural language. Reading those files is forbidden: they bias you toward copying a specific design, and their language may not match the user's chosen language. Use `design-principles.md` as your sole visual reference. **Do not show `examples/thumbnails/*.png` to the user during the Stage 3 style picker either** — the user fixates on "I want THAT one" and the agent gets pulled toward literal copy. Instead, present aesthetic directions as **mood-board cards** (palette swatches + type sample + spirit description). See `workflow.md` Stage 3 for the picker template.

The `references/` directory IS readable at runtime — it ships agent-side **structural scaffolds** (a blank-canvas template + a maximal tweak_options snippet). When the user picks Custom in Stage 3 (a chat-only escape hatch — see workflow.md), the agent runs a discovery dialogue to understand their vision, then designs candidate templates from scratch; the blank-canvas scaffold is an OPTIONAL structural starting point the agent can copy and design on top of. Unlike `examples/`, these are not finished designs to copy — they're skeletons.

### Repository layout note (for skill maintainers)

The 20 showcase invitations live in `examples/` as authoritative master copies. The GitHub Pages site at `docs/` is **generated** from `examples/` by `scripts/build-pages.js` and committed — GH Pages serves static files, so the generated artifacts are checked in. If you see two `styleNN-…html` files (one in each directory) and wonder which to edit, edit the `examples/` copy and re-run `node scripts/build-pages.js` to regenerate `docs/`. Don't hand-edit `docs/*.html`.

This layout matters only to the skill author. At runtime — when a user runs the wedding-invitation skill — neither `examples/` nor `docs/` is read. The skill works exclusively from `skeleton/`, `references/`, `workflow.md`, and `design-principles.md`.

## Language

The user's language choice is the FIRST design decision. Ask it before you ask anything else (see `workflow.md` Stage 1).

`data/wedding.json` declares `languages` as an array, e.g.:
- `["en"]` — English wedding card
- `["zh"]` — Chinese 婚帖
- `["zh", "en"]` — bilingual
- `["es"]`, `["ja"]`, `["ko"]`, `["fr"]`, ... — design from that culture's conventions

`design-principles.md` covers typography for the major scripts (Latin, CJK, Korean, Japanese, Arabic, etc.).

For non-en / non-zh languages, `derive.js` cannot auto-format dates and times — you write localized strings directly into `data/wedding.json`.

## Privacy invariant

Wedding data (photos, names, dates, venues, family info) is **highly sensitive**. The skill is designed so data never leaves the user's machine:

- All rendering is local (headless Chrome screenshots HTML files via file://)
- No telemetry, no API calls, no uploads
- `skeleton/.gitignore` excludes `photos/`, `data/wedding.json`, `data/designs.json`, and `dist/` from version control

Never suggest external services (image hosting, online editors, cloud rendering, web-based invitation builders) for any step.

The only network egress is at preview time: the browser loads webfonts from a Google Fonts CDN. The skill picks one at Stage 2 silently (no question to the user) — default to `fonts.googleapis.com` (official, faster outside CN), switch to `fonts.font.im` (a CN-reachable mirror) only when there's clear signal the user is in mainland China.

If the user is offline, the templates degrade to system fonts; the PNG export still works.

## Workflow

Read `workflow.md` before you start interacting with the user. It walks through 5 dialogue stages.

## Interaction principle (3-tier degradation)

Visual choices deserve visual previews. Non-visual discrete choices use the `AskUserQuestion` tool when available. Open-ended answers (names, dates) use plain text.

`AskUserQuestion` is **Claude Code specific**. If you're running in a different coding agent (Cursor, Aider, Codex CLI, Gemini CLI, etc.) and don't have that tool, degrade gracefully to plain text questions in chat.

`workflow.md` has the full 3-tier policy and worked examples.

## System requirements

The user's machine must have:
- Node.js 18+
- Google Chrome / Chromium / Microsoft Edge (any one — used by `render.js` for the PNG screenshot step)
- macOS, Linux, or Windows

If the user lacks a Chromium-family browser:
- **macOS:** `brew install --cask google-chrome` or download from <https://www.google.com/chrome/>
- **Linux:** `sudo apt install chromium-browser` (Debian/Ubuntu), `sudo dnf install chromium` (Fedora)
- **Windows:** `winget install Google.Chrome` or download from <https://www.google.com/chrome/>

Photos: ask the user for an absolute path on their machine; copy + rename into the project. Never ask them to upload anywhere.

## Design rules

Read `design-principles.md` before writing ANY template. It contains:
- Hard constraints (canvas size, mobile-first, photo handling, forbidden patterns)
- Per-language typography (fonts for zh / en / ja / ko / es / ar / ...)
- Concrete visual vocabulary for 14+ aesthetics (morandi, wabi-sabi, art-deco, new-chinese, etc.)
- Color palettes

This file is your **only** design reference. Do not read `examples/*.html`.

## Files in this skill

```
SKILL.md                  ← you are here
workflow.md               ← 5-stage dialogue and decision guide
design-principles.md      ← visual / technical constraints + per-aesthetic vocabulary
docs/                     ← GitHub Pages site (https://wyx-sg.github.io/wedding-invitation-skill/)
                            GENERATED from examples/ via scripts/build-pages.js — do NOT hand-edit
  index.html / index.zh.html   (EN/ZH landing pages with the 20-style gallery)
  invitations/<style>.html     (raw rendered invitation HTML — iframe sources for the detail pages)
  <style>.html                 (per-style detail page with iframe + meta + EN/ZH toggle)
  thumbnails/*.png             (copied from examples/thumbnails/)
  photos/*.jpg                 (copied from examples/photos/)
examples/                 ← skill-author source of truth; DO NOT READ at runtime
  *.html                    (20 example invitation templates — the master copies)
  thumbnails/*.png          (rendered thumbnails for README + inspiration display)
  photos/*.jpg              (per-template AI-generated couple photos)
references/                 ← agent-copyable starting points (runtime-readable, unlike examples/)
  blank-canvas.html           (neutral structural scaffold — optional starting skeleton for Custom flow)
  blank-canvas-designs.json   (maximal tweak_options snippet to crib for any design entry)
scripts/                  ← skill-author build tools (NOT used at user runtime)
  build-pages.js            (regenerates docs/ from examples/ — run before deploying GH Pages)
  build-thumbnails.js       (renders examples/*.html → examples/thumbnails/*.png at 2x)
  build-example-photos.js   (AI-generates examples/photos/*.jpg via Nano Banana Pro)
  fixtures.js / style-meta.js (shared placeholders + per-style metadata for the above)
skeleton/                 ← starting project copied into the user's workspace
  package.json
  scripts/
    derive.js               (expands seed → all required fields per declared languages)
    build.js                (renders templates with user data into dist/<id>.html)
    render.js               (cross-platform headless-Chrome → PNGs at 2 sizes)
    build-studio.js         (Stage 4: writes dist/preview.html + dist/<id>-studio.html)
    build-gallery.js        (Stage 5: writes dist/index.html + dist/<id>-page.html)
    picker-server.js        (optional loopback HTTP server for picker pages — npm run pick)
    template-engine.js      (tiny {{path.to.value}} replacer)
  templates/                (where new templates you write live)
  data/
    wedding.example.json    (post-derive schema example; bilingual zh+en)
    designs.example.json    (one entry per design; includes optional meta block)
  photos/                   (user drops their photos here)
  .gitignore
```

## Output: what success looks like

A directory like `~/my-wedding/` containing:
- `dist/<design-id>.html` — the rendered invitation (iframe source for galleries / detail / studio)
- `dist/preview.html` — Stage-4 nav gallery with live iframe thumbnails; entry to the studio
- `dist/<id>-studio.html` — per-design tweak studio: live color/font/frame/component switchers, no rebuild
- `dist/png/social/<design-id>.png` — 1080×1440, for messaging / email / social media
- `dist/png/print/<design-id>.png` — 2160×2880 at 300 DPI, for printing physical cards
- `dist/index.html` — Stage-5 final gallery (PNG thumbnails), each card links to its detail page
- `dist/<id>-page.html` — per-design detail page: iframe preview, palette/typography meta, two download buttons, prev/next pager (only when >1 design)

In Stage 4 the user opens `dist/preview.html` and tweaks; in Stage 5 they open `dist/index.html` to download. The two files coexist — flipping back to Stage 4 doesn't overwrite the Stage 5 deliverable.

Files in this skill

  • README.zh-CN.md6.9 KB
  • SKILL.md11.7 KB
  • design-principles.md37.5 KB
  • docs/index.html15 KB
  • docs/index.zh.html14.9 KB
  • docs/style01-new-chinese.html30.4 KB
  • docs/style02-modern-minimal.html30.6 KB
  • docs/style03-morandi.html30.5 KB
  • docs/style04-red-gold.html30 KB
  • docs/style05-vogue.html30 KB
  • docs/style06-black-gold.html29.9 KB
  • docs/style07-newspaper.html29.7 KB
  • docs/style08-letter.html28.8 KB
  • docs/style09-gugong.html30 KB
  • docs/style10-mediterranean.html30.5 KB
  • docs/style11-wabi-sabi.html29.7 KB
  • docs/style12-art-deco.html30 KB
  • docs/style13-ink-flower.html30.3 KB
  • docs/style14-retro-poster.html29.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…