Content Model
Posts
Posts live in _posts/ and use dated filenames in the standard Jekyll format.
Required front matter
layouttitleexcerptdatetags
Optional front matter
authorimageslugmermaidmathjaxready
Notes
authoris optional for legacy posts because the templates already fall back to the site title when it is missing.imageoverrides the generated/default social image.slugis used for predictable social image paths when a customimageis not present.mermaidandmathjaxenable post-only rendering features in_layouts/post.html.readyis a content workflow flag and is not enforced by Jekyll itself.
Books
Books live in _books/ and are rendered through the books collection.
Required front matter
titleexcerptdatetagsweb_url
Common optional front matter
authorready
Non-publishable content
_posts/readme.mdis documentation, not a publishable post.- It is intentionally excluded from automated front matter validation.
Data Contracts
_data/about.yaml
The site expects at least these keys to exist:
bioexperienceeducation
_data/view_count.json
The site expects:
last_updatedview_countsarray
Each view_counts[] entry must contain:
urlviewsavg_duration_secondsengagement_rate
Top-level Page Asset Contract
The refactored top-level pages can declare page-specific CSS and JS through front matter.
Supported front matter keys
page_stylesheetspage_scripts
Both must be arrays of asset paths and should only be used for page-owned styles and scripts.