feat(docs): 907 — host an llms.txt for coding agents installing jarl - #107

Open
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers
Open

feat(docs): 907 — host an llms.txt for coding agents installing jarl#107
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

Add packages/docs/public/llms.txt, hosted at https://jarl.randomdev.co.uk/llms.txt, to guide coding agents through installing and using the library.

Convention Research

The producer verified the file format and availability by:

  • Researching the current convention for hosted, consumer-facing agent instructions: llms.txt is now the standard format, adopted by OpenAI, Stripe, Cloudflare, Vercel, and the most comparable open-source libraries (TanStack and Zod).
  • Fetching live examples from those projects to confirm the format: H1 heading with library name, blockquote summary, then ## section headings with [Name](url): description links to existing documentation sections — not a full-text dump.
  • Examining and rejecting AGENTS.md as the vehicle: that convention is for agents working inside a repo as contributors (which this repo covers via CLAUDE.md), not for downstream consumers reading from their own codebase with no jarl source.
  • Examining and rejecting an MCP server: disproportionate scope for a routing library that already has a docs site. The routing behaviour is documented by code and examples, not through a separate tool interface.
  • Noting but deferring llms-full.txt: it would require a build-time markdown concatenation step, materially beyond the scope of "write and host some static instructions". Possible as a follow-up if agents prove they need it.

The llms.txt format is deterministic and content-driven: a single static file served verbatim at a standard path, requiring no build step and no API layer, making it visible to any tool that can fetch a URL.

Verification

  • All documentation links in the file have been verified against the docs site's actual route table.
  • Every factual claim about package names, versions, exports, and peer dependencies has been verified against the current source.
  • No unlanded tickets (675, 778, 789) are documented — their proposed API changes (async-data coalescing, navigation blocking, fooAtom/fooRouteAtom naming) are absent.
  • CODING-STYLE.md compliance: no ticket/epic/PR references, no padding, no marketing fluff.

See ticket 907 for the done-when criteria.

Serves the current adopted convention for hosted, agent-facing library
instructions: a spec-compliant llms.txt at the docs site root, indexing
the existing guides and API reference and calling out what an agent
gets wrong without it — the jarl-atoms/jarl-react package names, that
v1 was removed, and that jarl-react does not re-export jarl-atoms.
Placed in packages/docs/public/ so Vite's static-asset copy ships it
verbatim to dist/llms.txt, which the existing S3 sync deploys to
https://jarl.randomdev.co.uk/llms.txt with no separate build step.
Ticket: 907
@@ -0,0 +1,38 @@
# JARL: Atomic Routing Library

> A controlled-component router for React built on jotai atoms: each route is its own atom,

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"controlled-component" inaccurate and contradictory here, also "for React" also not exclusively true as atoms can be used independently. Instead: "A router for React and vanilla JS projects, build on Jotai atoms:"


- Install both packages plus their `jotai` peer dependency: `npm install jarl-atoms jarl-react jotai`.
The npm package names are `jarl-atoms` and `jarl-react` — the GitHub repository is
`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"kept their pre-rename names" historical fluff, LLM doesn't need anything about the rename here

`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or
`@jarl/*`.
- The current major is v2, built entirely on jotai atoms. The v1 implementation (`RoutingProvider`,
`RouteMap`, React legacy context) was removed from the codebase; v1-era snippets found elsewhere

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

Can you confirm that any such snippets can be found anywhere? This library was never in common use so it seems unlikely.

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.

1 participant

@randomdevpete
, '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

feat(docs): 907 — host an llms.txt for coding agents installing jarl - #107

Open
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers
Open

feat(docs): 907 — host an llms.txt for coding agents installing jarl#107
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

Add packages/docs/public/llms.txt, hosted at https://jarl.randomdev.co.uk/llms.txt, to guide coding agents through installing and using the library.

Convention Research

