Skip to content

Coding agents

This site publishes a machine-readable index and a per-page Markdown mirror designed for AI coding tools. Pointing your editor at the index is the only setup step; after that "how do I push audio?" / "add Sensory to my CMake build" / "enroll a UDT in Java" land on the right page without further configuration.

Editor setup

Register https://doc.sensory.com/tnl/7.8/llms.txt once. Common editors:

Settings → Indexing & Docs → Add Doc, paste the URL, give it a name (e.g. Sensory TrulyNatural SDK). Reference the doc set with @Docs Sensory TrulyNatural SDK in chat.

Add the URL to a project-level CLAUDE.md so the agent reads the index on every session:

# Documentation

- TrulyNatural SDK: https://doc.sensory.com/tnl/7.8/llms.txt
  Use this index to find SDK pages; prefer the linked `.md` URLs over
  general web search.

Reference individual pages with #fetch (e.g. #fetch https://doc.sensory.com/tnl/7.8/api/inference.md). Copilot does not ingest a documentation index globally; the per-page .md URLs in this site's manifest.json are the unit of context.

These tools accept Markdown URLs in their --read / /add / context commands. Point them at individual .md pages from manifest.json rather than the full bundle: each page is sized for a single chat turn, while llms-full.txt is a single ~1.3 MiB file better suited to bulk offline indexing.

Any tool that follows an AI-oriented documentation index typically accepts either an llms.txt-style entry point or a sitemap of Markdown URLs. The two relevant URLs are:

What's in the bundle

Three files share the same content rendered three ways:

  • llms.txt — orientation index (~27 KiB). Curated Common tasks and Start here routes plus a section by path prefix. This is the file most tools want.
  • manifest.json — a JSON index of every page with path, bytes, title, canonical_url, an optional headings outline on reference pages, and an optional last_modified (ISO 8601 UTC) for incremental re-ingest. Useful for budgeting context size or programmatically picking pages.
  • llms-full.txt — every Markdown page concatenated into one file (~1.3 MiB), with a <!-- FILE: … --> header per page. Reserve this for bulk offline indexing; for day-to-day chat, fetch individual .md URLs instead so the model isn't carrying the whole SDK in its context window.

Day-to-day usage tips

  • Prefer per-page .md URLs over the full bundle. Each rendered page also exists as a .md next to its HTML (e.g. api/inference.md beside the rendered API reference). Pasting one of these into a chat is usually enough context.
  • Use #fragment URLs for narrow questions. All H2/H3/H4 headings have stable anchors. For a question like "what does snsrLoad return?", paste https://doc.sensory.com/tnl/7.8/api/inference.md#load rather than the whole page. The ## Symbols section of llms.txt lists every C/Java entry point with its anchor for direct deep-linking.
  • Use Common tasks for typical work. The first section of llms.txt is curated to match natural-language prompts: "first program", "build integration", "push audio", "wake word then LVCSR or STT", "enroll a UDT in Java", and a dozen more. Most agent prompts will resolve through one of these routes.
  • Re-pin the URL on each SDK upgrade. This site publishes a per-version doc tree (/tnl/7.8/); when you move to a new SDK release, point your editor at the new version's llms.txt. The /tnl/latest/ alias always redirects to the most recent published version if you'd rather track HEAD.

Programmatic ingestion

If you're writing a tool, not registering URLs in an editor:

import json, urllib.request

base = "https://doc.sensory.com/tnl/7.8/llms.txt".rsplit("/", 1)[0]
with urllib.request.urlopen(f"{base}/manifest.json") as r:
    manifest = json.load(r)

# manifest["version"] == 2; manifest["entries"] is a list of dicts.
for page in manifest["entries"]:
    if page["bytes"] < 8192:  # small reference page
        with urllib.request.urlopen(f"{base}/{page['path']}") as r:
            text = r.read().decode("utf-8")
        # ingest `text` keyed on page["canonical_url"]

The canonical_url field is the most stable join key across the two representations: the same string identifies a page in the loose on-host mirror, in manifest.json, in llms-full.txt's <!-- FILE: … --> headers, and as a hyperlink target inside other pages.

See also