Generated llms.txt for AI agents - #226

Draft
Zethson wants to merge 4 commits into
mainfrom
llms-txt
Draft

Generated llms.txt for AI agents#226
Zethson wants to merge 4 commits into
mainfrom
llms-txt

Conversation

@Zethson

@ZethsonZethson commented Jul 7, 2026

Copy link
Copy Markdown
Member

Fixes#216. Adds a generated /llms.txt giving AI agents a curated map of scverse — core packages come from the ecosystem registry, so they stay in sync, while the ## More packages list of other scverse-org repos is hand-maintained.

Add a Hugo LLMS output format that renders /llms.txt from the homepage
package front matter, plus curated links to other major scverse packages
and project resources. Also fix mudata's dead docs URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@netlify

netlifyBot commented Jul 7, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commitef6930b
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a4d34d598f6da0008210f07
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@PauBadiaMPauBadiaMJul 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently the core package list depends on code (I guess javascript of similar) execution to get rendered in the txt file. Do we know if an agent will see the rendered list at runtime, or just the:

Foundational packages maintained by the scverse core team.
{{ range .Params.packages }}
- [{{ .name }}]({{ .url }}): {{ .description }}
{{- end }}

This is important because if it does not render properly the agent will be quite lost.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I guess agents that look at the code will see this. Only if they access the rendered website, they'll see what we expect. So hardcoding this would be the right thing to do? Or will agents simply attempt to look at these parameters to figure out what should be there? Sure - less efficient but then we don't need to hardcode things.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I've seen that it depends a lot on the agent capability. High-end models (such as opus or fable) they will go through the trouble of jumping to other pages and following links if they are provided, while lower-end models (haiku, sonnet) they'll "speed-run" and not bother visiting other pages, so I would say it is safer to hardcode this just in case.

@grst

grst commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Please see also #200 where the plan was to replace the manual list of core packages with information from the package registry as the single point of truth.

For agents, we could just point them at this json which contains all core and ecosystem packages: https://scverse.org/ecosystem-packages/packages.json

@Zethson
Zethson marked this pull request as draft August 6, 2026 09:15
@ZethsonZethson changed the title feat: generated llms.txt for AI agentsGenerated llms.txt for AI agentsAug 14, 2026
Three things had gone stale in the month this sat open.
The core package loop read .Params.packages, which main deleted when it
moved core packages to the ecosystem registry; the section would have
rendered empty. It reads the registry now, the same way the packages page
does, so it covers all twelve rather than the eight that were listed by
hand.
The outputs config collided with site search: this branch set home to
HTML, RSS and LLMS, main had set it to html, rss and entities. Taking
either side alone drops an output — llms.txt or the search index. Both
are listed now.
The mudata documentation URL fix is already upstream in the registry, and
the front matter it patched is gone, so those hunks drop.
@netlify

netlifyBot commented Aug 25, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commit1cef6d9
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a8d59e2e84700000848ef5b
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

The section was hand-maintained with a note that new packages need a
manual line. It now comes from registry entries whose project_home is in
the scverse organisation, minus the core packages listed above it and
minus core-infrastructure, which is the org's own repos rather than
packages.
No package name is written by hand in the template any more. What is left
is site pages, the forums and the YouTube channel, none of which have a
registry to read.
This shrinks the section from eleven entries to two, because eight of the
eleven are absent from the ecosystem registry: gget, spatialdata-io,
napari-spatialdata, spatialdata-plot, annbatch, pytometry, rustar-aligner
and anndata-rs. They are missing from the package index and from site
search too, so the hand-written list was hiding that rather than fixing
it. Adding them to the registry restores them here automatically.
Sign up for freeto 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.

Create a llms.txt

3 participants

@Zethson@grst@PauBadiaM
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Generated llms.txt for AI agents - #226

Draft
Zethson wants to merge 4 commits into
mainfrom
llms-txt
Draft

Generated llms.txt for AI agents#226
Zethson wants to merge 4 commits into
mainfrom
llms-txt

Conversation

@Zethson

@ZethsonZethson commented Jul 7, 2026

Copy link
Copy Markdown
Member

Fixes#216. Adds a generated /llms.txt giving AI agents a curated map of scverse — core packages come from the ecosystem registry, so they stay in sync, while the ## More packages list of other scverse-org repos is hand-maintained.

