MARKDOWN-FIRST CMS

Tell yer agent. It ships the page.

PirateCMS is a git-based CMS for marketing pages — your AI agent is already connected as the editor. Describe the site you want; it writes typed, validated sections and opens a preview URL. No dashboard, no database.

  • Every page is one MDX file — humans read it, machines validate it
  • Your agent edits it over MCP; broken frontmatter can't build
  • Git is the database, a PR preview is the publish button
  • Plain files you own — no lock-in, take it anywhere
npx @piratecms/create
YOUR AGENT IS ALREADY CONNECTED

Open Claude Code. Say what you want.

Every site ships with the MCP server and skills wired in — your agent already knows how to build pages, validate them, and put them live. You describe, it does.

claude — your site
── your first page ──
# a full landing page from your product URL
/page-new yourproduct.com
# or just describe the idea
/page-new a landing page for my time-tracking app
# happy? put it live
/ship
── then keep talking ──
# every edit is the same conversation
swap the hero on /pricing to lead with the free plan
# posts too — first run sets up /blog
/post-new at blog why we built this
# tighten every title and description
/seo-audit

No dashboard to learn. The agent writes typed, validated sections — broken content can't build, so nothing broken can go live. Prefer your own hands? It's all plain MDX files in your repo.

Today: your agent on your machine. Next: hosted agents you set up once and let sail.

THE CMS TAX

A CMS is either a walled garden or a weekend of glue code.

Both cost you every time you want to change a headline.

Hosted CMSes lock your content away

Your pages live in someone else's database, behind a login, priced per seat. Every contributor is another bill.

Hand-rolled MDX rots

Roll your own Next.js + markdown and six months later nobody remembers the schema. One typo ships a broken page.

Marketers wait on developers

"Just change the price" becomes a ticket, a branch, a deploy. The person who wants the change can't make it.

WHAT'S ABOARD

A real content layer, no admin panel in sight.

🦜

Your agent is the editor

Describe the change in plain English. Claude Code edits the files over MCP — invalid content fails the build loudly, so agent-as-editor is actually trustworthy.

🗂️

Git is the database

Every change is a diff. History is your audit log. Every branch gets a preview URL to approve before it's live.

🛡️

Typed, validated sections

Fourteen sections ship ready to use — hero, pricing, FAQ, comparison. Each prop is checked against a strict schema. An invented prop can't build.

📄

One file per page

A page is MDX with a sections list. Humans read it top to bottom, machines read it as data. Same file, two audiences.

⚙️

Framework is an output device

The same content renders through Astro or Next.js. Switch with one command, not a rewrite.

🚪

No lock-in, ever

Everything is plain files you own — MDX, YAML, git. Leave whenever you like and take your content with you.

THE REAL CHOICE

How PirateCMS compares

PirateCMSHosted CMSMDX by hand
Your content stays plain files you own
Agent edits it for you, safely
Invalid content can't shipSometimes
Contributors don't need a paid hosting seatN/A
Git history is the audit log
Swap frameworks without a rewriteN/A
WHAT THE CONTENT LOOKS LIKE

Everything is a file you can read

No database rows, no hidden state. Git is the database, the diff is the audit log.

One file per page

src/content/pages/ is the whole site — file path = URL. Add a file, that page exists; delete it, it's gone. Custom sections and shared data live right beside them.

your-site/
pirate.config.yaml # brand, nav, SEO, framework
src/
content/pages/
index.mdx # → /
pricing.mdx # → /pricing
sections/ # your custom sections (.tsx)
data/ # shared data pages reuse

Sections are data, not code

A page is MDX with a sections: list in frontmatter — each item is a section type plus its props. Your agent writes it as typed data, and a misspelled prop fails loudly before it can ship.

src/content/pages/pricing.mdx
---
title: Pricing
layout: composed
sections:
- type: hero
headline: Pricing that pays for itself
- type: pricing
plans:
- name: Pro
price: $29/mo
---

One config file runs the ship

Brand, colors, nav, SEO and the framework live in pirate.config.yaml. Change a brand color and every section re-skins; flip astro to next and the same content builds on the other framework.

pirate.config.yaml
framework: astro # or next — same content
brand:
name: Your Brand
theme:
colors:
brand:
"600": "#1f5af0" # re-skins every section
seo:
siteUrl: https://example.com
UNDER THE HULL

What this design buys you

The agent is the sync, not a plugin

Need data from a tool only your agent can reach — a reviews platform, analytics, GitHub? It calls its own tools, writes the result into the page, and you review the diff. Hosted CMSes can't do that. They don't have your agent's connections.

Flat costs, no matter the crew

The usual flow puts every contributor on your hosting team — a paid seat each. Here contributors only ever touch content, and PirateCMS does the publishing. Add a guest author, an agency, a client — the bill doesn't move.

BEFORE YE SIGN ON

The questions every skeptic asks

Where's the dashboard?+

Not where you'd expect. Editing needs no dashboard — your agent, git, and a preview URL cover it, today from your own computer. What's coming is a different kind of dashboard — invite teammates, connect your marketing tools (analytics, webmaster tools), and set up autonomous agents that ship pages for you. It will never become a place where content gets locked into UI blocks. Pages stay plain files in your repo.

Do I need to know git?+

No. You talk to the agent; it handles branches, commits, and PRs. You get a preview URL to approve. Git stays invisible unless you want to reach in.

Is my content locked in?+

Never. It's MDX and YAML in your own repo. No proprietary database, no export button to beg for. Clone it, move it, delete us — the content is yours the whole time.

What if the agent writes something broken?+

It can't ship it. Every section prop is validated against a strict schema at build time. An invented or misspelled prop fails the build loudly instead of silently shipping a broken page.

Can I still edit by hand?+

Always. It's just files. Open any page in a text editor and change a headline. The agent is the fast path, not the only path.

ON THE HORIZON

A crew that ships while ye sleep

🧑‍🤝‍🧑

Bring the whole team aboard

Invite teammates from a hosted dashboard — no git setup, no local install. Everyone talks to the same site.

🔌

Connect your marketing tools

Plug in analytics, webmaster tools, review platforms. Your agents read real numbers instead of guessing.

🤖

Autonomous agents on watch

Set up agents that run on their own — refresh a landing page from campaign data, draft the changelog, ship pages for you. Every change still lands as a reviewable diff.

HOIST THE COLORS

Get yer ship in one command.

The wizard asks three questions — where, which framework, which package manager — then builds a standalone site and verifies every step.

npx @piratecms/createRead the docs

Private testing phase — needs npm access to the @piratecms org. Everything you build is plain markdown in your own git repo.