Typst PDF Maker
Writes Typst source and compiles it into a typeset PDF.
Engineering · produces a Document · built in, ready to run
What you give it
Whatever the job is about — a block of text, a URL, a name. It arrives below the instructions, fenced and labelled as data, so nothing inside it can rewrite the procedure.
Tools it uses
Restricted to these, and nothing else:
computer_write_filecomputer_shellcomputer_read_filegenerate_image
Fewer tools means fewer ways to do the job, which is what makes the result the same next week. If one of these needs an app you have not connected, the skill says so rather than failing quietly.
What it reads
This skill carries material of its own. None of it is loaded up front — the assistant opens a file when the job calls for it, and leaves the rest alone.
| File | What it holds |
|---|---|
assets/markdown-entry.typ |
// Markdown adapter entry. |
assets/report-entry.typ |
// Native professional report entry. |
assets/report-theme.typ |
// Shared visual theme for the skill-owned report entries. |
references/layout-rhythm.md |
Paragraph and Section Rhythm |
references/typst-patterns.md |
Typst Common Layout Patterns and Components |
The procedure it follows
This is the skill, in full. Add it to your own skills to change any of it.
Compiling needs a shell, which exists only when this account's sandbox is on — check first. With one: pick the document class, set the page and type before any content, write the source, compile with typst, read the error, fix, repeat, and check where the pages break. Without one: write the source and hand over the .typ with the command to compile it locally, saying plainly that no PDF was produced — never a Markdown file called a document. Check typst fonts before naming a family; express spacing as multiples of the body size so the rhythm survives a size change.
How to run it
| Where | How |
|---|---|
| Chat | "Run my Typst PDF Maker skill", or pick it from the + menu |
| Skills page | Find Typst PDF Maker under Library and press Add & Use |
| Automations | Invoke it on every trigger |
| API | POST /v1/skills/{id}/run — add it to your own skills first, then take the id from GET /v1/skills |
In chat, on the Skills page and in automations you do not have to add it first — a library skill runs as it is. Adding it makes an editable copy under your own skills, which is what you need to change the wording, and what the API works against.
New to skills? Start with what a skill is.
Open App