Add a Hugo LLMS output format that renders /llms.txt from the homepage
package front matter, plus curated links to other major scverse packages
and project resources. Also fix mudata's dead docs URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@netlify

netlifyBot commented Jul 7, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commitef6930b
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a4d34d598f6da0008210f07
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@PauBadiaMPauBadiaMJul 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently the core package list depends on code (I guess javascript of similar) execution to get rendered in the txt file. Do we know if an agent will see the rendered list at runtime, or just the:

Foundational packages maintained by the scverse core team.
{{ range .Params.packages }}
- [{{ .name }}]({{ .url }}): {{ .description }}
{{- end }}

This is important because if it does not render properly the agent will be quite lost.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I guess agents that look at the code will see this. Only if they access the rendered website, they'll see what we expect. So hardcoding this would be the right thing to do? Or will agents simply attempt to look at these parameters to figure out what should be there? Sure - less efficient but then we don't need to hardcode things.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I've seen that it depends a lot on the agent capability. High-end models (such as opus or fable) they will go through the trouble of jumping to other pages and following links if they are provided, while lower-end models (haiku, sonnet) they'll "speed-run" and not bother visiting other pages, so I would say it is safer to hardcode this just in case.

@grst

grst commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Please see also #200 where the plan was to replace the manual list of core packages with information from the package registry as the single point of truth.

For agents, we could just point them at this json which contains all core and ecosystem packages: https://scverse.org/ecosystem-packages/packages.json

@Zethson
Zethson marked this pull request as draft August 6, 2026 09:15
@ZethsonZethson changed the title feat: generated llms.txt for AI agentsGenerated llms.txt for AI agentsAug 14, 2026
Three things had gone stale in the month this sat open.
The core package loop read .Params.packages, which main deleted when it
moved core packages to the ecosystem registry; the section would have
rendered empty. It reads the registry now, the same way the packages page
does, so it covers all twelve rather than the eight that were listed by
hand.
The outputs config collided with site search: this branch set home to
HTML, RSS and LLMS, main had set it to html, rss and entities. Taking
either side alone drops an output — llms.txt or the search index. Both
are listed now.
The mudata documentation URL fix is already upstream in the registry, and
the front matter it patched is gone, so those hunks drop.
@netlify

netlifyBot commented Aug 25, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commit1cef6d9
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a8d59e2e84700000848ef5b
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

The section was hand-maintained with a note that new packages need a
manual line. It now comes from registry entries whose project_home is in
the scverse organisation, minus the core packages listed above it and
minus core-infrastructure, which is the org's own repos rather than
packages.
No package name is written by hand in the template any more. What is left
is site pages, the forums and the YouTube channel, none of which have a
registry to read.
This shrinks the section from eleven entries to two, because eight of the
eleven are absent from the ecosystem registry: gget, spatialdata-io,
napari-spatialdata, spatialdata-plot, annbatch, pytometry, rustar-aligner
and anndata-rs. They are missing from the package index and from site
search too, so the hand-written list was hiding that rather than fixing
it. Adding them to the registry restores them here automatically.
Sign up for freeto 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.

Create a llms.txt

3 participants

@Zethson@grst@PauBadiaM
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Generated llms.txt for AI agents - #226

Draft
Zethson wants to merge 4 commits into
mainfrom
llms-txt
Draft

Generated llms.txt for AI agents#226
Zethson wants to merge 4 commits into
mainfrom
llms-txt

Conversation

@Zethson

@ZethsonZethson commented Jul 7, 2026

Copy link
Copy Markdown
Member

Fixes#216. Adds a generated /llms.txt giving AI agents a curated map of scverse — core packages come from the ecosystem registry, so they stay in sync, while the ## More packages list of other scverse-org repos is hand-maintained.

Add a Hugo LLMS output format that renders /llms.txt from the homepage
package front matter, plus curated links to other major scverse packages
and project resources. Also fix mudata's dead docs URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@netlify

netlifyBot commented Jul 7, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commitef6930b
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a4d34d598f6da0008210f07
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@PauBadiaMPauBadiaMJul 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently the core package list depends on code (I guess javascript of similar) execution to get rendered in the txt file. Do we know if an agent will see the rendered list at runtime, or just the:

Foundational packages maintained by the scverse core team.
{{ range .Params.packages }}
- [{{ .name }}]({{ .url }}): {{ .description }}
{{- end }}