The producer verified the file format and availability by:

  • Researching the current convention for hosted, consumer-facing agent instructions: llms.txt is now the standard format, adopted by OpenAI, Stripe, Cloudflare, Vercel, and the most comparable open-source libraries (TanStack and Zod).
  • Fetching live examples from those projects to confirm the format: H1 heading with library name, blockquote summary, then ## section headings with [Name](url): description links to existing documentation sections — not a full-text dump.
  • Examining and rejecting AGENTS.md as the vehicle: that convention is for agents working inside a repo as contributors (which this repo covers via CLAUDE.md), not for downstream consumers reading from their own codebase with no jarl source.
  • Examining and rejecting an MCP server: disproportionate scope for a routing library that already has a docs site. The routing behaviour is documented by code and examples, not through a separate tool interface.
  • Noting but deferring llms-full.txt: it would require a build-time markdown concatenation step, materially beyond the scope of "write and host some static instructions". Possible as a follow-up if agents prove they need it.

The llms.txt format is deterministic and content-driven: a single static file served verbatim at a standard path, requiring no build step and no API layer, making it visible to any tool that can fetch a URL.

Verification

  • All documentation links in the file have been verified against the docs site's actual route table.
  • Every factual claim about package names, versions, exports, and peer dependencies has been verified against the current source.
  • No unlanded tickets (675, 778, 789) are documented — their proposed API changes (async-data coalescing, navigation blocking, fooAtom/fooRouteAtom naming) are absent.
  • CODING-STYLE.md compliance: no ticket/epic/PR references, no padding, no marketing fluff.

See ticket 907 for the done-when criteria.

Serves the current adopted convention for hosted, agent-facing library
instructions: a spec-compliant llms.txt at the docs site root, indexing
the existing guides and API reference and calling out what an agent
gets wrong without it — the jarl-atoms/jarl-react package names, that
v1 was removed, and that jarl-react does not re-export jarl-atoms.
Placed in packages/docs/public/ so Vite's static-asset copy ships it
verbatim to dist/llms.txt, which the existing S3 sync deploys to
https://jarl.randomdev.co.uk/llms.txt with no separate build step.
Ticket: 907
@@ -0,0 +1,38 @@
# JARL: Atomic Routing Library

> A controlled-component router for React built on jotai atoms: each route is its own atom,

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"controlled-component" inaccurate and contradictory here, also "for React" also not exclusively true as atoms can be used independently. Instead: "A router for React and vanilla JS projects, build on Jotai atoms:"


- Install both packages plus their `jotai` peer dependency: `npm install jarl-atoms jarl-react jotai`.
The npm package names are `jarl-atoms` and `jarl-react` — the GitHub repository is
`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"kept their pre-rename names" historical fluff, LLM doesn't need anything about the rename here

`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or
`@jarl/*`.
- The current major is v2, built entirely on jotai atoms. The v1 implementation (`RoutingProvider`,
`RouteMap`, React legacy context) was removed from the codebase; v1-era snippets found elsewhere

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

Can you confirm that any such snippets can be found anywhere? This library was never in common use so it seems unlikely.

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.

1 participant

@randomdevpete
, '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

feat(docs): 907 — host an llms.txt for coding agents installing jarl - #107

Open
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers
Open

feat(docs): 907 — host an llms.txt for coding agents installing jarl#107
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

Add packages/docs/public/llms.txt, hosted at https://jarl.randomdev.co.uk/llms.txt, to guide coding agents through installing and using the library.

Convention Research

The producer verified the file format and availability by:

  • Researching the current convention for hosted, consumer-facing agent instructions: llms.txt is now the standard format, adopted by OpenAI, Stripe, Cloudflare, Vercel, and the most comparable open-source libraries (TanStack and Zod).
  • Fetching live examples from those projects to confirm the format: H1 heading with library name, blockquote summary, then ## section headings with [Name](url): description links to existing documentation sections — not a full-text dump.
  • Examining and rejecting AGENTS.md as the vehicle: that convention is for agents working inside a repo as contributors (which this repo covers via CLAUDE.md), not for downstream consumers reading from their own codebase with no jarl source.
  • Examining and rejecting an MCP server: disproportionate scope for a routing library that already has a docs site. The routing behaviour is documented by code and examples, not through a separate tool interface.
  • Noting but deferring llms-full.txt: it would require a build-time markdown concatenation step, materially beyond the scope of "write and host some static instructions". Possible as a follow-up if agents prove they need it.

