diff --git a/README.md b/README.md index 7c834684..b06a6518 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ The **Depends on** column lists other skills in this repo that the skill invokes | [`highlight-key-takeaways`](skills/highlight-key-takeaways/SKILL.md) | Highlight the key takeaways in an Obsidian note with `==highlight==` syntax, in place. | — | | [`indie-hacker-wrapup`](skills/indie-hacker-wrapup/SKILL.md) | End-of-session ritual that mines the session on two lenses (the product built and the craft behind it), scores angles against a resonance bar, and drafts the strongest build-in-public post (or declines when nothing clears it), tracking past angles to repeat one only on stronger evidence. | `write-like-human` | | [`json-canvas`](skills/json-canvas/SKILL.md) | Create and edit JSON Canvas (`.canvas`) files — nodes, edges, groups, connections. | — | -| [`landing-page-copy`](skills/landing-page-copy/SKILL.md) | Generate high-converting landing page copy in markdown from a short product description. | — | +| [`landing-page-copy`](skills/landing-page-copy/SKILL.md) | Generate high-converting landing page copy in markdown from a short product description. | `create-product-vision` | | [`landing-page-gap-analyzer`](skills/landing-page-gap-analyzer/SKILL.md) | Audit landing page copy against a 13-section conversion blueprint and return a scored gap report. | `defuddle` | | [`markdown`](skills/markdown/SKILL.md) | Create, refine, or convert content into strictly formatted, export-ready Markdown. | — | | [`microsoft-clarity`](skills/microsoft-clarity/SKILL.md) | Add Microsoft Clarity analytics (heatmaps, session recordings) to a Next.js app. | — | diff --git a/changelog/20260713193547-landing-page-vision-section.md b/changelog/20260713193547-landing-page-vision-section.md new file mode 100644 index 00000000..1a00900d --- /dev/null +++ b/changelog/20260713193547-landing-page-vision-section.md @@ -0,0 +1,6 @@ +# landing-page-copy: add Vision section + clarify gate + +- Added a Vision / Manifesto section to the generated landing page, placed between Testimonials and About. +- Reframed the workflow into an explicit clarify gate: confirm nothing needed is missing before generating, and always ask for the product's vision. +- Vision is an optional input with a smart default (derived from transformation + pitch); when missing, the skill points to `create-product-vision` to draft one. +- Why: the copy captured the individual user's transformation but had no place for the bigger mission the customer joins, and there was no single checkpoint to catch missing inputs before writing copy. diff --git a/skills/landing-page-copy/SKILL.md b/skills/landing-page-copy/SKILL.md index d888a838..2dd7cdc6 100644 --- a/skills/landing-page-copy/SKILL.md +++ b/skills/landing-page-copy/SKILL.md @@ -11,8 +11,11 @@ Turn a short product description into a complete, conversion-focused landing pag 1. **Read the input**. Extract whatever is already given. 2. **Map to schema**. See [references/input-schema.md](references/input-schema.md) for required vs optional fields. -3. **Ask one question at a time** for each missing *required* field, in the order listed in the schema. Do not batch. Do not proceed until all required fields are answered. -4. **Apply smart defaults** for missing *optional* fields and flag them inline in the output as `> ⚠️ assumed:` notes the user can revise. +3. **Clarify gate — do not generate until it passes.** Confirm nothing needed is missing before writing a single line of copy: + - **Ask one question at a time** for each missing *required* field, in the order listed in the schema. Do not batch. Do not proceed until all required fields are answered. + - **Ask for the `vision`** — the bigger mission, the change the product is part of beyond the individual user's Point B. If the user has none, offer to draft one with the `create-product-vision` skill, or proceed with a default derived from `transformation` + `one_line_pitch` and flag it inline. Never block on vision. + - **Confirm the structure-changing optional flags** (`icp_technicality`, `offer_guarantee`, `urgency_basis`) with a single yes/no each, only when the answer would change output. +4. **Apply smart defaults** for the remaining missing *optional* fields and flag them inline in the output as `> ⚠️ assumed:` notes the user can revise. 5. **Generate the page** by filling [assets/output-template.md](assets/output-template.md), guided by [references/blueprint.md](references/blueprint.md). 6. **Apply copy rules** from [references/copy-rules.md](references/copy-rules.md) — voice, anti-patterns, conflict-resolution defaults. 7. **Run the self-check** (5 questions in copy-rules.md). If any section fails, rewrite that section once before returning. @@ -31,14 +34,14 @@ Required (skill blocks until provided): - `pricing_model` + `price_points` Optional (defaults applied + flagged): -- `founder_story`, `testimonials`, `trust_logos`, `icp_technicality`, `offer_guarantee`, `urgency_basis` +- `vision` (the bigger mission — always asked, since it adds a section), `founder_story`, `testimonials`, `trust_logos`, `icp_technicality`, `offer_guarantee`, `urgency_basis` Full prompts and defaults: [references/input-schema.md](references/input-schema.md). ## Output Markdown only. Sections in order: -Navbar · Hero · Trust Logos · Problem · How It Works · Features · Benefits Recap · Testimonials · About · Pricing · FAQ · Final CTA · Footer. +Navbar · Hero · Trust Logos · Problem · How It Works · Features · Benefits Recap · Testimonials · Vision · About · Pricing · FAQ · Final CTA · Footer. Section requirements: [references/blueprint.md](references/blueprint.md). Skeleton: [assets/output-template.md](assets/output-template.md). diff --git a/skills/landing-page-copy/assets/output-template.md b/skills/landing-page-copy/assets/output-template.md index 82da4e3c..d1fe0233 100644 --- a/skills/landing-page-copy/assets/output-template.md +++ b/skills/landing-page-copy/assets/output-template.md @@ -105,6 +105,17 @@ --- +## {{vision_headline}} + +{{vision_statement}} + +- {{vision_belief_1}} +- {{vision_belief_2}} + +> Visual: {{vision_visual_note}} + +--- + ## Why I Built This {{founder_story_paragraph_1}} diff --git a/skills/landing-page-copy/references/blueprint.md b/skills/landing-page-copy/references/blueprint.md index c132c8c0..29e549c7 100644 --- a/skills/landing-page-copy/references/blueprint.md +++ b/skills/landing-page-copy/references/blueprint.md @@ -57,12 +57,19 @@ Formula: emotional promise + rational delivery. - Match ICP demographics - Position right before pricing -## 9. About +## 9. Vision / Manifesto +- The bigger change / movement the product is part of — world- or category-level, beyond one user's Point B +- Ties the reader's personal transformation to that larger purpose ("you + us → this future") +- Short: 1 aspirational headline + 2–3 belief lines +- Grounded belief, not hype — no "we are passionate about…" fluff (see anti-patterns) +- Visual note: aspirational future-state image + +## 10. About - 2–3 short storytelling paragraphs + founder face note - What you've built before - Press / community mentions -## 10. Pricing +## 11. Pricing - 2–3 plans: downsell · main (highlighted "Most popular") · upsell - Anchor the main plan visually - 3–5 plan bullets, benefit-led @@ -73,18 +80,18 @@ Formula: emotional promise + rational delivery. - CTA under every plan - Default: no refund guarantee -## 11. FAQ +## 12. FAQ - 5–7 conversion-blocking objections - Order: setup → billing → support → safety - Straightforward, no BS - Include safety questions (cancel, trial, guarantee if offered) -## 12. Final CTA +## 13. Final CTA - Repeat the core promise (one line) - Big CTA — same label as hero/pricing CTAs - Optional micro-proof line under button -## 13. Footer +## 14. Footer - Simple nav (legal, contact, support) - Trust badges / certifications - Repeated CTA diff --git a/skills/landing-page-copy/references/input-schema.md b/skills/landing-page-copy/references/input-schema.md index 88a9823b..d7fcdc68 100644 --- a/skills/landing-page-copy/references/input-schema.md +++ b/skills/landing-page-copy/references/input-schema.md @@ -21,6 +21,7 @@ If the user's initial product description already answers some of these, **skip | Field | Default if missing | Inline flag | |---|---|---| +| `vision` | One-line vision derived from `transformation` + `one_line_pitch` (the bigger change this points toward) | `> ⚠️ assumed vision — replace with your real mission, or run create-product-vision to draft one` | | `founder_story` | Generic "built it because I lived this problem" placeholder | `> ⚠️ assumed founder story — replace with your real "why"` | | `testimonials` | 5 placeholder cards `[Name, Role]` with templated specific-outcome quotes | `> ⚠️ placeholders — swap in real quotes ASAP` | | `trust_logos` | Generic "Trusted by 500+ teams" line + logo slots | `> ⚠️ placeholder — add real logos / press mentions` | @@ -30,7 +31,10 @@ If the user's initial product description already answers some of these, **skip ## Order of Operations +This is the **clarify gate** — nothing gets generated until it passes. + 1. Parse what's already given. 2. Walk fields 1→8. For each missing one: ask, wait, restate. -3. Confirm optional fields with a single yes/no per field *only if* the answer would change output structure (e.g. "Is your ICP technical?" / "Do you offer a money-back guarantee?" / "Any authentic scarcity to use — limited seats, launch window, cohort close?"). -4. Generate. +3. Ask for `vision` — "What's the bigger mission here? The change you want to be part of, beyond what one user gets." If the user has none, offer to draft one with the `create-product-vision` skill, or proceed with the default (derived from `transformation` + `one_line_pitch`) and flag it inline. Never block on vision. +4. Confirm optional fields with a single yes/no per field *only if* the answer would change output structure (e.g. "Is your ICP technical?" / "Do you offer a money-back guarantee?" / "Any authentic scarcity to use — limited seats, launch window, cohort close?"). +5. Generate.