This is important because if it does not render properly the agent will be quite lost.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I guess agents that look at the code will see this. Only if they access the rendered website, they'll see what we expect. So hardcoding this would be the right thing to do? Or will agents simply attempt to look at these parameters to figure out what should be there? Sure - less efficient but then we don't need to hardcode things.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I've seen that it depends a lot on the agent capability. High-end models (such as opus or fable) they will go through the trouble of jumping to other pages and following links if they are provided, while lower-end models (haiku, sonnet) they'll "speed-run" and not bother visiting other pages, so I would say it is safer to hardcode this just in case.

@grst

grst commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Please see also #200 where the plan was to replace the manual list of core packages with information from the package registry as the single point of truth.

For agents, we could just point them at this json which contains all core and ecosystem packages: https://scverse.org/ecosystem-packages/packages.json

@Zethson
Zethson marked this pull request as draft August 6, 2026 09:15
@ZethsonZethson changed the title feat: generated llms.txt for AI agentsGenerated llms.txt for AI agentsAug 14, 2026
Three things had gone stale in the month this sat open.
The core package loop read .Params.packages, which main deleted when it
moved core packages to the ecosystem registry; the section would have
rendered empty. It reads the registry now, the same way the packages page
does, so it covers all twelve rather than the eight that were listed by
hand.
The outputs config collided with site search: this branch set home to
HTML, RSS and LLMS, main had set it to html, rss and entities. Taking
either side alone drops an output — llms.txt or the search index. Both
are listed now.
The mudata documentation URL fix is already upstream in the registry, and
the front matter it patched is gone, so those hunks drop.
@netlify

netlifyBot commented Aug 25, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commit1cef6d9
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a8d59e2e84700000848ef5b
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

The section was hand-maintained with a note that new packages need a
manual line. It now comes from registry entries whose project_home is in
the scverse organisation, minus the core packages listed above it and
minus core-infrastructure, which is the org's own repos rather than
packages.
No package name is written by hand in the template any more. What is left
is site pages, the forums and the YouTube channel, none of which have a
registry to read.
This shrinks the section from eleven entries to two, because eight of the
eleven are absent from the ecosystem registry: gget, spatialdata-io,
napari-spatialdata, spatialdata-plot, annbatch, pytometry, rustar-aligner
and anndata-rs. They are missing from the package index and from site
search too, so the hand-written list was hiding that rather than fixing
it. Adding them to the registry restores them here automatically.
Sign up for freeto 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.

Create a llms.txt

3 participants

@Zethson@grst@PauBadiaM
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Generated llms.txt for AI agents - #226

Draft
Zethson wants to merge 4 commits into
mainfrom
llms-txt
Draft

Generated llms.txt for AI agents#226
Zethson wants to merge 4 commits into
mainfrom
llms-txt

Conversation

@Zethson

@ZethsonZethson commented Jul 7, 2026

Copy link
Copy Markdown
Member

Fixes#216. Adds a generated /llms.txt giving AI agents a curated map of scverse — core packages come from the ecosystem registry, so they stay in sync, while the ## More packages list of other scverse-org repos is hand-maintained.

Add a Hugo LLMS output format that renders /llms.txt from the homepage
package front matter, plus curated links to other major scverse packages
and project resources. Also fix mudata's dead docs URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@netlify

netlifyBot commented Jul 7, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commitef6930b
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a4d34d598f6da0008210f07
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@PauBadiaMPauBadiaMJul 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently the core package list depends on code (I guess javascript of similar) execution to get rendered in the txt file. Do we know if an agent will see the rendered list at runtime, or just the:

Foundational packages maintained by the scverse core team.
{{ range .Params.packages }}
- [{{ .name }}]({{ .url }}): {{ .description }}
{{- end }}

This is important because if it does not render properly the agent will be quite lost.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I guess agents that look at the code will see this. Only if they access the rendered website, they'll see what we expect. So hardcoding this would be the right thing to do? Or will agents simply attempt to look at these parameters to figure out what should be there? Sure - less efficient but then we don't need to hardcode things.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I've seen that it depends a lot on the agent capability. High-end models (such as opus or fable) they will go through the trouble of jumping to other pages and following links if they are provided, while lower-end models (haiku, sonnet) they'll "speed-run" and not bother visiting other pages, so I would say it is safer to hardcode this just in case.

