From 07f578e35f8b9b5dcea1936d75a03fa203c0ab05 Mon Sep 17 00:00:00 2001 From: Saif Date: Tue, 11 Aug 2026 14:31:31 +0530 Subject: [PATCH 1/5] chore: start work on grouping general articles From ddebfe6846309cfaf1bae60cc2d4c71c8859ee89 Mon Sep 17 00:00:00 2001 From: Saif Date: Tue, 11 Aug 2026 16:42:48 +0530 Subject: [PATCH 2/5] chore(deps): upgrade starlight-blog to 0.28.0 and restore blog chrome MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 0.28.0 adds support for multiple blog instances, which the knowledge base work needs. The upgrade is a plain minor bump: 0.27.0 requires Starlight >=0.41.0 and Astro v7, both already satisfied. Converts the plugin config to the array form with the single existing cookbooks entry, and sets navigation: 'none' — the default 'header-end' adds a header link per instance, which does not scale past one blog. Also fixes the MarkdownContent override, which rendered Starlight's default directly and so shadowed starlight-blog's own override. Cookbook posts have therefore never shown the author byline or the reading time the metrics option configures. Nesting the plugin's override restores both while keeping image zoom and video content intact. --- astro.config.mjs | 23 ++-- package.json | 2 +- pnpm-lock.yaml | 100 ++++++------------ .../overrides/MarkdownContent.astro | 8 +- 4 files changed, 53 insertions(+), 80 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index 4e59a3eb3..a5df0978c 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -140,14 +140,23 @@ export default defineConfig({ }, // No baseUrl — prevents llms.txt generation (already handled by starlight-llms-txt) }), - starlightBlog({ - prefix: 'cookbooks', - rss: false, - metrics: { - readingTime: true, - words: 'total', + // Array form: starlight-blog 0.28+ supports multiple blog instances, one + // per prefix. Posts map to an instance by directory (src/content/docs//). + // `navigation: 'none'` keeps each instance out of the header — with several + // instances the default ('header-end') stacks a link per blog beside the + // theme switcher. Discovery goes through the secondary nav instead. + starlightBlog([ + { + prefix: 'cookbooks', + title: 'Cookbooks', + navigation: 'none', + rss: false, + metrics: { + readingTime: true, + words: 'total', + }, }, - }), + ]), ], head: [ { diff --git a/package.json b/package.json index ac0d848ea..6684b0668 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "react": "^19.2.5", "react-dom": "^19.2.5", "sharp": "^0.35.3", - "starlight-blog": "^0.26.1", + "starlight-blog": "^0.28.0", "starlight-image-zoom": "^0.14.2", "starlight-links-validator": "^0.24.1", "starlight-llms-txt": "^0.10.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97f2225d4..743a470cb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,8 +108,8 @@ importers: specifier: ^0.35.3 version: 0.35.3(@types/node@25.6.0) starlight-blog: - specifier: ^0.26.1 - version: 0.26.1(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3)) + specifier: ^0.28.0 + version: 0.28.0(@astrojs/markdown-satteri@0.3.3)(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3))(typescript@6.0.3) starlight-image-zoom: specifier: ^0.14.2 version: 0.14.2(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3))(typescript@6.0.3)) @@ -3623,10 +3623,6 @@ packages: peerDependencies: astro: ^5.0.0 || ^6.0.0-alpha - astro-remote@0.3.4: - resolution: {integrity: sha512-jL5skNQLA0YBc1R3bVGXyHew3FqGqsT7AgLzWAVeTLzFkwVMUYvs4/lKJSmS7ygcF1GnHnoKG6++8GL9VtWwGQ==} - engines: {node: '>=18.14.1'} - astro-theme-toggle@0.8.1: resolution: {integrity: sha512-cUQDnMpRrGwWQ0C6dj1x3y3e3ULlikvoc6Tb6FkIQkL1Ropyd6jQ/IZ9GdhSogWEVpNodPckOKeItIh89EDwkg==} @@ -5806,31 +5802,6 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - marked-footnote@1.4.0: - resolution: {integrity: sha512-fZTxAhI1TcLEs5UOjCfYfTHpyKGaWQevbxaGTEA68B51l7i87SctPFtHETYqPkEN0ka5opvy4Dy1l/yXVC+hmg==} - peerDependencies: - marked: '>=7.0.0' - - marked-plaintify@1.1.1: - resolution: {integrity: sha512-r3kMKArhfo2H3lD4ctFq/OJTzM0uNvXHh7FBTI1hMDpf4Ac1djjtq4g8NfTBWMxWLmaEz3KL1jCkLygik3gExA==} - peerDependencies: - marked: '>=13.0.0' - - marked-smartypants@1.1.12: - resolution: {integrity: sha512-Z0QL2GpihbSeG5aaCrQxMEoqvngMftF/gq1SrdlCnbecUSrX3HYgPtCZzCW+OyNe2ideQqaFdxfGryqQX1MBDA==} - peerDependencies: - marked: '>=4 <19' - - marked@12.0.2: - resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==} - engines: {node: '>= 18'} - hasBin: true - - marked@17.0.6: - resolution: {integrity: sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==} - engines: {node: '>= 20'} - hasBin: true - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -7130,6 +7101,15 @@ packages: scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + schema-dts-lib@1.0.0: + resolution: {integrity: sha512-9MEO5vpQH9JdBioUupqluzxSYxPLjhmqRUudk15adUl/ypnRsM2/M1kN3AmVJQeG7nZqcL68H8JlGqQQT6vy9A==} + engines: {node: '>=14.0.0'} + peerDependencies: + typescript: '>=4.9.5' + + schema-dts@2.0.0: + resolution: {integrity: sha512-t7NoCy3Rn5GHGx6p7s1qIYK/AeIb8ZxJNR9WUNFkwMv2CiiGZBmqqYWc2FlZVm5ZbiHMY4OvBWhj7QtyrFO2Jw==} + secure-json-parse@4.1.0: resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==} @@ -7261,10 +7241,6 @@ packages: resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} engines: {node: '>=20'} - smartypants@0.2.2: - resolution: {integrity: sha512-TzobUYoEft/xBtb2voRPryAUIvYguG0V7Tt3de79I1WfXgCwelqVsGuZSnu3GFGRZhXR90AeEYIM+icuB/S06Q==} - hasBin: true - smol-toml@1.6.1: resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} @@ -7322,11 +7298,11 @@ packages: stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - starlight-blog@0.26.1: - resolution: {integrity: sha512-c2aLtkVTNFKHDJrh1DwlxBj+VyOrLqJeHmGkKKHwL6oowUoaqUiC/vyOZLXNmZL1kcYI0hgHDw1t4G/lkg8mZg==} + starlight-blog@0.28.0: + resolution: {integrity: sha512-tKddmNbbUd20lV/m4Giih2RtDEegpnzPbrNdiwgI29XOCzVKXjtt9T9ckxTJU+cxwG1f0ii++J8duN9iBzw7Iw==} engines: {node: '>=22.12.0'} peerDependencies: - '@astrojs/starlight': '>=0.38.0' + '@astrojs/starlight': '>=0.41.0' starlight-image-zoom@0.14.2: resolution: {integrity: sha512-YBvE724gFMiVjObGtXmfIDi3zAxVBsvGukeRXOiWLNnESFOBZFfO9DpC/reHohrCxFrO+5ot0XR8EimbE0LpsA==} @@ -12675,14 +12651,6 @@ snapshots: deterministic-object-hash: 2.0.2 entities: 7.0.1 - astro-remote@0.3.4: - dependencies: - entities: 4.5.0 - marked: 12.0.2 - marked-footnote: 1.4.0(marked@12.0.2) - marked-smartypants: 1.1.12(marked@12.0.2) - ultrahtml: 1.6.0 - astro-theme-toggle@0.8.1: {} astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3): @@ -15151,23 +15119,6 @@ snapshots: markdown-table@3.0.4: {} - marked-footnote@1.4.0(marked@12.0.2): - dependencies: - marked: 12.0.2 - - marked-plaintify@1.1.1(marked@17.0.6): - dependencies: - marked: 17.0.6 - - marked-smartypants@1.1.12(marked@12.0.2): - dependencies: - marked: 12.0.2 - smartypants: 0.2.2 - - marked@12.0.2: {} - - marked@17.0.6: {} - math-intrinsics@1.1.0: {} maxstache-stream@1.0.4: @@ -17020,6 +16971,16 @@ snapshots: scheduler@0.27.0: {} + schema-dts-lib@1.0.0(typescript@6.0.3): + dependencies: + typescript: 6.0.3 + + schema-dts@2.0.0(typescript@6.0.3): + dependencies: + schema-dts-lib: 1.0.0(typescript@6.0.3) + transitivePeerDependencies: + - typescript + secure-json-parse@4.1.0: {} semver@6.3.1: {} @@ -17240,8 +17201,6 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - smartypants@0.2.2: {} - smol-toml@1.6.1: {} sonic-boom@4.2.1: @@ -17291,26 +17250,27 @@ snapshots: stackframe@1.3.4: {} - starlight-blog@0.26.1(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3)): + starlight-blog@0.28.0(@astrojs/markdown-satteri@0.3.3)(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3))(typescript@6.0.3))(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3))(typescript@6.0.3): dependencies: '@astrojs/markdown-remark': 7.2.1 - '@astrojs/mdx': 5.0.4(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3)) + '@astrojs/mdx': 7.0.2(@astrojs/markdown-satteri@0.3.3)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3)) '@astrojs/rss': 4.0.19 '@astrojs/starlight': 0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3))(typescript@6.0.3) - astro-remote: 0.3.4 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-html: 9.0.5 hast-util-to-string: 3.0.1 - marked: 17.0.6 - marked-plaintify: 1.1.1(marked@17.0.6) mdast-util-mdx-expression: 2.0.1 + satteri: 0.9.4 + schema-dts: 2.0.0(typescript@6.0.3) unist-util-is: 6.0.1 unist-util-remove: 4.0.0 unist-util-visit: 5.1.0 transitivePeerDependencies: + - '@astrojs/markdown-satteri' - astro - supports-color + - typescript starlight-image-zoom@0.14.2(@astrojs/starlight@0.41.3(@astrojs/markdown-remark@7.2.1)(astro@7.1.3(@astrojs/markdown-remark@7.2.1)(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@netlify/blobs@10.7.9)(@types/node@25.6.0)(jiti@2.7.0)(rollup@4.60.1)(terser@5.46.1)(yaml@2.8.3))(typescript@6.0.3)): dependencies: diff --git a/src/components/overrides/MarkdownContent.astro b/src/components/overrides/MarkdownContent.astro index 26b4bc63d..1a84d7f9d 100644 --- a/src/components/overrides/MarkdownContent.astro +++ b/src/components/overrides/MarkdownContent.astro @@ -1,10 +1,14 @@ --- -import Default from '@astrojs/starlight/components/MarkdownContent.astro' +// starlight-blog's own override branches internally: blog posts get post chrome +// (author byline, reading time), every other page falls through to Starlight's +// default. Nesting it here keeps that behaviour — rendering Starlight's default +// directly would shadow the plugin and silently drop the chrome. +import BlogMarkdownContent from 'starlight-blog/overrides/MarkdownContent.astro' import VideosMarkdownContent from 'starlight-videos/components/MarkdownContent.astro' import ImageZoom from 'starlight-image-zoom/components/ImageZoom.astro' --- - + From 9819e565ead49ddc57b098e76b86db9fa2488101 Mon Sep 17 00:00:00 2001 From: Saif Date: Tue, 11 Aug 2026 17:15:07 +0530 Subject: [PATCH 3/5] refactor(cookbooks): split into per-product blog instances Cookbooks now live in two starlight-blog instances, /agentkit/cookbooks/ and /saaskit/cookbooks/, so each product's recipes are browsable from that product's navigation. AgentKit readers previously had no nav path to cookbooks at all, despite 12 of the 22 being AgentKit content. Moves 12 articles to AgentKit and 10 to Auth for SaaS, adds a redirect for every old URL, and retargets the existing rules that pointed into /cookbooks/. /cookbooks/ stays as a hub page linking to both shelves. The astro-d2 output path follows the MDX location, so the diagrams for the LiteLLM cookbook move with it. Blog listing and tag pages are injected routes rather than content entries, so the link validator cannot resolve them and they are excluded; individual posts stay validated. --- astro.config.mjs | 25 +- .../litellm-agentkit-inbox-triage-0.svg | 2 +- .../litellm-agentkit-inbox-triage-1.svg | 2 +- src/configs/llms.config.ts | 5 +- src/configs/redirects.config.ts | 53 +- src/configs/secondary-nav.config.ts | 26 +- src/configs/sidebar.config.ts | 9 +- .../cookbooks/apify-actor-per-user-oauth.mdx | 0 .../build-voice-assistant-1000-tools.mdx | 0 .../crewai-agentkit-email-triage.mdx | 0 .../cookbooks/daily-briefing-agent.mdx | 0 .../fastrouter-agentkit-tool-calling.mdx | 2 +- .../cookbooks/langsmith-tracing-agentkit.mdx | 0 .../litellm-agentkit-inbox-triage.mdx | 0 .../livekit-agentkit-voice-tool-calling.mdx | 0 .../cookbooks/mastra-agentkit.mdx | 0 .../cookbooks/render-github-pr-summarizer.mdx | 0 .../schedule-meeting-and-draft-email.mdx | 0 ...set-up-agentkit-with-your-coding-agent.mdx | 0 src/content/docs/agentkit/examples/crewai.mdx | 2 +- .../authenticate/m2m/api-auth-quickstart.mdx | 6 +- src/content/docs/cookbooks.mdx | 25 + .../docs/dev-kit/build-with-ai/index.mdx | 2 +- .../add-enterprise-sso-nextjs-authjs.mdx | 0 .../add-hosted-auth-nextjs-app-router.mdx | 0 .../building-custom-org-switcher.mdx | 0 .../cookbooks/implement-nextjs-auth.mdx | 0 .../java-spring-boot-jwt-timeout.mdx | 0 .../cookbooks/m2m-jwks-and-oauth-scopes.mdx | 0 .../migrate-from-auth0-to-scalekit.mdx | 0 .../cookbooks/scim-seat-limit-enforcement.mdx | 0 .../search-scalekit-docs-in-your-ide.mdx | 0 .../sync-b2b-billing-with-chargebee.mdx | 0 src/data/agent-connectors/tools-index.json | 20128 ++++++++++------ 34 files changed, 12294 insertions(+), 7993 deletions(-) rename public/d2/docs/{ => agentkit}/cookbooks/litellm-agentkit-inbox-triage-0.svg (99%) rename public/d2/docs/{ => agentkit}/cookbooks/litellm-agentkit-inbox-triage-1.svg (99%) rename src/content/docs/{ => agentkit}/cookbooks/apify-actor-per-user-oauth.mdx (100%) rename src/content/docs/{ => agentkit}/cookbooks/build-voice-assistant-1000-tools.mdx (100%) rename src/content/docs/{ => agentkit}/cookbooks/crewai-agentkit-email-triage.mdx (100%) rename src/content/docs/{ => agentkit}/cookbooks/daily-briefing-agent.mdx (100%) rename src/content/docs/{ => agentkit}/cookbooks/fastrouter-agentkit-tool-calling.mdx (98%) rename src/content/docs/{ => agentkit}/cookbooks/langsmith-tracing-agentkit.mdx (100%) rename src/content/docs/{ => agentkit}/cookbooks/litellm-agentkit-inbox-triage.mdx (100%) rename src/content/docs/{ => agentkit}/cookbooks/livekit-agentkit-voice-tool-calling.mdx (100%) rename src/content/docs/{ => agentkit}/cookbooks/mastra-agentkit.mdx (100%) rename src/content/docs/{ => agentkit}/cookbooks/render-github-pr-summarizer.mdx (100%) rename src/content/docs/{ => agentkit}/cookbooks/schedule-meeting-and-draft-email.mdx (100%) rename src/content/docs/{ => agentkit}/cookbooks/set-up-agentkit-with-your-coding-agent.mdx (100%) create mode 100644 src/content/docs/cookbooks.mdx rename src/content/docs/{ => saaskit}/cookbooks/add-enterprise-sso-nextjs-authjs.mdx (100%) rename src/content/docs/{ => saaskit}/cookbooks/add-hosted-auth-nextjs-app-router.mdx (100%) rename src/content/docs/{ => saaskit}/cookbooks/building-custom-org-switcher.mdx (100%) rename src/content/docs/{ => saaskit}/cookbooks/implement-nextjs-auth.mdx (100%) rename src/content/docs/{ => saaskit}/cookbooks/java-spring-boot-jwt-timeout.mdx (100%) rename src/content/docs/{ => saaskit}/cookbooks/m2m-jwks-and-oauth-scopes.mdx (100%) rename src/content/docs/{ => saaskit}/cookbooks/migrate-from-auth0-to-scalekit.mdx (100%) rename src/content/docs/{ => saaskit}/cookbooks/scim-seat-limit-enforcement.mdx (100%) rename src/content/docs/{ => saaskit}/cookbooks/search-scalekit-docs-in-your-ide.mdx (100%) rename src/content/docs/{ => saaskit}/cookbooks/sync-b2b-billing-with-chargebee.mdx (100%) diff --git a/astro.config.mjs b/astro.config.mjs index a5df0978c..6d34f6fd6 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -120,7 +120,16 @@ export default defineConfig({ ...(!process.env.NETLIFY ? [ starlightLinksValidator({ - exclude: ['/apis/**'], + // Blog listing, tag, and author pages are injected routes rather + // than content entries, so the validator cannot resolve them. + // Individual posts are real entries and stay validated. + exclude: [ + '/apis/**', + '/agentkit/cookbooks/', + '/saaskit/cookbooks/', + '/agentkit/cookbooks/tags/**', + '/saaskit/cookbooks/tags/**', + ], }), ] : []), @@ -147,8 +156,18 @@ export default defineConfig({ // theme switcher. Discovery goes through the secondary nav instead. starlightBlog([ { - prefix: 'cookbooks', - title: 'Cookbooks', + prefix: 'agentkit/cookbooks', + title: 'AgentKit cookbooks', + navigation: 'none', + rss: false, + metrics: { + readingTime: true, + words: 'total', + }, + }, + { + prefix: 'saaskit/cookbooks', + title: 'Auth for SaaS cookbooks', navigation: 'none', rss: false, metrics: { diff --git a/public/d2/docs/cookbooks/litellm-agentkit-inbox-triage-0.svg b/public/d2/docs/agentkit/cookbooks/litellm-agentkit-inbox-triage-0.svg similarity index 99% rename from public/d2/docs/cookbooks/litellm-agentkit-inbox-triage-0.svg rename to public/d2/docs/agentkit/cookbooks/litellm-agentkit-inbox-triage-0.svg index afa63f056..abffc50ef 100644 --- a/public/d2/docs/cookbooks/litellm-agentkit-inbox-triage-0.svg +++ b/public/d2/docs/agentkit/cookbooks/litellm-agentkit-inbox-triage-0.svg @@ -1,4 +1,4 @@ -