Blog content instructions
Rules for creating or editing posts in this folder. These override the root
AGENTS.md where they differ.
Frontmatter
Every post starts with this block. All fields are required.
---
title: "Post Title In Title Case"
slug: matches-the-filename
author: ICGC
date: 2026-09-15
category: Concrete Finishes
excerpt: "Shown on the blog index. One or two sentences."
image: https://media.icgc.com.au/...
imageAlt: Literal description of the image
metaDescription: "150 to 160 characters, keyword plus benefit."
keyword: primary search phrase
---
slugmust equal the filename without.md; the route is built from it.dateis unquoted YAML. gray-matter parses it as a JS Date, and the blog index sorts and derives its sitemap lastmod from it, so a wrong date reorders the index.imagemust be amedia.icgc.com.auURL taken fromdata/asset-manifest.jsonor supplied by the media pipeline. Never a local path; local media is not deployed.
Body rules
- Australian English. No em dashes anywhere, including headings and alt text.
- One
#heading maximum; the page template renders the title, so start body headings at##. - Internal links are root-relative with a trailing slash:
[honed concrete](/honed-concrete/). - Tables, strikethrough, task lists and autolinks work (remark-gfm). Anything
beyond GFM (footnotes, math, mermaid) needs a plugin added to
src/app/blog/[slug]/page.tsxfirst; do not use those constructs in a content-only change. - Explain trade terms on first use. Short active sentences. Lead with outcomes, not process.
Verification
After adding or editing a post:
rm -rf .next && npx next build
The post must appear as an SSG route, and if it contains a table:
grep -E "^\|" .next/server/app/blog/<slug>.html # must return nothing