@grst

grst commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Please see also #200 where the plan was to replace the manual list of core packages with information from the package registry as the single point of truth.

For agents, we could just point them at this json which contains all core and ecosystem packages: https://scverse.org/ecosystem-packages/packages.json

@Zethson
Zethson marked this pull request as draft August 6, 2026 09:15
@ZethsonZethson changed the title feat: generated llms.txt for AI agentsGenerated llms.txt for AI agentsAug 14, 2026
Three things had gone stale in the month this sat open.
The core package loop read .Params.packages, which main deleted when it
moved core packages to the ecosystem registry; the section would have
rendered empty. It reads the registry now, the same way the packages page
does, so it covers all twelve rather than the eight that were listed by
hand.
The outputs config collided with site search: this branch set home to
HTML, RSS and LLMS, main had set it to html, rss and entities. Taking
either side alone drops an output — llms.txt or the search index. Both
are listed now.
The mudata documentation URL fix is already upstream in the registry, and
the front matter it patched is gone, so those hunks drop.
@netlify

netlifyBot commented Aug 25, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commit1cef6d9
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a8d59e2e84700000848ef5b
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

The section was hand-maintained with a note that new packages need a
manual line. It now comes from registry entries whose project_home is in
the scverse organisation, minus the core packages listed above it and
minus core-infrastructure, which is the org's own repos rather than
packages.
No package name is written by hand in the template any more. What is left
is site pages, the forums and the YouTube channel, none of which have a
registry to read.
This shrinks the section from eleven entries to two, because eight of the
eleven are absent from the ecosystem registry: gget, spatialdata-io,
napari-spatialdata, spatialdata-plot, annbatch, pytometry, rustar-aligner
and anndata-rs. They are missing from the package index and from site
search too, so the hand-written list was hiding that rather than fixing
it. Adding them to the registry restores them here automatically.
Sign up for freeto 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.

Create a llms.txt

3 participants

@Zethson@grst@PauBadiaM
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Generated llms.txt for AI agents - #226

Draft
Zethson wants to merge 4 commits into
mainfrom
llms-txt
Draft

Generated llms.txt for AI agents#226
Zethson wants to merge 4 commits into
mainfrom
llms-txt

Conversation

@Zethson

@ZethsonZethson commented Jul 7, 2026

Copy link
Copy Markdown
Member

Fixes#216. Adds a generated /llms.txt giving AI agents a curated map of scverse — core packages come from the ecosystem registry, so they stay in sync, while the ## More packages list of other scverse-org repos is hand-maintained.

Add a Hugo LLMS output format that renders /llms.txt from the homepage
package front matter, plus curated links to other major scverse packages
and project resources. Also fix mudata's dead docs URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@netlify

netlifyBot commented Jul 7, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commitef6930b
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a4d34d598f6da0008210f07
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@PauBadiaMPauBadiaMJul 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently the core package list depends on code (I guess javascript of similar) execution to get rendered in the txt file. Do we know if an agent will see the rendered list at runtime, or just the:

Foundational packages maintained by the scverse core team.
{{ range .Params.packages }}
- [{{ .name }}]({{ .url }}): {{ .description }}
{{- end }}

This is important because if it does not render properly the agent will be quite lost.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I guess agents that look at the code will see this. Only if they access the rendered website, they'll see what we expect. So hardcoding this would be the right thing to do? Or will agents simply attempt to look at these parameters to figure out what should be there? Sure - less efficient but then we don't need to hardcode things.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I've seen that it depends a lot on the agent capability. High-end models (such as opus or fable) they will go through the trouble of jumping to other pages and following links if they are provided, while lower-end models (haiku, sonnet) they'll "speed-run" and not bother visiting other pages, so I would say it is safer to hardcode this just in case.

@grst

grst commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Please see also #200 where the plan was to replace the manual list of core packages with information from the package registry as the single point of truth.

For agents, we could just point them at this json which contains all core and ecosystem packages: https://scverse.org/ecosystem-packages/packages.json

