Agent skill

Noteworthy

by sihooleebd in sihooleebd/noteworthy

Write and edit Noteworthy documents — a Typst framework for textbooks, with blocks (definition/theorem/example/solution), 2D and 3D canvases, geometry, plotting, and live Yjs collaboration.

MITAuto-check passedData & Analytics

Install Noteworthy

skills CLI
$ npx skills add sihooleebd/noteworthy --skill noteworthy -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sihooleebd/noteworthy noteworthy --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sihooleebd/noteworthy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/noteworthy .claude/skills/noteworthy && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
noteworthy
GitHub stars
120
Token cost
~2k tokens
SKILL.md length
807 words
Files
5
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Write and edit Noteworthy documents — a Typst framework for textbooks, with blocks (definition/theorem/example/solution), 2D and 3D canvases, geometry, plotting, and live Yjs collaboration.

  • Editing .typ files in a Noteworthy project
  • SKILL.md covers The room is the document; the…, Deploying templates and modules, Rendering a page to look at it and Blocks, plus 2 more sections
  • Calls git, rsync and curl
  • Drawing a figure with shape/graph/canvas

What it does

Noteworthy is an agent skill from sihooleebd/noteworthy. Write and edit Noteworthy documents — a Typst framework for textbooks, with blocks (definition/theorem/example/solution), 2D and 3D canvases, geometry, plotting, and live Yjs collaboration. Use when editing .typ files in a Noteworthy project, drawing a figure with shape/graph/canvas, adding a block or cross-reference, changing templates/module, or deploying to a running Noteworthy server. Covers the one rule that is not guessable: a live document is a CRDT room and the file is only its export.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files (for example `reference/blocks.md`, `reference/geometry.md` and `reference/plotting.md`).

It sits in Data & Analytics, covering Data visualization. It works with Python and Model Context Protocol. The repository describes itself as: A powerful academic framework for typst. The licence is MIT.

When your agent uses it

  • Editing .typ files in a Noteworthy project
  • Drawing a figure with shape/graph/canvas
  • Cross-reference
  • Changing templates/module

Example prompts

  • “/noteworthy”

What it can do on your machine

Read from SKILL.md and the folder at commit c900d3a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • rsync
    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, rsync and curl, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Noteworthy loads about 2k tokens when it runs. Until then it costs about 127 tokens; SKILL.md has 807 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~127
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from sihooleebd/noteworthy at commit c900d3a, republished under its MIT licence (© sihooleebd). 807 words, ~2,008 tokens.

Download SKILL.mdSave it as .claude/skills/noteworthy/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
noteworthy
description
Write and edit Noteworthy documents — a Typst framework for textbooks, with blocks (definition/theorem/example/solution), 2D and 3D canvases, geometry, plotting, and live Yjs collaboration. Use when editing .typ files in a Noteworthy project, drawing a figure with shape/graph/canvas, adding a block or cross-reference, changing templates/module, or deploying to a running Noteworthy server. Covers the one rule that is not guessable: a live document is a CRDT room and the file is only its export.

Noteworthy

A Typst framework for educational documents. templates/templater.typ re-exports everything; a content file imports that one path and nothing else.

config/     hierarchy.json, metadata.json, constants.json, schemes/
content/    <chapter>/<page>.typ          the document itself
templates/  templater.typ, core/, module/

Blocks, covers and layouts come in unqualified; everything else is a namespace: canvas, shape, graph, data, combi, dsa, timeline, trees.

typst
#import "../../templates/templater.typ": *

The room is the document; the file is its export

A Noteworthy server holds each open file as a Yjs CRDT room. While a room is live it is authoritative, and it rewrites the file within a debounce of every edit.

So writing the file behind a live room's back does not edit the document. The room's next save puts the old text back over what was written, and nobody connected ever sees the change. This is the single most expensive mistake to make here — it looks like it worked, and reverts a few seconds later.

Edit through the room instead. When the noteworthy MCP server is connected:

toolfor
list_documentswhat exists, and which files someone has open right now
read_documentthe live text when a room holds it, the file otherwise
edit_documentreplace old→new; a delta through the room, so an open editor keeps its cursor, scroll and undo
append_documentadd at the end, same way
render_documentrender the book, a chapter or a page and hand back the pages as images (format: "pdf" also leaves the PDF on the server)
check_documentcompile the book and return typst's diagnostics

edit_document refuses an old_string that appears zero times, or more than once without replace_all — same rule whether it goes through a room or to a file nobody has open.

Without the MCP server, editing files directly is only safe when no server is running against that project.

Deploying templates and modules

templates/ is not a document, so it is deployed rather than edited through a room. templates/module is a git submodule (noteworthy-modules).

bash
# commit in the submodule, then bump the pin in the parent repo
cd templates/module && git commit && git push
cd ../..        && git commit -am "Bump modules: ..." && git push

