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 layout field — uses the default thoughts/single.html template
  • Image files go in themes/gabe-theme/static/images/thoughts/
  • See BLOG_IMAGES.md in 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 layout field — uses the default projects/single.html template
  • Image files go in themes/gabe-theme/static/images/
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, testimonial are consumed directly by their custom layout templates