The llms.txt format is deterministic and content-driven: a single static file served verbatim at a standard path, requiring no build step and no API layer, making it visible to any tool that can fetch a URL.

Verification

  • All documentation links in the file have been verified against the docs site's actual route table.
  • Every factual claim about package names, versions, exports, and peer dependencies has been verified against the current source.
  • No unlanded tickets (675, 778, 789) are documented — their proposed API changes (async-data coalescing, navigation blocking, fooAtom/fooRouteAtom naming) are absent.
  • CODING-STYLE.md compliance: no ticket/epic/PR references, no padding, no marketing fluff.

See ticket 907 for the done-when criteria.

Serves the current adopted convention for hosted, agent-facing library
instructions: a spec-compliant llms.txt at the docs site root, indexing
the existing guides and API reference and calling out what an agent
gets wrong without it — the jarl-atoms/jarl-react package names, that
v1 was removed, and that jarl-react does not re-export jarl-atoms.
Placed in packages/docs/public/ so Vite's static-asset copy ships it
verbatim to dist/llms.txt, which the existing S3 sync deploys to
https://jarl.randomdev.co.uk/llms.txt with no separate build step.
Ticket: 907
@@ -0,0 +1,38 @@
# JARL: Atomic Routing Library

> A controlled-component router for React built on jotai atoms: each route is its own atom,

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"controlled-component" inaccurate and contradictory here, also "for React" also not exclusively true as atoms can be used independently. Instead: "A router for React and vanilla JS projects, build on Jotai atoms:"


- Install both packages plus their `jotai` peer dependency: `npm install jarl-atoms jarl-react jotai`.
The npm package names are `jarl-atoms` and `jarl-react` — the GitHub repository is
`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"kept their pre-rename names" historical fluff, LLM doesn't need anything about the rename here

`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or
`@jarl/*`.
- The current major is v2, built entirely on jotai atoms. The v1 implementation (`RoutingProvider`,
`RouteMap`, React legacy context) was removed from the codebase; v1-era snippets found elsewhere

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

Can you confirm that any such snippets can be found anywhere? This library was never in common use so it seems unlikely.

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.

1 participant

@randomdevpete
, '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

feat(docs): 907 — host an llms.txt for coding agents installing jarl - #107

Open
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers
Open

feat(docs): 907 — host an llms.txt for coding agents installing jarl#107
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

Add packages/docs/public/llms.txt, hosted at https://jarl.randomdev.co.uk/llms.txt, to guide coding agents through installing and using the library.

Convention Research

The producer verified the file format and availability by:

  • Researching the current convention for hosted, consumer-facing agent instructions: llms.txt is now the standard format, adopted by OpenAI, Stripe, Cloudflare, Vercel, and the most comparable open-source libraries (TanStack and Zod).
  • Fetching live examples from those projects to confirm the format: H1 heading with library name, blockquote summary, then ## section headings with [Name](url): description links to existing documentation sections — not a full-text dump.
  • Examining and rejecting AGENTS.md as the vehicle: that convention is for agents working inside a repo as contributors (which this repo covers via CLAUDE.md), not for downstream consumers reading from their own codebase with no jarl source.
  • Examining and rejecting an MCP server: disproportionate scope for a routing library that already has a docs site. The routing behaviour is documented by code and examples, not through a separate tool interface.
  • Noting but deferring llms-full.txt: it would require a build-time markdown concatenation step, materially beyond the scope of "write and host some static instructions". Possible as a follow-up if agents prove they need it.

The llms.txt format is deterministic and content-driven: a single static file served verbatim at a standard path, requiring no build step and no API layer, making it visible to any tool that can fetch a URL.

