You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MyST Migration: Site Inventory & Conversion Overview
Top-level view of all sites in scope, their stacks, migration status, and key conversion challenges. See learn PR #315 for the working example and ADRs driving the decisions below.
Already on MyST syntax; relationship to SP org to be confirmed
Hugo sites: shortcode conversion
All four Hugo sites share the scientific-python-hugo-theme and the same shortcode set. The canonical mappings are defined in ADR 0002 (in PR #315 under docs/decisions/0001-myst-migration/); the table below extends that to cover shortcodes not present in learn.
cookie-specific lint rule reference; domain-specific, not a blocker
{% tabbodies %} note:cookie splits tabs across two blocks — {% tabs %} renders the header bar, {% tabbodies %} renders the bodies elsewhere on the page. MyST's {tab-set} always renders as a single unit. Migration strategy: merge each {% tabs %} + {% tabbodies %} pair into one {tab-set} with matching :sync: keys. Functionally identical when rendered; requires per-page judgment rather than mechanical substitution.
lectures (Jupyter Book → MyST-MD)
lectures (_config.yml) already uses MyST syntax — .md files with MyST directives and Jupyter notebooks via jupytext. The migration is a build-tool swap (jb → myst CLI), not a content conversion. Key risks: sphinx_exercise extension has no confirmed MyST-MD equivalent, and the JupyterLite integration needs verification.
I don't think we will be converting the lectures site, since it is very notebook centric.
Suggested sequencing
learn — simplest Hugo case; PR #315 in progress. Establishes the pattern for all Hugo sites.
tools — next simplest; PR #81 can be rebased on learn's work. First test of grid file= conversion.
scientific-python.org + blog — both need the grid file= solution; blog additionally needs a post-listing solution.
cookie — independent Jekyll migration; can proceed in parallel once the tab mapping is agreed on.
lectures — scope to be confirmed; lowest content risk, highest build-tooling uncertainty.
AI tools disclaimer: this report was researched and drafted using Claude Sonnet 4.6, with a review pass by Claude Opus 4. Source verification was performed against the live repos. I have read and reviewed the content and believe it to be accurate. Since scientific-python.org does not have an official AI use policy, I am using the SciPy project's policy as a guideline.
Activity
lundybernard commentedon May 18, 2026
MyST Migration: Site Inventory & Conversion Overview
Top-level view of all sites in scope, their stacks, migration status, and key conversion challenges. See learn PR #315 for the working example and ADRs driving the decisions below.
Site inventory
Hugo sites: shortcode conversion
All four Hugo sites share the scientific-python-hugo-theme and the same shortcode set. The canonical mappings are defined in ADR 0002 (in PR #315 under
docs/decisions/0001-myst-migration/); the table below extends that to cover shortcodes not present inlearn.{{< grid >}}/[[item]]::::{grid}+:::{card}{{< admonition warning|note >}}:::{warning}/:::{note}{{< admonition mission|values >}}:::{admonition} Mission{{< grid file="x.toml" />}}{{< blog >}}grid file=and{{< blog >}}are the two open design questions.learnwas chosen as the starting point because it uses neither.cookie(Jekyll → MyST)cookieuses custom Liquid plugins (_plugins/tabs.rb,_plugins/details.rb) with no Hugo equivalent.{% tabs %}/{% tab label Title %}/{% endtabs %}::::{tab-set}+:::{tab-item} Title:sync: labellabelarg →:sync:key for cross-set sync{% tabbodies %}::::{tab-set}with:sync:keys{% details Title %}:::{dropdown} Title{% include file.md %}{include} file.md{% rr CODE %}{% tabbodies %}note:cookiesplits tabs across two blocks —{% tabs %}renders the header bar,{% tabbodies %}renders the bodies elsewhere on the page. MyST's{tab-set}always renders as a single unit. Migration strategy: merge each{% tabs %}+{% tabbodies %}pair into one{tab-set}with matching:sync:keys. Functionally identical when rendered; requires per-page judgment rather than mechanical substitution.lectures(Jupyter Book → MyST-MD)lectures(_config.yml) already uses MyST syntax —.mdfiles with MyST directives and Jupyter notebooks viajupytext. The migration is a build-tool swap (jb→mystCLI), not a content conversion. Key risks:sphinx_exerciseextension has no confirmed MyST-MD equivalent, and the JupyterLite integration needs verification.I don't think we will be converting the lectures site, since it is very notebook centric.
Suggested sequencing
learn— simplest Hugo case; PR #315 in progress. Establishes the pattern for all Hugo sites.tools— next simplest; PR #81 can be rebased onlearn's work. First test ofgrid file=conversion.scientific-python.org+blog— both need thegrid file=solution;blogadditionally needs a post-listing solution.cookie— independent Jekyll migration; can proceed in parallel once the tab mapping is agreed on.lectures— scope to be confirmed; lowest content risk, highest build-tooling uncertainty.AI tools disclaimer: this report was researched and drafted using Claude Sonnet 4.6, with a review pass by Claude Opus 4. Source verification was performed against the live repos. I have read and reviewed the content and believe it to be accurate. Since scientific-python.org does not have an official AI use policy, I am using the SciPy project's policy as a guideline.