
typst-author
Generate idiomatic Typst (.typ) code, edit and troubleshoot Typst documents and projects, and answer Typst syntax/reference questions. Use when working with .typ files or when the user explicitly asks for Typst document creation, editing, debugging, compilation, formatting, template work, or package usage.
- Installs
- 1.8K
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/jihe520/mathmodelagent --skill typst-author- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads typst-author automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
typst-author skill
Overview
This skill helps agents generate, edit, and reason about Typst documents. It provides quick‑start examples, detailed workflows, and links to the full Typst documentation (guides, tutorials, reference).
Minimal document example
#set document(title: "My Document", author: "Author Name")
#set page(numbering: "1")
#set text(lang: "en")
// Enable paragraph justification and character-level justification
#set par(
justify: true,
justification-limits: (
tracking: (min: -0.012em, max: 0.012em),
spacing: (min: 75%, max: 120%),
)
)
#title[My Document]
= Heading 1
This is a paragraph in Typst.
== Heading 2
#lorem(50)
Workflows
- Creating a new Typst project: Use the "Minimal document example" above as a starting point. Skim the tutorial for the basics (docs/tutorial/writing-in-typst.md), then create the
.typfile(s). After each.typedit, follow the post-edit formatting checks below whentypstyleis available. - Editing existing content: Locate the target text and apply changes; confirm syntax against the reference when needed (docs/reference/). After each modified
.typfile, follow the post-edit formatting checks below. - Formatting & Styling: Consult the styling guide (docs/reference/styling.md) for
set rule,show rule, and custom themes.
Documentation
- Syntax & foundations:
docs/reference/syntax.md - Styling & show/set rules:
docs/reference/styling.md - Scripting & runtime behavior:
docs/reference/scripting.md - Page setup & tables:
docs/guides/page-setup.mdanddocs/guides/tables.md - Task-oriented authoring help:
docs/tutorial/writing-in-typst.md,docs/guides/*.md, anddocs/reference/**/*.md
Detailed instructions
- PRIORITY: Trust local documentation. Your internal training data regarding Typst may be outdated or hallucinated. Always verify function names, parameters, and syntax against the local
docs/folder before generating code. - Read the relevant documentation using local file search and open tools on the paths above.
- Use local docs for syntax and reference questions. Verify syntax, function names, parameters, and reference behavior from the bundled docs. Run a minimal Typst probe only when runtime or evaluation behavior remains unclear after checking the docs.
- Generate or modify the
.typsource according to the user's request. - Run the post-edit formatting checks below for every
.typfile you created or edited in that pass. - Validate with
typst compileafter the formatting decision is complete when you created or edited.typfiles, or when the user explicitly asks for verification (if tool access is allowed). - Summarize touched files and outcomes. Provide full
.typcontent only when the user requests it or when direct editing is not possible, and optionally include a rendered preview (PDF/HTML).
Probing uncertain behavior
- Use a probe when the bundled docs do not settle runtime or evaluation behavior.
- Model the case with Typst scripting as described in docs/reference/scripting.md.
- When a probe is necessary, prefer a fileless probe through stdin instead of creating scratch
.typfiles. Expose the value withmetadata(...) <probe>and read it withtypst query - "<probe>" --field value --one. See docs/reference/introspection/query.md and docs/reference/introspection/metadata.md. - Example:
printf '#metadata(1 + 2) <probe>\n' | typst query - "<probe>" --field value --one
Post-edit formatting checks
- Check whether
typstyleis available withcommand -v typstyle. If it is unavailable, skip the remaining formatting checks. - After each
.typfile modification, runtypstyle --check <file>for the file you just created or edited. - If
typstyle --checkfails, inspect the formatter changes withtypstyle --diff <file>before deciding what to do. - Apply formatting with
typstyle -i <file>only when the formatter changes are limited to a newly created file or to code you created or edited in the current task. - Stop and ask the user when formatting would change untouched pre-existing code. If the diff reaches outside your own edits, or if you cannot confidently prove that every formatter change is limited to your edits, ask instead of formatting.
Quick syntax reference
Critical distinctions
- Arrays:
(item1, item2)(parentheses). See docs/reference/foundations/array.md. - Dictionaries:
(key: value, key2: value2)(parentheses with colons). See docs/reference/foundations/dictionary.md. - Content blocks:
[markup content](square brackets). See docs/reference/foundations/content.md. - NO tuples: Typst only has arrays.
Hash usage (markup vs code)
- Use
#to start a code expression inside markup or content blocks; it disambiguates code from text. This is required for content-producing function calls and field access in markup:#figure[...],#image("file.png"),text(...)[#numbering(...)]. - Do not use
#inside code contexts (argument lists, code blocks, show-rule bodies). Example:#figure(image("file.png"))(no#beforeimage). - Reference: docs/reference/scripting.md, docs/tutorial/writing-in-typst.md
// Incorrect (missing # inside content block)
text(...)[(numbering(...))]
// Correct
text(...)[(#numbering(...))]
Styling rules: set vs show
set: Set rule to configure optional parameters on element functions (style defaults scoped to the current block or file).show: Show rule to target selected elements and apply a set rule or transform/replace the element output.- Use
setfor common styling; useshowfor selective or structural changes (e.g.,heading.where(level: 1), labels, text, regex).
// Set rule: configure optional parameters for an element type
#set heading(numbering: "I.")
#set text(font: "New Computer Modern")
// Show-set rule: apply a set rule only to selected elements
#show heading: set text(navy)
// Show transform rule: replace/reshape element output
#show heading: it => block[#emph(it.body)]
Common mistakes to avoid
- Calling things "tuples" (Typst only has arrays).
- Using
[]for arrays (use()instead). - Accessing array elements with
arr[0](usearr.at(0)). - Omitting
#in markup/content blocks (e.g.,text(...)[numbering(...)]should betext(...)[#numbering(...)]). - Using
#inside code contexts (e.g.,figure(#image("x.png"))in an argument list). - Mixing up content blocks
[]with code blocks{}. - Forgetting to include the namespace when accessing imported variables/functions (e.g., use
color.hslinstead of justhsl). - Using LaTeX syntax (do NOT use
\begin{...},\section, or other LaTeX commands). - Hallucinating environments (e.g.,
tabulardoes not exist; usetable).
Advanced features
- Custom themes: See docs/reference/styling.md for theme creation.
- Scripting: Use Typst's scripting capabilities (docs/reference/scripting.md) for automatic generation.
- Math and visualisation: Reference docs/reference/math/ and docs/reference/visualize/ for formulas and diagrams.
For large projects
When working on large projects, consider organizing the project across multiple files.
- Use
#include "file.typ"to split into multiple files - Relevant documentation: docs/reference/foundations/module.md
Troubleshooting
Missing font warnings
If you see "unknown font family" warnings, remove the font specification to use system defaults. Note: Font warnings don't prevent compilation; the document will use fallback fonts.
Template/Package not found
If import fails with "package not found":
- Verify exact package name and version on Typst Universe.
- Check for typos in
@preview/package:versionsyntax.
Compilation errors
Common fixes:
- "expected content, found ...": You're using code where markup is expected - wrap in
#{ }or use proper syntax. - "expected expression, found ...": Missing
#(or#(...)) in markup/content blocks. - "unknown variable": Check spelling, ensure imports are correct.
- Array/dictionary errors: Review syntax - use
()for both, dictionaries needkey: value, singleton arrays are(elem,).
FAQ
What does the typst-author skill do?
Generate idiomatic Typst (.typ) code, edit and troubleshoot Typst documents and projects, and answer Typst syntax/reference questions. Use when working with .typ files or when the user explicitly asks for Typst document creation, editing, debugging, compilation, formatting, template work, or package usage.
How do I install typst-author?
Run npx skills add https://github.com/jihe520/mathmodelagent --skill typst-author in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/typst-author/ (personal) or .claude/skills/typst-author/ (project).
Which AI agents can use typst-author?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is typst-author safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains typst-author?
It is published by jihe520 in jihe520/mathmodelagent. It has 1,832 recorded installs.
More from jihe520/mathmodelagent
1start-mathmodel
jihe520/mathmodelagent
数学建模竞赛工作流入口。用于启动完整建模流程:询问用户偏好,生成 plan.md 和 todo.md,并按阶段调用赛题分析、建模、代码与图表、流程图、论文撰写、验证验收等 skills。
2analysis-modeling
jihe520/mathmodelagent
数学建模赛题分析与建模设计合并阶段。用于读取题面和附件,完成子问题拆解、数据理解、假设预检、变量定义、模型公式、目标函数、约束条件、求解策略和可交给代码实现的建模报告。
5writing
jihe520/mathmodelagent
数学建模竞赛论文撰写阶段,支持 Typst 和 LaTeX 双引擎。根据 ANALYSISMODELINGREPORT.md、RESULTSREPORT.md 和 figures/.pdf 选择比赛模板、排版引擎、组织章节,并在论文正文中按章节直接插入图表。
4drawio
jihe520/mathmodelagent
数学建模非数据型图示绘制阶段。根据 ANALYSISMODELINGREPORT.md、RESULTSREPORT.md 和已有 figures/ 生成技术路线图、子问题求解流程图、模型结构图、数据处理流程图等 DrawIO 图,并导出论文可引用 PDF。
3coding-visual
jihe520/mathmodelagent
数学建模编程实现与数据图表生成阶段。根据 ANALYSISMODELINGREPORT.md 编写可复现代码、运行求解、验证约束、输出 RESULTSREPORT.md 并生成论文可用的数据驱动图表 PDF。
6verity
jihe520/mathmodelagent
数学建模竞赛最终验证和验收阶段,支持 Typst 和 LaTeX 双引擎。用于论文写完后检查章节数量、标题顺序、图表引用、数值一致性、占位符、内部文件泄露、参考文献、代码可复现性、编译和提交就绪状态。
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.