Verification

  • All documentation links in the file have been verified against the docs site's actual route table.
  • Every factual claim about package names, versions, exports, and peer dependencies has been verified against the current source.
  • No unlanded tickets (675, 778, 789) are documented — their proposed API changes (async-data coalescing, navigation blocking, fooAtom/fooRouteAtom naming) are absent.
  • CODING-STYLE.md compliance: no ticket/epic/PR references, no padding, no marketing fluff.

See ticket 907 for the done-when criteria.

Serves the current adopted convention for hosted, agent-facing library
instructions: a spec-compliant llms.txt at the docs site root, indexing
the existing guides and API reference and calling out what an agent
gets wrong without it — the jarl-atoms/jarl-react package names, that
v1 was removed, and that jarl-react does not re-export jarl-atoms.
Placed in packages/docs/public/ so Vite's static-asset copy ships it
verbatim to dist/llms.txt, which the existing S3 sync deploys to
https://jarl.randomdev.co.uk/llms.txt with no separate build step.
Ticket: 907
@@ -0,0 +1,38 @@
# JARL: Atomic Routing Library

> A controlled-component router for React built on jotai atoms: each route is its own atom,

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"controlled-component" inaccurate and contradictory here, also "for React" also not exclusively true as atoms can be used independently. Instead: "A router for React and vanilla JS projects, build on Jotai atoms:"


- Install both packages plus their `jotai` peer dependency: `npm install jarl-atoms jarl-react jotai`.
The npm package names are `jarl-atoms` and `jarl-react` — the GitHub repository is
`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"kept their pre-rename names" historical fluff, LLM doesn't need anything about the rename here

`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or
`@jarl/*`.
- The current major is v2, built entirely on jotai atoms. The v1 implementation (`RoutingProvider`,
`RouteMap`, React legacy context) was removed from the codebase; v1-era snippets found elsewhere

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

Can you confirm that any such snippets can be found anywhere? This library was never in common use so it seems unlikely.

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.

1 participant

@randomdevpete
, '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

feat(docs): 907 — host an llms.txt for coding agents installing jarl - #107

Open
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers
Open

feat(docs): 907 — host an llms.txt for coding agents installing jarl#107
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

Add packages/docs/public/llms.txt, hosted at https://jarl.randomdev.co.uk/llms.txt, to guide coding agents through installing and using the library.

Convention Research

The producer verified the file format and availability by:

  • Researching the current convention for hosted, consumer-facing agent instructions: llms.txt is now the standard format, adopted by OpenAI, Stripe, Cloudflare, Vercel, and the most comparable open-source libraries (TanStack and Zod).
  • Fetching live examples from those projects to confirm the format: H1 heading with library name, blockquote summary, then ## section headings with [Name](url): description links to existing documentation sections — not a full-text dump.
  • Examining and rejecting AGENTS.md as the vehicle: that convention is for agents working inside a repo as contributors (which this repo covers via CLAUDE.md), not for downstream consumers reading from their own codebase with no jarl source.
  • Examining and rejecting an MCP server: disproportionate scope for a routing library that already has a docs site. The routing behaviour is documented by code and examples, not through a separate tool interface.
  • Noting but deferring llms-full.txt: it would require a build-time markdown concatenation step, materially beyond the scope of "write and host some static instructions". Possible as a follow-up if agents prove they need it.

The llms.txt format is deterministic and content-driven: a single static file served verbatim at a standard path, requiring no build step and no API layer, making it visible to any tool that can fetch a URL.

Verification

  • All documentation links in the file have been verified against the docs site's actual route table.
  • Every factual claim about package names, versions, exports, and peer dependencies has been verified against the current source.
  • No unlanded tickets (675, 778, 789) are documented — their proposed API changes (async-data coalescing, navigation blocking, fooAtom/fooRouteAtom naming) are absent.
  • CODING-STYLE.md compliance: no ticket/epic/PR references, no padding, no marketing fluff.

See ticket 907 for the done-when criteria.

