posit-dev/quarto-authoring
Use when the user is explicitly working with Quarto, .qmd files, _quarto.yml, Quarto projects, or Quarto features such as callouts, cross-references, citations, Mermaid diagrams, extensions, websites, books, presentations, and reports. Also use for explicit migration from or comparison with R Markdown, bookdown, blogdown, xaringan, distill, or Jupyter notebooks to Quarto. Do not use for general R Markdown or related-format questions unless Quarto or migration to Quarto is explicitly mentioned.
npx skills add https://github.com/posit-dev/skills --skill quarto-authoring
> This skill is based on Quarto CLI v1.9.36 (2026-03-24).
Task: Write a new Quarto document
Use: Follow "QMD Essentials" below, then see specific reference files
Task: Add cross-references
Use: references/cross-references.md
Task: Configure code cells
Use: references/code-cells.md
Task: Add figures with captions
Use: references/figures.md
Task: Create tables
Use: references/tables.md
Task: Add citations and bibliography
Use: references/citations.md
Task: Add callout blocks
Use: references/callouts.md
Task: Add diagrams (Mermaid, Graphviz)
Use: references/diagrams.md
Task: Control page layout
Use: references/layout.md
Task: Use shortcodes
Use: references/shortcodes.md
Task: Add conditional content
Use: references/conditional-content.md
Task: Use divs and spans
Use: references/divs-and-spans.md
Task: Configure YAML front matter
Use: references/yaml-front-matter.md
Task: Find and use extensions
Use: references/extensions.md
Task: Apply markdown linting rules
Use: references/markdown-linting.md
Task: Choose or configure a compute engine (knitr, jupyter, julia)
Use: references/engines.md
Do NOT read these references when writing new Quarto documents.
Only read the one matching the source format when the user explicitly asks to convert or migrate an existing project.
---
title: "Document Title"
author: "Author Name"
date: today
format: html
---
Content goes here.
A Quarto document consists of two main parts:
---.Divs use fenced syntax with three colons:
::: {.class-name}
Content inside the div.
:::
Spans use bracketed syntax:
This is [important text]{.highlight}.
Details: references/divs-and-spans.md
A code cell starts with triple backticks and a language identifier between curly braces.
Code cells are code blocks that can be executed to produce output.
Quarto uses the language's comment symbol + | for cell options. Options use dashes, not dots (e.g., fig-cap not fig.cap).
#|%%|//|
Set document-level defaults in YAML front matter:
execute:
echo: false
warning: false
Caching — critical engine difference: Only suggest #| cache: true for R code cells (knitr engine).
Never suggest it for other language cells — it does not work and will be silently ignored.
The only correct approach is execute: cache: true in the top-level YAML front matter when using engines other than knitr.
Python/Jupyter requires jupyter-cache (pip install jupyter-cache):
execute:
cache: true
Details: references/code-cells.md
Labels must start with a type prefix. Reference with @:
fig- prefix, e.g., #| label: fig-plot → @fig-plottbl- prefix, e.g., #| label: tbl-data → @tbl-datasec- prefix, e.g., {#sec-intro} → @sec-introeq- prefix, e.g., {#eq-model} → @eq-model
See @fig-plot for the results.
Details: references/cross-references.md
Five types: note, warning, important, tip, caution.
::: {.callout-note}
This is a note callout.
:::
::: {.callout-warning}
## Custom Title
This is a warning with a custom title.
:::
Details: references/callouts.md
{#fig-name fig-alt="Alt text"}
Subfigures:
::: {#fig-group layout-ncol=2}
{#fig-sub1}
{#fig-sub2}
Main caption for the group.
:::
Details: references/figures.md
::: {#tbl-example}
| Column 1 | Column 2 |
| -------- | -------- |
| Data 1 | Data 2 |
Table caption.
:::
Details: references/tables.md
According to @smith2020, the results show...
Multiple citations [@smith2020; @jones2021].
Configure in YAML:
bibliography: references.bib
csl: apa.csl
Details: references/citations.md
title: "My Report"
author: "Your Name"
date: today
format:
html:
toc: true
code-fold: true
theme: cosmo
title: "My Report"
format:
pdf:
documentclass: article
papersize: a4
---
title: "My Presentation"
format: revealjs
---
## First Slide
Content here.
## Second Slide
More content.
Create _quarto.yml in the project root:
project:
type: website
website:
title: "My Site"
navbar:
left:
- href: index.qmd
text: Home
- href: about.qmd
text: About
format:
html:
theme: cosmo
Take posit-dev/quarto-authoring from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.