skills/tinymist/typst-test-slide/SKILL.md
This skill should be used when the user asks to 'test a slide', 'isolate a slide', 'debug a slide', 'preview a single slide', 'test this slide', 'render one slide', or when you need to visually verify a single Typst slide from a presentation in isolation. Provides the exact file setup pattern to avoid access-denied and import errors.
npx skillsauth add edwinhu/workflows typst-test-slideInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Renders a single Typst slide in isolation for debugging or visual verification. This is a recipe, not a workflow.
Typst cannot access files outside its project root. Creating test files in /tmp/ causes "access denied" on every #import and #image() call. This skill provides the correct pattern.
| Error | Cause | Fix |
|-------|-------|-----|
| access denied on #import "../templates/theme.typ" | Test file is in /tmp/ (outside project root) | Put test file in output/ inside the project |
| access denied on #image(...) | Image path resolves outside project root | Use ../assets/ from output/ directory |
| file not found on #import "../../templates/theme.typ" | Wrong relative depth (used sub-slide depth instead of output/ depth) | output/ is one level deep: use ../templates/, not ../../templates/ |
| Slides don't render (just text) | Missing #show: university-theme.with(...) preamble | Include the full preamble (see template below) |
output/cat > output/test-slide.typ << 'EOF'
#import "../templates/theme.typ": *
#show: university-theme.with(
aspect-ratio: "16-9",
config-info(
title: [Test],
author: [Test],
date: datetime.today(),
institution: [UVA],
logo: image("../assets/LawP_horizontal_short_4c_RGB.png"),
),
)
#slide[
// paste slide content here
]
EOF
--root . from project roottinymist compile --root . output/test-slide.typ /tmp/test-slide.png --ppi 144
The --root . flag tells Typst that the project root is the current directory, so ../templates/ from output/ resolves correctly.
rm -f output/test-slide.typ
output/, never /tmp/ or any directory outside the project root.--root . from the project root directory.output/ go up one level: ../templates/, ../assets/.slides/XX-topic/ go up two levels: ../../templates/, ../../assets/ -- do not confuse these depths.output/ is gitignored but keeping test files around causes confusion.development
Build the meeting-level proxy-voting × ownership panel on the WRDS SGE grid — ISS N-PX fund votes reduced to (item × block) direction cells, joined to institutional and mutual-fund ownership. Use when working with risk.voteanalysis_npx, N-PX fund-level votes, ISS→CRSP fund linking, index/passive/active voting blocks, or a proxy-voting panel that needs ownership attached.
development
Use when "CRSP CIZ", "CRSP v2", "CRSP flat file format 2.0", "crsp.dsf_v2 / msf_v2", "StkDlySecurityData", "StkMthSecurityData", "StkSecurityInfoHist", "stocknames_v2", "DlyRet / MthRet / DlyPrc / MthPrc", "SHRCD or EXCHCD equivalent in new CRSP", "SIZ to CIZ migration", "CRSP data after 2024", "CRSP delisting returns", "CRSP cumulative adjustment factors", "CRSP index INDNO / INDFAM", or any CRSP stock/index query where the legacy SIZ column names no longer exist.
development
Use when linking or deduping datasets by entity name rather than a shared key — 'fuzzy match', 'fuzzy name matching', 'entity resolution', 'record linkage', 'match company/person names', 'dedupe entity names', 'name-based join', 'bridge identifiers' (CIK ↔ permno ↔ gvkey ↔ wficn ↔ EIN ↔ personid), or any use of char n-gram TF-IDF, cosine similarity on names, `sparse_dot_topn`, or RapidFuzz at scale.
development
Use when building a publication-quality table in Python — 'regression table', 'results table', 'summary statistics table', 'etable', 'coefplot', 'great_tables', 'GT', 'gt table', 'format a table for the paper', 'export table to LaTeX/HTML', significance stars, spanners, or column formatting for a table headed into a paper, slide deck, or notebook.