| name | new-post |
| description | Create a new blog post skeleton for either the English (codewrecks) or Italian (itablog) Hugo site. Use when the user asks to create a new post, scaffold a post, or start a new article.
|
new-post
Create a new blog post skeleton in the correct Hugo page-bundle format.
Usage
/new-post <site> <category/subcategory> <slug> [title]
site: en for English (codewrecks/) or it for Italian (itablog/)
category/subcategory: the topic subfolder path under content/post/ (e.g., ai, azdo/pills, ai-coding)
slug: short kebab-case directory name for the post (e.g., harness-engineering-intro)
title: optional title; if omitted, derive one from the slug
Examples:
/new-post it ai-coding harness-engineering-intro
/new-post en ai agent-plan-then-execute "Agent Planning then Execution"
/new-post it general nuovo-post "Titolo del Post"
What to create
For /new-post it ai-coding my-post "Il mio Post" create:
itablog/content/post/ai-coding/my-post/
โโโ index.md โ front matter + placeholder body
โโโ images/ โ empty directory (create a .gitkeep)
For /new-post en ai my-post "My Post" create:
codewrecks/content/post/ai/my-post/
โโโ index.md โ front matter + placeholder body
โโโ images/ โ empty directory (create a .gitkeep)
Front matter templates
Italian (itablog/) โ use Italian field conventions
---
title: "<derived or provided title>"
date: <today's date in YYYY-MM-DD format>
draft: true
categories: ["<primary-category>"]
tags: ["<tag1>"]
description: "<one-sentence description>"
summary: |
<Two-sentence summary of the post.>
---
## <First section heading>
<Placeholder content.>
Gian Maria
English (codewrecks/) โ use English field conventions
---
title: "<derived or provided title>"
description: "<one-sentence description>"
date: <today's date in RFC3339 format, e.g. 2026-04-24T09:00:00+00:00>
draft: true
tags: ["<Tag1>"]
categories: ["<Category>"]
---
## Introduction
<Placeholder content.>
Step-by-step instructions
-
Determine the base path from site:
en โ codewrecks/content/post/
it โ itablog/content/post/
-
Determine the full post directory: <base path><category/subcategory>/<slug>/
-
Derive the title if not supplied: convert the slug from kebab-case to Title Case (e.g., harness-engineering-intro โ Harness Engineering Intro).
-
Derive the primary category from the first segment of the category/subcategory path (e.g., azdo/pills โ primary category is azdo).
-
Create index.md using the correct front matter template above. Fill in:
title โ provided or derived
date โ today's date (read from the currentDate context if available, otherwise use the current date)
categories โ derived from the category/subcategory path
tags โ one placeholder tag matching the primary category
description โ a generic placeholder the user can replace
- For Italian posts also write a two-sentence
summary
-
Create images/.gitkeep so the directory is tracked by git without requiring a real image yet.
-
Report the created paths to the user and remind them to:
- Replace
draft: true with draft: false when ready to publish
- Add the cover image to
images/ and reference it with the copertina shortcode (Italian) or standard Markdown image syntax (English)
- Fill in
description, tags, and categories with real values
Referencing images in the post body
Images always live in the images/ subfolder of the post bundle. Reference them with a path relative to index.md โ no ../ prefix.
English (codewrecks/) โ inline image + figure caption

***Figure N:*** *Caption text that describes what the reader is looking at*
Italian (itablog/) โ cover image via shortcode
The first image in an Italian post is typically a cover, inserted with the copertina shortcode:
{{< copertina
titolo="Titolo visibile"
dettaglio="Sottotitolo o descrizione breve"
immagine="filename.png"
alt="Descrizione accessibile dell'immagine"
>}}
Subsequent inline images use standard Markdown with the same images/filename.png path.
Constraints
- Never create files outside
codewrecks/content/post/ or itablog/content/post/.
- Never set
draft: false on a new post โ always start as draft.
- Never overwrite an existing
index.md without explicit user confirmation.
- Use kebab-case for the slug directory name.
- Images always go inside an
images/ subfolder within the post directory.
- Do not run Hugo builds after creating the skeleton โ this is a content-only operation.