Best use case
CFN Marketing Landing Pages is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
**Version:** 1.0.0
Teams using CFN Marketing Landing Pages should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
$curl -o ~/.claude/skills/cfn-marketing-landing-pages/SKILL.md --create-dirs "https://raw.githubusercontent.com/masharratt/claude-flow-novice/main/.claude/cfn-extras/skills/marketing/cfn-marketing-landing-pages/SKILL.md"
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/cfn-marketing-landing-pages/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How CFN Marketing Landing Pages Compares
| Feature / Agent | CFN Marketing Landing Pages | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
**Version:** 1.0.0
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# CFN Marketing Landing Pages
**Version:** 1.0.0
**Status:** Production
**Phase:** 4 - Intelligence & Optimization
## Overview
Landing page management and A/B testing skill for creating, publishing, and optimizing landing pages. Implements statistical significance testing with minimum sample sizes and confidence levels to ensure valid test results.
## A/B Testing Framework
**Statistical Requirements:**
- Minimum sample size: 100 conversions per variant
- Confidence level: 95% (p-value < 0.05)
- Minimum test duration: 7 days
- Validation enforced in create-ab-test.sh before launch
**Test Lifecycle:**
1. Create landing page from template
2. Set up A/B test (Variant A vs B)
3. Collect traffic and conversions (min 7 days)
4. Validate statistical significance
5. Declare winner and implement changes
## Operations
### 1. Create Landing Page
**Script:** `operations/create-landing-page.sh`
**Description:** Create new landing page from template with customization options
**Parameters:**
- `--page-name` (required): Landing page name (alphanumeric, hyphens)
- `--template` (required): Template ID (product,lead-gen,webinar,ebook,demo)
- `--headline` (required): Main headline text
- `--cta-text` (required): Call-to-action button text
- `--cta-url` (required): CTA destination URL
- `--description` (optional): Page description
- `--image-url` (optional): Hero image URL
**Example:**
```bash
./operations/create-landing-page.sh \
--page-name "summer-sale-2025" \
--template "product" \
--headline "50% Off Summer Sale" \
--cta-text "Shop Now" \
--cta-url "https://example.com/checkout" \
--description "Limited time offer on all products"
```
**Response:**
```json
{
"page_id": "lp_1698765432",
"page_name": "summer-sale-2025",
"status": "draft",
"template": "product",
"url": "https://pages.example.com/summer-sale-2025",
"preview_url": "https://pages.example.com/preview/summer-sale-2025",
"created_at": "2025-10-29T12:00:00Z"
}
```
**Exit Codes:**
- `0`: Success
- `1`: Invalid parameters (invalid template, page name format)
- `2`: API error
- `3`: Validation error
---
### 2. Create A/B Test
**Script:** `operations/create-ab-test.sh`
**Description:** Set up A/B test with statistical validation requirements
**Parameters:**
- `--page-id` (required): Landing page ID
- `--variant-a-name` (required): Name for Variant A (control)
- `--variant-b-name` (required): Name for Variant B (treatment)
- `--variant-b-changes` (required): JSON describing changes (headline, cta, image)
- `--traffic-split` (optional): Traffic split percentage (default: 50/50)
- `--goal-metric` (required): Conversion goal (form_submit,purchase,signup,download)
**Example:**
```bash
./operations/create-ab-test.sh \
--page-id "lp_1698765432" \
--variant-a-name "Original" \
--variant-b-name "New Headline" \
--variant-b-changes '{"headline":"New Compelling Headline","cta_text":"Get Started Free"}' \
--traffic-split "50/50" \
--goal-metric "form_submit"
```
**Response:**
```json
{
"test_id": "test_1698765555",
"page_id": "lp_1698765432",
"status": "active",
"variants": [
{
"variant_id": "var_a",
"name": "Original",
"traffic_percentage": 50,
"url": "https://pages.example.com/summer-sale-2025?variant=a"
},
{
"variant_id": "var_b",
"name": "New Headline",
"traffic_percentage": 50,
"url": "https://pages.example.com/summer-sale-2025?variant=b",
"changes": {
"headline": "New Compelling Headline",
"cta_text": "Get Started Free"
}
}
],
"requirements": {
"min_conversions_per_variant": 100,
"min_duration_days": 7,
"confidence_level": 0.95
},
"goal_metric": "form_submit",
"started_at": "2025-10-29T12:00:00Z",
"earliest_conclusion_date": "2025-11-05T12:00:00Z"
}
```
**Exit Codes:**
- `0`: Success
- `1`: Invalid parameters (invalid JSON, traffic split != 100)
- `2`: API error
- `3`: Validation error (page not found, test already exists)
---
### 3. Publish Page
**Script:** `operations/publish-page.sh`
**Description:** Publish landing page to production (makes page live)
**Parameters:**
- `--page-id` (required): Landing page ID
- `--custom-domain` (optional): Custom domain (e.g., promo.example.com)
**Example:**
```bash
./operations/publish-page.sh \
--page-id "lp_1698765432" \
--custom-domain "promo.example.com"
```
**Response:**
```json
{
"page_id": "lp_1698765432",
"status": "published",
"url": "https://promo.example.com/summer-sale-2025",
"published_at": "2025-10-29T12:00:00Z"
}
```
**Exit Codes:**
- `0`: Success
- `1`: Invalid parameters (page not in draft/unpublished state)
- `2`: API error
- `3`: Validation error
---
### 4. Get Page Performance
**Script:** `operations/get-page-performance.sh`
**Description:** Get conversion metrics and A/B test results with statistical significance
**Parameters:**
- `--page-id` (required): Landing page ID
- `--date-from` (optional): Start date (YYYY-MM-DD). Default: 30 days ago
- `--date-to` (optional): End date (YYYY-MM-DD). Default: today
**Example:**
```bash
./operations/get-page-performance.sh \
--page-id "lp_1698765432" \
--date-from "2025-10-01"
```
**Response:**
```json
{
"page_id": "lp_1698765432",
"page_name": "summer-sale-2025",
"status": "published",
"date_range": {
"from": "2025-10-01",
"to": "2025-10-29"
},
"performance": {
"visits": 5432,
"conversions": 487,
"conversion_rate": 0.0897,
"bounce_rate": 0.32,
"avg_time_on_page": 145
},
"ab_test": {
"test_id": "test_1698765555",
"status": "complete",
"duration_days": 14,
"variants": [
{
"variant_id": "var_a",
"name": "Original",
"visits": 2716,
"conversions": 217,
"conversion_rate": 0.0799
},
{
"variant_id": "var_b",
"name": "New Headline",
"visits": 2716,
"conversions": 270,
"conversion_rate": 0.0994,
"improvement": "+24.4%"
}
],
"statistical_significance": {
"is_significant": true,
"p_value": 0.0023,
"confidence_level": 0.9977,
"winner": "var_b"
},
"recommendation": "Implement Variant B (New Headline) - statistically significant improvement"
}
}
```
**Exit Codes:**
- `0`: Success
- `1`: Invalid parameters (invalid date format)
- `2`: API error
- `3`: Validation error
---
### 5. Unpublish Page
**Script:** `operations/unpublish-page.sh`
**Description:** Take landing page offline (returns to draft state)
**Parameters:**
- `--page-id` (required): Landing page ID
- `--reason` (optional): Reason for unpublishing
**Example:**
```bash
./operations/unpublish-page.sh \
--page-id "lp_1698765432" \
--reason "Campaign ended"
```
**Response:**
```json
{
"page_id": "lp_1698765432",
"status": "unpublished",
"reason": "Campaign ended",
"unpublished_at": "2025-10-29T12:00:00Z",
"previous_url": "https://promo.example.com/summer-sale-2025"
}
```
**Exit Codes:**
- `0`: Success
- `1`: Invalid parameters (page not published)
- `2`: API error
- `3`: Validation error
---
## Environment Variables
- `N8N_BASE_URL`: Base URL for n8n instance (e.g., https://n8n.dailyautomations.com)
- `N8N_API_KEY`: API key for authentication
## Error Handling
All operations return structured JSON error responses:
```json
{
"error": "Description of error",
"code": "ERROR_CODE",
"details": {}
}
```
## Integration Pattern
Each operation calls n8n webhook:
```bash
curl -X POST "$N8N_BASE_URL/webhook/landing-pages-{operation}" \
-H "X-N8N-API-KEY: $N8N_API_KEY" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
```
## Statistical Significance Calculation
A/B test results are considered statistically significant when:
1. Both variants have ≥100 conversions
2. Test has run for ≥7 days
3. P-value < 0.05 (95% confidence)
Formula used: Two-proportion Z-test
## Dependencies
- bash ≥4.0
- jq (JSON processing)
- curl (HTTP requests)
- bc (numeric validation)
## Usage in Workflows
```bash
# Create and publish landing page
PAGE_ID=$(./.claude/skills/cfn-marketing-landing-pages/operations/create-landing-page.sh \
--page-name "q4-promo" \
--template "product" \
--headline "Limited Time Offer" \
--cta-text "Buy Now" \
--cta-url "https://example.com/checkout" | jq -r '.page_id')
./.claude/skills/cfn-marketing-landing-pages/operations/publish-page.sh \
--page-id "$PAGE_ID"
# Set up A/B test
./.claude/skills/cfn-marketing-landing-pages/operations/create-ab-test.sh \
--page-id "$PAGE_ID" \
--variant-a-name "Control" \
--variant-b-name "Test" \
--variant-b-changes '{"headline":"New Headline"}' \
--goal-metric "purchase"
# Check results after 7+ days
./.claude/skills/cfn-marketing-landing-pages/operations/get-page-performance.sh \
--page-id "$PAGE_ID"
```
## Best Practices
1. **Always run A/B tests for minimum 7 days** to account for day-of-week variations
2. **Test one element at a time** (headline OR CTA, not both) for clear attribution
3. **Validate statistical significance** before declaring winners
4. **Archive completed tests** and document learnings
5. **Use custom domains** for brand consistencyRelated Skills
We are still matching the closest adjacent skills for this page. In the meantime, continue through the full directory.