Quarto Kit Skill
Usage: Load this file into Claude Code (via CLAUDE.md pointer) or paste into an LLM session when listing, installing, or expanding templates from this repo’s catalog.
This skill consumes the same source of truth as the CLI (scripts/qk):
| Artifact | Role |
|---|---|
catalog/templates.yaml |
Source of truth (edit via PR) |
catalog/TEMPLATES.md |
Generated human-readable catalog |
scripts/qk |
CLI mirroring these operations |
catalog/drafts/ |
Human-review-only candidate drafts |
Do not hardcode the template inventory in this skill. Always load catalog/templates.yaml (or run python3 scripts/qk list / show).
Licenses: documentation CC BY-SA 4.0 (LICENSE); code MIT (LICENSE-CODE). No PHI in templates, drafts, or installs.
1) Goals
- Document what templates this repo includes in a reviewable, PR-friendly source.
- Keep that source expandable without forking the skill or CLI inventory.
- Offer both a CLI and an agent skill that share the YAML catalog.
- Optionally propose candidates from awesome-quarto for human review only (never auto-merge into
templates.yaml).
2) Load the catalog (required)
Before answering inventory questions:
python3 scripts/qk list
python3 scripts/qk list --tag quarto
python3 scripts/qk show <id>Or read catalog/templates.yaml directly. Each entry has:
id,title,description,tags,kind,when_to_usekind: file|directory— a template stored in this repo; haspath.kind: extension-project-type— a Quarto project type contributed by an upstream extension; nopath. Hasinstall(quarto add owner/repo[@ref]),project_type(value forproject: type:),min_quarto,source, and optionallybase_type,docs,usage(minimal_quarto.yml),notes(caveats such as list settings that stack and cannot be removed, and the upstream update policy).kind: typst-package— a Typst Universe package used via#importin a.typfile or a Quartoformat: typstdocument; nopath, nothing installed (Typst downloads it on first compile). Hasimport(exact#import "@preview/name:X.Y.Z": ...line),version(must match the import),min_typst(the packagetypst.tomlcompilervalue),source, and optionallydocs,usage(minimal Typst example),notes.qk checkcompares local Typst (typstor$QK_TYPST) withmin_typst, warn-only unless--require-typst;--skip-typstturns it off.
The field reference lives in the header comment of catalog/templates.yaml.
If YAML and catalog/TEMPLATES.md disagree, trust YAML and run python3 scripts/qk update-docs, then fix via PR.
3) Operations (mirror CLI)
List
python3 scripts/qk list
python3 scripts/qk list --tag claude-codeShow
python3 scripts/qk show ontology-scaffoldInstall
Copy a catalog entry to a destination. Refuses overwrite unless --force.
python3 scripts/qk install claude-md-project ./CLAUDE.md
python3 scripts/qk install settings-local-project ./.claude/settings.local.json
python3 scripts/qk install ontology-scaffold ./.claude-ontology-scaffold
python3 scripts/qk install research-paper-starter-pack /tmp/demo
python3 scripts/qk install research-paper-starter-pack /tmp/demo --force # overwriteAgent rule: if the destination exists, stop and ask before using --force.
For kind: extension-project-type, dest is the Quarto project directory (default: cwd) and install runs the entry’s quarto add command there (adds _extensions/, which should be committed). It refuses if Quarto is missing or older than min_quarto (--force overrides the version check only).
python3 scripts/qk install <extension-id> ./my-site --dry-run # print the command only
python3 scripts/qk install <extension-id> ./my-site # run quarto add
python3 scripts/qk install <extension-id> ./my-site --ref 1.2.3 # pin a releaseAfterwards, set project: type: <project_type> in _quarto.yml using the entry’s usage (qk show <id>), and pass on its notes.
Check / update docs
python3 scripts/qk check # fails if TEMPLATES.md out of sync or paths/fields missing
python3 scripts/qk check --require-quarto # also fails if local Quarto is missing or < any min_quarto
python3 scripts/qk update-docs # regenerate catalog/TEMPLATES.md from YAMLcheck always reports the local Quarto version against each entry’s min_quarto; without --require-quarto a missing or old Quarto is only a warning (CI has no Quarto). Set QK_QUARTO=/path/to/quarto to point at a specific binary.
Import candidates (draft only)
python3 scripts/qk import-candidates
# writes catalog/drafts/awesome-quarto-candidates-<UTC>.mdNever promote draft stubs into templates.yaml without an explicit human request and a PR.
4) Expand the catalog (PR workflow)
- Add or edit an entry in
catalog/templates.yaml. - For
file/directory, ensurepathexists undertemplates/. Fortypst-package, copyversionandmin_typst(compiler) from the package’stypst.tomlon Typst Universe (github.com/typst/packages,packages/preview/<name>/<version>/typst.toml) and compile theusageexample with Typst before proposing. Forextension-project-type, fillinstall,project_type,min_quarto(from the extension’s_extension.ymlquarto-required), andsourcefrom the upstream repo — verify them there, don’t guess. - Run
python3 scripts/qk update-docs. - Run
python3 scripts/qk check. - Open a PR describing the template, tags, and when_to_use.
- CI runs
scripts/qk check— must pass before merge.
For external ideas (e.g. awesome-quarto):
python3 scripts/qk import-candidates- Human reviews
catalog/drafts/... - Selected items get real template paths + a PR into
templates.yaml - Never auto-merge drafts
5) Agent playbook
When the user asks what templates exist:
- Load catalog (CLI or YAML) — do not recite a memorized list.
- Filter by tag or
when_to_useif they described a goal. - Recommend an
idand show install command.
When installing:
- Confirm destination.
- Run
installwithout--forcefirst. - On refuse-overwrite error, report and wait.
When expanding:
- Draft YAML stub.
- Remind them to run
update-docs+check+ PR. - Point at licenses and PHI rule.
6) Quick reference
| Need | Command |
|---|---|
| Inventory | python3 scripts/qk list |
| Details | python3 scripts/qk show <id> |
| Copy template | python3 scripts/qk install <id> [dest] [--force] |
| Add extension project type | python3 scripts/qk install <id> [project-dir] [--dry-run] [--ref REF] |
| Validate | python3 scripts/qk check [--require-quarto] |
| Regen docs | python3 scripts/qk update-docs |
| External drafts | python3 scripts/qk import-candidates |