Serves the current adopted convention for hosted, agent-facing library
instructions: a spec-compliant llms.txt at the docs site root, indexing
the existing guides and API reference and calling out what an agent
gets wrong without it — the jarl-atoms/jarl-react package names, that
v1 was removed, and that jarl-react does not re-export jarl-atoms.
Placed in packages/docs/public/ so Vite's static-asset copy ships it
verbatim to dist/llms.txt, which the existing S3 sync deploys to
https://jarl.randomdev.co.uk/llms.txt with no separate build step.
Ticket: 907
@@ -0,0 +1,38 @@
# JARL: Atomic Routing Library

> A controlled-component router for React built on jotai atoms: each route is its own atom,

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"controlled-component" inaccurate and contradictory here, also "for React" also not exclusively true as atoms can be used independently. Instead: "A router for React and vanilla JS projects, build on Jotai atoms:"


- Install both packages plus their `jotai` peer dependency: `npm install jarl-atoms jarl-react jotai`.
The npm package names are `jarl-atoms` and `jarl-react` — the GitHub repository is
`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"kept their pre-rename names" historical fluff, LLM doesn't need anything about the rename here

`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or
`@jarl/*`.
- The current major is v2, built entirely on jotai atoms. The v1 implementation (`RoutingProvider`,
`RouteMap`, React legacy context) was removed from the codebase; v1-era snippets found elsewhere

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

Can you confirm that any such snippets can be found anywhere? This library was never in common use so it seems unlikely.

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.

1 participant

@randomdevpete
, '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

feat(docs): 907 — host an llms.txt for coding agents installing jarl - #107

Open
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers
Open

feat(docs): 907 — host an llms.txt for coding agents installing jarl#107
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

Add packages/docs/public/llms.txt, hosted at https://jarl.randomdev.co.uk/llms.txt, to guide coding agents through installing and using the library.

Convention Research

The producer verified the file format and availability by:

  • Researching the current convention for hosted, consumer-facing agent instructions: llms.txt is now the standard format, adopted by OpenAI, Stripe, Cloudflare, Vercel, and the most comparable open-source libraries (TanStack and Zod).
  • Fetching live examples from those projects to confirm the format: H1 heading with library name, blockquote summary, then ## section headings with [Name](url): description links to existing documentation sections — not a full-text dump.
  • Examining and rejecting AGENTS.md as the vehicle: that convention is for agents working inside a repo as contributors (which this repo covers via CLAUDE.md), not for downstream consumers reading from their own codebase with no jarl source.
  • Examining and rejecting an MCP server: disproportionate scope for a routing library that already has a docs site. The routing behaviour is documented by code and examples, not through a separate tool interface.
  • Noting but deferring llms-full.txt: it would require a build-time markdown concatenation step, materially beyond the scope of "write and host some static instructions". Possible as a follow-up if agents prove they need it.

The llms.txt format is deterministic and content-driven: a single static file served verbatim at a standard path, requiring no build step and no API layer, making it visible to any tool that can fetch a URL.

Verification

  • All documentation links in the file have been verified against the docs site's actual route table.
  • Every factual claim about package names, versions, exports, and peer dependencies has been verified against the current source.
  • No unlanded tickets (675, 778, 789) are documented — their proposed API changes (async-data coalescing, navigation blocking, fooAtom/fooRouteAtom naming) are absent.
  • CODING-STYLE.md compliance: no ticket/epic/PR references, no padding, no marketing fluff.

See ticket 907 for the done-when criteria.

Serves the current adopted convention for hosted, agent-facing library
instructions: a spec-compliant llms.txt at the docs site root, indexing
the existing guides and API reference and calling out what an agent
gets wrong without it — the jarl-atoms/jarl-react package names, that
v1 was removed, and that jarl-react does not re-export jarl-atoms.
Placed in packages/docs/public/ so Vite's static-asset copy ships it
verbatim to dist/llms.txt, which the existing S3 sync deploys to
https://jarl.randomdev.co.uk/llms.txt with no separate build step.
Ticket: 907
@@ -0,0 +1,38 @@
# JARL: Atomic Routing Library

> A controlled-component router for React built on jotai atoms: each route is its own atom,

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"controlled-component" inaccurate and contradictory here, also "for React" also not exclusively true as atoms can be used independently. Instead: "A router for React and vanilla JS projects, build on Jotai atoms:"


