update-postlisted
Install: claude install-skill HKamkar/agentic-cms
# Update post
The repo is the current directory. The post is `content/blog/<slug>.md`.
Its filename is an indexed URL and never changes; its two dates have
different jobs (`src/lib/blog/README.md` § Frontmatter): `date` is the
editorial date readers see, `publishedAt` the JSON-LD `datePublished`,
`updatedAt` the `dateModified`.
## Read first
The post file, `content/VOICE.md`, `src/lib/blog/README.md`, and
`git log --oneline -- content/blog/<slug>.md` for what changed before.
## Steps
1. **The edit.** Change the copy or the field the user asked for and
nothing else; the conventions of `new-post` step 4 still hold (the FAQ
heading is load-bearing: renaming it silently removes the accordion and
its structured data).
2. **The dates.** If the post has `publishedAt`, set `updatedAt` to now
(`date -u +%FT%T.000Z`); never touch `publishedAt`, `date` or the
filename. A draft gets no `updatedAt`.
3. **Images.** New or replaced files go in `public/images/blog/<slug>/`,
named and optimised as `content/blog/_template.md` and
the package's `scripts/README.md` say (`pnpm kit optimize-webp`); delete what
the edit left behind (the lint's `image-orphan` rule names it).
4. **Lint until clean.** `pnpm content:lint`: fix every `FAIL`; the `WARN`
lines on this file are the ones to read.
5. **Verify** (below); `pnpm kit parity` is not for a content edit (the
page is supposed to change), but read `check-seo`'s lines for the route
in the build log.
6. **Commit**