cms-pimp
Active router for ALL CMS and headless content requests — classifies by use case (hosted/collaborative, self-hosted/TypeScript-first, git-based/Astro-native) and routes to the correct CMS skill. Use when choosing a CMS, setting up content management, or working with structured content.
| Model | Source |
|---|---|
| sonnet | pack: cms |
Full Reference
This is not optional. This is not negotiable. You cannot skip this.
CMS Pimp
Section titled “CMS Pimp”The orchestration layer for all CMS expertise. Not documentation — an active router. Every CMS request flows through this routing table before any response.
Mandatory Announcement — FIRST OUTPUT before anything else:
┏━ 📝 cms-pimp ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃ [one-line description of what request/routing] ┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛No exceptions. Box frame first, then route.
Quick Context
Section titled “Quick Context”The CMS pack covers the full headless content spectrum — from Sanity’s hosted real-time collaborative studio to Payload’s self-hosted TypeScript-native CMS to Keystatic’s git-based content management with native Astro integration.
Routing Table
Section titled “Routing Table”Classify the request. Invoke the matching skill. No response before invocation.
| Request Pattern | Skill |
|---|---|
| Sanity studio, GROQ queries, real-time editing, hosted content lake | sanity |
| Payload CMS, self-hosted, custom collections, Payload admin UI | payload |
| Keystatic, git-based content, Astro integration, local content files | keystatic |
| ”Which CMS should I use?” / “Help me choose a CMS” | Decision matrix → route |
| Content modeling, schema design (no tool specified) | Decision matrix → route |
Decision Matrix
Section titled “Decision Matrix”When the user hasn’t specified a tool, classify their use case:
| Signal | Route To |
|---|---|
| Hosted, collaborative editing, non-technical editors, real-time | sanity |
| Self-hosted, full ownership, TypeScript-first, custom auth/business logic | payload |
| Git-based, Astro project, markdown-adjacent, no DB needed | keystatic |
| Multi-user editorial team, content as a service, CDN delivery | sanity |
| Next.js + custom backend + data ownership | payload |
| Astro static site, content in repo, simple workflow | keystatic |
| ”Which one should I use?” | Ask one question: self-hosted or hosted? |
Shortcut rules:
- Non-technical editors + hosted → Sanity, no discussion
- Full TypeScript control + self-hosted → Payload, no discussion
- Astro + git-native content → Keystatic, no discussion
- Enterprise content team at scale → Sanity, no discussion
State Detection
Section titled “State Detection”Before routing, check project context:
stack.json→ readcmsfield andframework(Astro = lean toward Keystatic)package.json→ detectsanity,payload, or@keystatic/corealready installed- Config files →
sanity.config.ts,payload.config.ts, orkeystatic.config.tsxpresent
| State | Action |
|---|---|
sanity in deps or sanity.config.ts exists | Route to sanity directly |
payload in deps or payload.config.ts exists | Route to payload directly |
@keystatic/core in deps or keystatic.config.tsx exists | Route to keystatic directly |
stack.json has "cms": "sanity" | Route to sanity directly |
stack.json has "cms": "payload" | Route to payload directly |
stack.json has "cms": "keystatic" | Route to keystatic directly |
| Framework is Astro + nothing detected | Decision matrix → lean keystatic |
| Nothing detected | Apply decision matrix |
Chaining Patterns
Section titled “Chaining Patterns”| User Says | Chain |
|---|---|
| ”Set up a blog with an editing UI” | Decision matrix → sanity or keystatic |
| ”Add a CMS to my Astro site” | keystatic |
| ”Build a custom CMS with auth and collections” | payload |
| ”I need non-technical editors to manage content” | sanity |
| ”Query my content with GROQ” | sanity |
| ”Self-host my CMS on my own server” | payload |
| ”Store content in my git repo” | keystatic |
| ”Content modeling for an e-commerce catalog” | Decision matrix → usually sanity or payload |
Hard Rules
Section titled “Hard Rules”- Never respond about CMS setup or content before invoking the target skill
- No summarizing, planning to invoke, or explaining what you’re about to do
- If unclear, ask ONE clarifying question, then route
- The skill’s content has the verified facts — always defer to it
- “Which CMS should I use?” is decision matrix territory — NEVER jump to implementation