- Install both packages plus their `jotai` peer dependency: `npm install jarl-atoms jarl-react jotai`.
The npm package names are `jarl-atoms` and `jarl-react` — the GitHub repository is
`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"kept their pre-rename names" historical fluff, LLM doesn't need anything about the rename here

`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or
`@jarl/*`.
- The current major is v2, built entirely on jotai atoms. The v1 implementation (`RoutingProvider`,
`RouteMap`, React legacy context) was removed from the codebase; v1-era snippets found elsewhere

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

Can you confirm that any such snippets can be found anywhere? This library was never in common use so it seems unlikely.

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.

1 participant

@randomdevpete
, '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

feat(docs): 907 — host an llms.txt for coding agents installing jarl - #107

Open
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers
Open

feat(docs): 907 — host an llms.txt for coding agents installing jarl#107
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

Add packages/docs/public/llms.txt, hosted at https://jarl.randomdev.co.uk/llms.txt, to guide coding agents through installing and using the library.

Convention Research

The producer verified the file format and availability by:

  • Researching the current convention for hosted, consumer-facing agent instructions: llms.txt is now the standard format, adopted by OpenAI, Stripe, Cloudflare, Vercel, and the most comparable open-source libraries (TanStack and Zod).
  • Fetching live examples from those projects to confirm the format: H1 heading with library name, blockquote summary, then ## section headings with [Name](url): description links to existing documentation sections — not a full-text dump.
  • Examining and rejecting AGENTS.md as the vehicle: that convention is for agents working inside a repo as contributors (which this repo covers via CLAUDE.md), not for downstream consumers reading from their own codebase with no jarl source.
  • Examining and rejecting an MCP server: disproportionate scope for a routing library that already has a docs site. The routing behaviour is documented by code and examples, not through a separate tool interface.
  • Noting but deferring llms-full.txt: it would require a build-time markdown concatenation step, materially beyond the scope of "write and host some static instructions". Possible as a follow-up if agents prove they need it.

The llms.txt format is deterministic and content-driven: a single static file served verbatim at a standard path, requiring no build step and no API layer, making it visible to any tool that can fetch a URL.

Verification

  • All documentation links in the file have been verified against the docs site's actual route table.
  • Every factual claim about package names, versions, exports, and peer dependencies has been verified against the current source.
  • No unlanded tickets (675, 778, 789) are documented — their proposed API changes (async-data coalescing, navigation blocking, fooAtom/fooRouteAtom naming) are absent.
  • CODING-STYLE.md compliance: no ticket/epic/PR references, no padding, no marketing fluff.

See ticket 907 for the done-when criteria.

Serves the current adopted convention for hosted, agent-facing library
instructions: a spec-compliant llms.txt at the docs site root, indexing
the existing guides and API reference and calling out what an agent
gets wrong without it — the jarl-atoms/jarl-react package names, that
v1 was removed, and that jarl-react does not re-export jarl-atoms.
Placed in packages/docs/public/ so Vite's static-asset copy ships it
verbatim to dist/llms.txt, which the existing S3 sync deploys to
https://jarl.randomdev.co.uk/llms.txt with no separate build step.
Ticket: 907
@@ -0,0 +1,38 @@
# JARL: Atomic Routing Library

> A controlled-component router for React built on jotai atoms: each route is its own atom,

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"controlled-component" inaccurate and contradictory here, also "for React" also not exclusively true as atoms can be used independently. Instead: "A router for React and vanilla JS projects, build on Jotai atoms:"


- Install both packages plus their `jotai` peer dependency: `npm install jarl-atoms jarl-react jotai`.
The npm package names are `jarl-atoms` and `jarl-react` — the GitHub repository is
`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"kept their pre-rename names" historical fluff, LLM doesn't need anything about the rename here

`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or
`@jarl/*`.
- The current major is v2, built entirely on jotai atoms. The v1 implementation (`RoutingProvider`,
`RouteMap`, React legacy context) was removed from the codebase; v1-era snippets found elsewhere

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

