Files
marketingskills/skills/content-strategy/references/headless-cms.md
T
Corey Haines 30f9b9a729 feat: v2.0 skill renames and CRO consolidation (#291)
* feat: v2.0 skill renames and CRO consolidation

BREAKING CHANGE: Users must reinstall skills after this update.

## Skill Renames (16)
- ab-test-setup → ab-testing
- analytics-tracking → analytics
- aso-audit → aso
- competitor-alternatives → competitors
- email-sequence → emails
- free-tool-strategy → free-tools
- launch-strategy → launch
- onboarding-cro → onboarding
- paywall-upgrade-cro → paywalls
- popup-cro → popups
- pricing-strategy → pricing
- product-marketing-context → product-marketing
- referral-program → referrals
- schema-markup → schema
- signup-flow-cro → signup
- social-content → social

## Consolidations (1)
- page-cro + form-cro → cro (form content in references/form.md)

## Why 2.0?
- Shorter, cleaner skill names
- Consistent naming (no -strategy, -setup, -cro suffixes)
- All cross-references updated across 100+ files

Total skills: 40

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(v2.0): update evals for renamed skills, fix validate script, clear warnings

- Update 32 evals.json files to reference new skill names (page-cro → cro,
  product-marketing-context → product-marketing, etc.) — these were missed
  in the initial v2.0 rename pass since only SKILL.md and marketplace.json
  were updated.
- Fix validate-skills.sh: replace GNU-only `head -n -1` with portable awk
  so frontmatter extraction works on macOS.
- Move Copy Editing Checklist (56 lines) to references/checklist.md to
  bring copy-editing SKILL.md under the 500-line limit (508 → 457).
- Add "see X" pointers to marketing-psychology description for skill
  discovery (cro, pricing, copywriting).
- Update skill-request.yml issue template placeholder (page-cro → cro).

All 40 skills now pass validation with zero warnings.

* fix(v2.0): add evals for 8 missing skills, strip stale frontmatter from cro/form.md

Adds 48 new eval cases (6 per skill) for skills that previously had no evals:
aso, co-marketing, community-marketing, competitor-profiling, directory-submissions,
image, lead-magnets, video. All 40 skills now have eval coverage (251 total cases).

Strips leftover frontmatter from skills/cro/references/form.md — it was inherited
from the old form-cro SKILL.md before consolidation. Reference files don't need
frontmatter.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(v2.0): rename paid-ads → ads

One more v2.0 simplification — drops the redundant 'paid-' qualifier. Updates
the skill directory, SKILL.md frontmatter, evals.json, README skill table, the
v2.0 rename table in VERSIONS.md (now 17 renames), and all cross-references in
related skills (ad-creative, aso, competitor-profiling, customer-research,
lead-magnets, marketing-ideas) plus the tools/integrations guides.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(v2.0): bump SKILL.md frontmatter version to 2.0.0 for all 40 skills

VERSIONS.md was already updated to 2.0.0 but the metadata.version field inside
each SKILL.md was still on 1.x. That mismatch would have caused the update-check
flow to perpetually report 'update available' since it compares VERSIONS.md
against local SKILL.md metadata versions.

Caught by codex review (P1).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(v2.0): add legacy product-marketing-context.md filename fallback

Before this fix, users upgrading from v1.x who had a `product-marketing-context.md`
file would lose automatic context loading — every skill only checked the new
`product-marketing.md` filename. Now all 40 skills also accept the legacy
filename (in either `.agents/` or `.claude/`), and the README migration command
covers both legacy and current filenames.

Caught by codex review (P1 + P2).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(v2.0): re-sort README skills table alphabetically, fix ads box width

The skills table had a few entries out of alphabetical order from the renames
(co-marketing was after cold-email, ads was at the renamed position).
Re-sorted alphabetically per sync-skills.js. Also padded the 'ads' cell in the
ASCII flow diagram to keep the box width consistent.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(v2.0): document folder cleanup on upgrade, stop sync-skills from re-adding skills array

README upgrade guide now includes:
- A clear cleanup step for stale v1.x skill folders (renamed + consolidated) so
  users don't end up with both old and new folders side-by-side after upgrading
- The full v1 to v2 rename map for reference
- Existing product-marketing-context.md migration steps (preserved)

sync-skills.js no longer (re-)introduces a `skills` array on marketplace.json --
Claude Code's plugin schema discovers skills via the `skills/` directory, and the
explicit array was failing validation. The script now refreshes the description
count and strips the stale array if present.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-13 22:05:15 -07:00

8.2 KiB

Headless CMS Guide

Reference for choosing, modeling, and implementing a headless CMS for marketing content.

When to Use This Reference

Use this when selecting a CMS for a new project, designing content models for marketing sites, setting up editorial workflows, or connecting CMS content to programmatic pages.


Headless vs Traditional CMS

A headless CMS separates content management from presentation. Content is stored in a structured backend and delivered via API to any frontend.

When Headless Makes Sense

  • Multiple frontends consume the same content (web, mobile, email)
  • Developers want full control over the frontend stack
  • Content needs to be reused across channels
  • You're building with a modern framework (Next.js, Remix, Astro)
  • Marketing needs structured, reusable content blocks

When Traditional Works Better

  • Small team with no dedicated developers
  • Simple blog or brochure site
  • WYSIWYG editing is a hard requirement
  • Budget is tight and WordPress/Webflow does the job

Decision Checklist

Factor Headless Traditional
Multi-channel delivery Yes Limited
Developer control Full Constrained
Non-technical editing Requires setup Built-in
Time to launch Longer Faster
Content reuse Native Manual
Hosting flexibility Any frontend Platform-dependent

Content Modeling for Marketing

Core Principles

  1. Think in types, not pages. A "Landing Page" is a content type with fields — not an HTML file. This lets you reuse components across pages.
  2. Separate content from presentation. Store the headline text, not the styled headline. Presentation belongs in the frontend.
  3. Design for reuse. If testimonials appear on 5 pages, create a Testimonial type and reference it — don't duplicate.
  4. Keep models flat. Deeply nested structures are hard to query and maintain. Prefer references over nesting.

Common Marketing Content Types

Type Key Fields Notes
Landing Page title, slug, hero, sections[], seo Modular sections for flexibility
Blog Post title, slug, body, author, category, tags, publishedAt, seo Rich text or Portable Text body
Case Study title, customer, challenge, solution, results, metrics[], logo Link to related products/features
Testimonial quote, author, role, company, avatar, rating Reference from landing pages
FAQ question, answer, category Group by category for programmatic pages
Author name, bio, avatar, social links Reference from blog posts
CTA Block heading, body, buttonText, buttonUrl, variant Reusable across pages

SEO Fields Checklist

Every page-level content type needs:

  • metaTitle — 50-60 characters
  • metaDescription — 150-160 characters
  • ogImage — 1200x630px social preview
  • slug — URL path segment
  • canonicalUrl — optional override
  • noIndex — boolean for excluding from search
  • structuredData — optional JSON-LD override

Editorial Workflows

Draft → Review → Publish Cycle

  1. Draft — Author creates or edits content
  2. Review — Editor reviews for accuracy, brand voice, SEO
  3. Approve — Stakeholder signs off
  4. Schedule — Set publish date/time
  5. Publish — Content goes live via API

Preview APIs

All major headless CMS platforms support draft previews:

  • Sanity: Real-time preview with useLiveQuery or Presentation tool
  • Contentful: Preview API (preview.contentful.com) with separate access token
  • Strapi: Draft & Publish system with status=draft query parameter (v5; replaces v4's publicationState)

Set up a preview route in your frontend (e.g., /api/preview) that authenticates and renders draft content.

Roles and Permissions

Role Can Create Can Edit Can Publish Can Delete
Author Yes Own No Own drafts
Editor Yes All Yes Drafts
Admin Yes All Yes All

Exact permission models vary by platform. Sanity uses role-based access. Contentful has space-level roles. Strapi has granular RBAC.


Platform Comparison

Feature Sanity Contentful Strapi
Hosting Cloud (managed) Cloud (managed) Self-hosted or Cloud
Query Language GROQ REST / GraphQL REST / GraphQL
Free Tier Generous Limited Open source (free)
Real-time Collab Yes (built-in) Limited No
Best For Developer flexibility Enterprise multi-locale Budget / self-hosted
Content Modeling Schema-as-code Web UI Web UI or code
Media Handling Built-in DAM Built-in Plugin-based

Sanity

Strengths: GROQ query language is powerful and flexible. Schema defined in code (version-controlled). Real-time collaborative editing. Portable Text for rich content. Generous free tier.

Considerations: Steeper learning curve for non-developers. Studio customization requires React knowledge. Vendor lock-in on GROQ queries.

Marketing fit: Best when developers and marketers collaborate closely. Strong for content-heavy sites with complex models.

Contentful

Strengths: Mature enterprise platform. Excellent multi-locale support. Strong ecosystem of integrations. Composable content with Studio. Well-documented APIs.

Considerations: Pricing scales with content types and locales. Two separate APIs (Delivery and Management). Rate limits can be tight on lower plans.

Marketing fit: Best for enterprises with multi-market content needs. Good when you need established vendor reliability.

Strapi

Strengths: Open source, self-hosted option. Full control over data. No per-seat pricing. Customizable admin panel. Plugin ecosystem. REST by default, GraphQL via plugin.

Considerations: Self-hosting means you handle infrastructure. Smaller ecosystem than Sanity/Contentful. V5 migration can be significant from V4.

Marketing fit: Best for teams with DevOps capability who want full control and no vendor lock-in. Good for budget-conscious projects.

Others Worth Knowing

  • Hygraph — GraphQL-native, strong for federation and multi-source content
  • Keystatic — Git-based, good for developer-content hybrid workflows
  • Payload — TypeScript-first, self-hosted, code-configured like Sanity
  • Builder.io — Visual editor with headless backend, good for non-technical marketers
  • Prismic — Slice-based content modeling, strong Next.js integration

Integration with Marketing Skills

Programmatic SEO

Use CMS as the data source for programmatic pages. Store structured data (FAQs, comparisons, city pages) as content types and generate pages from queries. See programmatic-seo skill.

Copywriting

CMS content models enforce consistent structure. Define fields that match your copy frameworks (headline, subheadline, social proof, CTA). See copywriting skill.

Site Architecture

URL structure, navigation hierarchy, and internal linking all depend on how content is organized in the CMS. Plan your content model and site architecture together. See site-architecture skill.

Email Sequences

Pull CMS content into email templates for consistent messaging across web and email. Case studies, testimonials, and blog posts can feed email nurture sequences. See emails skill.


Implementation Checklist

  • Define content types based on page types and reusable blocks
  • Add SEO fields to every page-level content type
  • Set up preview/draft mode in your frontend
  • Configure roles and permissions for your team
  • Create sample content for each type before building frontend
  • Set up webhook notifications for content changes (rebuild triggers)
  • Document content guidelines for editors (field descriptions, character limits)
  • Test content delivery performance (CDN, caching, ISR)
  • Plan migration strategy if moving from existing CMS

Relevant Integration Guides

  • Sanity — GROQ queries, mutations, CLI
  • Contentful — Delivery/Management APIs, publishing
  • Strapi — REST CRUD, filters, document API