Install
$ agentstack add skill-akilrammohan-typst-skill-typst-skill ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Typst Document Writing
Typst is a markup-based typesetting system. Files use .typ extension. No boilerplate required—just start writing.
Three Modes
Typst has three syntactical modes:
| Mode | Default In | Enter Via | Exit Via | |------|-----------|-----------|----------| | Markup | .typ files | [..] from code | # for code | | Code | After # | #expr or { } | [..] for markup | | Math | Never | $..$ | End $ |
Essential Syntax
Markup Mode (default)
= Heading 1
== Heading 2
*bold* _italic_ `code`
- bullet list
+ numbered list
/ Term: definition
@label-ref
Code Mode (prefix with #)
#let x = 5
#if x > 3 [larger] else [smaller]
#for i in range(3) [Item #i. ]
#rect(width: 2cm, fill: blue)
#image("photo.png", width: 50%)
Math Mode (wrap in $)
Inline $x^2 + y^2 = z^2$ math.
Block math (note spaces inside dollars):
$ sum_(k=1)^n k = (n(n+1))/2 $
Critical Patterns
Set Rules (configure defaults)
#set page(margin: 2cm)
#set text(font: "New Computer Modern", size: 11pt)
#set par(justify: true)
#set heading(numbering: "1.1")
Show Rules (restyle elements)
// Show-set: apply set rule to specific element
#show heading: set text(navy)
// Transform: completely redefine
#show heading: it => [
#text(blue)[#it.body]
]
Function Calls
// Named arguments after positional
#rect(width: 2cm, height: 1cm, fill: aqua)
// Trailing content block (common pattern)
#figure(
image("chart.png", width: 80%),
caption: [Analysis results],
)
Tables
#table(
columns: (auto, 1fr, 1fr),
[Header 1], [Header 2], [Header 3],
[Row 1], [Data], [Data],
[Row 2], [Data], [Data],
)
Grids (layout, not semantic)
#grid(
columns: (1fr, 1fr),
gutter: 1em,
[Left column],
[Right column],
)
Math Mode Details
Key Differences from LaTeX
| LaTeX | Typst | |-------|-------| | \frac{a}{b} | a/b or frac(a,b) | | \sqrt{x} | sqrt(x) | | \sum_{i=1}^{n} | sum_(i=1)^n | | \alpha, \beta | alpha, beta | | \mathbf{x} | bold(x) | | \text{word} | "word" | | \left( \right) | Auto-scales, or lr(( )) | | \begin{pmatrix} | mat(1, 2; 3, 4) | | \begin{cases} | cases(a "if" x, b "else") | | \vec{v} | arrow(v) or vec(a, b, c) |
Math Syntax
$ x^2 $ // superscript
$ x_n $ // subscript
$ x_(i+1) $ // grouped subscript
$ (a+b)/c $ // fraction
$ sqrt(x) $ // square root
$ root(3, x) $ // nth root
$ sum_(i=0)^n $ // sum with limits
$ integral_a^b $ // integral
$ mat(1, 2; 3, 4) $ // matrix (semicolon = row break)
$ vec(x, y, z) $ // column vector
$ cases(1 "if" x > 0, 0 "else") $
Multi-letter Names
$ "error" = x - hat(x) $ // quotes for text
$ pi r^2 $ // single letters = variables
$ A B $ // space = multiplication
Common Pitfalls
- Forgetting
#in markup: Function calls need#prefix in markup mode
- Wrong:
rect(...) - Right:
#rect(...)
- Math block spacing: Block equations need spaces inside
$
- Inline:
$x^2$ - Block:
$ x^2 $(spaces required)
- Content vs strings: Use
[content]for markup,"string"for plain text
#text(fill: red)[Hello]— content with markup#lower("HELLO")— string manipulation
- Semicolons in expressions: End expression early with
;
#x;to prevent next char joining expression
- Multi-letter math variables: Wrap in quotes or they become function calls
- Wrong:
$error$(looks forerrorfunction) - Right:
$"error"$or single letters$e$
Document Templates
Academic Paper
#set document(title: [Paper Title], author: "Author")
#set page(margin: 2.5cm, numbering: "1")
#set text(font: "New Computer Modern", size: 11pt)
#set par(justify: true, leading: 0.65em)
#set heading(numbering: "1.1")
#align(center)[
#text(17pt, weight: "bold")[Paper Title]
#v(1em)
Author Name \
Institution \
#link("mailto:email@example.com")
]
#outline()
= Introduction
#lorem(50)
= Methods
#lorem(50)
Report with Figures
#set page(header: [Report Title #h(1fr) #counter(page).display()])
= Results
#figure(
table(
columns: 3,
[A], [B], [C],
[1], [2], [3],
),
caption: [Sample data],
)
As shown in @tab-data, ...
Symbol Reference
Common symbols: => (⇒), -> (→), = (≥), ... (…), ~ (non-breaking space)
Greek: alpha, beta, gamma, delta, epsilon, theta, lambda, mu, pi, sigma, omega
Variants: arrow.r, arrow.l.double, plus.circle — append modifiers with dots
See full list: https://typst.app/docs/reference/symbols/
Additional References
For complex tasks, consult these reference files:
references/math.md: Comprehensive math mode syntax, symbols, matrices, alignmentreferences/advanced.md: Scripting, templates, page layout, bibliography, imports
Compilation
typst compile document.typ # → document.pdf
typst compile document.typ out.pdf # custom output
typst watch document.typ # auto-recompile on save
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: akilrammohan
- Source: akilrammohan/typst-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.