ICGC Industrial Concrete Grinding and Cutting

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
---
  • slug must equal the filename without .md; the route is built from it.
  • date is 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.
  • image must be a media.icgc.com.au URL taken from data/asset-manifest.json or 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.tsx first; 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