A Claude Code skill (packaged as a plugin + marketplace) for implementing a **headless Ghost CMS blog in a Next.js App Router site**, with battle-tested patterns and copy-paste templates.
FAQ
ghost-headless-blog is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes ghost-headless-blog. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add kasuncfdo/ghost-headless-blog-skill> /plugin install ghost-headless-blog@kasuncfdo-skills
Repo: kasuncfdo/ghost-headless-blog-skill
A Claude Code skill (packaged as a plugin + marketplace) for implementing a headless Ghost CMS blog in a Next.js App Router site, with battle-tested patterns and copy-paste templates.
Once installed, Claude loads it automatically whenever you ask things like "add a Ghost-powered blog to this site" or when debugging an existing headless Ghost integration (empty blog, stale pages, broken images/cards).
skills/ghost-headless-blog/
โโโ SKILL.md # Architecture, 11 non-negotiable decisions, pitfalls
โโโ references/
โ โโโ setup.md # Ghost Admin, env vars, next.config images, webhook, verification
โ โโโ pages.md # Routes, ISR, metadata, JSON-LD, sitemap patterns
โ โโโ ghost-docs.md # Official Ghost docs lookup (llms-full.txt workflow, API reference URLs)
โโโ templates/ # Portable copy-paste code (no project-specific deps)
โโโ ghost.ts # Typed Content API client (posts, tags, authors; fetch + retry, graceful degradation)
โโโ ghost-html.ts # Blur-up images + LCP fix for Ghost-rendered HTML
โโโ revalidate-route.ts # Ghost webhook to instant ISR purge
โโโ ghost-content.css # Full .gh-content prose + koenig card styles (--ghost-accent)
โโโ components/ # BlurImage, ToggleCards, ReadingProgress
Highlights baked into the skill:
Accept-Version: v6.0), no @tryghost/content-api dependencyNEXT_PUBLIC_), all fetching in server componentsrevalidate = 3600) + Ghost webhook for instant purges on publish/update/unpublish/deletedynamicParams for new contentcanonical_url, JSON-LD for BlogPosting, Blog, CollectionPage, and ProfilePage/Person with sameAs social profiles, plus an honest sitemap covering posts, tags, and authorsdangerouslySetInnerHTML + dedicated koenig-card CSS, blur-up images via inline onload, first-image LCP promotion, toggle-card JS re-implementationIn any Claude Code session:
/plugin marketplace add kasuncfdo/ghost-headless-blog-skill
/plugin install ghost-headless-blog@kasuncfdo-skills
Update later with:
/plugin marketplace update kasuncfdo-skills
Installs into Claude Code, Cursor, Codex, and other agents supported by the skills ecosystem:
npx skills add kasuncfdo/ghost-headless-blog-skill
Add -g for a global (user-level) install instead of the current project.
Copy the skill folder into your user skills directory:
git clone git@github.com:kasuncfdo/ghost-headless-blog-skill.git
mkdir -p ~/.claude/skills
cp -R ghost-headless-blog-skill/skills/ghost-headless-blog ~/.claude/skills/
Ship it with one repo only (teammates get it too):
mkdir -p .claude/skills
cp -R ghost-headless-blog-skill/skills/ghost-headless-blog .claude/skills/
The skill triggers automatically on matching requests, or invoke it explicitly:
/ghost-headless-blog
Typical prompts:
params is a Promise)revalidatePath (e.g. Vercel) for the webhook flowMIT
.claude-plugin/
marketplace.json
plugin.json
LICENSE
README.md
skills/
ghost-headless-blog/
references/
ghost-docs.md
pages.md
setup.md
SKILL.md
templates/
components/
BlurImage.tsx
ReadingProgress.tsx
ToggleCards.tsx
ghost-content.css
ghost-html.ts
ghost.ts
revalidate-route.tsยฉ 2026 Flowy ยท Free and open source
Built for Claude Code ยท Not affiliated with Anthropic