Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

MyST Listing

A simple MyST plugin for collecting items, optionally transforming them to add extra metadata, and then displaying them in a variety of structured views.

Out of the box, this plugin supports tables, galleries, and summaries of each entry.

Usage

Reference the released plugin bundle directly from GitHub in your myst.yml. This pulls the bundle attached to the latest release, so MyST loads it without a build or install step:

project:
  plugins:
    - https://github.com/myst-contrib/myst-listing/releases/latest/download/plugin.mjs

To pin a specific version, swap latest/download for a tag, e.g. download/v0.1.0.

Alternatively, build the bundle yourself (npm run build) and reference it from a local path:

project:
  plugins:
    - path/to/plugin.mjs

Then collect a folder of pages and display them. With no options, {listing} shows a table of the markdown files in the current folder:

```{listing}
:path: posts/*.md
:columns: title,date
```

Rendered:

:::{listing}
:path: posts/*.md
:columns: title,date
:::

TitleDate
Community roundupJune 5, 2025
Your first listingMay 15, 2025
Interactive widgetsApril 10, 2025
Zebra release notesMarch 1, 2025
A February updateFebruary 1, 2025
Hello worldJanuary 1, 2025
The first prototypeNovember 20, 2024

See Displays for the table, gallery, and summary views and their options.

Design

This plugin is designed to be extendable at each of the following three levels:

This is probably a more complex design that we strictly need for some base functionality, but I’m trying to separate these out and make them pluggable, to see if we can build some base functionality here, and then build other plugins that leverage the same rendering infrastructure for other use-cases (like the github issues plugin).

If that results in plugins that feel hacky and unnecessarily complicated, we might simplify this a bit!

Design usecases

This was designed to be a single tool that could be re-used across these use-cases:

For built-in functionality:

For plugin-level extensions functionality (ie, we want other MyST plugins to extend myst-listing functionality to meet these extra use-cases):

Reasons you might not want to use this plugin

But, if you want to be a bit on the bleeding edge and give feedback, that would be great!