--- name: "cs-landing" description: "/cs:landing — Generate a premium single-file HTML landing page with GSAP 3D animations, scroll-triggered reveals, and mouse-parallax depth. Grill-me intake (4 questions) locks down product / audience / brand / tone before any markup. Output: ${OUTPUT_DIR}/.html or HTML artifact." --- # /cs:landing — Premium HTML Landing Page Generator **Command:** `/cs:landing ` The `cs-landing` persona generates one polished, self-contained `.html` landing page with GSAP animations, mouse parallax, and 3D CSS effects. ## When to Run - Launch pages where the page IS the experience (visual-premium one-pagers) - Product showcases with motion design - Brand sites where conversion rate isn't the primary metric — impression is ## When NOT to Run (use `landing-page-generator` instead) If you need **conversion-optimized lead-gen** with copy frameworks (PAS / AIDA / BAB), Next.js TSX components, multiple section variants for A/B testing — use `product-team/skills/landing-page-generator/` instead. That's a different skill optimizing for different outcomes. | Need | Skill | |---|---| | Visual premium one-pager | **`/cs:landing`** (this command) | | Conversion-optimized lead-gen | `landing-page-generator` | ## Trigger Phrases (auto-invoke without /cs:) - "create a landing page" - "build a landing page" - "make a landing page for X" - "I need a web page for Y" - "promotional page" - "product page" - "one-pager" - "web presence" - "sales page" **Note:** these trigger phrases may match either this skill OR `landing-page-generator`. If both are installed, Claude picks based on the conversation context (premium-visual hints → this skill; conversion / lead-gen / A/B-test hints → the other). ## Forcing Intake (3–4 Questions, One at a Time) | Q | Asks | Default if forcing-choice | |---|---|---| | Q1 | Product / service: name + 1–2 sentence elevator pitch | refuses vague answers ("app for productivity" gets pushed back once) | | Q2 | Audience register: technical / business / consumer / internal | forcing choice | | Q3 | Brand overrides: primary HEX + accent HEX + optional bg HEX, OR "default" | default = dark navy + teal | | Q4 | Tone: professional / playful / authoritative / minimal | forcing choice (recommended: professional for B2B, playful for consumer, minimal for design-led) | **Stop condition:** Max 4 questions. No follow-up during generation. ## What You Get A single `.html` file at `${OUTPUT_DIR}/.html` (default `./landing-pages/`) with: - **Hero** — 100vh, animated H1 entrance via GSAP timeline, scroll-down indicator, mouse-parallax depth layers - **Features** — 3-column grid (responsive 2-col at 900px, 1-col at 580px), SVG icons, scroll-triggered card reveals with `rotateX` lift - **Closing CTA** — large closing headline + ambient radial-gradient glow behind button All CSS inline. All JS inline. Externals: Google Fonts (Inter) + GSAP via CDN only. ## Discipline - **One intake question per turn.** Never bundle. - **Refuse vague Q1 once.** Push back; deliver with caveat if user won't sharpen. - **No FOUC.** Every animated element gets `gsap.set()` initial state. - **Inline-only.** All CSS + JS in the file. No external `.css` / `.js` references. - **Responsive.** Breakpoints at 900px + 580px. - **No hardcoded paths.** `${OUTPUT_DIR}` variable. - **Single-pass write.** No outline → draft → polish cycle. ## Workflow ```bash # 1. Intake (Q1-Q4 one at a time) # 2. If brand override provided, validate: python ../skills/landing/scripts/brand_palette_validator.py \ --primary "#FF6B35" --accent "#2EC4B6" --bg "#011627" # 3. Generate output filename python ../skills/landing/scripts/kebab_slug_generator.py \ --product "" --output-dir ./landing-pages # 4. Write the .html file in one pass (Hero + Features + Closing CTA + GSAP + mouse parallax + ScrollTrigger + CSS floats) # 5. Validate structure python ../skills/landing/scripts/html_validator.py \ --file ./landing-pages/.html # 6. Deliver: # CLI → file path # Web → HTML artifact ``` ## Stop Conditions - All 4 Qs answered + HTML generated + validator PASS → done - User says "skip intake" → use defaults for any unanswered Q (default brand, professional tone, audience inferred from elevator pitch) - Validator FAIL → regenerate the failing sections in one targeted pass; do NOT abandon the file ## Anti-Patterns Rejected - Hardcoded absolute paths in output directory - Single brand palette without override documentation - Outlining before writing — write in one pass - External CSS or JS files (must be inline) - Skipping `gsap.set()` initial states (causes FOUC) - More than 6 features in default grid (becomes unscannable) - Brand-specific content references in the skill itself - Bundling intake questions ## Related - Agent: [`cs-landing`](../agents/cs-landing.md) - Skill: [`landing`](../skills/landing/SKILL.md) - Source spec: `megaprompts/04-landing-megaprompt.md` (maintainer-local draft spec — gitignored, not in the public repo) - Sibling (different optimization): `product-team/skills/landing-page-generator/` - Adjacent v2 commands: `/cs:capture`, `/cs:pulse`, `/cs:inbox-setup`, `/cs:inbox-triage` --- **Version:** 1.0.0 **Source:** Path-B direct conversion of `megaprompts/04-landing-megaprompt.md`