Markdown Converter
Agent skill for markdown-converter
This document provides context for AI assistants working on this Hugo static site project.
Sign in to like and favorite skills
This document provides context for AI assistants working on this Hugo static site project.
This is a personal website built with Hugo (v0.149.2+), deployed on Netlify. The site showcases thought leadership content and recipes with a custom dark theme design.
NEVER modify these without explicit user permission:
Hero H1 Gradient (
layouts/index.html):
background-size: 80% 100% (not 100%)linear-gradient(135deg, var(--color-red) 0%, var(--color-pink) 50%, var(--color-yellow) 100%)Typography:
h1 and .site-logo must use font-family: 'Inter' (not Space Grotesk)Button Hover States:
content/ ├── thoughts/ # Thought leadership posts │ ├── _index.md # Section index │ └── *.md # Individual posts ├── recipes/ # Recipe posts │ ├── _index.md # Section index │ └── recipe-*.md # Individual recipes ├── about/ │ └── index.md # About page └── _index.md # Homepage content layouts/ ├── index.html # Homepage template ├── 404.html # Error page ├── _default/ # Default templates ├── thoughts/ # Thoughts section layouts ├── recipes/ # Recipes section layouts └── partials/ # Reusable components static/ ├── css/ # Stylesheets (main.css, custom.css) ├── favicons/ # All favicon files ├── images/ │ └── social/ # Open Graph images ├── _headers # Netlify headers └── _redirects # Netlify redirects
IMPORTANT: When creating or editing content, always follow the guidelines in
CONTENT_STYLE_GUIDE.md. This document defines:
Key rules:
📋 For complete thoughts guidelines, see docs/thoughts-template.md
The template includes:
Quick reference:
Required front matter fields:
title (string)date (YYYY-MM-DD format)description (string)subtitle (string)draft (true/false)Optional fields:
slug (string)og_image or social_image (path to image in /images/social/)Permalink pattern:
/thoughts/:year-:month-:day/:slug/
File naming for drafts:
draft- for easy identification (e.g., draft-my-post.md)slug field in front matter determines the URL, so "draft" won't appear in production URLsExample:
--- title: "My Thought Title" date: 2025-01-15 description: "A compelling description" subtitle: "Brief subtitle for homepage" draft: false slug: "my-thought-title" # This determines the URL, not the filename social_image: "/images/social/my-image.png" ---
📋 For complete recipe guidelines, see docs/recipe-template.md
The template includes:
Quick reference:
Required front matter fields:
title, date, description, subtitle, draft (same as thoughts)prepTime (ISO 8601 duration, e.g., "PT30M")cookTime (ISO 8601 duration, e.g., "PT45M")totalTime (ISO 8601 duration, e.g., "PT75M")recipeYield (string, e.g., "6-8 servings")recipeCategory (string, e.g., "Main Course")recipeCuisine (string, e.g., "Japanese-American")dietary (optional array) — see Dietary labels below. Used for filter chips and title icons.recipeIngredient (array of strings)recipeInstructions (array of strings)Permalink pattern:
/recipes/:year-:month-:day/:slug/
File naming: Use
recipe- prefix (e.g., recipe-bachan-pulled-pork.md)
Section separators: Use
--- (three dashes) as horizontal rules to separate major sections within recipe content. Do not use ⸻ (triple em dash) or other separator characters.
Dietary labels (optional): Labels apply to the base recipe only (main Ingredients and Method). Use exactly these values (lowercase, hyphenated). If a note or variation would change a classification, explicitly call that out in the note.
Temperature formatting:
°F and °C200°F (93°C) (Fahrenheit first, Celsius in parentheses)160–165°F (71–74°C)350°F / 175°C) — use parentheses insteadVolume and measurement formatting:
Tbsp, Tsp, Cup, Cups (not tbsp, tsp, cup, cups)Tbsp / Tbsp (tablespoon) — always abbreviateTsp / Tsp (teaspoon) — always abbreviatecup / cups — can abbreviate in lists, spell out in narrative textoz (ounce) — always abbreviatelb (pound) — always abbreviateg (gram) — always abbreviateml (milliliter) — always abbreviatein (inch) — can abbreviate in measurements like 1½-inch chunksminutes / minute (not min)hours / hour (not hr)seconds / second (not sec)1 cup (240 ml), 2 Tbsp (30 g)½, ⅓, ¼, ¾; otherwise use 1/2, 1/3, etc.Always run tests after making changes:
npm run build # Build the site first npm run test:content # Run content validation tests npm test # Run all tests (HTML, links, content, spell check, OG images, scheduling, search JSON, recipe template)
Available test commands:
npm run test:content - Content validation testsnpm run test:html - HTML validationnpm run test:links - Broken link detection (starts dev server, waits for ready, runs check, stops server)npm run test:spell - Spell check modified content files (git diff)npm run test:spell:all - Spell check all content filesnpm run test:og-images - OG image generation validationnpm run test:schedule - Scheduled posts workflow validationnpm run test:search-json - Recipe search JSON index validationnpm run test:recipe-template - Recipe template structure validationnpm test - Run all tests (includes pretest build step)Test coverage includes:
dairy-free, vegetarian, vegan, gluten-free allowed; no duplicates; labels apply to base recipe only (see docs)Key config settings (
):config.toml
https://lindsaybrunner.comunsafe = true (allows raw HTML in content)/images/social/default-og.pngPermalink patterns:
/thoughts/:year-:month-:day/:slug//recipes/:year-:month-:day/:slug/Output formats:
/index.xml)/recipes/index.json) - JSON index for recipe search functionalitySee
BRAND.md for complete brand guidelines. Key points:
Colors:
Typography:
content/thoughts/ (lowercase, hyphens)
draft- prefix: draft-my-post.md (helps with organization)slug field in front matter determines the URL, so "draft" won't appear in production URLsdocs/thoughts-template.mdstatic/images/social/ (manual creation, unlike recipes)social_image: "/images/social/my-image.png"static/images/ and ensure their backgrounds match the site's true black (#000000). Run node scripts/fix-diagram-backgrounds.js to automatically fix background colors. Add new diagram filenames to the diagramFiles array in the script before running. Note: This script is specifically for diagrams in thoughts posts, not for other types of images or other page types.npm run build && npm run test:contentTo schedule for future publication:
draft: true and a future date in front matternpm run schedule-posts to see what would be publishedcontent/recipes/recipe-*.mddocs/recipe-template.mdnpm run generate:og-images
static/images/social/working-files/ for editingnpm run generate:png -- static/images/social/working-files/recipe-xxx-og.svgstatic/images/social/ for use as the OG imagesocial_image to front matter: social_image: "/images/social/recipe-xxx-og.png"npm run build && npm run test:contentPrint functionality:
@media print rules in static/css/custom.cssTo schedule for future publication:
draft: true and a future date in front mattersocial_image set before the publish date, or they will be skippednpm run schedule-posts to see what would be publishedstatic/css/main.cssstatic/css/custom.css
@media print) for recipe pagescontent/_index.md for contentlayouts/index.html for structuredraft: true to hide from productiondraft- for easy identification (e.g., draft-my-post.md). The slug field in front matter determines the URL, so "draft" won't appear in production URLs.static/images/social/, reference with leading slashunsafe = true)npm run build before testingdraft: true and future dates will auto-publish via GitHub Actions (runs twice daily at 13:00 and 14:00 UTC to cover both PDT and PST). See README.md for details./recipes/index.json for client-side recipe search functionality. The index includes recipe metadata and is validated by tests.npm run test:spell to check modified content files, or npm run test:spell:all to check all content files. Add valid words to cspell.json if needed.npm run check:hugo. This checks for known CVEs and available updates. Recommended: check monthly or when security advisories are published.npm run check:dependencies to check all npm packages, Node.js version, and GitHub Actions for security vulnerabilities and updates. This runs automatically via GitHub Actions monthly and creates issues if problems are found.tests/content-checks/ directory)diagramFiles array, replacing dark pixels with pure black to ensure seamless integration with the dark theme. Note: Currently only relevant for diagrams placed in thoughts posts, not other types of images or other page types.@media print) for optimized recipe printing