Skip to content
Back to skills

New Page

ASecurity

Add a site page as content/pages/<slug>.yaml made of existing section types, with its SEO block, structured data and OG image, or write the real copy of a page that still holds placeholder copy, then prove it with the lint, the build and a visual capture. Use when asked to add, create or scaffold a page, a landing page or a route on the site, or to write or replace a page's placeholder copy (a site's starter home page and blog index).

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 23, 2026
developmentgobashnodegit

Security analysis

A100/100

Scanned November 9, 2026

npx -y skills add HKamkar/agentic-cms --skill new-page --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of New Page?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for New Page
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hkamkar-new-page/badge)](https://www.skillsdirectory.com/skills/hkamkar-new-page)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: new-page
description: Add a site page as content/pages/<slug>.yaml made of existing section types, with its SEO block, structured data and OG image, or write the real copy of a page that still holds placeholder copy, then prove it with the lint, the build and a visual capture. Use when asked to add, create or scaffold a page, a landing page or a route on the site, or to write or replace a page's placeholder copy (a site's starter home page and blog index).
argument-hint: <slug> [what the page is for]
---

# New page

The repo is the current directory. A page is a file:
`content/pages/<slug>.yaml` with its `seo` block (the route, permanent
once pushed), its `jsonld` block and its sections in order, rendered
through the section registry. A page made of existing section types
needs no code. A page that exists with placeholder copy — a site laid out
by `agentic-cms init` starts with its home page and its blog index so,
each string starting with the marker `(placeholder)` and saying what goes
there — is written here too: the file stays, its copy becomes the site's.

## Read first

`content/README.md` "Add a page", `content/_templates/page.yaml`,
`content/README.md` § Fields › `pages` (every section type and its fields),
one existing file in `content/pages/` as a worked example,
`src/lib/seo/README.md` (the head, the structured data, the OG image; the
engine's docs, under `node_modules/agentic-cms/` on a site that
installs the package),
`content/VOICE.md`, `src/config/site.ts`.

## Steps

1. **The route and the sections.** Confirm `seo.path` with the user and list
   the sections by type, chosen from the registry tables only. A section
   type that does not exist is code (a schema, a component, a registry
   entry; the repo's design document says how): stop and say so.
2. **The file.** For a page with placeholder copy, keep its file, its
   route and its sections unless the user changes them, and replace every
   string that starts with `(placeholder)` with the site's own copy — the
   marker goes with the string it replaces, never left in front of real
   copy — and every address on a domain reserved for examples (`.example`)
   with the site's own; then, on the user's word, the placeholder lines of
   `src/config/site.ts` (the tagline, the description, the address, the
   sign-in link, the profiles). Real copy comes from the user or the brief,
   never invented: a figure, a name or an address the user has not given
   stays a question. A new page: copy the template to
   `content/pages/<slug>.yaml`. `seo`:
   `title` of 60 characters or fewer and unique across pages, `description`
   of 70–160, `ogImage`, `updated` today (quoted), `breadcrumb`; `jsonld` by
   page type; sections with real copy under `content/VOICE.md` (the brand
   as it spells it; eyebrows as the existing pages carry them). Card
   counts are part of the design where the build says "must have exactly
   N".
3. **The images.** The OG image as the engine's `src/lib/seo/README.md` specifies it
   (`public/images/<slug>-og.jpg`, 1200×630); section images and icons
   under `public/images/<slug>/`, optimised (`pnpm kit optimize-webp`; the
   package's `scripts/README.md`), each
   with an alt that says what it shows.
4. **The chrome.** Only if the page belongs there: add it to `links`, `nav`
   and `footer.quickLinks` in `src/config/site.ts` (three separate lists).
5. **Lint until clean.** `pnpm content:lint`: fix every `FAIL`; read the
   `WARN` lines on the new file; no `placeholder` line left on it (a
   production build fails while one remains).
6. **Verify** (below), then look at the page at every width: `pnpm kit
   visual-parity capture <slug>-new --pages /<slug>` and open its shots,
   one per width of the site's profile, in `.parity/visual/<slug>-new/` (a
   new page has no baseline; this
   is inspection). If `site.ts` changed, `pnpm kit parity` before and after
   must differ only in the nav and footer of the other pages.
7. **Commit** `Page: /<slug>` on the repo's working branch.

## Verify

```bash
pnpm lint && pnpm test && pnpm content:lint && pnpm build   # 0 failures; the SEO audit covers the new route
pnpm preview                                                # pnpm start where the site has none; open /<slug>; then stop it
git push                                                    # when the user says
```

## Stop for the user

The route and the section list (step 1); copy the user has not given (a
figure, a name, an address); any change to `src/config/site.ts`; the push.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in development →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.