name: render-report description: Render a Quarto report (Stata engine) to HTML / PDF / DOCX. Performs freshness check on included tables/figures, verifies the Stata Quarto engine, and validates numerical claims before rendering. disable-model-invocation: true argument-hint: "[reports/file.qmd]" allowed-tools: ["Bash", "Read", "Grep", "Glob", "Task"]
Render a Quarto + Stata Report
Render a .qmd report that uses the Stata Quarto engine (or pure-Markdown Stata code blocks). Pre-flight checks ensure the report is complete, fresh, and honest (no unverified numerical claims).
When to Use
- After completing an analysis, to assemble the writeup
- Before sharing with coauthors / advisors
- Before a paper-submission deadline
Steps
1. Resolve the file
From $ARGUMENTS find the .qmd. If just a basename, search reports/. If empty, list reports/*.qmd and ask.
2. Pre-flight checks
a) Quarto + Stata engine available:
quarto check
Confirm "Stata: OK" (or equivalent). If missing, emit a clear setup instruction:
"Quarto's Stata engine is not installed. Install with:
pip install nbstata(orpip install pystata), then re-run."
Do NOT attempt to render without the engine — it will fail confusingly.
b) No inline analysis — grep the .qmd for analysis commands inside Stata code chunks:
grep -n -E "regress|reghdfe|ivreg|areg|xtreg|csdid" reports/<file>.qmd
If found inside {stata} chunks → flag and refuse to render. Analysis lives in dofiles/, not in reports.
c) Freshness check for every included artifact (per single-source-of-truth):
- For each
output/tables/Xoroutput/figures/Xreferenced in the.qmd - Find the producing do-file (grep for the path in
dofiles/) - If do-file mtime > artifact mtime → STALE → re-run via
/run-stataBEFORE rendering
d) Citation completeness:
- Extract every
@keyfrom the.qmd - Confirm each appears in
references.bib
e) Numerical-claim validation:
- Identify text claims with numbers (regex on the Markdown narrative outside code chunks)
- Delegate each to the
log-validatoragent against the relevantlogs/*.log - If any claim is
UNVERIFIED→ refuse to render until either the do-file re-runs or the claim is removed
3. Render
quarto render reports/<file>.qmd
By default, produces HTML in docs/ (or report-local _files/). For PDF or DOCX, the .qmd needs the format block to declare them.
4. Post-render verification
- Confirm output exists and is non-empty
- Open the rendered HTML and confirm figures and tables display (read the rendered file's image references)
- No "Could not render" placeholders
5. Report to user
- Path of rendered output
- Freshness verdict
- Numerical-claim verdict (N verified, 0 unverified)
- Citation completeness (N keys, 0 missing)
- Next step (commit / share / revise)
Examples
/render-report reports/analysis_report.qmd→ Full pre-flight + render./render-report analysis_report→ resolves toreports/analysis_report.qmd.
Troubleshooting
- "No engine for stata" — install
nbstataorpystata; see Quarto Stata engine docs. - Render hangs — typically the Stata engine launching a long computation. Reports should NOT do analysis; refactor into
dofiles/. - Broken figure path — the
.qmdreferencesoutput/figures/X.pdfbut the file doesn't exist. Re-run the producing do-file. Bibliography file not found— the_quarto.ymlshould point tobibliography: ../references.bib(relative fromreports/).
Notes
- Reports are output, not source. They should NOT contain analysis logic. If a result is ad-hoc, put it in a do-file first, then
includefrom there. - Numerical-claim validation is a HARD GATE. If a claim cannot be verified, the report does not render. This is per
log-verification-protocol. - Output goes to
docs/for GitHub Pages compatibility (set in_quarto.yml).