Content Model
Posts
Posts live in content/posts/ and use dated filenames in the standard YYYY-MM-DD-slug.md 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 the post layout (components/post/PostLayout.tsx).readyis a content workflow flag and is not enforced by the build itself.
Books
Books live in content/books/ and are rendered through the books collection.
Required front matter
titleexcerptdatetagsweb_url
Common optional front matter
authorready
Automation loops
Automation loop listings live in content/loops/ and are rendered through the loops collection.
Required front matter
layouttitleexcerpt
The Markdown body is also required because it contains the loop prompt or operating instructions.
Optional front matter
categorytriggercadencetoolingproofstopmemorysource_titlesource_urlattributionstatustagslinks
Notes
layoutshould beloop.status, when present, should becurated,community, orsubmitted.links, when present, should be an array of mappings. Each link requiresurland may includetitle.- The Markdown body should contain the actual loop prompt or operating instructions.
- Public submissions should enter through a pull request so maintainers can validate safety, usefulness, and any optional attribution or resource links before merge.
- Loop detail pages derive Agent Skill, Codex/Cursor
AGENTS.md, Cursor.mdc, Claude deep-link, and Cursor deep-link exports from this same front matter plus body content.
Non-publishable content
content/posts/readme.mdis documentation, not a publishable post.- It is intentionally excluded from automated front matter validation.
Data Contracts
content/data/about.yaml
The site expects at least these keys to exist:
bioexperienceeducation
content/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 JS through front matter.
Supported front matter keys
page_scripts
It must be an array of asset paths and should only be used for page-owned scripts.
There is no per-page CSS key. All page styles are consolidated into the single
site stylesheet css/main.css (section 8), which the root layout loads on
every page; page_stylesheets is no longer read and no longer appears in any
front matter.