/typst
Typst document creation and package development. Use when: (1) Working with .typ files, (2) User mentions typst, typst.toml, or typst-cli, (3) Creating or using Typst packages, (4) Developing document templates, (5) Converting Markdown/LaTeX to Typst
$ npx -y skills add lucifer1004/claude-skill-typst --skill typst --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/typst
Context preview
The summary Claude sees to decide when to auto-load this skill.
Typst document creation and package development. Use when: (1) Working with .typ files, (2) User mentions typst, typst.toml, or typst-cli, (3) Creating or using Typst packages, (4) Developing document templates, (5) Converting Markdown/LaTeX to Typst
SKILL.md
typst.SKILL.mdname: typst
description: 'Typst document creation and package development. Use when: (1) Working with .typ files, (2) User mentions typst, typst.toml, or typst-cli, (3) Creating or using Typst packages, (4) Developing document templates, (5) Converting Markdown/LaTeX to Typst'
Typst
This skill targets Typst 0.15+. For Typst 0.14.2, use the `typst-0.14.2` repository tag for the previous skill snapshot.
Compilation
typst compile document.typ # compile once → PDF
typst compile document.typ output.pdf # explicit output path
typst compile document.typ -f png # export as PNG image
typst compile src/main.typ --root . # set project root for /path imports
typst watch document.typ # recompile on change
typst eval --in document.typ 'query(heading).len()' # Typst 0.15+ introspection
For command options beyond this quick reference, see [cli.md](cli.md).
Agent verification — choose by what you need to check (see [debug.md](debug.md) for details):
| Method | Command | Best for | | ----------- | ----------------------------------------------------------------------- | ----------------------------------------- | | HTML export | `typst compile doc.typ /dev/stdout -f html --features html 2>/dev/null` | Text content, structure, headings, tables | | PNG export | `typst compile doc.typ page-{p}.png -f png` | Visual layout, alignment, spacing, fonts | | pdftotext | `typst compile doc.typ && pdftotext doc.pdf -` | Fallback for page-specific content |
Minimal Document
#set page(paper: "a4", margin: 2cm)
#set text(size: 11pt)
= Title
Content goes here.
Writing Documents
**Starting a new document?** Copy the closest recipe from [Examples](#examples) below — it's faster than starting blank and each row names the docs to read next.
| When you need to... | Read | | -------------------------------------------------- | ------------------------------ | | Learn syntax, imports, functions, control flow | [basics.md](basics.md) | | Learn data types, operators, string/array methods | [types.md](types.md) | | Style pages, headings, figures, layout | [styling.md](styling.md) | | Tables, grids, cell spans, borders, data tables | [tables.md](tables.md) | | Academic papers, bibliography, theorems, equations | [academic.md](academic.md) | | Convert from Markdown or LaTeX | [conversion.md](conversion.md) | | Upgrade older Typst code, 0.15 breaking changes | [migration.md](migration.md) | | Use Typst CLI commands and build options | [cli.md](cli.md) | | Extract data from documents, multi-pass builds | [query.md](query.md) |
Developing Packages and Templates
| When you need to... | Read | | ---------------------------------------------- | -------------------------- | | State, counters, in-document `query()`, XML | [advanced.md](advanced.md) | | CLI introspection, metadata export, multi-pass | [query.md](query.md) | | Create a reusable template function | [template.md](template.md) | | Create or publish a package | [package.md](package.md) | | Verify output (HTML/PNG/pdftotext, repr) | [debug.md](debug.md) | | Profile performance (--timings, hotspots) | [perf.md](perf.md) |
[basics.md](basics.md) and [types.md](types.md) are also the foundation for developers.
Finding Packages
Search the embedded index of Typst Universe packages (updated weekly):
python3 scripts/search-packages.py "what you need"
python3 scripts/search-packages.py "chart" --category visualization
python3 scripts/search-packages.py --category cv --top 5
python3 scripts/search-packages.py --list-categories
Common Errors
| Error | Cause | Fix | | ------------------------------------------------ | ---------------------------- | ---------------------------------------------------- | | "unknown variable" | Undefined identifier | Check spelling, ensure `#let` before use | | "expected X, found Y" | Type mismatch | Check function signature in docs | | "file not found" | Bad import path | Paths resolve relative to current file | | "unknown font" | Font not installed | Use system fonts or web-safe alternatives | | "maximum function call depth exceeded" | Deep recursion | Use iteration instead | | "can only be used when context is known" | Missing `context` wrapper | Wrap in `context { ... }` | | "unexpected argument" | `=` instead of `:` for args | Named args use `:` syntax: `func(name: value)` | | "variables from outside are read-only" | Mutating captured variable | Use loop accumulation or `state()` — see advanced.md | | "expected content, found string" (or vice versa) | Content/string type mismatch | Use `[#str-var]` to embed string in content | | set/show rule has no effect | Rule placed after content | Place set/show rules before the content they target |
Examples
Copy the closest starter, adjust, compile. For CVs, letters, or slides, search packages: `python3 scripts/search-packages.py --category cv` (or `letter`, `presentation`).
| Example | St
Read more
name: typst description: 'Typst document creation and package development. Use when: (1) Working with .typ files, (2) User mentions typst, typst.toml, or typst-cli, (3) Creating or using Typst packages, (4) Developing document templates, (5) Converting Markdown/LaTeX to Typst'
Typst
This skill targets Typst 0.15+. For Typst 0.14.2, use the `typst-0.14.2` repository tag for the previous skill snapshot.
Compilation
typst compile document.typ # compile once → PDF typst compile document.typ output.pdf # explicit output path typst compile document.typ -f png # export as PNG image typst compile src/main.typ --root . # set project root for /path imports typst watch document.typ # recompile on change typst eval --in document.typ 'query(heading).len()' # Typst 0.15+ introspection
For command options beyond this quick reference, see [cli.md](cli.md).
Agent verification — choose by what you need to check (see [debug.md](debug.md) for details):
| Method | Command | Best for | | ----------- | ----------------------------------------------------------------------- | ----------------------------------------- | | HTML export | `typst compile doc.typ /dev/stdout -f html --features html 2>/dev/null` | Text content, structure, headings, tables | | PNG export | `typst compile doc.typ page-{p}.png -f png` | Visual layout, alignment, spacing, fonts | | pdftotext | `typst compile doc.typ && pdftotext doc.pdf -` | Fallback for page-specific content |
Minimal Document
#set page(paper: "a4", margin: 2cm) #set text(size: 11pt) = Title Content goes here.
Writing Documents
**Starting a new document?** Copy the closest recipe from [Examples](#examples) below — it's faster than starting blank and each row names the docs to read next.
| When you need to... | Read | | -------------------------------------------------- | ------------------------------ | | Learn syntax, imports, functions, control flow | [basics.md](basics.md) | | Learn data types, operators, string/array methods | [types.md](types.md) | | Style pages, headings, figures, layout | [styling.md](styling.md) | | Tables, grids, cell spans, borders, data tables | [tables.md](tables.md) | | Academic papers, bibliography, theorems, equations | [academic.md](academic.md) | | Convert from Markdown or LaTeX | [conversion.md](conversion.md) | | Upgrade older Typst code, 0.15 breaking changes | [migration.md](migration.md) | | Use Typst CLI commands and build options | [cli.md](cli.md) | | Extract data from documents, multi-pass builds | [query.md](query.md) |
Developing Packages and Templates
| When you need to... | Read | | ---------------------------------------------- | -------------------------- | | State, counters, in-document `query()`, XML | [advanced.md](advanced.md) | | CLI introspection, metadata export, multi-pass | [query.md](query.md) | | Create a reusable template function | [template.md](template.md) | | Create or publish a package | [package.md](package.md) | | Verify output (HTML/PNG/pdftotext, repr) | [debug.md](debug.md) | | Profile performance (--timings, hotspots) | [perf.md](perf.md) |
[basics.md](basics.md) and [types.md](types.md) are also the foundation for developers.
Finding Packages
Search the embedded index of Typst Universe packages (updated weekly):
python3 scripts/search-packages.py "what you need" python3 scripts/search-packages.py "chart" --category visualization python3 scripts/search-packages.py --category cv --top 5 python3 scripts/search-packages.py --list-categories
Common Errors
| Error | Cause | Fix | | ------------------------------------------------ | ---------------------------- | ---------------------------------------------------- | | "unknown variable" | Undefined identifier | Check spelling, ensure `#let` before use | | "expected X, found Y" | Type mismatch | Check function signature in docs | | "file not found" | Bad import path | Paths resolve relative to current file | | "unknown font" | Font not installed | Use system fonts or web-safe alternatives | | "maximum function call depth exceeded" | Deep recursion | Use iteration instead | | "can only be used when context is known" | Missing `context` wrapper | Wrap in `context { ... }` | | "unexpected argument" | `=` instead of `:` for args | Named args use `:` syntax: `func(name: value)` | | "variables from outside are read-only" | Mutating captured variable | Use loop accumulation or `state()` — see advanced.md | | "expected content, found string" (or vice versa) | Content/string type mismatch | Use `[#str-var]` to embed string in content | | set/show rule has no effect | Rule placed after content | Place set/show rules before the content they target |
Examples
Copy the closest starter, adjust, compile. For CVs, letters, or slides, search packages: `python3 scripts/search-packages.py --category cv` (or `letter`, `presentation`).
| Example | St
A comprehensive skill for Typst document creation and package development. The current main branch targets Typst 0.15+.

