Content Directory
All site pages and posts live here as Markdown files with YAML frontmatter. Hugo renders them using templates from themes/gabe-theme/layouts/.
Sections
- Root files — Standalone pages (
bio.md,contact.md,guide.md,claude-code-cheatsheet.md) - thoughts/ — Blog posts
- projects/ — Client project case studies
- _index.md files — Configure list pages and section metadata
Frontmatter
Required (all pages)
title: "Page Title"
description: "Meta description for SEO and OpenGraph."
Blog posts (thoughts/)
title: "Post Title"
date: "2025-09-18" # YYYY-MM-DD, determines sort order
image: "/images/thoughts/post-slug.jpg"
description: "Short summary for previews and meta tags."
- No
layoutfield — uses the defaultthoughts/single.htmltemplate - Image files go in
themes/gabe-theme/static/images/thoughts/ - See
BLOG_IMAGES.mdin the repo root for brand image generation guidelines
Projects (projects/)
title: "ACME Corp - Fractional CTO Leadership"
short_title: "ACME Corp" # Brief name for cards/lists
weight: 1 # Sort order (lower = first)
image: "/images/acme.jpg"
description: >
Multi-line project summary using YAML folded block.
- No
layoutfield — uses the defaultprojects/single.htmltemplate - Image files go in
themes/gabe-theme/static/images/
Navigation menu
menu:
main:
name: "Display Name" # optional, defaults to title
weight: 100 # lower = earlier in nav
Custom layouts
Pages that need a non-default template set layout explicitly:
layout: "contact" # maps to layouts/_default/contact.html
layout: "about"
layout: "guide"
layout: "cheatsheet"
layout: "404"
Other fields
noindex: true— prevents search engine indexing (used on 404)subtitle— used by some custom layouts (e.g., contact)- Page-specific fields like
benefits,testimonialare consumed directly by their custom layout templates

