new-postlisted
Install: claude install-skill HKamkar/agentic-cms
# New post
The repo is the current directory. The post is `content/blog/<slug>.md`;
the filename is the URL `<postPrefix>/<slug>` (`src/config/site.ts`),
permanent once pushed. It ships as `draft: true`; the user flips it.
## Read first
`content/README.md` (the door), `content/VOICE.md` (the voice and claims:
how the brand is spelled, what is never said, the calls to action),
`content/blog/_template.md` (every field annotated, the image names and
sizes, the closing paragraph), `src/lib/blog/README.md` § Body pipeline
(the conventions the renderer keys off), the keys of
`content/categories.json` and `content/authors.json`, the draft or brief
the user named, and `content/editorial/workshop.yaml` if it exists (its
`drafts` role is where a draft written outside the repo would be).
## Steps
1. **The slug.** Lowercase words and hyphens, the topic first. Stop and
confirm it with the user if it was not given; check that
`content/blog/<slug>.md` and `public/images/blog/<slug>/` do not exist.
2. **The file.** Copy `content/blog/_template.md` to `content/blog/<slug>.md`
and drop the template's comments. Frontmatter: `title`; `excerpt` of 30–40
words that does not repeat the title; `date` quoted; `category` and
`author` as keys of the two registries; `seoTitle` of 60 characters or
fewer, the topic first and ` | ` + the site's name last (the layout's
title template, `site.name`); `seoDescription` of 70–160; 3–8
`keywords`; 2–3 `related` slugs that exist; `draf