Can you confirm that any such snippets can be found anywhere? This library was never in common use so it seems unlikely.

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.

1 participant

@randomdevpete
, '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

feat(docs): 907 — host an llms.txt for coding agents installing jarl - #107

Open
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers
Open

feat(docs): 907 — host an llms.txt for coding agents installing jarl#107
randomdevpete wants to merge 1 commit into
masterfrom
task-907-hosted-agent-instructions-for-library-consumers

Conversation

@randomdevpete

Copy link
Copy Markdown
Owner

Summary

Add packages/docs/public/llms.txt, hosted at https://jarl.randomdev.co.uk/llms.txt, to guide coding agents through installing and using the library.

Convention Research

The producer verified the file format and availability by:

  • Researching the current convention for hosted, consumer-facing agent instructions: llms.txt is now the standard format, adopted by OpenAI, Stripe, Cloudflare, Vercel, and the most comparable open-source libraries (TanStack and Zod).
  • Fetching live examples from those projects to confirm the format: H1 heading with library name, blockquote summary, then ## section headings with [Name](url): description links to existing documentation sections — not a full-text dump.
  • Examining and rejecting AGENTS.md as the vehicle: that convention is for agents working inside a repo as contributors (which this repo covers via CLAUDE.md), not for downstream consumers reading from their own codebase with no jarl source.
  • Examining and rejecting an MCP server: disproportionate scope for a routing library that already has a docs site. The routing behaviour is documented by code and examples, not through a separate tool interface.
  • Noting but deferring llms-full.txt: it would require a build-time markdown concatenation step, materially beyond the scope of "write and host some static instructions". Possible as a follow-up if agents prove they need it.

The llms.txt format is deterministic and content-driven: a single static file served verbatim at a standard path, requiring no build step and no API layer, making it visible to any tool that can fetch a URL.

Verification

  • All documentation links in the file have been verified against the docs site's actual route table.
  • Every factual claim about package names, versions, exports, and peer dependencies has been verified against the current source.
  • No unlanded tickets (675, 778, 789) are documented — their proposed API changes (async-data coalescing, navigation blocking, fooAtom/fooRouteAtom naming) are absent.
  • CODING-STYLE.md compliance: no ticket/epic/PR references, no padding, no marketing fluff.

See ticket 907 for the done-when criteria.

Serves the current adopted convention for hosted, agent-facing library
instructions: a spec-compliant llms.txt at the docs site root, indexing
the existing guides and API reference and calling out what an agent
gets wrong without it — the jarl-atoms/jarl-react package names, that
v1 was removed, and that jarl-react does not re-export jarl-atoms.
Placed in packages/docs/public/ so Vite's static-asset copy ships it
verbatim to dist/llms.txt, which the existing S3 sync deploys to
https://jarl.randomdev.co.uk/llms.txt with no separate build step.
Ticket: 907
@@ -0,0 +1,38 @@
# JARL: Atomic Routing Library

> A controlled-component router for React built on jotai atoms: each route is its own atom,

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"controlled-component" inaccurate and contradictory here, also "for React" also not exclusively true as atoms can be used independently. Instead: "A router for React and vanilla JS projects, build on Jotai atoms:"


- Install both packages plus their `jotai` peer dependency: `npm install jarl-atoms jarl-react jotai`.
The npm package names are `jarl-atoms` and `jarl-react` — the GitHub repository is
`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

"kept their pre-rename names" historical fluff, LLM doesn't need anything about the rename here

`randomdevpete/jarl`, but the packages kept their pre-rename names; do not guess `jarl` or
`@jarl/*`.
- The current major is v2, built entirely on jotai atoms. The v1 implementation (`RoutingProvider`,
`RouteMap`, React legacy context) was removed from the codebase; v1-era snippets found elsewhere

Copy link
Copy Markdown
OwnerAuthor

Choose a reason for hiding this comment

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

Can you confirm that any such snippets can be found anywhere? This library was never in common use so it seems unlikely.

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.

1 participant

@randomdevpete