# --delay-updates: every file is staged and renamed at the end, so the project
# never sits half-updated.  Without it a watching tinymist compiles a tree where
# one file has landed and another has not, and reports unresolved imports.
rsync -a --delay-updates --exclude='.git' templates/module/ host:project/templates/module/

# reconcile ONLY the paths deployed.  An empty body means *every* live room,
# which reloads documents nobody asked you to touch.
curl -X POST http://host:8010/api/rooms/reload -H 'Content-Type: application/json' \
  -d '{"paths": ["templates/module/canvas/space.typ"]}'

Rendering a page to look at it

render_document is the short way, and it takes names: "8/2", "content/8/2.typ", "8" for a chapter, nothing for the book. Without the MCP server, compile through the parser yourself -- and either way look at the image before saying a figure works.

bash
typst compile templates/core/parser.typ out-{n}.png --root . --ppi 110 \
  --input 'chapter-folders=["8", "9"]' \
  --input 'page-folders={"8": ["1", "2"], "9": ["1"]}' \
  --input target=0/1        # index into chapter-folders / page-folders, not names
A red ?label in a partial render is correct

A compile of one page or one chapter has no cross-page label map, so any @label whose target lives on another page renders as a red ?label.

This is intended and is not something to fix. Do not rewrite the reference, add the label locally, or report it as broken: it resolves in a full build, where the first pass has collected every label in the book. Render the whole book (render_document with no target) if you need to see it resolved.

Blocks

definition, theorem, example, note, notation, analysis, equation, solution, proof. Signature: #block-kind(title, number, label: "name")[body].

typst
#definition("Truncated Cone", label: "tcone")[ ... ]     // auto-numbered
#note("Why", auto, label: "why")[ ... ]                  // auto is the number slot
@tcone                                                    // renders "Definition 8.2.1"

Blocks nest, and a solution counts within the block containing it. A reference is drawn in that block kind's scheme colour.

Show full SKILL.md (330 more words)Show less

Figures

Canvases take objects as positional arguments; arrays of objects are fine.

typst
canvas.cartesian-canvas(size: (6, 4), x-domain: (0, 6), y-domain: (-3, 3), ..objects)
canvas.polar-canvas / trig-canvas / graph-canvas / blank-canvas   // blank: no axes
canvas.space-canvas(x-domain:, y-domain:, z-domain:, size:, elevation:, azimuth:,
                    projection: "orthographic" | "perspective", axis-dir: (y: -1))
modulewhat is in itdetail
unqualifiedblocks, covers, layout, @refreference/blocks.md
shapepoints, lines, circles, arcs, polygons, angles, braces, text, constructions, intersectionsreference/geometry.md
graphfunctions, parametric and polar curves, surfaces, vectors, tangents, Riemann sumsreference/plotting.md
dataseries, CSV, tables, smooth curvesreference/plotting.md
canvasthe six canvases and the 3D camerareference/plotting.md
combi trees dsa timelinepermutations, trees, arrays/stacks/graphs/grids, timelinesreference/structures.md

Read the reference file for the module you are using: the signatures there are taken from templates/module, which is ahead of the feature document in content/.

The 2D/3D rule

Every point-built shape takes (x, y) or (x, y, z). In a space canvas a two-component point lies on the ground plane and a three-component one is in space — so a parametric function is 3D exactly when it returns three numbers.

typst
shape.circle((0, 0, 1.5), radius: 1)                      // a ring at height 1.5
graph.parametric(t => (calc.cos(t), calc.sin(t), t / 2))  // a helix
graph.parametric(x => (x, 0, f(x)), domain: (a, b))       // a profile in the xz-plane

A circle is always flat on the ground plane. A ring perpendicular to an axis is a polyline or a parametric curve, not a circle.

Styling

style: (stroke: (dash: "dashed")) keeps the theme's paint and thickness — naming one part of a stroke keeps the rest. A bare colour (stroke: red) replaces outright.

A surface with a translucent colour is not stroked: stroking a facet in its own translucent fill doubles the alpha along every shared edge and the mesh shows up as a grid of lines. Opaque surfaces are stroked, to close antialiasing seams.

brace takes angle: — a direction on the page (0deg right, 90deg up) — and goes to whichever of its two sides points that way, measured after projection. Through a camera that is the only way to say which side you meant.

Checks worth making

  • Render and look at it. Overlapping labels and a figure that silently drew nothing both survive a clean compile.
  • An unknown named argument to a canvas is silently ignored, not an error (space-canvas panics on them; the flat ones do not).
  • check_document, or a compile, before leaving an edit behind.

© sihooleebd, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files in .claude/skills/noteworthy of sihooleebd/noteworthy.

  • SKILL.md
  • reference/blocks.md
  • reference/geometry.md
  • reference/plotting.md
  • reference/structures.md

