aris-pub/rsm/docs
- community
Checking that the SKILL.md file is still in the repository.
Write correct RSM (Readable Science Markup) files. Covers the full RSM syntax: block/inline/construct tags, meta regions, proof structure, cross-references, math, code, tables, and bibliography. Use when working with .rsm files or authoring scientific manuscripts in RSM format.
Install
npx vskill@latest install aris-pub/rsm/docsSKILL.md
RSM — Readable Science Markup
RSM is a web-first markup language for scientific manuscripts. It uses colon-delimited tags (:tag:) and Halmos closers (::) to express document structure, mathematical proofs, cross-references, and metadata.
Every .rsm file is a valid RSM manuscript.
Two Tag Types
RSM has two kinds of tags:
Block tags — structural containers (theorems, proofs, sections, lists, etc.)
Inline tags — annotations within a paragraph (spans, refs, math, proof constructs)
Both open with :tagname: and close with :: (the Halmos). Sections are the sole exception — they close implicitly when a sibling or parent section begins, or at document end.
Document Structure
A manuscript starts with an optional title line using #, followed by optional top-level meta, then body content:
Manuscript meta goes in {...} right after the # title. It accepts keys like :label: and :title:.
`:config:` is a block tag for document-wide settings: :theme:, :accent:, :typography:, :numbering:, :override-date:, :toc-depth:, :author-display-first:, :author-display-last:. It appears as a top-level block, closed with ::.
Section shortcuts: ##, ###, #### work like Markdown headings. They can also be written as :section:, :subsection:, :subsubsection: with a {:title: ...} meta key. Section-form tags do not need a Halmos — they close implicitly.
Sections can carry meta on the line after the heading:
:appendix: is a stamp (no content, no Halmos) that marks where appendix sections begin.
Complete Tag Reference
Block Tags
| Tag | Description | |
|---|---|---|
:abstract: | Manuscript abstract | |
:algorithm: | Algorithm listing (as-is content, not recursive) | |
:author: | Author information block | |
:codeblock: | Code listing (as-is content) | |
:config: | Document configuration | |
:corollary: | Corollary | |
:definition: | Definition | |
:enumerate: | Numbered list | |
:example: | Example | |
:exercise: | Exercise | |
:figure: | Figure float | |
:html: | HTML asset | |
:itemize: | Unnumbered list | |
:lemma: | Lemma | |
:mathblock: | Display math (as-is content) | |
:p: | Subproof (used inside steps) | |
:porism: | Porism (corollary of a proof) | |
:problem: | Problem | |
:proof: | Proof | |
:proposition: | Proposition | |
:remark: | Remark | |
:sketch: | Proof sketch | |
:step: | Proof step (inside proofs) | |
:theorem: | Theorem | |
:toc: | Table of contents (standard block; takes meta such as :view:, but no content) | |
:video: | Video asset |
All block tags open with :tag:, take optional {meta}, contain paragraphs/blocks, and close with ::.
Inline Tags — General
| Tag | Description | |
|---|---|---|
:span: | Text span — for styling via meta or attaching a :label: to specific text | |
:note: | Footnote | |
:draft: | Visible comment / draft note |
:span: is particularly useful for labeling a piece of text so it can be cross-referenced. The reference targets only the span, not the enclosing paragraph:
Inline Tags — Special Syntax
| Tag | Shortcut | Description | |
|---|---|---|---|
:math: | $...$ | Inline math (as-is content) | |
:code: | ` ... ` | Inline code (as-is content) | |
:ref: | — | Internal cross-reference | |
:cite: | — | Bibliography citation | |
:url: | — | External hyperlink | |
:previous: | — | Reference a step by number | |
:prev: | — | Reference the previous step (stamp) | |
:prev2: | — | Reference step before last (stamp) | |
:prev3: | — | Reference two steps before (stamp) |
Stamps (:prev:, :prev2:, :prev3:) have no content and no Halmos — they stand alone.
Emphasis shortcuts: **bold** = :span:{:strong:}bold::, *italic* = :span:{:emphas:}italic::.
Inline Tags — Proof Constructs
These appear inside theorem statements and proof steps:
| Tag | Description | ||
|---|---|---|---|
:assume: | Introduce an assumption | ||
:case: | Prove a special case of the goal | ||
:claim: (or :⊢: or `:\ | -:`) | State a mathematical claim | |
:define: | Introduce a variable and assumption | ||
:let: | Introduce a variable and assumption | ||
:new: | Introduce a variable and assumption | ||
:pick: | Introduce a variable with a property (pair with :st:) | ||
:prove: | Set the goal | ||
:st: | "Such that" — follows :pick: | ||
:suffices: | Change the goal | ||
:suppose: | Introduce an assumption | ||
:then: | State a claim under an assumption | ||
:wlog: | Without loss of generality | ||
:write: | Introduce notation / a symbol | ||
:qed: | State that the goal is proven (stamp — no Halmos) |
All constructs except :qed: open with :tag:, take optional {meta}, contain inline content, and close with ::. :qed: is a stamp.
Meta Regions
Meta appears in {...} immediately after a tag. Block meta uses newline-separated key-value pairs; inline meta uses comma-separated pairs inside {...}.
Block meta (one pair per line):
Inline meta (comma-separated, on one line):
Meta Keys by Type
Text keys (value is a string on the same line or rest of line):
| Key | Description | |
|---|---|---|
:affiliation: | Author institutional affiliation | |
:alt: | Alt text for figure images | |
:author-note: | Author note (e.g. "Equal contribution") | |
:email: | Author email | |
:goal: | Theorem goal | |
:icon: | Icon assigned to the block | |
:label: | Cross-reference label | |
:lang: | Language code (e.g. en, es) | |
:name: | Author name | |
:orcid: | Author ORCID identifier | |
:reftext: | Label display text for references | |
:title: | Block or manuscript title |
Boolean keys (presence = true, no value needed):
| Key | Description | |
|---|---|---|
:emphas: | Emphasized span | |
:isclaim: | Math block is a claim | |
:nonum: | Suppress numbering | |
:strong: | Bold span |
List keys (value in {item1, item2, ...} or a single item):
| Key | Description | |
|---|---|---|
:class: | CSS classes | |
:keywords: | Abstract keywords | |
:msc: | Mathematics Subject Classification |
Any-value keys (parsed as-is):
| Key | Description | |
|---|---|---|
:accent: | Accent color (blue, red, green, orange, yellow, purple, pink, gray) | |
:author-display-first: | Authors shown at start when >5 | |
:author-display-last: | Authors shown at end when >5 | |
:dark: | Dark-mode figure path | |
:numbering: | Numbering mode (document, section, none) | |
:override-date: | Override manuscript date | |
:path: | Figure path | |
:scale: | Figure scale | |
:static: | Static/PDF export figure path | |
:theme: | Manuscript theme | |
:toc-depth: | Table of contents depth | |
:typography: | Typography style (sans-serif, serif) |
Proof Architecture
RSM's structured proof system is inspired by Leslie Lamport's "How to Write a 21st Century Proof" and resembles the hierarchical proof style used in TLA+. Unlike TLA+ (which targets formal verification), RSM proofs are written in natural language for human readers — the structure provides navigability and rigor without requiring machine-checkable logic.
Proofs follow a rigid nesting: proof → steps → substeps/subproofs.
Key rules:
:step:can only appear directly inside:proof:,:sketch:, or inside a:p:(subproof):p:provides the justification for its parent step — it can contain nested steps:p:closes with:: ::(its own Halmos, then the step's Halmos)- Proof constructs (
:let:,:assume:,:prove:,:claim:,:pick:/:st:,:qed:) appear inline within steps :qed:is a stamp — it has no content and no Halmos
Proof vs Sketch
:proof: contains the full structured proof with steps. :sketch: is a lighter variant — it has the same nesting rules but is intended for informal proof outlines. A common pattern is to place a :sketch: before the :proof: to give the reader a high-level overview:
Referencing Previous Steps
Inside a proof, you can reference earlier steps without explicit labels using stamps:
| Stamp | Meaning | |
|---|---|---|
:prev: | The immediately preceding step | |
:prev2: | The step before last | |
:prev3: | Two steps before the current one |
These are stamps — they stand alone with no content and no Halmos:
For steps further back or across subproofs, use explicit :label: / :ref: pairs instead. :previous: is the non-stamp variant that takes a step number: :previous:3, Step 3::.
Common Proof Construct Patterns
Extended Proof Example
A multi-level proof showing nested subproofs and step references:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdocs/rsm-agent-skill.md
Popularity
- Repository stars
- 5
- 7-day trend score
- 9
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 20 Aug 2026, 2 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/aris-pub/rsm/docs)