@docspack/sheaf-emit
v0.1.0
Published
Turns a Sheaf content graph into the artifacts that are not a website — starting with a docspack documentation package.
Maintainers
Readme
@docspack/sheaf-emit
Turns a Sheaf content graph into the artifacts that are not a website. Today: a docspack documentation package, so the same Markdown that renders your docs site also answers your users' agents.
import { buildGraph } from "@docspack/sheaf";
import { emitDocspackPackage } from "@docspack/sheaf-emit";
const graph = await buildGraph("./docs");
await emitDocspackPackage(graph, {
out: "./packages/docs-package",
name: "@acme/docspack",
version: "1.2.3",
documents: ["[email protected]"],
baseUrl: "https://acme.dev/docs",
});That writes package.json, .llms/manifest.json, one Markdown file per chunk, and an
llms.txt. Publish it to npm and an agent gets version-locked answers offline:
$ docspack ask "how do I verify documentation against the code I installed"
## @acme/[email protected]/verify
# Verifying documentation against code
<!-- docspack: from https://acme.dev/docs/verify -->
...Why not just docspack build?
docspack build reads a folder of Markdown and does the same job. What a folder cannot tell it
is where the docs are published, so its chunks cite a filename. A graph knows, so chunks
emitted here cite the page's real URL and the section's anchor — the answer an agent gives
carries a link a person can open.
It also means the site and the index agree about which pages exist: drafts, ordering and slugs are decided once, by the graph the site rendered.
Options
| Option | |
| --- | --- |
| out | Directory to write into. .llms/ is replaced, not merged. |
| name / version | The npm identity of the docs package. |
| documents | Libraries this documentation describes — name or name@version. Required. |
| baseUrl | Where the pages are published. Without it, chunks cite the source file. |
Chunks split at every ##. tokens is deliberately omitted so the indexer's own estimate is
the one used.
MIT © docspack
