Sitepins cms setup
Use this skill to configure a project (repository) for the Sitepins git-based headless CMS by generating the `.sitepins/` folder — `config.json`, content `schema/*.json`, reusable `snippet/*.json`, and sidebar `arrangement`. Use it whenever the user asks to "set up Sitepins", "add Sitepins to this repo", "create Sitepins schemas/snippets/config", "configure the CMS", "generate .sitepins", or wants any Sitepins settings/schema/snippet file authored for a static-site project (Astro, Next.js, TanStack Start, Hugo, Eleventy, Jekyll, etc.).From its SKILL.md
npx -y skills add zeon-studio/template-skills --skill sitepins-cms-setupAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.2 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it
Sitepins CMS Setup
Sitepins is a git-based headless CMS. It never hosts or renders the site — it reads existing content files (Markdown/MDX/JSON/YAML/TOML) straight from the git repository and overlays a visual editor. All CMS behavior for a project lives in one folder committed to the repo:
.sitepins/
config.json # required — folder mapping + commit + sidebar arrangement
schema/*.json # optional — content templates per content folder
snippet/*.json # optional — reusable shortcode/JSX/HTML blocks
Normally a user clicks through the Sitepins web UI to produce these files. This skill's job is to author them directly by inspecting the repo, so the project is CMS-ready without the UI.
Golden rules
- Everything is committed JSON inside
.sitepins/. Never invent a different location. Constants are fixed: schema folder =.sitepins/schema, snippet folder =.sitepins/snippet, config =.sitepins/config.json. - Ready before you configure, per framework. Content must live in the content folder as frontmatter files — Sitepins cannot manage content hardcoded in components/config/
src/data. Astro/Next.js/TanStack Start/Hugo differ (paths, loaders, validation); defer to the repo's<framework>-template-guidanceskill and audit/convert first (references/cms-readiness.md). - Inspect before you author. Read the real repo — detect the framework, list content folders, open a representative content file per folder — and derive schemas from actual frontmatter. Do not hardcode fields from memory.
- Paths in
config.jsonare repo-root-relative, no leading slash. - Use the real runtime field-type vocabulary (
string,number,boolean,Date,media,gallery,Array,object, plus auto-detectedcolor) — not loose names liketext/textarea/datetime/select. Long-form text (description,content) isstring, nottextarea. Seereferences/schema-authoring.md. - Schemas only for collections, not singletons. A schema templates new files, so it belongs on folders that grow (
blog/,authors/,pages/) — not on one-off pages (homepage/,about/,contact/), which editors open and edit in place. Ask: would anyone click "add new file" here? - One schema JSON per collection, named by the resolution rule. Schema filename = the content folder path minus the
config.contentroot (src/content/blog→blog.json;exampleSite/content+…/english/blog→english/blog.json). A misnamed schema silently never loads. Subfolders inherit the parent. Seereferences/schema-authoring.md.
Workflow
- Detect the framework —
astro.config.*→ astro,next.config.*→ nextjs,config.toml/hugo.*→ hugo (exampleSite/present →hugo_examplesite), a bundler config (vite.config.*/rsbuild.config.*/app.config.*) plus routing evidence (routeTree.gen.tsorroutes/__root.tsx) → tanstack. - Load the template's guidance skill — Astro, Next.js, TanStack Start, and Hugo store and load content differently, so the repo's own
.agents/skills/<framework>-template-guidance/is the authoritative content model. If it isn't installed, install it first:npx skills add zeon-studio/template-skills --skill <framework>-template-guidance. - Check CMS readiness — Sitepins can only manage content that lives in the content folder as frontmatter files. If the template hardcodes content in components/config/
src/data, it is not ready: convert it to a content-folder-driven structure before configuring anything. →references/cms-readiness.md - Map folders →
config.jsonusing framework conventions. →references/config-setup.md - Author schemas — for collection folders only. Skip singletons like
homepage/,about/,contact/(a lone-index.md/_index.mdis the tell). For each remaining collection, open one existing file, read its frontmatter, and write the schema under the name given by the resolution rule (content folder path minusconfig.content). →references/schema-authoring.md - Author snippets (optional) — for shortcodes/components used in content. →
references/snippet-authoring.md - Author sidebar arrangement (optional) — virtual folders/files/headings inside
config.json. →references/sidebar-arrangement.md - Verify before reporting:
- Every path in
config.jsonexists in the repo, is repo-root-relative, and has no leading slash. - Every schema filename equals
<content folder> − <config.content>(compute it, don't assume) — this is the #1 silent failure. - No schema was written for a singleton folder (one
-index.md/_index.mdand nothing else). - Every schema's
filepoints at a content file that actually exists;fileType/fmTypematch it. - All JSON parses, and field
typevalues come from the allowed vocabulary.
- Every path in
- Report the files created and how each was derived.
Routing guide
Read the reference file that matches the task before writing any JSON:
- Is the template CMS-ready? Auditing/converting hardcoded content into the content folder →
references/cms-readiness.md config.json, framework detection, content/media/public/configs paths, commit mode →references/config-setup.md- Content schemas, all field types, nested/array/media/dropdown/reference fields, inheritance →
references/schema-authoring.md - Reusable snippets (shortcodes/JSX/HTML), schema scoping →
references/snippet-authoring.md - Sidebar arrangement (virtual folders, files, headings, glob include/exclude) →
references/sidebar-arrangement.md
Reference: a complete .sitepins/ for an Astro project
config.json
{
"content": "src/content",
"media": "public/images",
"public": "public",
"configs": ["src/config"],
"custom-commit": false,
"arrangement": []
}
schema/blog.json (derived from a real src/content/blog/*.md)
{
"file": "src/content/blog/example-post.md",
"name": "blog",
"fileType": "md",
"fmType": "yaml",
"template": [
{ "name": "title", "label": "Title", "type": "string", "value": "", "isRequired": true },
{ "name": "date", "label": "Date", "type": "Date", "value": "", "alwaysUseCurrentDate": false },
{ "name": "image", "label": "Image", "type": "media", "value": "" },
{ "name": "draft", "label": "Draft", "type": "boolean", "value": false },
{ "name": "categories", "label": "Categories", "type": "Array", "value": [] }
]
}
snippet/button.json
{ "label": "Button", "schema": [], "code": "<Button label=\"\" href=\"\" />\n" }
Always verify against the actual files in the target repo before committing.
What ships with it: 5 files
35.3 KB alongside SKILL.md
references/
- cms-readiness.md9.7 KB
- config-setup.md7.8 KB
- schema-authoring.md12.4 KB
- sidebar-arrangement.md2.4 KB
- snippet-authoring.md3.0 KB