Pack Availability Guard
When recommending a skill from another pack, verify the target pack is installed via .agents/project.json enabled_packs. If it is not enabled, recommend npx skillpacks install <pack> from the project shell. After install, tell Codex users to start a fresh Codex CLI session if the $ skill list remains stale. Only the currently running skill and skills verified available in the active session or project-local install state are directly recommendable. For unavailable pack skills, recommend npx skillpacks install <pack-or-skill>; for unavailable base skills, recommend npx skillpacks init before the skill.
Landing Copy — Research-Grounded Landing Page Copy
Report-First Approval Gate
Default to scope-first approval: before synthesized research, inspect only enough repository, user, and source context to propose research scope, source plan, assumptions, output paths, and approval questions in a review alignment page plus a concise conversation summary.
Do not perform synthesized research, rank candidates, make recommendations, or write working packets or canonical deliverables until final compiled YAML approves the research scope. Minimal pre-approval discovery may identify available files, source categories, and open questions; label it as scope evidence, not findings.
After approved research-scope YAML, perform the research and write only the non-canonical working packet defined in the staged workflow. Then update the review alignment page with findings and stop again for feedback-only YAML or final compiled YAML artifact approval before creating or updating canonical research, spec, or task files.
Do not include Recommended next skill, Recommended next command, or downstream routing language. The approval request itself is the next action. Only emit next-skill routing after the approved artifact has been written or updated.
Staged Research Workflow
Use this staged workflow for synthesized research or report outputs that would create or update canonical research, spec, or task files.
- Stage 1 - Scope discovery and approval. Inspect only enough repository, user, and source context to propose research scope, source plan, assumptions, output paths, and approval questions. Build the
review HTML alignment page before synthesized research. The page must render the proposed scope, available source categories, known context, assumptions/confidence, proposed working-packet and canonical output paths, and research-scope approval gates. Stop for final compiled YAML approval of the research scope. Do not perform synthesized research, rank candidates, make recommendations, or write working packets, canonical research, spec, or task files in Stage 1.
- Stage 2 - Research and artifact review. Only after approved research-scope YAML with no unresolved
needs-clarification, unresolved down feedback, or other unresolved negative feedback, perform the synthesized research, run required source/code checks, and write only a non-canonical working packet: flat mode uses research/_working/preliminary-<skill>-research.md; product-path mode uses research/{slug}/_working/preliminary-<skill>-research.md. Replace <skill> with this skill's name value. Raw evidence or search logs may remain as supporting evidence where this skill already requires them, but synthesized deliverables stay in the working packet. Update the review HTML alignment page so it renders the complete working-packet substance as structured HTML review UI: purpose-built sections, tables, matrices, gates, cards, and tier-appropriate charts or diagrams that preserve every packet section, finding, caveat, and decision detail without summary loss. Raw Markdown packet text may appear only as a supplemental source view after the rendered review UI; do not make a Full Preliminary Packet or Full Working Packet raw Markdown dump, giant <pre><code> block, link-only view, or source-only view the primary review surface. Include the evidence matrix, assumptions/confidence register, source coverage gaps, proposed canonical file changes, and artifact approval gates. Stop for either feedback-only YAML or final compiled YAML. Feedback-only YAML revises the working packet and page, then remains in Stage 2.
- Stage 3 - Finalize approved artifacts. Consume final compiled YAML for artifact approval only when it has no unresolved
needs-clarification, unresolved down feedback, or other unresolved negative feedback. Apply approved edits first, archive the working packet to docs/history/archive/YYYY-MM-DD/HHMMSS/<original-working-path>, remove the active working packet, write the approved canonical artifacts to the unchanged output paths below, and convert the alignment page to confirmed with the approval record preserved.
Canonical output paths remain unchanged. Search logs and other supporting evidence remain allowed only where this skill's output contract already requires them.
Evidence And Feedback Handling
Treat user feedback as input to evaluate, not as automatic ground truth.
- For factual, evidentiary, technical, or source-backed claims: verify against available evidence. If the user appears to misunderstand the evidence or states something factually incorrect, push back clearly and cite the evidence. Do not rewrite findings merely to agree.
- For taste, brand, positioning preference, risk appetite, prioritization, or other subjective judgment calls: weigh user feedback heavily and adapt the recommendation unless it conflicts with verified evidence.
- When feedback mixes facts and preference, separate them explicitly: correct the factual part, then incorporate the preference where it is a legitimate judgment call.
- When uncertain, say what is known, what is inferred, and what would change the conclusion.
Prerequisites
Hard: None. Works with just a README or codebase — greenfield projects can use it immediately.
Soft (enhancement tiers — display the applicable tier to the user before starting):
| Tier |
Research Docs Present |
Copy Quality |
| 1 |
None — only README / codebase |
Functional but generic; many claims will be ungrounded |
| 2 |
positioning.md + icp.md |
Targeted messaging with real pain points and value props |
| 3 |
Tier 2 + gtm.md + competitive-analysis.md + journey-map.md |
Full funnel copy with differentiation and onboarding flow |
| 4 |
Tier 3 + customer-feedback.md + monetization.md + metrics.md |
Production-grade copy with social proof, pricing, and data-backed claims |
Read each if it exists (respect {slug}/ prefix when product-path scope is active):
research/positioning.md — market category, positioning statement, unique attributes, value mapping
research/gtm.md — messaging framework, one-liner, channel strategy, launch plan
research/icp.md — ICP segments, pain points, value props, trigger events, customer language
research/journey-map.md — onboarding flow, aha moment, task flows
research/customer-feedback.md — real customer quotes, recurring themes, objections
research/monetization.md — pricing tiers, packaging, free vs paid boundaries
research/metrics.md — north star metric, activation/engagement/retention metrics
research/competitive-analysis.md — competitor positioning, strengths, weaknesses, market gaps
Process
0a. Product Path Manifest
Read research/.progress.yaml when present. Normalize active_path (singular legacy) to active_paths (plural list) when reading; treat legacy abandoned as archived and exclude archived/deferred/revisit/promoted paths plus research/_archive/ scopes from active target selection. Scope landing copy to the active product path by default.
0. Product-Path Scope Resolution
Resolve research scope by product path before using code or app structure as a hint:
- If
$ARGUMENTS names a non-archived research/{slug}/ directory or a product-path ID whose scope_path points there, use that path. Treat {slug} as the product/app name, not the ICP, audience, or segment label.
- If
$ARGUMENTS names only research/_archive/{slug}/ or a manifest entry with status: archived or legacy status: abandoned, stop and warn that the path is archived; do not write or update scoped outputs there.
- Read
research/.progress.yaml when present. Normalize legacy active_path to active_paths on read and write back active_paths on manifest updates. Treat legacy abandoned as archived; exclude archived, abandoned, deferred, revisit_candidate, promoted, and any scope_path under research/_archive/ from active target selection.
- If active product paths exist in the manifest, use those paths. If multiple active paths exist, ask which one to target unless this skill explicitly supports cross-path output.
- If no active manifest target exists, list non-archived product directories under
research/, excluding research/_archive/ and dot directories. Auto-select only when exactly one exists; ask when multiple exist.
- If no product directories exist, use flat
research/ single-product mode.
- Detect monorepo/app/package structure only as a secondary hint. Suggest creating a missing
research/{slug}/ product path when code clearly exposes an app, but do not require code or monorepo detection before using research/{slug}/.
When product path {slug} is active, read and write research under research/{slug}/, specs under specs/{slug}/, and treat top-level research/*.md files as flat-mode documents or cross-path summaries.
1. Determine Mode
Parse $ARGUMENTS:
generate (default): Create complete landing page copy from research + codebase context
audit: Check existing copy against codebase reality, research drift, and conversion best practices
If mode is audit, jump to the Audit Mode section below.
Generate Mode
2. Load Context
Read all available research docs listed in Prerequisites (soft). For each:
- Note which docs exist and which are missing
- Extract the key claims, data points, and customer language that will ground copy sections
Also read:
CLAUDE.md, README.md — product name, description, core value proposition
- Key source files (routes, components, package.json) — to verify feature claims against reality
Determine the enhancement tier and display it to the user:
Research coverage: Tier [N] — [tier description from table above].
Missing docs that would improve copy: [list missing soft prerequisites with their $skill commands].
3. Web Research
Use WebSearch with 4–6 category-aware queries:
- Landing page best practices — "SaaS landing page copy best practices [year]", "high-converting landing page structure"
- Category-specific examples — "[market category from positioning.md] landing page examples", "best [category] homepage copy"
- Hero section patterns — "above the fold copy patterns", "hero section conversion optimization"
- Social proof patterns — "social proof landing page examples", "trust signals [category]"
- CTA optimization — "call to action best practices SaaS", "pricing page CTA patterns"
- Objection handling — "FAQ section landing page", "reducing purchase anxiety [category]"
4. Interview
If the session is already in Plan mode, prefer request_user_input; otherwise ask in plain text.
Brand Voice & Tone
- "What tone should the copy strike? (e.g., professional but approachable, bold and provocative, calm and reassuring)"
- "Any words or phrases you always use? Any you'd never use?"
- "Show me 1–2 examples of copy you admire (competitors, other products, anything)."
Claims Boundaries
- "What claims can we make confidently? (e.g., 'saves 10 hours/week' — do you have data for this?)"
- "Any claims we must NOT make? (legal, regulatory, unverified metrics)"
- "Do you have specific numbers we can cite? (users, uptime, speed benchmarks, customer count)"
Social Proof Availability
- "Do you have customer quotes or testimonials we can use? Company logos?"
- "Any press mentions, awards, or notable integrations?"
- "Case study data? (before/after metrics, customer stories)"
CTA Strategy
- "What's the primary CTA? (e.g., 'Start free trial', 'Book a demo', 'Get started')"
- "Secondary CTA? (e.g., 'See pricing', 'Watch demo', 'Read docs')"
- "Any urgency or scarcity elements? (limited beta, launch pricing)"
Structural Constraints
- "Any sections you definitely want or definitely don't want?"
- "Target audience for this page — is it the primary ICP or a broader audience?"
- "Any existing brand guidelines, style guides, or design constraints?"
5. Generate Sections (Parallel Subagents)
Launch 10 parallel subagents, one per section. Each subagent receives the full research context and interview answers, and produces copy for its section with inline source attribution.
Section assignments:
Hero — Headline, subheadline, primary CTA, supporting visual description.
Sources: positioning.md (positioning statement, market category), gtm.md (one-liner, messaging framework).
Problem Agitation — Articulate the pain the audience feels today.
Sources: icp.md (pain points, trigger events), customer-feedback.md (customer language, recurring complaints).
Solution Introduction — Introduce the product as the answer to the pain.
Sources: positioning.md (market category, unique attributes), icp.md (value props).
Benefits — 3–5 benefit blocks (not features — outcomes).
Sources: positioning.md (value mapping), icp.md (value props per segment).
How It Works — 3–4 step walkthrough from signup to value.
Sources: journey-map.md (onboarding flow, aha moment, task flows).
Social Proof — Testimonials, logos, metrics, trust signals.
Sources: customer-feedback.md (quotes, themes), metrics.md (north star, key numbers), interview answers.
Use Cases / Audience — Who this is for, with scenario-specific hooks.
Sources: icp.md (user profiles, segments), journey-map.md (use-case task flows).
Pricing — Tier summary, value anchoring, CTA per tier.
Sources: monetization.md (pricing tiers, packaging, free vs paid).
FAQ / Objection Handling — Address top objections and common questions.
Sources: competitive-analysis.md (competitor strengths to counter), customer-feedback.md (objections, concerns).
Final CTA + Footer — Closing argument, urgency, secondary links.
Sources: gtm.md (launch strategy, urgency elements), interview CTA answers.
Each subagent must:
- Write copy for its section only
- Add
<!-- Source: research/[file].md — [specific section/claim] --> comments after each grounded claim
- Flag any claim that has NO research backing as
<!-- UNGROUNDED: [claim] — no research source available -->
- Respect brand voice and claims boundaries from the interview
6. Assemble and Present
Combine all 10 sections into a complete landing page copy document. Present to the user with:
The full copy, section by section
A Research Grounding Summary table:
| Section |
Grounded Claims |
Ungrounded Claims |
Primary Sources |
| Hero |
N |
N |
positioning.md, gtm.md |
| ... |
... |
... |
... |
If any section has >50% ungrounded claims, flag it: "⚠ [Section] has limited research backing — consider running [$skill] first."
If the session is already in Plan mode, prefer request_user_input; otherwise ask in plain text:
"Ready to write this to research/landing-copy.md? Any sections to revise?"
7. Write Output
Only after user confirms, write:
research/landing-copy.md (or research/{slug}/landing-copy.md) — the full copy with source attribution
research/landing-copy-interview.md (or research/{slug}/landing-copy-interview.md) — interview Q&A log
8. Downstream Impact Check
Landing copy is a terminal artifact — it doesn't feed into other research skills. Perform a lightweight check:
- If
research/gtm.md exists and has a ## Messaging Framework section, compare the hero headline and one-liner against it. Flag if they've diverged.
- If
research/positioning.md exists, confirm the positioning statement is reflected in the hero and solution sections.
Classify impact:
- None: No conflicts. Skip display.
- Minor: 1–2 messaging inconsistencies. Display inline.
- Major: Hero/positioning fundamentally misaligned. Recommend
$reconcile-research.
9. Next Steps
Include a Recommended item (the single highest-impact next step given current project state) with a one-line reason, followed by Other options (2–4 alternatives). Use this format in the output:
Next Steps
Recommended: [recommended skill] — [one-line reason why this is the highest-impact next action given current state]
Other options:
$skill — [description]
- ...
Recommendation priority (first applicable becomes the recommendation):
- IF no
research/positioning.md: recommend $positioning — positioning drives hero copy; the headline is guesswork without it
- IF no
research/customer-feedback.md: recommend $customer-feedback — real customer quotes would replace placeholder social proof
- Otherwise: recommend "Implement the copy in your codebase — the source attribution comments show where each claim comes from"
Other options (include all applicable items not chosen as recommended):
- IF no
research/positioning.md: $positioning — Positioning drives hero copy; running it would significantly strengthen the headline
- IF no
research/customer-feedback.md: $customer-feedback — Real customer quotes would replace placeholder social proof
- IF no
research/monetization.md: $monetization — Pricing section is thin without a monetization strategy
- IF no
research/journey-map.md: $journey-map — "How It Works" section would benefit from mapped onboarding flows
- ALWAYS: "Implement the copy in your codebase — the source attribution comments show where each claim comes from"
- IF
research/gtm.md exists: $gtm — Refresh messaging framework to align with the final landing copy
Audit Mode
A1. Locate Existing Copy
Search for landing page copy in order of priority:
research/landing-copy.md (or research/{slug}/landing-copy.md)
src/pages/index.*, src/app/page.*, app/page.*, pages/index.*
index.html, public/index.html
- Any file matching
*landing*, *homepage* in common source directories
If no copy is found, tell the user and suggest running $landing-copy generate instead.
A2. Extract Verifiable Claims
Parse the located copy and extract every verifiable claim:
- Feature claims ("supports X", "integrates with Y")
- Performance claims ("10x faster", "99.9% uptime")
- Social proof claims ("trusted by N companies", "rated #1")
- Positioning claims ("the only X that Y", "unlike Z")
- Pricing claims (tier names, prices, feature lists)
A3. Run Audit Categories (4 Parallel Subagents)
Category 1: Staleness vs. Codebase
- Check feature claims against actual codebase (do the features exist? have any been removed?)
- Check integration claims (are the integrations still present?)
- Flag features in codebase NOT mentioned in copy (missed selling points)
Category 2: Drift from Research Docs
- Compare claims against
research/positioning.md (has the positioning changed?)
- Compare against
research/gtm.md (has the messaging framework changed?)
- Compare against
research/icp.md (are we still targeting the same audience?)
- Flag copy that contradicts current research
Category 3: Conversion Best Practices
- Check for missing sections (no hero? no social proof? no CTA?)
- Evaluate CTA strength and placement
- Check for above-the-fold value proposition clarity
- Assess objection handling coverage
Category 4: Broken Promises
- Claims the product can't currently deliver
- Metrics that are outdated or unverifiable
- Social proof that may be stale (old customer counts, outdated quotes)
A4. Classify and Present Findings
Classify each finding:
- Error: Copy contradicts codebase or makes undeliverable claims
- Warning: Copy drifts from research or misses best practices
- Info: Suggestions for improvement, missed opportunities
Present interactively, errors first:
## Audit Results
### Errors (N)
1. **[Section]**: "[exact claim]" — [why it's wrong] (Source: [file:evidence])
...
### Warnings (N)
...
### Info (N)
...
If the session is already in Plan mode, prefer request_user_input; otherwise ask in plain text:
"Want me to generate updated copy for any of these sections?"
A5. Read-Only
Audit mode does not write any files. It is purely diagnostic. If the user wants fixes, suggest running $landing-copy generate with the audit findings as context.
Output
research/landing-copy.md (or research/{slug}/landing-copy.md)
# Landing Page Copy
> Based on: [list all research docs used]
> Date: [current date]
> Enhancement Tier: [1-4]
## Hero
<!-- Source: research/positioning.md — Positioning Statement -->
<!-- Source: research/gtm.md — One-Liner -->
**Headline**: [headline]
**Subheadline**: [subheadline]
**Primary CTA**: [CTA text] → [CTA destination]
**Supporting visual**: [description of what the hero image/video should convey]
## Problem Agitation
<!-- Source: research/icp.md — Pain Points -->
<!-- Source: research/customer-feedback.md — Customer Language -->
[2-3 paragraphs articulating the pain]
## Solution Introduction
<!-- Source: research/positioning.md — Market Category, Unique Attributes -->
[1-2 paragraphs introducing the product as the answer]
## Benefits
### [Benefit 1 — Outcome-Focused Title]
<!-- Source: research/positioning.md — Value Mapping -->
[Benefit description]
### [Benefit 2]
<!-- Source: research/icp.md — Value Props -->
[Benefit description]
### [Benefit 3]
[Benefit description]
## How It Works
### Step 1: [Action]
<!-- Source: research/journey-map.md — Onboarding Flow -->
[Description]
### Step 2: [Action]
[Description]
### Step 3: [Action — The Aha Moment]
<!-- Source: research/journey-map.md — Aha Moment -->
[Description]
## Social Proof
<!-- Source: research/customer-feedback.md — Quotes -->
<!-- Source: research/metrics.md — Key Numbers -->
[Testimonials, logos, metrics]
## Use Cases
### For [Audience Segment 1]
<!-- Source: research/icp.md — User Profiles -->
[Scenario-specific hook and value]
### For [Audience Segment 2]
[Scenario-specific hook and value]
## Pricing
<!-- Source: research/monetization.md — Pricing Tiers -->
| [Tier 1] | [Tier 2] | [Tier 3] |
|-----------|-----------|-----------|
| [Price] | [Price] | [Price] |
| [Features] | [Features] | [Features] |
| [CTA] | [CTA] | [CTA] |
## FAQ
<!-- Source: research/competitive-analysis.md — Competitor Strengths -->
<!-- Source: research/customer-feedback.md — Objections -->
**Q: [Common objection as question]**
A: [Answer that addresses the objection]
**Q: [Question]**
A: [Answer]
## Final CTA
<!-- Source: research/gtm.md — Launch Strategy -->
[Closing argument]
**[Primary CTA]** | [Secondary CTA]
---
## Research Grounding Summary
| Section | Grounded | Ungrounded | Primary Sources |
|---------|----------|------------|-----------------|
| Hero | N | N | [sources] |
| Problem Agitation | N | N | [sources] |
| Solution | N | N | [sources] |
| Benefits | N | N | [sources] |
| How It Works | N | N | [sources] |
| Social Proof | N | N | [sources] |
| Use Cases | N | N | [sources] |
| Pricing | N | N | [sources] |
| FAQ | N | N | [sources] |
| Final CTA | N | N | [sources] |
### Ungrounded Claims
[List each ungrounded claim and what research would be needed to ground it]
### Missing Research
[List research docs that would most improve copy quality, with $skill commands]
## Next Steps
**Recommended:** `$skill` — [one-line reason]
Other options:
- [conditional items from step 9 — only include items whose conditions are met]
research/landing-copy-interview.md (or research/{slug}/landing-copy-interview.md)
Interview Q&A log — brand voice decisions, claims boundaries, social proof inventory, CTA strategy, structural constraints.
Create the research/ directory if it doesn't exist.
Task Classification
When this skill produces follow-up work, file it by execution semantics:
- Immediately actionable implementation or documentation work goes in
tasks/todo.md.
- Human-only external actions tied to automated steps go in
tasks/manual-todo.md with _(blocks: Step N.X)_ or _(after: Step N.X)_; repo edits, SDK wiring, generated assets, local commands, tests, audits, and authenticated CLI/API work stay in tasks/todo.md.
- One-time condition-gated records, baselines, or future measurements go in
tasks/record-todo.md with source, condition, non-blocking reason, evidence, and promotion rule.
- Cadence-based reviews, playtests, adoption checks, investor updates, retros, or docs-health checks go in
tasks/recurring-todo.md with cadence, owner/agent, next due, evidence path, and escalation conditions.
- Do not put non-blocking records or recurring obligations in
tasks/todo.md unless they have been explicitly promoted into current execution work.
Constraints
- Present before writing. Never write output files until the full copy has been presented and the user confirms.
- Source-attribute every claim. Every factual claim in the copy must have an inline HTML comment citing its research source. If no source exists, mark it
UNGROUNDED.
- Respect claims boundaries. Never include claims the user explicitly ruled out in the interview. Never fabricate metrics or social proof.
- Do not overwrite existing
research/landing-copy.md without asking the user first.
- Copy ≠ design. Produce the words, not the layout. Visual suggestions are limited to "supporting visual" descriptions, not mockups.
- Audit mode is read-only. Never write files in audit mode.
- Brand voice is law. Once the user defines tone and vocabulary in the interview, every section must respect it — no section should feel like it was written by a different voice.
- Check
tasks/manual-todo.md — if it exists, read it. If it lists items related to landing page copy, messaging, or marketing, incorporate those requirements into your work and call them out to the user.
Alignment Page
Follow the shared alignment-page convention via the packaged convention resolver; output path is alignment/landing-copy-{topic}.html.
Default Shipping Contract
Follow the shared shipping contract convention in CLAUDE.md.
1---2name: landing-copy3description: Generate or audit landing page copy grounded in upstream research — hero, benefits, social proof, pricing, FAQ, and CTAs4---5
6## Pack Availability Guard
7
8When recommending a skill from another pack, verify the target pack is installed via `.agents/project.json` `enabled_packs`. If it is not enabled, recommend `npx skillpacks install <pack>` from the project shell. After install, tell Codex users to start a fresh Codex CLI session if the `$` skill list remains stale. Only the currently running skill and skills verified available in the active session or project-local install state are directly recommendable. For unavailable pack skills, recommend `npx skillpacks install <pack-or-skill>`; for unavailable base skills, recommend `npx skillpacks init` before the skill.
9
10# Landing Copy — Research-Grounded Landing Page Copy
11
12## Report-First Approval Gate
13
14Default to scope-first approval: before synthesized research, inspect only enough repository, user, and source context to propose research scope, source plan, assumptions, output paths, and approval questions in a `review` alignment page plus a concise conversation summary.
15
16Do not perform synthesized research, rank candidates, make recommendations, or write working packets or canonical deliverables until final compiled YAML approves the research scope. Minimal pre-approval discovery may identify available files, source categories, and open questions; label it as scope evidence, not findings.
17
18After approved research-scope YAML, perform the research and write only the non-canonical working packet defined in the staged workflow. Then update the `review` alignment page with findings and stop again for feedback-only YAML or final compiled YAML artifact approval before creating or updating canonical research, spec, or task files.
19
20Do not include `Recommended next skill`, `Recommended next command`, or downstream routing language. The approval request itself is the next action. Only emit next-skill routing after the approved artifact has been written or updated.
21
22## Staged Research Workflow
23
24Use this staged workflow for synthesized research or report outputs that would create or update canonical research, spec, or task files.
25
261. **Stage 1 - Scope discovery and approval.** Inspect only enough repository, user, and source context to propose research scope, source plan, assumptions, output paths, and approval questions. Build the `review` HTML alignment page before synthesized research. The page must render the proposed scope, available source categories, known context, assumptions/confidence, proposed working-packet and canonical output paths, and research-scope approval gates. Stop for final compiled YAML approval of the research scope. Do not perform synthesized research, rank candidates, make recommendations, or write working packets, canonical research, spec, or task files in Stage 1.
272. **Stage 2 - Research and artifact review.** Only after approved research-scope YAML with no unresolved `needs-clarification`, unresolved `down` feedback, or other unresolved negative feedback, perform the synthesized research, run required source/code checks, and write only a non-canonical working packet: flat mode uses `research/_working/preliminary-<skill>-research.md`; product-path mode uses `research/{slug}/_working/preliminary-<skill>-research.md`. Replace `<skill>` with this skill's `name` value. Raw evidence or search logs may remain as supporting evidence where this skill already requires them, but synthesized deliverables stay in the working packet. Update the `review` HTML alignment page so it renders the complete working-packet substance as structured HTML review UI: purpose-built sections, tables, matrices, gates, cards, and tier-appropriate charts or diagrams that preserve every packet section, finding, caveat, and decision detail without summary loss. Raw Markdown packet text may appear only as a supplemental source view after the rendered review UI; do not make a `Full Preliminary Packet` or `Full Working Packet` raw Markdown dump, giant `<pre><code>` block, link-only view, or source-only view the primary review surface. Include the evidence matrix, assumptions/confidence register, source coverage gaps, proposed canonical file changes, and artifact approval gates. Stop for either feedback-only YAML or final compiled YAML. Feedback-only YAML revises the working packet and page, then remains in Stage 2.
283. **Stage 3 - Finalize approved artifacts.** Consume final compiled YAML for artifact approval only when it has no unresolved `needs-clarification`, unresolved `down` feedback, or other unresolved negative feedback. Apply approved edits first, archive the working packet to `docs/history/archive/YYYY-MM-DD/HHMMSS/<original-working-path>`, remove the active working packet, write the approved canonical artifacts to the unchanged output paths below, and convert the alignment page to `confirmed` with the approval record preserved.
29
30Canonical output paths remain unchanged. Search logs and other supporting evidence remain allowed only where this skill's output contract already requires them.
31
32## Evidence And Feedback Handling
33
34Treat user feedback as input to evaluate, not as automatic ground truth.
35
36- For factual, evidentiary, technical, or source-backed claims: verify against available evidence. If the user appears to misunderstand the evidence or states something factually incorrect, push back clearly and cite the evidence. Do not rewrite findings merely to agree.
37- For taste, brand, positioning preference, risk appetite, prioritization, or other subjective judgment calls: weigh user feedback heavily and adapt the recommendation unless it conflicts with verified evidence.
38- When feedback mixes facts and preference, separate them explicitly: correct the factual part, then incorporate the preference where it is a legitimate judgment call.
39- When uncertain, say what is known, what is inferred, and what would change the conclusion.
40
41## Prerequisites
42
43- **Hard**: None. Works with just a README or codebase — greenfield projects can use it immediately.
44- **Soft** (enhancement tiers — display the applicable tier to the user before starting):
45
46 | Tier | Research Docs Present | Copy Quality |
47 |------|-----------------------|--------------|
48 | 1 | None — only README / codebase | Functional but generic; many claims will be ungrounded |
49 | 2 | `positioning.md` + `icp.md` | Targeted messaging with real pain points and value props |
50 | 3 | Tier 2 + `gtm.md` + `competitive-analysis.md` + `journey-map.md` | Full funnel copy with differentiation and onboarding flow |
51 | 4 | Tier 3 + `customer-feedback.md` + `monetization.md` + `metrics.md` | Production-grade copy with social proof, pricing, and data-backed claims |
52
53 Read each if it exists (respect `{slug}/` prefix when product-path scope is active):
54 - `research/positioning.md` — market category, positioning statement, unique attributes, value mapping
55 - `research/gtm.md` — messaging framework, one-liner, channel strategy, launch plan
56 - `research/icp.md` — ICP segments, pain points, value props, trigger events, customer language
57 - `research/journey-map.md` — onboarding flow, aha moment, task flows
58 - `research/customer-feedback.md` — real customer quotes, recurring themes, objections
59 - `research/monetization.md` — pricing tiers, packaging, free vs paid boundaries
60 - `research/metrics.md` — north star metric, activation/engagement/retention metrics
61 - `research/competitive-analysis.md` — competitor positioning, strengths, weaknesses, market gaps
62
63## Process
64
65### 0a. Product Path Manifest
66
67Read `research/.progress.yaml` when present. Normalize `active_path` (singular legacy) to `active_paths` (plural list) when reading; treat legacy `abandoned` as `archived` and exclude archived/deferred/revisit/promoted paths plus `research/_archive/` scopes from active target selection. Scope landing copy to the active product path by default.
68
69### 0. Product-Path Scope Resolution
70
71Resolve research scope by product path before using code or app structure as a hint:
72
731. If `$ARGUMENTS` names a non-archived `research/{slug}/` directory or a product-path ID whose `scope_path` points there, use that path. Treat `{slug}` as the product/app name, not the ICP, audience, or segment label.
742. If `$ARGUMENTS` names only `research/_archive/{slug}/` or a manifest entry with `status: archived` or legacy `status: abandoned`, stop and warn that the path is archived; do not write or update scoped outputs there.
753. Read `research/.progress.yaml` when present. Normalize legacy `active_path` to `active_paths` on read and write back `active_paths` on manifest updates. Treat legacy `abandoned` as `archived`; exclude `archived`, `abandoned`, `deferred`, `revisit_candidate`, `promoted`, and any `scope_path` under `research/_archive/` from active target selection.
764. If active product paths exist in the manifest, use those paths. If multiple active paths exist, ask which one to target unless this skill explicitly supports cross-path output.
775. If no active manifest target exists, list non-archived product directories under `research/`, excluding `research/_archive/` and dot directories. Auto-select only when exactly one exists; ask when multiple exist.
786. If no product directories exist, use flat `research/` single-product mode.
797. Detect monorepo/app/package structure only as a secondary hint. Suggest creating a missing `research/{slug}/` product path when code clearly exposes an app, but do not require code or monorepo detection before using `research/{slug}/`.
80
81When product path `{slug}` is active, read and write research under `research/{slug}/`, specs under `specs/{slug}/`, and treat top-level `research/*.md` files as flat-mode documents or cross-path summaries.
82
83### 1. Determine Mode
84
85Parse `$ARGUMENTS`:
86
87- **`generate`** (default): Create complete landing page copy from research + codebase context
88- **`audit`**: Check existing copy against codebase reality, research drift, and conversion best practices
89
90If mode is `audit`, jump to the **Audit Mode** section below.
91
92---
93
94## Generate Mode
95
96### 2. Load Context
97
98Read all available research docs listed in Prerequisites (soft). For each:
99- Note which docs exist and which are missing
100- Extract the key claims, data points, and customer language that will ground copy sections
101
102Also read:
103- `CLAUDE.md`, `README.md` — product name, description, core value proposition
104- Key source files (routes, components, package.json) — to verify feature claims against reality
105
106Determine the enhancement tier and display it to the user:
107> **Research coverage: Tier [N]** — [tier description from table above].
108> Missing docs that would improve copy: [list missing soft prerequisites with their `$skill` commands].
109
110### 3. Web Research
111
112Use WebSearch with **4–6 category-aware queries**:
113
1141. **Landing page best practices** — "SaaS landing page copy best practices [year]", "high-converting landing page structure"
1152. **Category-specific examples** — "[market category from positioning.md] landing page examples", "best [category] homepage copy"
1163. **Hero section patterns** — "above the fold copy patterns", "hero section conversion optimization"
1174. **Social proof patterns** — "social proof landing page examples", "trust signals [category]"
1185. **CTA optimization** — "call to action best practices SaaS", "pricing page CTA patterns"
1196. **Objection handling** — "FAQ section landing page", "reducing purchase anxiety [category]"
120
121### 4. Interview
122
123If the session is already in Plan mode, prefer `request_user_input`; otherwise ask in plain text.
124
125**Brand Voice & Tone**
126- "What tone should the copy strike? (e.g., professional but approachable, bold and provocative, calm and reassuring)"
127- "Any words or phrases you always use? Any you'd never use?"
128- "Show me 1–2 examples of copy you admire (competitors, other products, anything)."
129
130**Claims Boundaries**
131- "What claims can we make confidently? (e.g., 'saves 10 hours/week' — do you have data for this?)"
132- "Any claims we must NOT make? (legal, regulatory, unverified metrics)"
133- "Do you have specific numbers we can cite? (users, uptime, speed benchmarks, customer count)"
134
135**Social Proof Availability**
136- "Do you have customer quotes or testimonials we can use? Company logos?"
137- "Any press mentions, awards, or notable integrations?"
138- "Case study data? (before/after metrics, customer stories)"
139
140**CTA Strategy**
141- "What's the primary CTA? (e.g., 'Start free trial', 'Book a demo', 'Get started')"
142- "Secondary CTA? (e.g., 'See pricing', 'Watch demo', 'Read docs')"
143- "Any urgency or scarcity elements? (limited beta, launch pricing)"
144
145**Structural Constraints**
146- "Any sections you definitely want or definitely don't want?"
147- "Target audience for this page — is it the primary ICP or a broader audience?"
148- "Any existing brand guidelines, style guides, or design constraints?"
149
150### 5. Generate Sections (Parallel Subagents)
151
152Launch **10 parallel subagents**, one per section. Each subagent receives the full research context and interview answers, and produces copy for its section with inline source attribution.
153
154**Section assignments:**
155
1561. **Hero** — Headline, subheadline, primary CTA, supporting visual description.
157 Sources: `positioning.md` (positioning statement, market category), `gtm.md` (one-liner, messaging framework).
158
1592. **Problem Agitation** — Articulate the pain the audience feels today.
160 Sources: `icp.md` (pain points, trigger events), `customer-feedback.md` (customer language, recurring complaints).
161
1623. **Solution Introduction** — Introduce the product as the answer to the pain.
163 Sources: `positioning.md` (market category, unique attributes), `icp.md` (value props).
164
1654. **Benefits** — 3–5 benefit blocks (not features — outcomes).
166 Sources: `positioning.md` (value mapping), `icp.md` (value props per segment).
167
1685. **How It Works** — 3–4 step walkthrough from signup to value.
169 Sources: `journey-map.md` (onboarding flow, aha moment, task flows).
170
1716. **Social Proof** — Testimonials, logos, metrics, trust signals.
172 Sources: `customer-feedback.md` (quotes, themes), `metrics.md` (north star, key numbers), interview answers.
173
1747. **Use Cases / Audience** — Who this is for, with scenario-specific hooks.
175 Sources: `icp.md` (user profiles, segments), `journey-map.md` (use-case task flows).
176
1778. **Pricing** — Tier summary, value anchoring, CTA per tier.
178 Sources: `monetization.md` (pricing tiers, packaging, free vs paid).
179
1809. **FAQ / Objection Handling** — Address top objections and common questions.
181 Sources: `competitive-analysis.md` (competitor strengths to counter), `customer-feedback.md` (objections, concerns).
182
18310. **Final CTA + Footer** — Closing argument, urgency, secondary links.
184 Sources: `gtm.md` (launch strategy, urgency elements), interview CTA answers.
185
186Each subagent must:
187- Write copy for its section only
188- Add `<!-- Source: research/[file].md — [specific section/claim] -->` comments after each grounded claim
189- Flag any claim that has NO research backing as `<!-- UNGROUNDED: [claim] — no research source available -->`
190- Respect brand voice and claims boundaries from the interview
191
192### 6. Assemble and Present
193
194Combine all 10 sections into a complete landing page copy document. Present to the user with:
195
196- The full copy, section by section
197- A **Research Grounding Summary** table:
198
199 | Section | Grounded Claims | Ungrounded Claims | Primary Sources |
200 |---------|----------------|-------------------|-----------------|
201 | Hero | N | N | positioning.md, gtm.md |
202 | ... | ... | ... | ... |
203
204- If any section has >50% ungrounded claims, flag it: "⚠ [Section] has limited research backing — consider running [$skill] first."
205
206If the session is already in Plan mode, prefer `request_user_input`; otherwise ask in plain text:
207"Ready to write this to `research/landing-copy.md`? Any sections to revise?"
208
209### 7. Write Output
210
211Only after user confirms, write:
212- `research/landing-copy.md` (or `research/{slug}/landing-copy.md`) — the full copy with source attribution
213- `research/landing-copy-interview.md` (or `research/{slug}/landing-copy-interview.md`) — interview Q&A log
214
215### 8. Downstream Impact Check
216
217Landing copy is a terminal artifact — it doesn't feed into other research skills. Perform a lightweight check:
218
219- If `research/gtm.md` exists and has a `## Messaging Framework` section, compare the hero headline and one-liner against it. Flag if they've diverged.
220- If `research/positioning.md` exists, confirm the positioning statement is reflected in the hero and solution sections.
221
222**Classify impact**:
223- **None**: No conflicts. Skip display.
224- **Minor**: 1–2 messaging inconsistencies. Display inline.
225- **Major**: Hero/positioning fundamentally misaligned. Recommend `$reconcile-research`.
226
227### 9. Next Steps
228
229Include a **Recommended** item (the single highest-impact next step given current project state) with a one-line reason, followed by **Other options** (2–4 alternatives). Use this format in the output:
230
231## Next Steps
232
233**Recommended:** [recommended skill] — [one-line reason why this is the highest-impact next action given current state]
234
235Other options:
236- `$skill` — [description]
237- ...
238
239**Recommendation priority** (first applicable becomes the recommendation):
2401. IF no `research/positioning.md`: recommend `$positioning` — positioning drives hero copy; the headline is guesswork without it
2412. IF no `research/customer-feedback.md`: recommend `$customer-feedback` — real customer quotes would replace placeholder social proof
2423. Otherwise: recommend "Implement the copy in your codebase — the source attribution comments show where each claim comes from"
243
244**Other options** (include all applicable items not chosen as recommended):
245- IF no `research/positioning.md`: `$positioning` — Positioning drives hero copy; running it would significantly strengthen the headline
246- IF no `research/customer-feedback.md`: `$customer-feedback` — Real customer quotes would replace placeholder social proof
247- IF no `research/monetization.md`: `$monetization` — Pricing section is thin without a monetization strategy
248- IF no `research/journey-map.md`: `$journey-map` — "How It Works" section would benefit from mapped onboarding flows
249- ALWAYS: "Implement the copy in your codebase — the source attribution comments show where each claim comes from"
250- IF `research/gtm.md` exists: `$gtm` — Refresh messaging framework to align with the final landing copy
251
252---
253
254## Audit Mode
255
256### A1. Locate Existing Copy
257
258Search for landing page copy in order of priority:
2591. `research/landing-copy.md` (or `research/{slug}/landing-copy.md`)
2602. `src/pages/index.*`, `src/app/page.*`, `app/page.*`, `pages/index.*`
2613. `index.html`, `public/index.html`
2624. Any file matching `*landing*`, `*homepage*` in common source directories
263
264If no copy is found, tell the user and suggest running `$landing-copy generate` instead.
265
266### A2. Extract Verifiable Claims
267
268Parse the located copy and extract every verifiable claim:
269- Feature claims ("supports X", "integrates with Y")
270- Performance claims ("10x faster", "99.9% uptime")
271- Social proof claims ("trusted by N companies", "rated #1")
272- Positioning claims ("the only X that Y", "unlike Z")
273- Pricing claims (tier names, prices, feature lists)
274
275### A3. Run Audit Categories (4 Parallel Subagents)
276
277**Category 1: Staleness vs. Codebase**
278- Check feature claims against actual codebase (do the features exist? have any been removed?)
279- Check integration claims (are the integrations still present?)
280- Flag features in codebase NOT mentioned in copy (missed selling points)
281
282**Category 2: Drift from Research Docs**
283- Compare claims against `research/positioning.md` (has the positioning changed?)
284- Compare against `research/gtm.md` (has the messaging framework changed?)
285- Compare against `research/icp.md` (are we still targeting the same audience?)
286- Flag copy that contradicts current research
287
288**Category 3: Conversion Best Practices**
289- Check for missing sections (no hero? no social proof? no CTA?)
290- Evaluate CTA strength and placement
291- Check for above-the-fold value proposition clarity
292- Assess objection handling coverage
293
294**Category 4: Broken Promises**
295- Claims the product can't currently deliver
296- Metrics that are outdated or unverifiable
297- Social proof that may be stale (old customer counts, outdated quotes)
298
299### A4. Classify and Present Findings
300
301Classify each finding:
302- **Error**: Copy contradicts codebase or makes undeliverable claims
303- **Warning**: Copy drifts from research or misses best practices
304- **Info**: Suggestions for improvement, missed opportunities
305
306Present interactively, errors first:
307
308```
309## Audit Results
310
311### Errors (N)
3121. **[Section]**: "[exact claim]" — [why it's wrong] (Source: [file:evidence])
313...
314
315### Warnings (N)
316...
317
318### Info (N)
319...
320```
321
322If the session is already in Plan mode, prefer `request_user_input`; otherwise ask in plain text:
323"Want me to generate updated copy for any of these sections?"
324
325### A5. Read-Only
326
327Audit mode does **not** write any files. It is purely diagnostic. If the user wants fixes, suggest running `$landing-copy generate` with the audit findings as context.
328
329---
330
331## Output
332
333### `research/landing-copy.md` (or `research/{slug}/landing-copy.md`)
334
335```markdown
336# Landing Page Copy
337
338> Based on: [list all research docs used]
339> Date: [current date]
340> Enhancement Tier: [1-4]
341
342## Hero
343<!-- Source: research/positioning.md — Positioning Statement -->
344<!-- Source: research/gtm.md — One-Liner -->
345
346**Headline**: [headline]
347**Subheadline**: [subheadline]
348**Primary CTA**: [CTA text] → [CTA destination]
349**Supporting visual**: [description of what the hero image/video should convey]
350
351## Problem Agitation
352<!-- Source: research/icp.md — Pain Points -->
353<!-- Source: research/customer-feedback.md — Customer Language -->
354
355[2-3 paragraphs articulating the pain]
356
357## Solution Introduction
358<!-- Source: research/positioning.md — Market Category, Unique Attributes -->
359
360[1-2 paragraphs introducing the product as the answer]
361
362## Benefits
363
364### [Benefit 1 — Outcome-Focused Title]
365<!-- Source: research/positioning.md — Value Mapping -->
366[Benefit description]
367
368### [Benefit 2]
369<!-- Source: research/icp.md — Value Props -->
370[Benefit description]
371
372### [Benefit 3]
373[Benefit description]
374
375## How It Works
376
377### Step 1: [Action]
378<!-- Source: research/journey-map.md — Onboarding Flow -->
379[Description]
380
381### Step 2: [Action]
382[Description]
383
384### Step 3: [Action — The Aha Moment]
385<!-- Source: research/journey-map.md — Aha Moment -->
386[Description]
387
388## Social Proof
389<!-- Source: research/customer-feedback.md — Quotes -->
390<!-- Source: research/metrics.md — Key Numbers -->
391
392[Testimonials, logos, metrics]
393
394## Use Cases
395
396### For [Audience Segment 1]
397<!-- Source: research/icp.md — User Profiles -->
398[Scenario-specific hook and value]
399
400### For [Audience Segment 2]
401[Scenario-specific hook and value]
402
403## Pricing
404<!-- Source: research/monetization.md — Pricing Tiers -->
405
406| [Tier 1] | [Tier 2] | [Tier 3] |
407|-----------|-----------|-----------|
408| [Price] | [Price] | [Price] |
409| [Features] | [Features] | [Features] |
410| [CTA] | [CTA] | [CTA] |
411
412## FAQ
413<!-- Source: research/competitive-analysis.md — Competitor Strengths -->
414<!-- Source: research/customer-feedback.md — Objections -->
415
416**Q: [Common objection as question]**
417A: [Answer that addresses the objection]
418
419**Q: [Question]**
420A: [Answer]
421
422## Final CTA
423<!-- Source: research/gtm.md — Launch Strategy -->
424
425[Closing argument]
426**[Primary CTA]** | [Secondary CTA]
427
428---
429
430## Research Grounding Summary
431
432| Section | Grounded | Ungrounded | Primary Sources |
433|---------|----------|------------|-----------------|
434| Hero | N | N | [sources] |
435| Problem Agitation | N | N | [sources] |
436| Solution | N | N | [sources] |
437| Benefits | N | N | [sources] |
438| How It Works | N | N | [sources] |
439| Social Proof | N | N | [sources] |
440| Use Cases | N | N | [sources] |
441| Pricing | N | N | [sources] |
442| FAQ | N | N | [sources] |
443| Final CTA | N | N | [sources] |
444
445### Ungrounded Claims
446[List each ungrounded claim and what research would be needed to ground it]
447
448### Missing Research
449[List research docs that would most improve copy quality, with $skill commands]
450
451## Next Steps
452
453**Recommended:** `$skill` — [one-line reason]
454
455Other options:
456- [conditional items from step 9 — only include items whose conditions are met]
457```
458
459### `research/landing-copy-interview.md` (or `research/{slug}/landing-copy-interview.md`)
460Interview Q&A log — brand voice decisions, claims boundaries, social proof inventory, CTA strategy, structural constraints.
461
462Create the `research/` directory if it doesn't exist.
463
464## Task Classification
465
466When this skill produces follow-up work, file it by execution semantics:
467
468- Immediately actionable implementation or documentation work goes in `tasks/todo.md`.
469- Human-only external actions tied to automated steps go in `tasks/manual-todo.md` with `_(blocks: Step N.X)_` or `_(after: Step N.X)_`; repo edits, SDK wiring, generated assets, local commands, tests, audits, and authenticated CLI/API work stay in `tasks/todo.md`.
470- One-time condition-gated records, baselines, or future measurements go in `tasks/record-todo.md` with source, condition, non-blocking reason, evidence, and promotion rule.
471- Cadence-based reviews, playtests, adoption checks, investor updates, retros, or docs-health checks go in `tasks/recurring-todo.md` with cadence, owner/agent, next due, evidence path, and escalation conditions.
472- Do not put non-blocking records or recurring obligations in `tasks/todo.md` unless they have been explicitly promoted into current execution work.
473
474## Constraints
475
476- **Present before writing.** Never write output files until the full copy has been presented and the user confirms.
477- **Source-attribute every claim.** Every factual claim in the copy must have an inline HTML comment citing its research source. If no source exists, mark it `UNGROUNDED`.
478- **Respect claims boundaries.** Never include claims the user explicitly ruled out in the interview. Never fabricate metrics or social proof.
479- **Do not overwrite existing `research/landing-copy.md`** without asking the user first.
480- **Copy ≠ design.** Produce the words, not the layout. Visual suggestions are limited to "supporting visual" descriptions, not mockups.
481- **Audit mode is read-only.** Never write files in audit mode.
482- **Brand voice is law.** Once the user defines tone and vocabulary in the interview, every section must respect it — no section should feel like it was written by a different voice.
483- **Check `tasks/manual-todo.md`** — if it exists, read it. If it lists items related to landing page copy, messaging, or marketing, incorporate those requirements into your work and call them out to the user.
484
485## Alignment Page
486
487Follow the shared alignment-page convention via the packaged convention resolver; output path is `alignment/landing-copy-{topic}.html`.
488
489## Default Shipping Contract
490
491Follow the shared shipping contract convention in CLAUDE.md.