Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Cms Pro

ASecurity

Integrate headless CMSs: content modeling, APIs, previews, webhooks, and editorial workflows. Use when content teams need to publish without developers.

2 stars
0 votes
0 copies
0 views
Added 9/29/2026
ai-agentsgonextjsapidatabasefrontend

Works with

api

Security Analysis

A100/100

Scanned 9/29/2026

$npx -y skills add aicodedecode/awesome-muse-skills --skill cms-pro --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cms Pro?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Cms Pro
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aicodedecode-cms-pro/badge)](https://www.skillsdirectory.com/skills/aicodedecode-cms-pro)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: cms-pro
description: Integrate headless CMSs: content modeling, APIs, previews, webhooks, and editorial workflows. Use when content teams need to publish without developers.
category: web-development
---

# CMS Pro

A practical guide to headless CMS integration: content modeling, delivery APIs, preview/draft workflows, webhooks for revalidation, and the editorial UX that makes content teams self-sufficient.

## Overview

A headless CMS separates **content management** (editorial UI, workflows) from **presentation** (your frontend consuming a content API). The integration work: modeling content types well, fetching efficiently, previewing drafts, and revalidating statically-generated pages on publish. Good modeling is 80% of success — bad models produce either developer bottlenecks or content chaos.

## When to use

- Marketing sites, blogs, docs, and landing pages edited by non-developers.
- Choosing/evaluating a headless CMS (any vendor — patterns are universal).
- Preview environments for draft content.
- Webhook-driven revalidation and rebuilds.

## Core concepts

- **Content modeling.** Content types (Post, Page, Author), fields (rich text, references, media, SEO meta), and validations. Model for the editors' mental model, not the database's.
- **References vs embeds.** Reference shared entities (authors, categories); embed page-specific blocks. Over-referencing complicates queries; over-embedding duplicates content.
- **Delivery API.** Read-optimized CDN API (usually GraphQL or REST) with draft/published variants. Query at build time (static) or request time (dynamic) per page needs.
- **Preview.** Draft mode: editors see unpublished content via preview URLs/tokens. Implementation: preview API route that bypasses the published cache with a secret token.
- **Webhooks.** CMS publishes → webhook → revalidate affected paths (`revalidatePath`/`revalidateTag`) or trigger rebuild. Map content types to URL patterns for surgical invalidation.
- **Portable text / rich text.** Structured rich text (blocks, marks, custom objects) rendered by your components — never raw HTML from the CMS without sanitization.
- **Media.** CMS-hosted assets via CDN with transforms (resize, format). Use the CMS's image API, not originals.

## Practical workflow

**1. Model content.**
```
Post: title, slug (unique, validated), excerpt, body (portable text),
      coverImage (media), author (reference), categories (references[]),
      seo { title, description, ogImage }, publishedAt, status
```
Add help text and validations on every field — editors shouldn't guess.

**2. Fetch (Next.js example).**
```ts
// lib/cms.ts
export async function getPost(slug: string, draft = false) {
  return cms.fetch(`*[_type == "post" && slug.current == $slug][0]`, { slug },
    { token: draft ? PREVIEW_TOKEN : undefined, perspective: draft ? 'drafts' : 'published' });
}
```

**3. Draft preview.**
```ts
// app/api/preview/route.ts — validates ?secret=, enables draft mode, redirects to the page
// page.tsx reads draftMode() and passes draft flag to fetches
```

**4. Revalidate on publish.** CMS webhook → `/api/revalidate` (verify signature!) → `revalidateTag('posts')` or `revalidatePath('/blog/[slug]')`. Tag-based invalidation scales best.

**5. Render rich text safely.** Map portable-text blocks to your components (headings, quotes, code blocks, embeds); sanitize any raw HTML.

**6. Editorial QA.** Preview links in the CMS workflow; required SEO fields; image alt requirements; broken-link checks on publish.

## Common pitfalls

- **Modeling for developers.** Field names and structures editors don't understand → constant support requests. Name things in editorial language; add help text.
- **N+1 queries.** Fetching a list then each item's references individually. Use query projections/GROQ to fetch nested data in one request.
- **No preview.** Editors publishing blind → broken layouts discovered in production. Draft preview is not optional for rich pages.
- **Full rebuilds on every edit.** Rebuilding 10k pages for a typo fix. Webhook + tag/path revalidation instead.
- **Unsigned webhooks.** Revalidation endpoints without signature verification = anyone can purge your cache / trigger builds. Verify signatures.
- **Raw HTML rendering.** `{@html body}` from CMS content = XSS vector. Structured rich text + component mapping, or strict sanitization.
- **Slug changes breaking URLs.** Allow slug edits but keep redirect history (old slug → new). Or lock slugs after publish.
- **Missing SEO fields.** No title/description/OG per page = weak sharing and search. Make them required with sensible fallbacks.
- **Vendor lock-in blindness.** Proprietary rich-text formats and media URLs complicate migration. Prefer portable formats; keep media URLs abstracted.

Attribution

aicodedecodeaicodedecode
View sourceSee grades on GitHubMore from aicodedecode →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →