Skip to content

docs: document installed extension layout and qualified names - #2303

Merged
cderv merged 3 commits into
prereleasefrom
extension-layout-docs
Oct 20, 2026
Merged

cderv merged 3 commits into
prereleasefrom
extension-layout-docs

Conversation

@cderv

@cderv cderv commented Oct 20, 2026

Copy link
Copy Markdown
Member

Follow-up to quarto-dev/quarto-cli#15111. Extensions are installed under _extensions/<owner>/<name>/, where the owner is the GitHub owner the extension is installed from. Archives and local directories have no owner and install as _extensions/<name>/.

This was only written in the unpublished draft docs/journals/_draft/create-extensions.qmd, which also shows an owner folder in the source layout. Quarto drops that folder at install time. Several extension repositories ship _extensions/<owner>/<name>/ anyway, and a template.qmd using a qualified format name then fails when the template is used from a local copy.

docs/extensions/distributing.qmd now covers:

  • source layout without an owner folder, with a 1.11 callout for the install note added in Add install note when an extension's owner folder is not kept quarto-cli#15117
  • installed layout per install source. GitHub archive URLs keep their owner, so the previous "they all share a single namespace" sentence was not accurate for them
  • how <owner>/<name> and bare names match, and using the bare name in a template.qmd shipped with an extension
  • quarto add --embed for bundling an extension from another owner, which was only in the CLI reference until now

Also quarto install is replaced by quarto add in starter-templates.qmd, and managing.qmd now shows the installed paths.

Each statement was checked against quarto-cli source (src/extension/install.ts, extension-host.ts, extension.ts) and with real installs in 1.11: GitHub repository, GitHub archive URL, local directory, and --embed.

Related to quarto-dev/quarto-cli#15111

…ied names

The install namespace rule was only written down in an unpublished
draft, and "Archive Distribution" said every archive shares a single
namespace, which is not true for GitHub archive URLs. Extension authors
kept shipping an owner folder in their source `_extensions/`, which
Quarto drops at install time, and templates referencing a qualified
format name then broke when used from a local copy (quarto-dev/quarto-cli#15111).

Document what quarto-cli does:
- installs land in `_extensions/<owner>/<name>/`, where the owner is the
  GitHub owner the extension is installed from; other URLs, local
  archives and local directories install as `_extensions/<name>/`
- source repos put extensions directly under `_extensions/`, and
  extensions from another owner are bundled with `quarto add --embed`
- a qualified `<owner>/<name>` selects by installed owner, so a
  shipped `template.qmd` should use the bare name
- the install-time note from quarto-dev/quarto-cli#15117 (1.11)

Also replace the stale `quarto install` wording in starter-templates.
@github-actions

Copy link
Copy Markdown
Contributor

cderv added 2 commits October 20, 2026 11:53
Make the GitHub owner condition explicit and simplify the embedding instructions so readers can follow the required order. Shorten the installation summary while preserving the documented paths.
…ng note

The host extension's _extension.yml only resolves filters and shortcodes from its own embedded _extensions/, so an extension installed at the project level still fails the check until it is embedded.
@github-actions

Copy link
Copy Markdown
Contributor

@cderv
cderv merged commit 1195270 into prerelease Oct 20, 2026
4 checks passed
@cderv
cderv deleted the extension-layout-docs branch October 20, 2026 10:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant