@shoalrun/cli 0.1.0-alpha.12 → 0.1.0-alpha.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +45 -5
  3. package/agent-docs/.well-known/shoalrun/navigation/project-updates-50f26fe22670.txt +3 -1
  4. package/agent-docs/SNAPSHOT.json +5 -5
  5. package/agent-docs/api-docs/support.md +11 -10
  6. package/agent-docs/author/components.md +13 -1
  7. package/agent-docs/author/frontmatter-reference.md +28 -25
  8. package/agent-docs/author/frontmatter-reference.sections/choose-a-publication-and-visibility.md +3 -1
  9. package/agent-docs/author/frontmatter-reference.sections/control-output-details.md +3 -1
  10. package/agent-docs/author/frontmatter-reference.sections/global-defaults-and-enforced-values.md +3 -1
  11. package/agent-docs/author/frontmatter-reference.sections/html-markdown-and-agents.md +3 -1
  12. package/agent-docs/author/frontmatter-reference.sections/identify-and-route-a-page.md +3 -1
  13. package/agent-docs/author/frontmatter-reference.sections/point-agents-to-it.md +3 -1
  14. package/agent-docs/author/frontmatter-reference.sections/project-defined-fields.md +3 -1
  15. package/agent-docs/author/frontmatter-reference.sections/related-reading.md +3 -1
  16. package/agent-docs/author/frontmatter-reference.sections/use-the-local-files-while-authoring.md +3 -1
  17. package/agent-docs/author/frontmatter-reference.sections/when-the-files-update.md +3 -1
  18. package/agent-docs/author/frontmatter.md +5 -2
  19. package/agent-docs/author/frontmatter.sections/audience-badges.md +1 -1
  20. package/agent-docs/author/frontmatter.sections/give-deprecation-guidance.md +1 -1
  21. package/agent-docs/author/frontmatter.sections/global-defaults-and-enforced-values.md +1 -1
  22. package/agent-docs/author/frontmatter.sections/optional-native-fields.md +5 -2
  23. package/agent-docs/author/frontmatter.sections/publication-fields.md +1 -1
  24. package/agent-docs/author/frontmatter.sections/publishing-policy.md +1 -1
  25. package/agent-docs/author/frontmatter.sections/related-metadata-tasks.md +1 -1
  26. package/agent-docs/author/frontmatter.sections/related-reading.md +1 -1
  27. package/agent-docs/author/frontmatter.sections/required-after-inheritance.md +1 -1
  28. package/agent-docs/author/frontmatter.sections/seo-fields.md +1 -1
  29. package/agent-docs/author/frontmatter.sections/validation-rules.md +1 -1
  30. package/agent-docs/author/markdown-metadata.md +13 -5
  31. package/agent-docs/author/navigation.md +12 -1
  32. package/agent-docs/author/navigation.sections/arrange-authored-pages.md +1 -1
  33. package/agent-docs/author/navigation.sections/fill-an-api-tag-group.md +1 -1
  34. package/agent-docs/author/navigation.sections/hide-group-page-counts.md +12 -1
  35. package/agent-docs/author/navigation.sections/html-markdown-and-agents.md +1 -1
  36. package/agent-docs/author/navigation.sections/local-api-preview.md +1 -1
  37. package/agent-docs/author/navigation.sections/mix-guides-and-api-references.md +1 -1
  38. package/agent-docs/author/navigation.sections/optionally-split-a-large-menu-into-files.md +1 -1
  39. package/agent-docs/author/navigation.sections/reach-navigation-while-reading.md +1 -1
  40. package/agent-docs/author/navigation.sections/related-reading.md +1 -1
  41. package/agent-docs/author/navigation.sections/split-navigation-into-tabs.md +1 -1
  42. package/agent-docs/author/navigation.sections/subject-lifecycle-labels.md +1 -1
  43. package/agent-docs/author/templates.md +10 -2
  44. package/agent-docs/author/templates.sections/built-in-feature-templates.md +1 -1
  45. package/agent-docs/author/templates.sections/built-in-templates.md +1 -1
  46. package/agent-docs/author/templates.sections/choose-formatting-enforcement-for-your-project.md +1 -1
  47. package/agent-docs/author/templates.sections/create-or-edit-a-project-template.md +10 -2
  48. package/agent-docs/author/templates.sections/keep-the-four-shapes-distinct.md +1 -1
  49. package/agent-docs/author/templates.sections/project-added-templates.md +1 -1
  50. package/agent-docs/author/templates.sections/related-reading.md +1 -1
  51. package/agent-docs/author/templates.sections/scaffold-a-page.md +1 -1
  52. package/agent-docs/author/templates.sections/short-cli-and-derived-values.md +1 -1
  53. package/agent-docs/author/templates.sections/what-every-template-gives-you.md +1 -1
  54. package/agent-docs/author/workspace.md +7 -1
  55. package/agent-docs/author/writing-style.md +13 -1
  56. package/agent-docs/author/writing-style.sections/adapt-this-example.md +1 -1
  57. package/agent-docs/author/writing-style.sections/choose-components-by-reader-need.md +1 -1
  58. package/agent-docs/author/writing-style.sections/evidence-and-uncertainty.md +1 -1
  59. package/agent-docs/author/writing-style.sections/example-audience-and-scope.md +1 -1
  60. package/agent-docs/author/writing-style.sections/feature-availability.md +36 -0
  61. package/agent-docs/author/writing-style.sections/ingredients-recipes-and-cookbooks.md +1 -1
  62. package/agent-docs/author/writing-style.sections/page-purpose-and-structure.md +1 -1
  63. package/agent-docs/author/writing-style.sections/procedures-and-examples.md +1 -1
  64. package/agent-docs/author/writing-style.sections/related-reading.md +1 -1
  65. package/agent-docs/author/writing-style.sections/review-a-draft.md +1 -1
  66. package/agent-docs/author/writing-style.sections/reviewed-writing-examples.md +1 -1
  67. package/agent-docs/author/writing-style.sections/voice-and-explanations.md +1 -1
  68. package/agent-docs/changelog/2026-10-28.md +89 -0
  69. package/agent-docs/changelog.md +9 -1
  70. package/agent-docs/config/outputs.md +15 -11
  71. package/agent-docs/config/outputs.sections/exports.md +14 -11
  72. package/agent-docs/config/outputs.sections/metadata.md +1 -1
  73. package/agent-docs/config/outputs.sections/related-reading.md +1 -1
  74. package/agent-docs/content-delivery/agents.md +86 -0
  75. package/agent-docs/content-delivery/api.md +130 -0
  76. package/agent-docs/content-delivery/client.md +79 -0
  77. package/agent-docs/content-delivery/http-api/operations/get-content-representation-fa1d2e3f.md +394 -0
  78. package/agent-docs/content-delivery/http-api/operations/get-content-representation-head-4052375c.md +256 -0
  79. package/agent-docs/content-delivery/http-api/operations/get-content-resource-849f1c49.md +911 -0
  80. package/agent-docs/content-delivery/http-api/operations/get-content-resource-head-0a352acd.md +246 -0
  81. package/agent-docs/content-delivery/http-api/operations/list-content-resources-8e977ec7.md +913 -0
  82. package/agent-docs/content-delivery/http-api/operations/list-content-resources-head-b67cbad9.md +236 -0
  83. package/agent-docs/content-delivery/http-api.md +78 -0
  84. package/agent-docs/content-delivery/manifest.md +79 -0
  85. package/agent-docs/content-delivery/publish.md +72 -0
  86. package/agent-docs/content-delivery/render.md +73 -0
  87. package/agent-docs/content-delivery/rest.md +108 -0
  88. package/agent-docs/content-delivery/sections.md +110 -0
  89. package/agent-docs/content-delivery/select.md +100 -0
  90. package/agent-docs/content-delivery.md +79 -0
  91. package/agent-docs/documents.json +6748 -5073
  92. package/agent-docs/provenance.json +4 -4
  93. package/agent-docs/publish/content-export.md +32 -16
  94. package/agent-docs/publish/content-export.sections/assets-downloads-and-notices.md +3 -3
  95. package/agent-docs/publish/content-export.sections/check-the-result.md +2 -2
  96. package/agent-docs/publish/content-export.sections/export-selected-pages.md +12 -9
  97. package/agent-docs/publish/content-export.sections/inspect-the-manifest.md +5 -3
  98. package/agent-docs/publish/content-export.sections/prerequisites.md +3 -3
  99. package/agent-docs/publish/content-export.sections/related-reading.md +2 -2
  100. package/agent-docs/publish/content-export.sections/review-exported-api-material.md +3 -3
  101. package/agent-docs/publish/content-export.sections/try-the-help-drawer-example.md +3 -3
  102. package/agent-docs/publish/content-export.sections/upgrade-an-existing-integration.md +34 -0
  103. package/agent-docs/publish/content-export.sections/what-the-representations-retain.md +4 -4
  104. package/agent-docs/publish/mcp.md +3 -1
  105. package/agent-docs/publish/mcp.sections/check-budgets-and-errors.md +1 -1
  106. package/agent-docs/publish/mcp.sections/choose-the-documentation-source.md +1 -1
  107. package/agent-docs/publish/mcp.sections/configure-the-client.md +1 -1
  108. package/agent-docs/publish/mcp.sections/generate-a-vercel-endpoint.md +1 -1
  109. package/agent-docs/publish/mcp.sections/related-reading.md +3 -1
  110. package/agent-docs/publish/mcp.sections/search-then-read.md +1 -1
  111. package/agent-docs/publish/mcp.sections/serve-a-public-endpoint-on-node.md +1 -1
  112. package/agent-docs/publish/mcp.sections/verify-the-connection.md +1 -1
  113. package/agent-docs/publish/mcp.sections/why-offer-mcp-for-public-docs.md +1 -1
  114. package/agent-docs/publish/seo.md +16 -2
  115. package/agent-docs/publish/seo.sections/related-reading.md +28 -0
  116. package/agent-docs/publish/seo.sections/set-the-public-address.md +36 -0
  117. package/agent-docs/publish/seo.sections/what-agents-receive.md +28 -0
  118. package/agent-docs/publish/seo.sections/what-the-build-adds.md +42 -0
  119. package/agent-docs/publish/seo.sections/write-the-page-title-and-summary.md +43 -0
  120. package/agent-docs/search-index.json +1 -1
  121. package/agent-docs/styling/layouts.md +21 -3
  122. package/agent-docs/styling/layouts.sections/build-a-landing-page.md +6 -3
  123. package/agent-docs/styling/layouts.sections/build-a-splash-page.md +6 -3
  124. package/agent-docs/styling/layouts.sections/control-navigation-tabs.md +6 -3
  125. package/agent-docs/styling/layouts.sections/customize-the-hero.md +6 -3
  126. package/agent-docs/styling/layouts.sections/hero.md +6 -3
  127. package/agent-docs/styling/layouts.sections/hide-the-table-of-contents-or-give-content-more-room.md +54 -0
  128. package/agent-docs/styling/layouts.sections/html-markdown-and-agents.md +6 -3
  129. package/agent-docs/styling/layouts.sections/related-reading.md +6 -3
  130. package/dist/api.js +70 -3
  131. package/dist/authoring-hints.d.ts +3 -0
  132. package/dist/authoring-hints.js +35 -0
  133. package/dist/authoring-project.d.ts +1 -1
  134. package/dist/authoring-project.js +2 -0
  135. package/dist/authoring-validation.js +2 -0
  136. package/dist/code-samples.js +22 -11
  137. package/dist/compiler-config.d.ts +1 -0
  138. package/dist/compiler-config.js +13 -0
  139. package/dist/compiler.js +2 -1
  140. package/dist/component-names.js +1 -1
  141. package/dist/component-transform.js +7 -1
  142. package/dist/content-delivery-contract.d.ts +108 -0
  143. package/dist/content-delivery-contract.js +15 -0
  144. package/dist/content-delivery-transport.d.ts +3 -0
  145. package/dist/content-delivery-transport.js +47 -0
  146. package/dist/content-delivery-validation.d.ts +7 -0
  147. package/dist/content-delivery-validation.js +122 -0
  148. package/dist/content-delivery.d.ts +21 -0
  149. package/dist/content-delivery.js +119 -0
  150. package/dist/content-export-anchors.d.ts +11 -0
  151. package/dist/content-export-anchors.js +79 -0
  152. package/dist/content-export-command.d.ts +4 -2
  153. package/dist/content-export-command.js +15 -2
  154. package/dist/content-export-comparison.d.ts +16 -0
  155. package/dist/content-export-comparison.js +48 -0
  156. package/dist/content-export-config.d.ts +17 -0
  157. package/dist/content-export-config.js +47 -3
  158. package/dist/content-export-render.js +20 -1
  159. package/dist/content-export.d.ts +5 -1
  160. package/dist/content-export.js +193 -40
  161. package/dist/content-mount.d.ts +11 -0
  162. package/dist/content-mount.js +73 -0
  163. package/dist/content-rest-client.d.ts +12 -0
  164. package/dist/content-rest-client.js +162 -0
  165. package/dist/content-rest-contract.d.ts +27 -0
  166. package/dist/content-rest-contract.js +9 -0
  167. package/dist/content-rest-server.d.ts +7 -0
  168. package/dist/content-rest-server.js +99 -0
  169. package/dist/content-source.d.ts +3 -1
  170. package/dist/frontmatter.js +8 -7
  171. package/dist/html-renderer.js +25 -0
  172. package/dist/markdown-sections.d.ts +2 -1
  173. package/dist/markdown-sections.js +8 -18
  174. package/dist/page-renderer.js +5 -3
  175. package/dist/publication-plan.js +2 -1
  176. package/dist/scaffold-placeholders.d.ts +2 -0
  177. package/dist/scaffold-placeholders.js +19 -0
  178. package/dist/section-identity.d.ts +24 -0
  179. package/dist/section-identity.js +137 -0
  180. package/examples/content-delivery/README.md +87 -0
  181. package/examples/content-delivery/app.js +91 -0
  182. package/examples/content-delivery/content/billing.mdx +22 -0
  183. package/examples/content-delivery/docs.config.yaml +36 -0
  184. package/examples/content-delivery/index.html +25 -0
  185. package/examples/content-delivery/preview.mjs +86 -0
  186. package/examples/content-delivery/snippets/refund-window.mdx +3 -0
  187. package/examples/help-drawer/README.md +2 -2
  188. package/examples/help-drawer/app.js +3 -3
  189. package/package.json +6 -3
  190. package/schemas/content-export.schema.json +469 -33
  191. package/schemas/content-rest.openapi.json +1627 -0
  192. package/skills/shoalrun-author/SKILL.md +2 -0
  193. package/styles/site.css +9 -4
@@ -2,9 +2,9 @@
2
2
  "schemaVersion": 1,
3
3
  "siteBuild": {
4
4
  "schemaVersion": 1,
5
- "configDigest": "903641a369d32c0e716712c668ef7378b8ebfdd314f7d95f1553c00443b20eb5",
6
- "buildId": "1aae676cf02856842a383f9e8f28b2b126e18cfbc75050227980b1d3d82762b6"
5
+ "configDigest": "31d33ea2d00a4333e120d37f58251238c0698e62f7320dccdaf1c2ace8df78fd",
6
+ "buildId": "38aac8472fa1fad778acd5b5bdc30067474eca35755706d09f916914326ed2f0"
7
7
  },
8
- "packageIntegrity": "sha512-NmM2tIR7SSyz8STTZluEsATZZBcTrgH6mWBTjOju7Qz3E60onSrQF93IXmBuhBiInw+Zq9mysUAk8Lvo/UDj6Q==",
9
- "manifestDigest": "5b181b5e3d09eaae37afaf0f08ce5c725ea393029df4cec8ad62c44939b07fe7"
8
+ "packageIntegrity": "sha512-Qs6yv+QFvt6L5huiKFQfIT5FYexxbSokwUVUnxIrXUx2TtY/VTdG0EKAJJuCLLi6FcrYVbnI/mC9uWqJ9nflsw==",
9
+ "manifestDigest": "c99f0684ea93c4add58ddee1fd19dc82fa1acd9099d6cc2b4b226a0ef85302fe"
10
10
  }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: guide.content-export
3
3
  title: Export content into your application
4
- summary: Export shared content for application help.
4
+ summary: Export selected documentation and assets for your application.
5
5
  type: how-to
6
6
  area: publishing
7
7
  subarea: publishing-builds
@@ -16,16 +16,27 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
16
16
 
17
17
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
18
 
19
- **Updated: 2026-10-26.**
19
+ **Updated: 2026-10-29.**
20
20
 
21
21
  Keep application help and your documentation website in one content source. `shoalrun export` produces a directory of resolved Markdown, passive HTML fragments, referenced assets, and a manifest. Your application owns the help drawer, onboarding screen, or other interface that displays the content. It does not need a Shoalrun browser runtime.
22
22
 
23
23
  ## Prerequisites
24
24
 
25
- Content exports require Shoalrun CLI `0.1.0-alpha.6` or later.
25
+ Install Shoalrun `0.1.0-alpha.13` or newer in the documentation project. This guide uses the resource-based export manifest described in the [manifest reference](https://www.shoalrun.com/content-delivery/manifest.md).
26
26
 
27
27
  Start with a Shoalrun project and public pages assigned to an enabled publication. Navigation, facets, a site title, and a previous website build are optional. A site origin is needed only when links must fall back to pages on the documentation website. The export does not generate embeddings or run documentation chat.
28
28
 
29
+ ## Upgrade an existing integration
30
+
31
+ If an existing bundle contains `manifest.documents`, upgrade the CLI and rebuild the export before using this guide's loader. Update custom consumers to the resource contract:
32
+
33
+ - Read `manifest.resources` instead of `manifest.documents`.
34
+ - Select page resources with `ref.kind === 'page'` and `ref.documentId` instead of a document's `id`.
35
+ - Route links with `kind: resource` through their typed `ref`, rather than `kind: document` and `documentId`.
36
+ - Read file paths from the rebuilt manifest; do not retain paths from the old bundle.
37
+
38
+ The `documents` configuration selector remains shorthand for whole pages. Use [resource selectors](https://www.shoalrun.com/content-delivery/select.md) when selecting approved sections or named snippet instances.
39
+
29
40
  ## Export selected pages
30
41
 
31
42
  1. ## Define an export target
@@ -40,7 +51,7 @@ Start with a Shoalrun project and public pages assigned to an enabled publicatio
40
51
  publicBase: /help/
41
52
  ```
42
53
 
43
- Omit `documents` to export all eligible public pages in one enabled publication. If more than one publication is enabled, select all three coordinates:
54
+ Omit both `documents` and `resources` to export all eligible public pages in one enabled publication. If more than one publication is enabled, select all three coordinates:
44
55
 
45
56
  ```yaml
46
57
  exports:
@@ -60,7 +71,7 @@ Start with a Shoalrun project and public pages assigned to an enabled publicatio
60
71
  From the documentation project, run:
61
72
 
62
73
  ```sh
63
- shoalrun export docs.config.yaml --target app-help --out ../app/public/help
74
+ npx --no-install shoalrun export docs.config.yaml --target app-help --out ../app/public/help
64
75
  ```
65
76
 
66
77
  Replace the output path with the directory your application will distribute. The command prints JSON with its publication, formats, selected document IDs, asset count, digest, API review requirements, and diagnostics. A successful export replaces an earlier export in that directory. A failure preserves it. Source directories, unrelated nonempty directories, and previous website builds cannot be used as the export destination.
@@ -77,12 +88,12 @@ Start with a Shoalrun project and public pages assigned to an enabled publicatio
77
88
  NOTICES.txt
78
89
  ```
79
90
 
80
- File names derive from stable document identity and publication, not titles or source-file names. Read paths from the manifest rather than constructing them in your app.
91
+ File names derive from typed resource identity and publication, not titles or source-file names. Read paths from the manifest rather than constructing them in your app.
81
92
 
82
93
  For a one-off export without a named target:
83
94
 
84
95
  ```sh
85
- shoalrun export docs.config.yaml --out ../app/public/help \
96
+ npx --no-install shoalrun export docs.config.yaml --out ../app/public/help \
86
97
  --format html --document guide.api-keys --document guide.billing \
87
98
  --public-base /help/
88
99
  ```
@@ -97,10 +108,13 @@ Start with a Shoalrun project and public pages assigned to an enabled publicatio
97
108
 
98
109
  ```js
99
110
  const manifest = await fetch('/help/manifest.json').then(response => response.json());
100
- if (manifest.schemaVersion !== 1 || manifest.review.status !== 'ok') {
111
+ if (manifest.schemaVersion !== 1 || manifest.review?.status !== 'ok' ||
112
+ !Array.isArray(manifest.resources)) {
101
113
  throw new Error('Unsupported or unreviewed help export');
102
114
  }
103
- const help = manifest.documents.find(document => document.id === 'guide.api-keys');
115
+ const help = manifest.resources.find(resource =>
116
+ resource.ref.kind === 'page' && resource.ref.documentId === 'guide.api-keys');
117
+ if (!help?.representations.html) throw new Error('API-key HTML is unavailable');
104
118
  const html = await fetch(manifest.publicBase + help.representations.html.path)
105
119
  .then(response => response.text());
106
120
  helpContainer.innerHTML = html;
@@ -112,7 +126,7 @@ Start with a Shoalrun project and public pages assigned to an enabled publicatio
112
126
 
113
127
  4. ## Handle document links and check the result
114
128
 
115
- Links to other exported pages have `data-export-link` markers. Each marker identifies a record in that representation's `links` array. For `kind: document`, your app can prevent ordinary navigation and open `documentId` in the drawer. `fragment` identifies the original heading or anchor; the HTML representation's `anchors` array maps it to its namespaced `exportedId`.
129
+ Links to other exported pages have `data-export-link` markers. Each marker identifies a record in that representation's `links` array. For `kind: resource`, your app can prevent ordinary navigation and retrieve the target using its typed `ref`. A page reference contains `kind: page` and `documentId`; section and snippet references have their own identity fields. `fragment` identifies the original heading or anchor; the HTML representation's `anchors` array maps it to its namespaced `exportedId`.
116
130
 
117
131
  A link to an omitted document uses its canonical website URL only when that document is public, enabled, and selected for the website. Without an eligible destination and a configured origin, the export fails. Linked pages are never silently added to the export. Explicit external links retain their destinations.
118
132
 
@@ -136,9 +150,9 @@ Exports resolve snippets, supported components, and API material before renderin
136
150
 
137
151
  HTML contains no site navigation, theme, required scripts, or app-wide stylesheet. It remains readable without CSS; your app styles its content container. HTML and Markdown are rendered independently from the same resolved source, so [representation-specific blocks](https://www.shoalrun.com/author/components/only.md) retain their intended differences.
138
152
 
139
- HTML heading, footnote, and other IDs are namespaced per document. Mount each exported document once per DOM. Repeated simultaneous instances require the application to rewrite IDs and all corresponding fragment and ARIA references. Markdown heading anchors depend on the customer's renderer; the export does not promise identical anchor generation across Markdown libraries.
153
+ HTML heading, footnote, and other IDs are namespaced per resource. Directly inserting the same HTML more than once can duplicate IDs. Use [mountContent](https://www.shoalrun.com/content-delivery/render.md) for simultaneous instances; it rewrites IDs and their fragment and ARIA references for each mount. Markdown heading anchors depend on the customer's renderer; the export does not promise identical anchor generation across Markdown libraries.
140
154
 
141
- Whole pages are the supported units. The website's size-based section resources are not exported as stable application-help IDs.
155
+ Exports support pages, explicitly approved sections, and named snippet instances. Application section fragments use `{ id, context: section }` approval; they are separate from the website's size-based contextual agent sections. See [select content resources](https://www.shoalrun.com/content-delivery/select.md) for configuration and approval examples.
142
156
 
143
157
  ## Assets, downloads, and notices
144
158
 
@@ -155,14 +169,14 @@ exports:
155
169
 
156
170
  Supported files include PNG, JPEG, GIF, WebP, AVIF, passive SVG, PDF, plain text, CSV, JSON, and YAML. Local assets use content-hashed paths. Unsupported asset types, missing files, symlink escapes, active SVG, and unresolved local links fail the export. Asset directories are not copied wholesale. Self-contained focused OpenAPI downloads are included when referenced.
157
171
 
158
- Remote images are not downloaded. The manifest records them in each document's `externalDependencies`, and the command reports them in diagnostics. A document with a remote image is not offline-complete. Explicit notice files and applicable diagram-renderer notices are retained in `NOTICES.txt`.
172
+ Remote images are not downloaded. The manifest records them in each resource's `externalDependencies`, and the command reports them in diagnostics. A document with a remote image is not offline-complete. Explicit notice files and applicable diagram-renderer notices are retained in `NOTICES.txt`.
159
173
 
160
174
  ## Review exported API material
161
175
 
162
176
  The export preserves the API source-review gate. If its selected API material has no matching review digest, the normal command fails before replacing the previous bundle. Produce a candidate for inspection with:
163
177
 
164
178
  ```sh
165
- shoalrun export docs.config.yaml --target app-help --out review/app-help --review
179
+ npx --no-install shoalrun export docs.config.yaml --target app-help --out review/app-help --review
166
180
  ```
167
181
 
168
182
  A candidate needing review reports `status: needs-review`, sets `manifest.review.status: required`, and exits with code 2. Inspect its references and downloads, then pin the reported API digests to the target:
@@ -180,7 +194,9 @@ Run the normal export command again. Changed source bytes or exposed API selecti
180
194
 
181
195
  ## Inspect the manifest
182
196
 
183
- The versioned `manifest.json` identifies documents by ID and publication. It includes titles, summaries, types, eligible canonical URLs, representation paths and digests, typed links, HTML anchor maps, local assets, external image dependencies, and diagnostics. It does not copy raw source frontmatter, configuration, local dependency paths, or browser runtime payloads.
197
+ The manifest uses typed `resources` for pages, sections, and snippet instances. See the [manifest contract](https://www.shoalrun.com/content-delivery/manifest.md) and [content client](https://www.shoalrun.com/content-delivery/client.md) for resource lookup and retrieval.
198
+
199
+ The versioned `manifest.json` identifies resources by typed reference and publication. It includes titles, summaries, types, eligible canonical URLs, representation paths and digests, typed links, HTML anchor maps, local assets, external image dependencies, and diagnostics. It does not copy raw source frontmatter, configuration, local dependency paths, or browser runtime payloads.
184
200
 
185
201
  The bundle's `digest` is the SHA-256 of `JSON.stringify` of the parsed manifest with its own `digest` field removed. The `files` list records byte counts and SHA-256 digests for every payload file, including notices. All text is UTF-8. The manifest itself is excluded from that list. Deterministic output lets applications compare bundles and invalidate cached content.
186
202
 
@@ -189,7 +205,7 @@ The bundle's `digest` is the SHA-256 of `JSON.stringify` of the parsed manifest
189
205
  The package's `examples/help-drawer` directory contains a small application with two help documents, an image, a diagram, reader sections, tabs, a walkthrough, and a custom component. Copy it into a project with Shoalrun installed, then run from that example directory:
190
206
 
191
207
  ```sh
192
- shoalrun export docs.config.yaml --target app-help --out public/help
208
+ npx --no-install shoalrun export docs.config.yaml --target app-help --out public/help
193
209
  node preview.mjs
194
210
  ```
195
211
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: guide.content-export
3
3
  title: Export content into your application
4
- summary: Export shared content for application help.
4
+ summary: Export selected documentation and assets for your application.
5
5
  type: how-to
6
6
  area: publishing
7
7
  subarea: publishing-builds
@@ -16,7 +16,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
16
16
 
17
17
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
18
 
19
- **Updated: 2026-10-26.**
19
+ **Updated: 2026-10-29.**
20
20
 
21
21
  Parent page: [Full Markdown page](/publish/content-export.md)
22
22
 
@@ -37,4 +37,4 @@ exports:
37
37
 
38
38
  Supported files include PNG, JPEG, GIF, WebP, AVIF, passive SVG, PDF, plain text, CSV, JSON, and YAML. Local assets use content-hashed paths. Unsupported asset types, missing files, symlink escapes, active SVG, and unresolved local links fail the export. Asset directories are not copied wholesale. Self-contained focused OpenAPI downloads are included when referenced.
39
39
 
40
- Remote images are not downloaded. The manifest records them in each document's `externalDependencies`, and the command reports them in diagnostics. A document with a remote image is not offline-complete. Explicit notice files and applicable diagram-renderer notices are retained in `NOTICES.txt`.
40
+ Remote images are not downloaded. The manifest records them in each resource's `externalDependencies`, and the command reports them in diagnostics. A document with a remote image is not offline-complete. Explicit notice files and applicable diagram-renderer notices are retained in `NOTICES.txt`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: guide.content-export
3
3
  title: Export content into your application
4
- summary: Export shared content for application help.
4
+ summary: Export selected documentation and assets for your application.
5
5
  type: how-to
6
6
  area: publishing
7
7
  subarea: publishing-builds
@@ -16,7 +16,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
16
16
 
17
17
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
18
 
19
- **Updated: 2026-10-26.**
19
+ **Updated: 2026-10-29.**
20
20
 
21
21
  Parent page: [Full Markdown page](/publish/content-export.md)
22
22
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: guide.content-export
3
3
  title: Export content into your application
4
- summary: Export shared content for application help.
4
+ summary: Export selected documentation and assets for your application.
5
5
  type: how-to
6
6
  area: publishing
7
7
  subarea: publishing-builds
@@ -16,7 +16,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
16
16
 
17
17
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
18
 
19
- **Updated: 2026-10-26.**
19
+ **Updated: 2026-10-29.**
20
20
 
21
21
  Parent page: [Full Markdown page](/publish/content-export.md)
22
22
 
@@ -36,7 +36,7 @@ Keep application help and your documentation website in one content source. `sho
36
36
  publicBase: /help/
37
37
  ```
38
38
 
39
- Omit `documents` to export all eligible public pages in one enabled publication. If more than one publication is enabled, select all three coordinates:
39
+ Omit both `documents` and `resources` to export all eligible public pages in one enabled publication. If more than one publication is enabled, select all three coordinates:
40
40
 
41
41
  ```yaml
42
42
  exports:
@@ -56,7 +56,7 @@ Keep application help and your documentation website in one content source. `sho
56
56
  From the documentation project, run:
57
57
 
58
58
  ```sh
59
- shoalrun export docs.config.yaml --target app-help --out ../app/public/help
59
+ npx --no-install shoalrun export docs.config.yaml --target app-help --out ../app/public/help
60
60
  ```
61
61
 
62
62
  Replace the output path with the directory your application will distribute. The command prints JSON with its publication, formats, selected document IDs, asset count, digest, API review requirements, and diagnostics. A successful export replaces an earlier export in that directory. A failure preserves it. Source directories, unrelated nonempty directories, and previous website builds cannot be used as the export destination.
@@ -73,12 +73,12 @@ Keep application help and your documentation website in one content source. `sho
73
73
  NOTICES.txt
74
74
  ```
75
75
 
76
- File names derive from stable document identity and publication, not titles or source-file names. Read paths from the manifest rather than constructing them in your app.
76
+ File names derive from typed resource identity and publication, not titles or source-file names. Read paths from the manifest rather than constructing them in your app.
77
77
 
78
78
  For a one-off export without a named target:
79
79
 
80
80
  ```sh
81
- shoalrun export docs.config.yaml --out ../app/public/help \
81
+ npx --no-install shoalrun export docs.config.yaml --out ../app/public/help \
82
82
  --format html --document guide.api-keys --document guide.billing \
83
83
  --public-base /help/
84
84
  ```
@@ -93,10 +93,13 @@ Keep application help and your documentation website in one content source. `sho
93
93
 
94
94
  ```js
95
95
  const manifest = await fetch('/help/manifest.json').then(response => response.json());
96
- if (manifest.schemaVersion !== 1 || manifest.review.status !== 'ok') {
96
+ if (manifest.schemaVersion !== 1 || manifest.review?.status !== 'ok' ||
97
+ !Array.isArray(manifest.resources)) {
97
98
  throw new Error('Unsupported or unreviewed help export');
98
99
  }
99
- const help = manifest.documents.find(document => document.id === 'guide.api-keys');
100
+ const help = manifest.resources.find(resource =>
101
+ resource.ref.kind === 'page' && resource.ref.documentId === 'guide.api-keys');
102
+ if (!help?.representations.html) throw new Error('API-key HTML is unavailable');
100
103
  const html = await fetch(manifest.publicBase + help.representations.html.path)
101
104
  .then(response => response.text());
102
105
  helpContainer.innerHTML = html;
@@ -108,6 +111,6 @@ Keep application help and your documentation website in one content source. `sho
108
111
 
109
112
  4. ## Handle document links and check the result
110
113
 
111
- Links to other exported pages have `data-export-link` markers. Each marker identifies a record in that representation's `links` array. For `kind: document`, your app can prevent ordinary navigation and open `documentId` in the drawer. `fragment` identifies the original heading or anchor; the HTML representation's `anchors` array maps it to its namespaced `exportedId`.
114
+ Links to other exported pages have `data-export-link` markers. Each marker identifies a record in that representation's `links` array. For `kind: resource`, your app can prevent ordinary navigation and retrieve the target using its typed `ref`. A page reference contains `kind: page` and `documentId`; section and snippet references have their own identity fields. `fragment` identifies the original heading or anchor; the HTML representation's `anchors` array maps it to its namespaced `exportedId`.
112
115
 
113
116
  A link to an omitted document uses its canonical website URL only when that document is public, enabled, and selected for the website. Without an eligible destination and a configured origin, the export fails. Linked pages are never silently added to the export. Explicit external links retain their destinations.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: guide.content-export
3
3
  title: Export content into your application
4
- summary: Export shared content for application help.
4
+ summary: Export selected documentation and assets for your application.
5
5
  type: how-to
6
6
  area: publishing
7
7
  subarea: publishing-builds
@@ -16,7 +16,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
16
16
 
17
17
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
18
 
19
- **Updated: 2026-10-26.**
19
+ **Updated: 2026-10-29.**
20
20
 
21
21
  Parent page: [Full Markdown page](/publish/content-export.md)
22
22
 
@@ -24,6 +24,8 @@ Keep application help and your documentation website in one content source. `sho
24
24
 
25
25
  ## Inspect the manifest
26
26
 
27
- The versioned `manifest.json` identifies documents by ID and publication. It includes titles, summaries, types, eligible canonical URLs, representation paths and digests, typed links, HTML anchor maps, local assets, external image dependencies, and diagnostics. It does not copy raw source frontmatter, configuration, local dependency paths, or browser runtime payloads.
27
+ The manifest uses typed `resources` for pages, sections, and snippet instances. See the [manifest contract](https://www.shoalrun.com/content-delivery/manifest.md) and [content client](https://www.shoalrun.com/content-delivery/client.md) for resource lookup and retrieval.
28
+
29
+ The versioned `manifest.json` identifies resources by typed reference and publication. It includes titles, summaries, types, eligible canonical URLs, representation paths and digests, typed links, HTML anchor maps, local assets, external image dependencies, and diagnostics. It does not copy raw source frontmatter, configuration, local dependency paths, or browser runtime payloads.
28
30
 
29
31
  The bundle's `digest` is the SHA-256 of `JSON.stringify` of the parsed manifest with its own `digest` field removed. The `files` list records byte counts and SHA-256 digests for every payload file, including notices. All text is UTF-8. The manifest itself is excluded from that list. Deterministic output lets applications compare bundles and invalidate cached content.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: guide.content-export
3
3
  title: Export content into your application
4
- summary: Export shared content for application help.
4
+ summary: Export selected documentation and assets for your application.
5
5
  type: how-to
6
6
  area: publishing
7
7
  subarea: publishing-builds
@@ -16,7 +16,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
16
16
 
17
17
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
18
 
19
- **Updated: 2026-10-26.**
19
+ **Updated: 2026-10-29.**
20
20
 
21
21
  Parent page: [Full Markdown page](/publish/content-export.md)
22
22
 
@@ -24,6 +24,6 @@ Keep application help and your documentation website in one content source. `sho
24
24
 
25
25
  ## Prerequisites
26
26
 
27
- Content exports require Shoalrun CLI `0.1.0-alpha.6` or later.
27
+ Install Shoalrun `0.1.0-alpha.13` or newer in the documentation project. This guide uses the resource-based export manifest described in the [manifest reference](https://www.shoalrun.com/content-delivery/manifest.md).
28
28
 
29
29
  Start with a Shoalrun project and public pages assigned to an enabled publication. Navigation, facets, a site title, and a previous website build are optional. A site origin is needed only when links must fall back to pages on the documentation website. The export does not generate embeddings or run documentation chat.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: guide.content-export
3
3
  title: Export content into your application
4
- summary: Export shared content for application help.
4
+ summary: Export selected documentation and assets for your application.
5
5
  type: how-to
6
6
  area: publishing
7
7
  subarea: publishing-builds
@@ -16,7 +16,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
16
16
 
17
17
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
18
 
19
- **Updated: 2026-10-26.**
19
+ **Updated: 2026-10-29.**
20
20
 
21
21
  Parent page: [Full Markdown page](/publish/content-export.md)
22
22
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: guide.content-export
3
3
  title: Export content into your application
4
- summary: Export shared content for application help.
4
+ summary: Export selected documentation and assets for your application.
5
5
  type: how-to
6
6
  area: publishing
7
7
  subarea: publishing-builds
@@ -16,7 +16,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
16
16
 
17
17
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
18
 
19
- **Updated: 2026-10-26.**
19
+ **Updated: 2026-10-29.**
20
20
 
21
21
  Parent page: [Full Markdown page](/publish/content-export.md)
22
22
 
@@ -27,7 +27,7 @@ Keep application help and your documentation website in one content source. `sho
27
27
  The export preserves the API source-review gate. If its selected API material has no matching review digest, the normal command fails before replacing the previous bundle. Produce a candidate for inspection with:
28
28
 
29
29
  ```sh
30
- shoalrun export docs.config.yaml --target app-help --out review/app-help --review
30
+ npx --no-install shoalrun export docs.config.yaml --target app-help --out review/app-help --review
31
31
  ```
32
32
 
33
33
  A candidate needing review reports `status: needs-review`, sets `manifest.review.status: required`, and exits with code 2. Inspect its references and downloads, then pin the reported API digests to the target:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: guide.content-export
3
3
  title: Export content into your application
4
- summary: Export shared content for application help.
4
+ summary: Export selected documentation and assets for your application.
5
5
  type: how-to
6
6
  area: publishing
7
7
  subarea: publishing-builds
@@ -16,7 +16,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
16
16
 
17
17
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
18
 
19
- **Updated: 2026-10-26.**
19
+ **Updated: 2026-10-29.**
20
20
 
21
21
  Parent page: [Full Markdown page](/publish/content-export.md)
22
22
 
@@ -27,7 +27,7 @@ Keep application help and your documentation website in one content source. `sho
27
27
  The package's `examples/help-drawer` directory contains a small application with two help documents, an image, a diagram, reader sections, tabs, a walkthrough, and a custom component. Copy it into a project with Shoalrun installed, then run from that example directory:
28
28
 
29
29
  ```sh
30
- shoalrun export docs.config.yaml --target app-help --out public/help
30
+ npx --no-install shoalrun export docs.config.yaml --target app-help --out public/help
31
31
  node preview.mjs
32
32
  ```
33
33
 
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: guide.content-export
3
+ title: Export content into your application
4
+ summary: Export selected documentation and assets for your application.
5
+ type: how-to
6
+ area: publishing
7
+ subarea: publishing-builds
8
+ canonical: /publish/content-export
9
+ ---
10
+
11
+ # Export content into your application
12
+
13
+ > Documentation index: [llms.min.txt](https://www.shoalrun.com/llms.min.txt) · Document manifest: [documents.json](https://www.shoalrun.com/documents.json)
14
+
15
+ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigation/docs-50f26fe22670.txt) (ID: docs). [All sections and pages](https://www.shoalrun.com/llms.min.txt)
16
+
17
+ Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
+
19
+ **Updated: 2026-10-29.**
20
+
21
+ Parent page: [Full Markdown page](/publish/content-export.md)
22
+
23
+ Keep application help and your documentation website in one content source. `shoalrun export` produces a directory of resolved Markdown, passive HTML fragments, referenced assets, and a manifest. Your application owns the help drawer, onboarding screen, or other interface that displays the content. It does not need a Shoalrun browser runtime.
24
+
25
+ ## Upgrade an existing integration
26
+
27
+ If an existing bundle contains `manifest.documents`, upgrade the CLI and rebuild the export before using this guide's loader. Update custom consumers to the resource contract:
28
+
29
+ - Read `manifest.resources` instead of `manifest.documents`.
30
+ - Select page resources with `ref.kind === 'page'` and `ref.documentId` instead of a document's `id`.
31
+ - Route links with `kind: resource` through their typed `ref`, rather than `kind: document` and `documentId`.
32
+ - Read file paths from the rebuilt manifest; do not retain paths from the old bundle.
33
+
34
+ The `documents` configuration selector remains shorthand for whole pages. Use [resource selectors](https://www.shoalrun.com/content-delivery/select.md) when selecting approved sections or named snippet instances.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  id: guide.content-export
3
3
  title: Export content into your application
4
- summary: Export shared content for application help.
4
+ summary: Export selected documentation and assets for your application.
5
5
  type: how-to
6
6
  area: publishing
7
7
  subarea: publishing-builds
@@ -16,7 +16,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
16
16
 
17
17
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > Export content into your application
18
18
 
19
- **Updated: 2026-10-26.**
19
+ **Updated: 2026-10-29.**
20
20
 
21
21
  Parent page: [Full Markdown page](/publish/content-export.md)
22
22
 
@@ -38,6 +38,6 @@ Exports resolve snippets, supported components, and API material before renderin
38
38
 
39
39
  HTML contains no site navigation, theme, required scripts, or app-wide stylesheet. It remains readable without CSS; your app styles its content container. HTML and Markdown are rendered independently from the same resolved source, so [representation-specific blocks](https://www.shoalrun.com/author/components/only.md) retain their intended differences.
40
40
 
41
- HTML heading, footnote, and other IDs are namespaced per document. Mount each exported document once per DOM. Repeated simultaneous instances require the application to rewrite IDs and all corresponding fragment and ARIA references. Markdown heading anchors depend on the customer's renderer; the export does not promise identical anchor generation across Markdown libraries.
41
+ HTML heading, footnote, and other IDs are namespaced per resource. Directly inserting the same HTML more than once can duplicate IDs. Use [mountContent](https://www.shoalrun.com/content-delivery/render.md) for simultaneous instances; it rewrites IDs and their fragment and ARIA references for each mount. Markdown heading anchors depend on the customer's renderer; the export does not promise identical anchor generation across Markdown libraries.
42
42
 
43
- Whole pages are the supported units. The website's size-based section resources are not exported as stable application-help IDs.
43
+ Exports support pages, explicitly approved sections, and named snippet instances. Application section fragments use `{ id, context: section }` approval; they are separate from the website's size-based contextual agent sections. See [select content resources](https://www.shoalrun.com/content-delivery/select.md) for configuration and approval examples.
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Search, chat, and agent access > MCP > Connect an MCP client
19
19
 
20
- **Updated: 2026-10-27.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  Connect an MCP client to built documentation through four read-only tools. Use stdio for a client-launched local process, or enable an HTTP endpoint on Node or in a generated Vercel function. Both use the same search and Markdown reading core.
23
23
 
@@ -187,4 +187,6 @@ The tools are read-only and do not expose authoring commands. Stdio makes them a
187
187
 
188
188
  ### Related topics
189
189
 
190
+ - [Content delivery and agents](https://www.shoalrun.com/content-delivery/agents.md) — Use existing documentation MCP tools for contextual reads.
191
+
190
192
  - [Agent-friendly documentation](https://www.shoalrun.com/publish/agent-friendliness.md) — Understand the published Markdown and discovery surfaces alongside MCP.
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Search, chat, and agent access > MCP > Connect an MCP client
19
19
 
20
- **Updated: 2026-10-27.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  Parent page: [Full Markdown page](/publish/mcp.md)
23
23
 
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Search, chat, and agent access > MCP > Connect an MCP client
19
19
 
20
- **Updated: 2026-10-27.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  Parent page: [Full Markdown page](/publish/mcp.md)
23
23
 
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Search, chat, and agent access > MCP > Connect an MCP client
19
19
 
20
- **Updated: 2026-10-27.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  Parent page: [Full Markdown page](/publish/mcp.md)
23
23
 
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Search, chat, and agent access > MCP > Connect an MCP client
19
19
 
20
- **Updated: 2026-10-27.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  Parent page: [Full Markdown page](/publish/mcp.md)
23
23
 
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Search, chat, and agent access > MCP > Connect an MCP client
19
19
 
20
- **Updated: 2026-10-27.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  Parent page: [Full Markdown page](/publish/mcp.md)
23
23
 
@@ -39,4 +39,6 @@ You need Node.js 22.12 or newer, the installed Shoalrun CLI, and a client that s
39
39
 
40
40
  ### Related topics
41
41
 
42
+ - [Content delivery and agents](https://www.shoalrun.com/content-delivery/agents.md) — Use existing documentation MCP tools for contextual reads.
43
+
42
44
  - [Agent-friendly documentation](https://www.shoalrun.com/publish/agent-friendliness.md) — Understand the published Markdown and discovery surfaces alongside MCP.
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Search, chat, and agent access > MCP > Connect an MCP client
19
19
 
20
- **Updated: 2026-10-27.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  Parent page: [Full Markdown page](/publish/mcp.md)
23
23
 
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Search, chat, and agent access > MCP > Connect an MCP client
19
19
 
20
- **Updated: 2026-10-27.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  Parent page: [Full Markdown page](/publish/mcp.md)
23
23
 
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Search, chat, and agent access > MCP > Connect an MCP client
19
19
 
20
- **Updated: 2026-10-27.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  Parent page: [Full Markdown page](/publish/mcp.md)
23
23
 
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Search, chat, and agent access > MCP > Connect an MCP client
19
19
 
20
- **Updated: 2026-10-27.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  Parent page: [Full Markdown page](/publish/mcp.md)
23
23
 
@@ -17,7 +17,7 @@ Navigation section: [Docs](https://www.shoalrun.com/.well-known/shoalrun/navigat
17
17
 
18
18
  Breadcrumbs: [Docs](https://www.shoalrun.com/what-is-shoalrun.md) > Publish and maintain > SEO and social previews
19
19
 
20
- **Updated: 2026-10-25.**
20
+ **Updated: 2026-10-29.**
21
21
 
22
22
  When someone shares a docs link, Slack and other services fetch the page's HTML and look for a title, description, and image. Shoalrun writes these tags at build time from page metadata and can generate a share image for every page. Start with a clear page `title` and a one-sentence `summary`; you do not need to hand-write Open Graph or Twitter tags.
23
23
 
@@ -106,7 +106,21 @@ Set native frontmatter `verified` only when someone checks the page's technical
106
106
  verified: 2026-10-01
107
107
  ```
108
108
 
109
- The HTML page, Markdown twin, and manifest expose this date independently of Updated. A build never assigns it. This project also declares private `editorial.lastVerified` and `editorial.verificationNote` fields for internal review notes; use native `verified` when the date should be public. A rebuild or unchanged-content file touch establishes neither a content change nor verification.
109
+ The standard HTML page header displays `Verified` with a semantic `<time>` element. Markdown and `documents.json` expose the same date independently of `Updated`, which records content revision. A build never assigns `verified`; a build or editorial review alone does not establish technical verification.
110
+
111
+ The HTML verification-date display and `showVerified` setting are available since `0.1.0-alpha.13`.
112
+
113
+ Set `showVerified: false` in a page's frontmatter to hide the verification date in HTML only. It remains in Markdown and the manifest. The default is `true`. To hide it throughout a project, set a shared default:
114
+
115
+ ```yaml title="docs.config.yaml"
116
+ frontmatter:
117
+ defaults:
118
+ showVerified: false
119
+ ```
120
+
121
+ An individual page can override that default with `showVerified: true`. A page using a Hero replaces the standard header, so its header dates are not displayed.
122
+
123
+ This project also declares private `editorial.lastVerified` and `editorial.verificationNote` fields for internal review notes; use native `verified` when the date should be public. A rebuild or unchanged-content file touch establishes neither a content change nor verification.
110
124
 
111
125
  Search indexing still depends on the public host and crawler access; metadata alone does not guarantee it. If Slack does not unfurl after a corrected deployment, confirm the page and image are public, then try sharing the link in a new conversation. [Slack may omit a preview](https://slack.com/help/articles/204399343-Share-links-and-set-preview-preferences) when the same link was recently posted in that conversation.
112
126