@Zethson
Zethson marked this pull request as draft August 6, 2026 09:15
@ZethsonZethson changed the title feat: generated llms.txt for AI agentsGenerated llms.txt for AI agentsAug 14, 2026
Three things had gone stale in the month this sat open.
The core package loop read .Params.packages, which main deleted when it
moved core packages to the ecosystem registry; the section would have
rendered empty. It reads the registry now, the same way the packages page
does, so it covers all twelve rather than the eight that were listed by
hand.
The outputs config collided with site search: this branch set home to
HTML, RSS and LLMS, main had set it to html, rss and entities. Taking
either side alone drops an output — llms.txt or the search index. Both
are listed now.
The mudata documentation URL fix is already upstream in the registry, and
the front matter it patched is gone, so those hunks drop.
@netlify

netlifyBot commented Aug 25, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commit1cef6d9
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a8d59e2e84700000848ef5b
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

The section was hand-maintained with a note that new packages need a
manual line. It now comes from registry entries whose project_home is in
the scverse organisation, minus the core packages listed above it and
minus core-infrastructure, which is the org's own repos rather than
packages.
No package name is written by hand in the template any more. What is left
is site pages, the forums and the YouTube channel, none of which have a
registry to read.
This shrinks the section from eleven entries to two, because eight of the
eleven are absent from the ecosystem registry: gget, spatialdata-io,
napari-spatialdata, spatialdata-plot, annbatch, pytometry, rustar-aligner
and anndata-rs. They are missing from the package index and from site
search too, so the hand-written list was hiding that rather than fixing
it. Adding them to the registry restores them here automatically.
Sign up for freeto 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.

Create a llms.txt

3 participants

@Zethson@grst@PauBadiaM
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Generated llms.txt for AI agents - #226

Draft
Zethson wants to merge 4 commits into
mainfrom
llms-txt
Draft

Generated llms.txt for AI agents#226
Zethson wants to merge 4 commits into
mainfrom
llms-txt

Conversation

@Zethson

@ZethsonZethson commented Jul 7, 2026

Copy link
Copy Markdown
Member

Fixes#216. Adds a generated /llms.txt giving AI agents a curated map of scverse — core packages come from the ecosystem registry, so they stay in sync, while the ## More packages list of other scverse-org repos is hand-maintained.

Add a Hugo LLMS output format that renders /llms.txt from the homepage
package front matter, plus curated links to other major scverse packages
and project resources. Also fix mudata's dead docs URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@netlify

netlifyBot commented Jul 7, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commitef6930b
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a4d34d598f6da0008210f07
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@PauBadiaMPauBadiaMJul 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently the core package list depends on code (I guess javascript of similar) execution to get rendered in the txt file. Do we know if an agent will see the rendered list at runtime, or just the:

Foundational packages maintained by the scverse core team.
{{ range .Params.packages }}
- [{{ .name }}]({{ .url }}): {{ .description }}
{{- end }}

This is important because if it does not render properly the agent will be quite lost.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I guess agents that look at the code will see this. Only if they access the rendered website, they'll see what we expect. So hardcoding this would be the right thing to do? Or will agents simply attempt to look at these parameters to figure out what should be there? Sure - less efficient but then we don't need to hardcode things.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I've seen that it depends a lot on the agent capability. High-end models (such as opus or fable) they will go through the trouble of jumping to other pages and following links if they are provided, while lower-end models (haiku, sonnet) they'll "speed-run" and not bother visiting other pages, so I would say it is safer to hardcode this just in case.

@grst

grst commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Please see also #200 where the plan was to replace the manual list of core packages with information from the package registry as the single point of truth.

For agents, we could just point them at this json which contains all core and ecosystem packages: https://scverse.org/ecosystem-packages/packages.json

@Zethson
Zethson marked this pull request as draft August 6, 2026 09:15
@ZethsonZethson changed the title feat: generated llms.txt for AI agentsGenerated llms.txt for AI agentsAug 14, 2026
Three things had gone stale in the month this sat open.
The core package loop read .Params.packages, which main deleted when it
moved core packages to the ecosystem registry; the section would have
rendered empty. It reads the registry now, the same way the packages page
does, so it covers all twelve rather than the eight that were listed by
hand.
The outputs config collided with site search: this branch set home to
HTML, RSS and LLMS, main had set it to html, rss and entities. Taking
either side alone drops an output — llms.txt or the search index. Both
are listed now.
The mudata documentation URL fix is already upstream in the registry, and
the front matter it patched is gone, so those hunks drop.
@netlify

netlifyBot commented Aug 25, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commit1cef6d9
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a8d59e2e84700000848ef5b
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