Open the folder on GitHubat commit c900d3a

Compare with similar skills

Noteworthy next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Noteworthy compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Noteworthy this skillsihooleebd/noteworthy120—~2kAutomated safety check: PassMIT
Save Research Notebooknapjon/krisk117—~702Automated safety check: PassBSD-3-Clause
Replnteract/nteract179—~1.4kAutomated safety check: PassBSD-3-Clause
Scientific Figure MakingChenLiu-1996/figures4papers8.3k—~557Automated safety check: PassCustom licence
Plot From ImageTrae1ounG/paper-plot-skills8691 repos~868Automated safety check: PassNone
Retentioneering Contributingretentioneering/retentioneering-tools925—~1.8kAutomated safety check: PassApache-2.0

Similar skills

  • Convert a completed data-analysis conversation into evidence-backed, reproducible living research through the Krisk MCP server.

    117 GitHub stars~702 tokensUpdated 8 days ago
    Data & AnalyticsAuto-check passed
  • Repl

    nteract/nteract

    Use nteract notebooks as a persistent Python REPL. An agent skill from nteract/nteract.

    179 GitHub stars~1.4k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Scientific Figure Making

    ChenLiu-1996/figures4papers

    Covers publication-ready matplotlib figures for academic papers, slides, and reports—bars, trends, scatter, heatmaps, and multi-panel layouts—with this…

    8.3k GitHub stars~557 tokensUpdated 3 days ago
    Data & AnalyticsAuto-check passed
  • Plot From Image

    Trae1ounG/paper-plot-skills

    Reproduce any academic paper figure from an uploaded image using accumulated style experience.

    869 GitHub starsUsed in 1 repo~868 tokens
    Data & AnalyticsAuto-check passed
  • Retentioneering Contributing

    retentioneering/retentioneering-tools

    Help the user turn their Retentioneering ideas, friction reports, bug findings, or feature needs into high-quality upstream contributions: from capturing and validating the idea, through minimal…

    925 GitHub stars~1.8k tokensUpdated 2 days ago
    Data & AnalyticsAuto-check passed
  • Python Executor

    cortega26/chile-hub

    Execute Python code in a safe sandboxed environment via [inference.sh](https://inference.sh).

    113 GitHub starsUsed in 2 repos~1.5k tokens
    Data & AnalyticsAuto-check passed

Questions about Noteworthy

What does Noteworthy do?

Write and edit Noteworthy documents — a Typst framework for textbooks, with blocks (definition/theorem/example/solution), 2D and 3D canvases, geometry, plotting, and live Yjs collaboration. Noteworthy is an agent skill from sihooleebd/noteworthy. Write and edit Noteworthy documents — a Typst framework for textbooks, with blocks (definition/theorem/example/solution), 2D and 3D canvases, geometry, plotting, and live Yjs collaboration.

When should I use Noteworthy?

Noteworthy fits situations like: editing .typ files in a Noteworthy project; drawing a figure with shape/graph/canvas; cross-reference; changing templates/module.

How do I install Noteworthy in Claude Code?

Run `npx skills add sihooleebd/noteworthy --skill noteworthy -a claude-code`. Or copy the skill folder (.claude/skills/noteworthy in sihooleebd/noteworthy) into .claude/skills/noteworthy in your project. Claude Code loads it when a task matches its description.

How do I install Noteworthy in Codex?

Run `npx skills add sihooleebd/noteworthy --skill noteworthy -a codex`. Or copy the skill folder (.claude/skills/noteworthy in sihooleebd/noteworthy) into .agents/skills/noteworthy in your project. Codex loads it when a task matches its description.

Can I use Noteworthy in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sihooleebd/noteworthy --skill noteworthy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/noteworthy, .gemini/skills/noteworthy, .github/skills/noteworthy and .opencode/skills/noteworthy in your project.

What does Noteworthy need to run?

Going by SKILL.md and its folder, Noteworthy needs the command-line tools its instructions call (git, rsync and curl).

Does Noteworthy access the network?

SKILL.md contains no URLs. Its commands use git and curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Noteworthy safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Noteworthy use?

Noteworthy is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Noteworthy use?

About 2k tokens (SKILL.md is roughly 8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Noteworthy?

Skills that share tags, products or a category with Noteworthy: Save Research Notebook (napjon/krisk, 117 stars), Repl (nteract/nteract, 179 stars), Scientific Figure Making (ChenLiu-1996/figures4papers, 8.3k stars) and Plot From Image (Trae1ounG/paper-plot-skills, 869 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Noteworthy?

sihooleebd (a GitHub user) maintains it in sihooleebd/noteworthy, which has 120 GitHub stars. The repository was last updated on September 29, 2026.

Source: sihooleebd/noteworthy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.