ID:WORK-084Status:donePriority:highComplexity:moderateMilestone:v1.0.0
Inject $file.created and $file.modified Variables into Content Pipeline
Summary
Wire the shared git timestamp utility into packages/content/src/site.ts so that every page's Markdoc transform config includes $file.created and $file.modified variables. These join the existing $page and $frontmatter variables, making file timestamps available to any rune via standard Markdoc variable references.
Acceptance Criteria
loadContent()inpackages/content/src/site.tscalls the git timestamp utility once before the page loop- Each page's
contentVariablesincludes afileobject withcreatedandmodifiedstring properties - Three-tier resolution order: frontmatter override > git history > fs.stat fallback
- When no timestamp is available, the variable is
undefined(not an empty string or null) - Variables are accessible in Markdoc schemas as
$file.createdand$file.modified - Existing
$pageand$frontmattervariables are unaffected - Integration test: a page with no frontmatter dates gets git-derived
$file.createdand$file.modified - Integration test: a page with explicit frontmatter
created/modifieduses those values instead of git data
Approach
- Import the git timestamp utility in
packages/content/src/site.ts - Call it once at the start of
loadContent()with the content root directory - In the per-page loop, look up timestamps for each file path and merge into
contentVariables - Apply the three-tier fallback: check frontmatter first, then git map, then fs.stat
References
- SPEC-029 (Phase 2 — Variable Injection)
- WORK-083 (shared git timestamp utility — dependency)
packages/content/src/site.ts— existing variable injection point