The section was hand-maintained with a note that new packages need a
manual line. It now comes from registry entries whose project_home is in
the scverse organisation, minus the core packages listed above it and
minus core-infrastructure, which is the org's own repos rather than
packages.
No package name is written by hand in the template any more. What is left
is site pages, the forums and the YouTube channel, none of which have a
registry to read.
This shrinks the section from eleven entries to two, because eight of the
eleven are absent from the ecosystem registry: gget, spatialdata-io,
napari-spatialdata, spatialdata-plot, annbatch, pytometry, rustar-aligner
and anndata-rs. They are missing from the package index and from site
search too, so the hand-written list was hiding that rather than fixing
it. Adding them to the registry restores them here automatically.
Sign up for freeto 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.

Create a llms.txt

3 participants

@Zethson@grst@PauBadiaM
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Generated llms.txt for AI agents - #226

Draft
Zethson wants to merge 4 commits into
mainfrom
llms-txt
Draft

Generated llms.txt for AI agents#226
Zethson wants to merge 4 commits into
mainfrom
llms-txt

Conversation

@Zethson

@ZethsonZethson commented Jul 7, 2026

Copy link
Copy Markdown
Member

Fixes#216. Adds a generated /llms.txt giving AI agents a curated map of scverse — core packages come from the ecosystem registry, so they stay in sync, while the ## More packages list of other scverse-org repos is hand-maintained.

Add a Hugo LLMS output format that renders /llms.txt from the homepage
package front matter, plus curated links to other major scverse packages
and project resources. Also fix mudata's dead docs URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@netlify

netlifyBot commented Jul 7, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commitef6930b
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a4d34d598f6da0008210f07
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@PauBadiaMPauBadiaMJul 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently the core package list depends on code (I guess javascript of similar) execution to get rendered in the txt file. Do we know if an agent will see the rendered list at runtime, or just the:

Foundational packages maintained by the scverse core team.
{{ range .Params.packages }}
- [{{ .name }}]({{ .url }}): {{ .description }}
{{- end }}

This is important because if it does not render properly the agent will be quite lost.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I guess agents that look at the code will see this. Only if they access the rendered website, they'll see what we expect. So hardcoding this would be the right thing to do? Or will agents simply attempt to look at these parameters to figure out what should be there? Sure - less efficient but then we don't need to hardcode things.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I've seen that it depends a lot on the agent capability. High-end models (such as opus or fable) they will go through the trouble of jumping to other pages and following links if they are provided, while lower-end models (haiku, sonnet) they'll "speed-run" and not bother visiting other pages, so I would say it is safer to hardcode this just in case.

@grst

grst commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Please see also #200 where the plan was to replace the manual list of core packages with information from the package registry as the single point of truth.

For agents, we could just point them at this json which contains all core and ecosystem packages: https://scverse.org/ecosystem-packages/packages.json

@Zethson
Zethson marked this pull request as draft August 6, 2026 09:15
@ZethsonZethson changed the title feat: generated llms.txt for AI agentsGenerated llms.txt for AI agentsAug 14, 2026
Three things had gone stale in the month this sat open.
The core package loop read .Params.packages, which main deleted when it
moved core packages to the ecosystem registry; the section would have
rendered empty. It reads the registry now, the same way the packages page
does, so it covers all twelve rather than the eight that were listed by
hand.
The outputs config collided with site search: this branch set home to
HTML, RSS and LLMS, main had set it to html, rss and entities. Taking
either side alone drops an output — llms.txt or the search index. Both
are listed now.
The mudata documentation URL fix is already upstream in the registry, and
the front matter it patched is gone, so those hunks drop.
@netlify

netlifyBot commented Aug 25, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commit1cef6d9
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a8d59e2e84700000848ef5b
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

The section was hand-maintained with a note that new packages need a
manual line. It now comes from registry entries whose project_home is in
the scverse organisation, minus the core packages listed above it and
minus core-infrastructure, which is the org's own repos rather than
packages.
No package name is written by hand in the template any more. What is left
is site pages, the forums and the YouTube channel, none of which have a
registry to read.
This shrinks the section from eleven entries to two, because eight of the
eleven are absent from the ecosystem registry: gget, spatialdata-io,
napari-spatialdata, spatialdata-plot, annbatch, pytometry, rustar-aligner
and anndata-rs. They are missing from the package index and from site
search too, so the hand-written list was hiding that rather than fixing
it. Adding them to the registry restores them here automatically.
Sign up for freeto 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.

Create a llms.txt

3 participants

@Zethson@grst@PauBadiaM
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Generated llms.txt for AI agents - #226

Draft
Zethson wants to merge 4 commits into
mainfrom
llms-txt
Draft

Generated llms.txt for AI agents#226
Zethson wants to merge 4 commits into
mainfrom
llms-txt

Conversation

@Zethson

@ZethsonZethson commented Jul 7, 2026

Copy link
Copy Markdown
Member

Fixes#216. Adds a generated /llms.txt giving AI agents a curated map of scverse — core packages come from the ecosystem registry, so they stay in sync, while the ## More packages list of other scverse-org repos is hand-maintained.

Add a Hugo LLMS output format that renders /llms.txt from the homepage
package front matter, plus curated links to other major scverse packages
and project resources. Also fix mudata's dead docs URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@netlify

netlifyBot commented Jul 7, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commitef6930b
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a4d34d598f6da0008210f07
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@PauBadiaMPauBadiaMJul 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently the core package list depends on code (I guess javascript of similar) execution to get rendered in the txt file. Do we know if an agent will see the rendered list at runtime, or just the:

Foundational packages maintained by the scverse core team.
{{ range .Params.packages }}
- [{{ .name }}]({{ .url }}): {{ .description }}
{{- end }}

This is important because if it does not render properly the agent will be quite lost.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I guess agents that look at the code will see this. Only if they access the rendered website, they'll see what we expect. So hardcoding this would be the right thing to do? Or will agents simply attempt to look at these parameters to figure out what should be there? Sure - less efficient but then we don't need to hardcode things.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I've seen that it depends a lot on the agent capability. High-end models (such as opus or fable) they will go through the trouble of jumping to other pages and following links if they are provided, while lower-end models (haiku, sonnet) they'll "speed-run" and not bother visiting other pages, so I would say it is safer to hardcode this just in case.

@grst

grst commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Please see also #200 where the plan was to replace the manual list of core packages with information from the package registry as the single point of truth.

For agents, we could just point them at this json which contains all core and ecosystem packages: https://scverse.org/ecosystem-packages/packages.json

@Zethson
Zethson marked this pull request as draft August 6, 2026 09:15
@ZethsonZethson changed the title feat: generated llms.txt for AI agentsGenerated llms.txt for AI agentsAug 14, 2026
Three things had gone stale in the month this sat open.
The core package loop read .Params.packages, which main deleted when it
moved core packages to the ecosystem registry; the section would have
rendered empty. It reads the registry now, the same way the packages page
does, so it covers all twelve rather than the eight that were listed by
hand.
The outputs config collided with site search: this branch set home to
HTML, RSS and LLMS, main had set it to html, rss and entities. Taking
either side alone drops an output — llms.txt or the search index. Both
are listed now.
The mudata documentation URL fix is already upstream in the registry, and
the front matter it patched is gone, so those hunks drop.
@netlify

netlifyBot commented Aug 25, 2026

Copy link
Copy Markdown

Deploy Preview for jade-cajeta-1bcca0 ready!

NameLink
🔨 Latest commit1cef6d9
🔍 Latest deploy loghttps://app.netlify.com/projects/jade-cajeta-1bcca0/deploys/6a8d59e2e84700000848ef5b
😎 Deploy Previewhttps://deploy-preview-226--jade-cajeta-1bcca0.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

The section was hand-maintained with a note that new packages need a
manual line. It now comes from registry entries whose project_home is in
the scverse organisation, minus the core packages listed above it and
minus core-infrastructure, which is the org's own repos rather than
packages.
No package name is written by hand in the template any more. What is left
is site pages, the forums and the YouTube channel, none of which have a
registry to read.
This shrinks the section from eleven entries to two, because eight of the
eleven are absent from the ecosystem registry: gget, spatialdata-io,
napari-spatialdata, spatialdata-plot, annbatch, pytometry, rustar-aligner
and anndata-rs. They are missing from the package index and from site
search too, so the hand-written list was hiding that rather than fixing
it. Adding them to the registry restores them here automatically.
Sign up for freeto 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.

Create a llms.txt

3 participants

@Zethson@grst@PauBadiaM